(self.webpackChunknineyi_clientapp=self.webpackChunknineyi_clientapp||[]).push([[1188],{"./node_modules/@91app/nine1.lib.custom-setting/dist/index.umd.js":function(e,t){!function(e){"use strict";const t={isShowSFTPContractNote:!0,isHideStoreCustomerService:!1,isHideMembershipDescription:!1,noServiceAreaExcludeZipCode:[],isEnableshippingCartMoreStorePayMethod:!1,customerHeaderConfig:"",customerSalePageImgConfig:"",isShowSalePageProductId:!0,isProductCardTargetBlankOnCategoryPage:!1,isChannelActive:!1,isChannelSwitchActive:!1,isDirectlyAddToCart:!1,isBreadcrumbsActive:!0,isUseFastBuy:!1,isNewPXProductList:!1,isBubbleAddToCart:!1,customerServiceMessageConfig:"",customerUIConfig:{},isShopsDesktopImageNeedCompress:!1,isMujiCustomerFooter:!1,isHideTypeButton:!1,isEnableAdidasCustom:!1,isCustomUnableChangePasswordPrompt:!1,customVipMemberTradesSumTitle:!1},n={isShowSFTPContractNote:!0,isHideStoreCustomerService:!1,isHideMembershipDescription:!1,noServiceAreaExcludeZipCode:[],isEnableshippingCartMoreStorePayMethod:!1,customerHeaderConfig:"",customerSalePageImgConfig:"",isShowSalePageProductId:!0,isProductCardTargetBlankOnCategoryPage:!1,isChannelActive:!1,isChannelSwitchActive:!1,isDirectlyAddToCart:!1,isBreadcrumbsActive:!0,isUseFastBuy:!1,isNewPXProductList:!1,isBubbleAddToCart:!1,customerServiceMessageConfig:"",customerUIConfig:{},isShopsDesktopImageNeedCompress:!1,isMujiCustomerFooter:!1,isHideTypeButton:!1,isEnableAdidasCustom:!1,isCustomUnableChangePasswordPrompt:!1,customVipMemberTradesSumTitle:!1},r={dev:{default:t,tw:{22:{isChannelActive:!0,isChannelSwitchActive:!0,isDirectlyAddToCart:!0,isUseFastBuy:!0,isNewPXProductList:!0,isBubbleAddToCart:!0},225:{isHideStoreCustomerService:!0,isHideMembershipDescription:!0,customerSalePageImgConfig:"_碧兒泉",isBreadcrumbsActive:!1,customerServiceMessageConfig:"線上購物問與答",isShopsDesktopImageNeedCompress:!0},231:{customerHeaderConfig:{headerLogo:{position:{logoContainer:"logo-center"}},navMenu:{position:{navMenuContainer:"nav-menu-center",mainNavMenu:"nav-menu-main-center",subNavMenu:"sub-nav-li-center"}},searchBox:{backgroundColor:"F5F5F5"}},isMujiCustomerFooter:!0},233:{customerHeaderConfig:{headerLogo:{position:{logoContainer:"logo-center"}},navMenu:{position:{navMenuContainer:"nav-menu-center",mainNavMenu:"nav-menu-main-center",subNavMenu:"sub-nav-li-center"},font:{weight:"700"},icon:{display:!1}},searchBox:{radius:"rectangle",backgroundColor:"ECEFF1"}},isHideTypeButton:!0,isEnableAdidasCustom:!0},235:{isProductCardTargetBlankOnCategoryPage:!0},10230:{isEnableshippingCartMoreStorePayMethod:!0},12202:{isShowSalePageProductId:!1},12209:{isShowSFTPContractNote:!1},12488:{isCustomUnableChangePasswordPrompt:!0,customVipMemberTradesSumTitle:!0},12868:{noServiceAreaExcludeZipCode:["882","896","883"]}},hk:{},my:{}},qa:{default:t,tw:{225:{isHideStoreCustomerService:!0,customerServiceMessageConfig:"線上購物問與答"},231:{customerHeaderConfig:{headerLogo:{position:{logoContainer:"logo-center"}},navMenu:{position:{navMenuContainer:"nav-menu-center",mainNavMenu:"nav-menu-main-center",subNavMenu:"sub-nav-li-center"}},searchBox:{backgroundColor:"F5F5F5"}},isMujiCustomerFooter:!0},233:{customerHeaderConfig:{headerLogo:{position:{logoContainer:"logo-center"}},navMenu:{position:{navMenuContainer:"nav-menu-center",mainNavMenu:"nav-menu-main-center",subNavMenu:"sub-nav-li-center"},font:{weight:"700"},icon:{display:!1}},searchBox:{radius:"rectangle",backgroundColor:"ECEFF1"}},isShopsDesktopImageNeedCompress:!0,isHideTypeButton:!0,isEnableAdidasCustom:!0},10230:{isEnableshippingCartMoreStorePayMethod:!0},10490:{isEnableshippingCartMoreStorePayMethod:!0},12157:{customerSalePageImgConfig:"_碧兒泉"},12202:{isShowSalePageProductId:!1},12209:{isShowSFTPContractNote:!1},12294:{isHideMembershipDescription:!0},12488:{isCustomUnableChangePasswordPrompt:!0,customVipMemberTradesSumTitle:!0},12868:{isEnableshippingCartMoreStorePayMethod:!0,noServiceAreaExcludeZipCode:["882","896","883"]}},hk:{2:{isProductCardTargetBlankOnCategoryPage:!0}},my:{}},qa11:{default:t,tw:{231:{customerHeaderConfig:{headerLogo:{position:{logoContainer:"logo-center"}},navMenu:{position:{navMenuContainer:"nav-menu-center",mainNavMenu:"nav-menu-main-center",subNavMenu:"sub-nav-li-center"}},searchBox:{backgroundColor:"F5F5F5"}},isMujiCustomerFooter:!0},233:{customerHeaderConfig:{headerLogo:{position:{logoContainer:"logo-center"}},navMenu:{position:{navMenuContainer:"nav-menu-center",mainNavMenu:"nav-menu-main-center",subNavMenu:"sub-nav-li-center"},font:{weight:"700"},icon:{display:!1}},searchBox:{radius:"rectangle",backgroundColor:"ECEFF1"}},isHideTypeButton:!0,isEnableAdidasCustom:!0}}},stage:{default:n,tw:{8:{isShopsDesktopImageNeedCompress:!0},360:{noServiceAreaExcludeZipCode:["882","896","883"],isEnableshippingCartMoreStorePayMethod:!0},2325:{customerHeaderConfig:{headerLogo:{position:{logoContainer:"logo-center"}},navMenu:{position:{navMenuContainer:"nav-menu-center",mainNavMenu:"nav-menu-main-center",subNavMenu:"sub-nav-li-center"}},searchBox:{backgroundColor:"F5F5F5"}},isMujiCustomerFooter:!0},2373:{noServiceAreaExcludeZipCode:["882","896","883"]},40589:{customerSalePageImgConfig:"_碧兒泉",isShopsDesktopImageNeedCompress:!0},40625:{customerSalePageImgConfig:"_碧兒泉"},41337:{isHideStoreCustomerService:!0,customerServiceMessageConfig:"線上購物問與答"},41364:{isEnableshippingCartMoreStorePayMethod:!0},41426:{isEnableshippingCartMoreStorePayMethod:!0},41566:{customerHeaderConfig:{headerLogo:{position:{logoContainer:"logo-center"}},navMenu:{position:{navMenuContainer:"nav-menu-center",mainNavMenu:"nav-menu-main-center",subNavMenu:"sub-nav-li-center"}},searchBox:{backgroundColor:"F5F5F5"}},isShowSalePageProductId:!1,isMujiCustomerFooter:!0},41571:{isShowSFTPContractNote:!1,customerHeaderConfig:{headerLogo:{position:{logoContainer:"logo-center"}},navMenu:{position:{navMenuContainer:"nav-menu-center",mainNavMenu:"nav-menu-main-center",subNavMenu:"sub-nav-li-center"},font:{weight:"700"},icon:{display:!1}},searchBox:{radius:"rectangle",backgroundColor:"ECEFF1"}},isHideTypeButton:!0,isEnableAdidasCustom:!0},41591:{customerHeaderConfig:{headerLogo:{position:{logoContainer:"logo-center"}},navMenu:{position:{navMenuContainer:"nav-menu-center",mainNavMenu:"nav-menu-main-center",subNavMenu:"sub-nav-li-center"},font:{weight:"700"},icon:{display:!1}},searchBox:{radius:"rectangle",backgroundColor:"ECEFF1"}},isHideTypeButton:!0,isEnableAdidasCustom:!0}}},prod:{default:n,tw:{8:{isShopsDesktopImageNeedCompress:!0},360:{noServiceAreaExcludeZipCode:["882","896","883"],isEnableshippingCartMoreStorePayMethod:!0},2325:{customerHeaderConfig:{headerLogo:{position:{logoContainer:"logo-center"}},navMenu:{position:{navMenuContainer:"nav-menu-center",mainNavMenu:"nav-menu-main-center",subNavMenu:"sub-nav-li-center"}},searchBox:{backgroundColor:"F5F5F5"}},isMujiCustomerFooter:!0},2373:{noServiceAreaExcludeZipCode:["882","896","883"]},40522:{isCustomUnableChangePasswordPrompt:!0},40589:{customerSalePageImgConfig:"_碧兒泉",isShopsDesktopImageNeedCompress:!0},40625:{customerSalePageImgConfig:"_碧兒泉"},40916:{customVipMemberTradesSumTitle:!0},41337:{isHideStoreCustomerService:!0,customerServiceMessageConfig:"線上購物問與答"},41364:{isEnableshippingCartMoreStorePayMethod:!0},41426:{isEnableshippingCartMoreStorePayMethod:!0},41566:{customerHeaderConfig:{headerLogo:{position:{logoContainer:"logo-center"}},navMenu:{position:{navMenuContainer:"nav-menu-center",mainNavMenu:"nav-menu-main-center",subNavMenu:"sub-nav-li-center"}},searchBox:{backgroundColor:"F5F5F5"}},isShowSalePageProductId:!1,isMujiCustomerFooter:!0},41571:{isShowSFTPContractNote:!1,customerHeaderConfig:{headerLogo:{position:{logoContainer:"logo-center"}},navMenu:{position:{navMenuContainer:"nav-menu-center",mainNavMenu:"nav-menu-main-center",subNavMenu:"sub-nav-li-center"},font:{weight:"700"},icon:{display:!1}},searchBox:{radius:"rectangle",backgroundColor:"ECEFF1"}},isHideTypeButton:!0,isEnableAdidasCustom:!0},41591:{customerHeaderConfig:{headerLogo:{position:{logoContainer:"logo-center"}},navMenu:{position:{navMenuContainer:"nav-menu-center",mainNavMenu:"nav-menu-main-center",subNavMenu:"sub-nav-li-center"},font:{weight:"700"},icon:{display:!1}},searchBox:{radius:"rectangle",backgroundColor:"ECEFF1"}},isHideTypeButton:!0,isEnableAdidasCustom:!0},41602:{isHideMembershipDescription:!0}},hk:{20:{isProductCardTargetBlankOnCategoryPage:!0},21:{isProductCardTargetBlankOnCategoryPage:!0},76:{isProductCardTargetBlankOnCategoryPage:!0},77:{isProductCardTargetBlankOnCategoryPage:!0}},my:{}}},i=(e,t,n,r)=>{var i;if(!(e&&t&&n&&r))return null;const c=o(e),l=null==(i=a(e,t)[n])?void 0:i[r];return void 0!==l?l:null==c?void 0:c[r]},o=e=>{var n;return(null==(n=r[null==e?void 0:e.toLowerCase()])?void 0:n.default)||t},a=(e,t)=>{var n;const i=o(e);return(null==(n=r[null==e?void 0:e.toLowerCase()])?void 0:n[null==t?void 0:t.toLowerCase()])||i};var c,l=((c=l||{}).isHideStoreCustomerService="isHideStoreCustomerService",c.isShowSFTPContractNote="isShowSFTPContractNote",c.isHideMembershipDescription="isHideMembershipDescription",c.customerSalePageImgConfig="customerSalePageImgConfig",c.isShowSalePageProductId="isShowSalePageProductId",c.isChannelActive="isChannelActive",c.isChannelSwitchActive="isChannelSwitchActive",c.isDirectlyAddToCart="isDirectlyAddToCart",c.isBreadcrumbsActive="isBreadcrumbsActive",c.isUseFastBuy="isUseFastBuy",c.isNewPXProductList="isNewPXProductList",c.isBubbleAddToCart="isBubbleAddToCart",c.customerUIConfig="customerUIConfig",c.customerServiceMessageConfig="customerServiceMessageConfig",c.noServiceAreaExcludeZipCode="noServiceAreaExcludeZipCode",c.isEnableshippingCartMoreStorePayMethod="isEnableshippingCartMoreStorePayMethod",c.isProductCardTargetBlankOnCategoryPage="isProductCardTargetBlankOnCategoryPage",c.isShopsDesktopImageNeedCompress="isShopsDesktopImageNeedCompress",c.isMujiCustomerFooter="isMujiCustomerFooter",c.isHideTypeButton="isHideTypeButton",c.isEnableAdidasCustom="isEnableAdidasCustom",c.customerHeaderConfig="customerHeaderConfig",c.isCustomUnableChangePasswordPrompt="isCustomUnableChangePasswordPrompt",c.customVipMemberTradesSumTitle="customVipMemberTradesSumTitle",c);e.getSetting=i,e.settingNameEnum=l,Object.defineProperty(e,Symbol.toStringTag,{value:"Module"})}(t)},"./node_modules/@91app/nine1.lib.custom-translation/dist/index.umd.js":function(e,t){!function(e){"use strict";var t,n=((t=n||{}).frontend_common_vip_member_zone="frontend_common_vip_member_zone",t.frontend_common_vip_member_zone_entrance="frontend_common_vip_member_zone_entrance",t.frontend_common_back_to_vip_member_zone="frontend_common_back_to_vip_member_zone",t.frontend_common_order_search="frontend_common_order_search",t.frontend_trades_order_trades_order_list_order_list="frontend_trades_order_trades_order_list_order_list",t.frontend_vip_member_index_check_order="frontend_vip_member_index_check_order",t.frontend_common_back_to_order_search="frontend_common_back_to_order_search",t.frontend_common_my_ecoupon="frontend_common_my_ecoupon",t.frontend_common_ecoupon_zone="frontend_common_ecoupon_zone",t.frontend_common_go_to_ecoupon_zone="frontend_common_go_to_ecoupon_zone",t.frontend_common_ecoupon="frontend_common_ecoupon",t.frontend_vip_member_email_notification_sms_subscribe="frontend_vip_member_email_notification_sms_subscribe",t.frontend_vip_member_email_notification_promotion_sms="frontend_vip_member_email_notification_promotion_sms",t);e.mwebTranslationKeyEnum=n,Object.defineProperty(e,Symbol.toStringTag,{value:"Module"})}(t)},"./node_modules/@91app/nineyi.config.cms-globla-style/dist/src/index.js":(e,t)=>{"use strict";t.A={generalStyle:{linkColor:"#428bca",moneyColor:"#ff5353",discountMoneyColor:"#ff5353"},buttonStyle:{primaryBtnBgColor:"#ff5353",primaryBtnTextColor:"#ffffff",secondBtnVariant:"outline",secondBtnBgColor:"#ffffff",secondBtnTextColor:"#ff5353",secondBtnBorderColor:"#ff5353",primaryHeartBtnBgColor:"#ff5353",secondHeartBtnBgColor:"#333333"},tagStyle:{generalTagBgColor:"#fff2f2",generalTagTextColor:"#ff5353",emphasisTagBgColor:"#ff5353",emphasisTagTextColor:"#ffffff",keyWordTagTextColor:"#666666"}}},"./node_modules/@91app/nineyi.config.i18n/index.js":function(e){var t;t=this,e.exports?e.exports={allCurrencies:[{code:"TWD",symbol:"NT$",decimalDigits:0,decimalSeparator:".",groupSeparator:",",display:"新台幣"},{code:"USD",symbol:"US$",decimalDigits:2,decimalSeparator:".",groupSeparator:",",display:"US dollar"},{code:"HKD",symbol:"HK$",decimalDigits:2,decimalSeparator:".",groupSeparator:",",display:"港幣"},{code:"MOP",symbol:"MOP",decimalDigits:2,decimalSeparator:".",groupSeparator:",",display:"Pataca"},{code:"CNY",symbol:"¥",decimalDigits:2,decimalSeparator:".",groupSeparator:",",display:"人民币"},{code:"MYR",symbol:"RM",decimalDigits:2,decimalSeparator:".",groupSeparator:",",display:"Ringgit Malaysia"},{code:"SGD",symbol:"S$",decimalDigits:2,decimalSeparator:".",groupSeparator:",",display:"Singapore dollar"},{code:"THB",symbol:"฿",decimalDigits:0,decimalSeparator:".",groupSeparator:",",display:"บาท"},{code:"VND",symbol:"₫",decimalDigits:2,decimalSeparator:".",groupSeparator:",",display:"Đồng"},{code:"PHP",symbol:"₱",decimalDigits:2,decimalSeparator:".",groupSeparator:",",display:"Philippine peso"},{code:"KRW",symbol:"₩",decimalDigits:0,decimalSeparator:".",groupSeparator:",",display:"대한민국 원"},{code:"JPY",symbol:"¥",decimalDigits:0,decimalSeparator:".",groupSeparator:",",display:"日本円"},{code:"AUD",symbol:"$",decimalDigits:2,decimalSeparator:".",groupSeparator:",",display:"Australian dollar"},{code:"EUR",symbol:"€",decimalDigits:2,decimalSeparator:".",groupSeparator:",",display:"Euro"},{code:"GBP",symbol:"£",decimalDigits:2,decimalSeparator:".",groupSeparator:",",display:"Pound sterling"},{code:"CAD",symbol:"$",decimalDigits:2,decimalSeparator:".",groupSeparator:",",display:"Canadian dollar"},{code:"IDR",symbol:"Rp",decimalDigits:2,decimalSeparator:".",groupSeparator:",",display:"Rupiah"},{code:"NZD",symbol:"$",decimalDigits:2,decimalSeparator:".",groupSeparator:",",display:"New Zealand dollar"},{code:"SEK",symbol:"kr",decimalDigits:2,decimalSeparator:".",groupSeparator:",",display:"Svensk krona"}]}:(t.nineyi=t.nineyi||{},t.nineyi.i18n=t.nineyi.i18n||{},t.nineyi.i18n.allCurrencies=[{code:"TWD",symbol:"NT$",decimalDigits:0,decimalSeparator:".",groupSeparator:",",display:"新台幣"},{code:"USD",symbol:"US$",decimalDigits:2,decimalSeparator:".",groupSeparator:",",display:"US dollar"},{code:"HKD",symbol:"HK$",decimalDigits:2,decimalSeparator:".",groupSeparator:",",display:"港幣"},{code:"MOP",symbol:"MOP",decimalDigits:2,decimalSeparator:".",groupSeparator:",",display:"Pataca"},{code:"CNY",symbol:"¥",decimalDigits:2,decimalSeparator:".",groupSeparator:",",display:"人民币"},{code:"MYR",symbol:"RM",decimalDigits:2,decimalSeparator:".",groupSeparator:",",display:"Ringgit Malaysia"},{code:"SGD",symbol:"S$",decimalDigits:2,decimalSeparator:".",groupSeparator:",",display:"Singapore dollar"},{code:"THB",symbol:"฿",decimalDigits:0,decimalSeparator:".",groupSeparator:",",display:"บาท"},{code:"VND",symbol:"₫",decimalDigits:2,decimalSeparator:".",groupSeparator:",",display:"Đồng"},{code:"PHP",symbol:"₱",decimalDigits:2,decimalSeparator:".",groupSeparator:",",display:"Philippine peso"},{code:"KRW",symbol:"₩",decimalDigits:0,decimalSeparator:".",groupSeparator:",",display:"대한민국 원"},{code:"JPY",symbol:"¥",decimalDigits:0,decimalSeparator:".",groupSeparator:",",display:"日本円"},{code:"AUD",symbol:"$",decimalDigits:2,decimalSeparator:".",groupSeparator:",",display:"Australian dollar"},{code:"EUR",symbol:"€",decimalDigits:2,decimalSeparator:".",groupSeparator:",",display:"Euro"},{code:"GBP",symbol:"£",decimalDigits:2,decimalSeparator:".",groupSeparator:",",display:"Pound sterling"},{code:"CAD",symbol:"$",decimalDigits:2,decimalSeparator:".",groupSeparator:",",display:"Canadian dollar"},{code:"IDR",symbol:"Rp",decimalDigits:2,decimalSeparator:".",groupSeparator:",",display:"Rupiah"},{code:"NZD",symbol:"$",decimalDigits:2,decimalSeparator:".",groupSeparator:",",display:"New Zealand dollar"},{code:"SEK",symbol:"kr",decimalDigits:2,decimalSeparator:".",groupSeparator:",",display:"Svensk krona"}])},"./node_modules/@91app/nineyi.lib.common-utility/dist/src/compatibility.utility.js":(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.checkIsSupportSessionStorage=t.checkIsSupportLocalStorage=void 0;t.checkIsSupportLocalStorage=function(){return"undefined"!=typeof localStorage};t.checkIsSupportSessionStorage=function(){return"undefined"!=typeof sessionStorage}},"./node_modules/@91app/nineyi.lib.common-utility/dist/src/cookie.utility.js":(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.getCookie=t.deleteCookie=t.addCookie=void 0;t.addCookie=function(e,t,n){var r="";if(n){var i=new Date;i.setTime(i.getTime()+24*n*60*60*1e3),r="; expires=".concat(i.toUTCString())}document.cookie="".concat(e,"=").concat(t).concat(r,"; path=/")};t.deleteCookie=function(e){var t=new Date;document.cookie="".concat(e,"=;expires=").concat(t.toUTCString(),";path=/")};t.getCookie=function(e){var t=document.cookie.match(new RegExp("(^| )".concat(e,"=([^;]*)(;|$)")));return t?t[2]:""}},"./node_modules/@91app/nineyi.lib.common-utility/dist/src/index.js":function(e,t,n){"use strict";var r=this&&this.__createBinding||(Object.create?function(e,t,n,r){void 0===r&&(r=n),Object.defineProperty(e,r,{enumerable:!0,get:function(){return t[n]}})}:function(e,t,n,r){void 0===r&&(r=n),e[r]=t[n]}),i=this&&this.__exportStar||function(e,t){for(var n in e)"default"===n||Object.prototype.hasOwnProperty.call(t,n)||r(t,e,n)};Object.defineProperty(t,"__esModule",{value:!0}),i(n("./node_modules/@91app/nineyi.lib.common-utility/dist/src/compatibility.utility.js"),t),i(n("./node_modules/@91app/nineyi.lib.common-utility/dist/src/cookie.utility.js"),t),i(n("./node_modules/@91app/nineyi.lib.common-utility/dist/src/input.utility.js"),t),i(n("./node_modules/@91app/nineyi.lib.common-utility/dist/src/object.utility.js"),t),i(n("./node_modules/@91app/nineyi.lib.common-utility/dist/src/runtime.utility.js"),t),i(n("./node_modules/@91app/nineyi.lib.common-utility/dist/src/url.utility.js"),t),i(n("./node_modules/@91app/nineyi.lib.common-utility/dist/src/userAgent.utility.js"),t),i(n("./node_modules/@91app/nineyi.lib.common-utility/dist/src/validate.utility.js"),t),i(n("./node_modules/@91app/nineyi.lib.common-utility/dist/src/value.utility.js"),t)},"./node_modules/@91app/nineyi.lib.common-utility/dist/src/input.utility.js":(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.checkIsMatchNumberKeyCodeAllowed=void 0;t.checkIsMatchNumberKeyCodeAllowed=function(e){return e>47&&e<58||e>95&&e<106||e>36&&e<41||8===e||46===e||102===e||190===e}},"./node_modules/@91app/nineyi.lib.common-utility/dist/src/object.utility.js":(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.deepClone=t.merge=t.checkIsArray=t.checkIsObject=void 0;var r=n("./node_modules/lodash/lodash.js");t.checkIsObject=function(e){return e===Object(e)&&!Array.isArray(e)};t.checkIsArray=function(e){return Array.isArray(e)},t.merge=function(e,t,n){if(!e||!t)return e||t||{};var i=JSON.parse(JSON.stringify(e)),o=JSON.parse(JSON.stringify(t));return n?(0,r.mergeWith)(i,o,n):(0,r.merge)(i,o)};t.deepClone=function(e){return JSON.parse(JSON.stringify(e))}},"./node_modules/@91app/nineyi.lib.common-utility/dist/src/runtime.utility.js":(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.checkIsServerRender=t.checkIsClientRender=void 0;t.checkIsClientRender=function(){return"undefined"!=typeof window};t.checkIsServerRender=function(){return"undefined"==typeof window}},"./node_modules/@91app/nineyi.lib.common-utility/dist/src/url.utility.js":(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.removeQueryStringParam=t.appendQueryParam=t.getQueryString=void 0;t.getQueryString=function(e,t){try{var n=RegExp("[?&]".concat(e,"=([^&]*)")).exec(t||document.location.search);return n&&decodeURIComponent(decodeURIComponent(n[1].replace(/\+/g," ")))}catch(r){return null}};t.appendQueryParam=function(e,t,n,r){void 0===r&&(r=!1);var i="",o=e.length;e.indexOf("#")>0&&(o=e.indexOf("#"),i=e.substring(e.indexOf("#"),e.length));var a=e.substring(0,o).split("?"),c="";if(a.length>1)for(var l=a[1].split("&"),s=0;s<l.length;s++){var u=l[s].split("=");u[0]!==t&&(""===c?c="?":c+="&",c+="".concat(u[0],"=").concat(u[1]?u[1]:""))}return""===c&&(c="?"),r?c="?".concat(t,"=").concat(n+(c.length>1?"&".concat(c.substring(1)):"")):(""!==c&&"?"!==c&&(c+="&"),c+="".concat(t,"=").concat(n||"")),a[0]+c+i};t.removeQueryStringParam=function(e,t){var n=t.split("?")[0],r=[],i=t.includes("?")?t.split("?")[1]:"";if(""!==i){for(var o=(r=i.split("&")).length-1;o>=0;o-=1)r[o].split("=")[0]===e&&r.splice(o,1);n="".concat(n,"?").concat(r.join("&"))}return n}},"./node_modules/@91app/nineyi.lib.common-utility/dist/src/userAgent.utility.js":(e,t)=>{"use strict";var n,r;Object.defineProperty(t,"__esModule",{value:!0}),t.checkIsBot=t.getDeviceOS=t.checkIsIE=t.checkIsSafari=t.checkIsChrome=t.checkIsFirefox=t.DeviceOS=t.Browser=void 0,function(e){e.Chrome="Chrome",e.Firefox="Firefox",e.MSIE="MSIE",e.Safari="Safari",e.Trident="Trident"}(n=t.Browser||(t.Browser={})),function(e){e.Android="Android",e.Bot="Bot",e.UnKnown="UnKnown",e.iOS="iOS"}(r=t.DeviceOS||(t.DeviceOS={}));t.checkIsFirefox=function(e){return e.includes(n.Firefox)};t.checkIsChrome=function(e){return e.includes(n.Chrome)};t.checkIsSafari=function(e){return!e.includes(n.Chrome)&&e.includes(n.Safari)};t.checkIsIE=function(e){return e.indexOf(n.Trident)>0||e.indexOf(n.MSIE)>0};t.getDeviceOS=function(e){return/android/i.test(e)?r.Android:/(iPhone|iPad|iPod|iOS)/i.test(e)?r.iOS:/bot|spider|crawl/i.test(e)?r.Bot:r.UnKnown};t.checkIsBot=function(){return"undefined"!=typeof window&&window.navigator&&/bot|spider|crawl/i.test(navigator.userAgent)}},"./node_modules/@91app/nineyi.lib.common-utility/dist/src/validate.utility.js":(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.checkIsEmail=void 0;t.checkIsEmail=function(e){return/(.+)@(.+)\.(.+)/.test(e)}},"./node_modules/@91app/nineyi.lib.common-utility/dist/src/value.utility.js":(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.checkIsBooleanString=t.checkIsNumberString=t.checkIsString=t.checkIsUndefined=void 0;t.checkIsUndefined=function(e){return void 0===e};t.checkIsString=function(e){return"string"==typeof e};t.checkIsNumberString=function(e){return!!e&&(0,t.checkIsString)(e)&&!Number.isNaN(Number(e))};t.checkIsBooleanString=function(e){return"true"===e||"false"===e}},"./node_modules/@91app/nineyi.lib.display-text/dist/bundle.js":(e,t,n)=>{"use strict";var r;n.d(t,{D7:()=>s,ZF:()=>g,ae:()=>u,bb:()=>l,h4:()=>I,nn:()=>d}),function(e){e.POINT_PAY="PointPay",e.PRICE="Price"}(r||(r={}));var i=["-1"],o=function(e){return"/Date(-62135596800000)/"===e?new Date(0):new Date(parseInt(e.replace("/Date(","").replace(")/",""),10))},a=function(e){return!!/^\/Date/.test(e)},c=function(e,t,n){var r=n.getTime(),i=a("".concat(e))?new Date(o("".concat(e))).getTime():new Date(e).getTime(),c=a("".concat(t))?new Date(o("".concat(t))).getTime():new Date(t).getTime();return i<r&&c>r},l=function(e,t,n){if(void 0===t&&(t=i),void 0===n&&(n=new Date),!e||0===e.length)return null;var r=e.filter((function(e){return c(e.StartDateTime,e.EndDateTime,n)&&t.includes(e.MemberCollectionId)}));if(r.length>0){var o=r.sort((function(e,t){return e.Price!==t.Price?e.Price-t.Price:t.PromotionEngineId-e.PromotionEngineId}))[0];return{price:o.Price,label:o.Label}}return null},s=function(e,t,n){return e&&e.price<=t&&n===r.PRICE?e.label:null},u=function(e,t){return t>0&&t<=e?t:e},g=function(e,t,n){return void 0===n&&(n=new Date),e.filter((function(e){return c(e.StartDateTime,e.EndDateTime,n)&&t.indexOf(e.MemberCollectionId)>=0}))},d=function(e){var t=[];return e.forEach((function(e){e.PriceList.forEach((function(n){var r=t.find((function(e){return e.SkuId===n.SkuId})),i=t.map((function(e){return e.SkuId})).indexOf(n.SkuId),o={PromotionEngineId:e.PromotionEngineId,MemberCollectionId:e.MemberCollectionId,StartDateTime:e.StartDateTime,EndDateTime:e.EndDateTime,SkuId:n.SkuId,Price:n.Price,Label:e.Label};r&&(o.Price<r.Price||o.Price===r.Price&&o.PromotionEngineId>r.PromotionEngineId)&&(t[i]=o),r||t.push(o)}))})),t.sort((function(e,t){return e.Price!==t.Price?e.Price-t.Price:t.PromotionEngineId-e.PromotionEngineId}))},I=function(e,t,n,r){if(void 0===r&&(r=!1),!e)return null;var i=e.find((function(e){return e.SkuId===t}));return i&&i.Price<=(n||Number.MIN_VALUE)&&!r?i:null}},"./node_modules/@91app/nineyi.lib.sparkcore/lib/index.js":function(module,__unused_webpack_exports,__webpack_require__){var g;g=function(__WEBPACK_EXTERNAL_MODULE__0__,__WEBPACK_EXTERNAL_MODULE__3__){return function(e){var t={};function n(r){if(t[r])return t[r].exports;var i=t[r]={i:r,l:!1,exports:{}};return e[r].call(i.exports,i,i.exports,n),i.l=!0,i.exports}return n.m=e,n.c=t,n.d=function(e,t,r){n.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:r})},n.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},n.t=function(e,t){if(1&t&&(e=n(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var r=Object.create(null);if(n.r(r),Object.defineProperty(r,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var i in e)n.d(r,i,function(t){return e[t]}.bind(null,i));return r},n.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return n.d(t,"a",t),t},n.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},n.p="./",n(n.s=34)}([function(module,exports){eval("module.exports = __WEBPACK_EXTERNAL_MODULE__0__;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMC5qcyIsInNvdXJjZXMiOlsid2VicGFjazovL0A5MWFwcC9uaW5leWkubGliLnNwYXJrY29yZS9leHRlcm5hbCB7XCJyb290XCI6XCJSZWFjdFwiLFwiYW1kXCI6XCJyZWFjdFwiLFwiY29tbW9uanNcIjpcInJlYWN0XCIsXCJjb21tb25qczJcIjpcInJlYWN0XCIsXCJ1bWRcIjpcInJlYWN0XCJ9P2E1NmMiXSwic291cmNlc0NvbnRlbnQiOlsibW9kdWxlLmV4cG9ydHMgPSBfX1dFQlBBQ0tfRVhURVJOQUxfTU9EVUxFX18wX187Il0sIm1hcHBpbmdzIjoiQUFBQSIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///0\n")},function(module,__webpack_exports__,__webpack_require__){"use strict";eval("/* WEBPACK VAR INJECTION */(function(process) {/* unused harmony export ServerStyleSheet */\n/* unused harmony export StyleSheetConsumer */\n/* unused harmony export StyleSheetContext */\n/* unused harmony export StyleSheetManager */\n/* unused harmony export ThemeConsumer */\n/* unused harmony export ThemeContext */\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"a\", function() { return ThemeProvider; });\n/* unused harmony export __PRIVATE__ */\n/* unused harmony export createGlobalStyle */\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"b\", function() { return css; });\n/* unused harmony export isStyledComponent */\n/* unused harmony export keyframes */\n/* unused harmony export useTheme */\n/* unused harmony export version */\n/* unused harmony export withTheme */\n/* harmony import */ var react_is__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(6);\n/* harmony import */ var react_is__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react_is__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(0);\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var shallowequal__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(13);\n/* harmony import */ var shallowequal__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(shallowequal__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _emotion_stylis__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(14);\n/* harmony import */ var _emotion_unitless__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(15);\n/* harmony import */ var _emotion_is_prop_valid__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(9);\n/* harmony import */ var hoist_non_react_statics__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(7);\n/* harmony import */ var hoist_non_react_statics__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(hoist_non_react_statics__WEBPACK_IMPORTED_MODULE_6__);\n\n\n\n\n\n\n\n\nfunction _extends() {\n  _extends = Object.assign || function (target) {\n    for (var i = 1; i < arguments.length; i++) {\n      var source = arguments[i];\n\n      for (var key in source) {\n        if (Object.prototype.hasOwnProperty.call(source, key)) {\n          target[key] = source[key];\n        }\n      }\n    }\n\n    return target;\n  };\n\n  return _extends.apply(this, arguments);\n}\n\nfunction _objectWithoutPropertiesLoose(source, excluded) {\n  if (source == null) return {};\n  var target = {};\n  var sourceKeys = Object.keys(source);\n  var key, i;\n\n  for (i = 0; i < sourceKeys.length; i++) {\n    key = sourceKeys[i];\n    if (excluded.indexOf(key) >= 0) continue;\n    target[key] = source[key];\n  }\n\n  return target;\n}\n\n// \nvar interleave = (function (strings, interpolations) {\n  var result = [strings[0]];\n\n  for (var i = 0, len = interpolations.length; i < len; i += 1) {\n    result.push(interpolations[i], strings[i + 1]);\n  }\n\n  return result;\n});\n\n// \nvar isPlainObject = (function (x) {\n  return x !== null && typeof x === 'object' && (x.toString ? x.toString() : Object.prototype.toString.call(x)) === '[object Object]' && !Object(react_is__WEBPACK_IMPORTED_MODULE_0__[\"typeOf\"])(x);\n});\n\n// \nvar EMPTY_ARRAY = Object.freeze([]);\nvar EMPTY_OBJECT = Object.freeze({});\n\n// \nfunction isFunction(test) {\n  return typeof test === 'function';\n}\n\n// \nfunction getComponentName(target) {\n  return ( false) || // $FlowFixMe\n  target.displayName || // $FlowFixMe\n  target.name || 'Component';\n}\n\n// \nfunction isStatelessFunction(test) {\n  return typeof test === 'function' && !(test.prototype && test.prototype.isReactComponent);\n}\n\n// \nfunction isStyledComponent(target) {\n  return target && typeof target.styledComponentId === 'string';\n}\n\n// \nvar SC_ATTR = typeof process !== 'undefined' && (process.env.REACT_APP_SC_ATTR || process.env.SC_ATTR) || 'data-styled';\nvar SC_ATTR_ACTIVE = 'active';\nvar SC_ATTR_VERSION = 'data-styled-version';\nvar SC_VERSION = \"5.1.1\";\nvar SPLITTER = '/*!sc*/\\n';\nvar IS_BROWSER = typeof window !== 'undefined' && 'HTMLElement' in window;\nvar DISABLE_SPEEDY = typeof SC_DISABLE_SPEEDY === 'boolean' && SC_DISABLE_SPEEDY || typeof process !== 'undefined' && (process.env.REACT_APP_SC_DISABLE_SPEEDY || process.env.SC_DISABLE_SPEEDY) || \"production\" !== 'production'; // Shared empty execution context when generating static styles\n\nvar STATIC_EXECUTION_CONTEXT = {};\n\n// \n\n/* eslint-disable camelcase, no-undef */\nvar getNonce = function getNonce() {\n  return  true ? __webpack_require__.nc : undefined;\n};\n\nvar errorMap = {\n  \"1\": \"Cannot create styled-component for component: %s.\\n\\n\",\n  \"2\": \"Can't collect styles once you've consumed a `ServerStyleSheet`'s styles! `ServerStyleSheet` is a one off instance for each server-side render cycle.\\n\\n- Are you trying to reuse it across renders?\\n- Are you accidentally calling collectStyles twice?\\n\\n\",\n  \"3\": \"Streaming SSR is only supported in a Node.js environment; Please do not try to call this method in the browser.\\n\\n\",\n  \"4\": \"The `StyleSheetManager` expects a valid target or sheet prop!\\n\\n- Does this error occur on the client and is your target falsy?\\n- Does this error occur on the server and is the sheet falsy?\\n\\n\",\n  \"5\": \"The clone method cannot be used on the client!\\n\\n- Are you running in a client-like environment on the server?\\n- Are you trying to run SSR on the client?\\n\\n\",\n  \"6\": \"Trying to insert a new style tag, but the given Node is unmounted!\\n\\n- Are you using a custom target that isn't mounted?\\n- Does your document not have a valid head element?\\n- Have you accidentally removed a style tag manually?\\n\\n\",\n  \"7\": \"ThemeProvider: Please return an object from your \\\"theme\\\" prop function, e.g.\\n\\n```js\\ntheme={() => ({})}\\n```\\n\\n\",\n  \"8\": \"ThemeProvider: Please make your \\\"theme\\\" prop an object.\\n\\n\",\n  \"9\": \"Missing document `<head>`\\n\\n\",\n  \"10\": \"Cannot find a StyleSheet instance. Usually this happens if there are multiple copies of styled-components loaded at once. Check out this issue for how to troubleshoot and fix the common cases where this situation can happen: https://github.com/styled-components/styled-components/issues/1941#issuecomment-417862021\\n\\n\",\n  \"11\": \"_This error was replaced with a dev-time warning, it will be deleted for v4 final._ [createGlobalStyle] received children which will not be rendered. Please use the component without passing children elements.\\n\\n\",\n  \"12\": \"It seems you are interpolating a keyframe declaration (%s) into an untagged string. This was supported in styled-components v3, but is not longer supported in v4 as keyframes are now injected on-demand. Please wrap your string in the css\\\\`\\\\` helper which ensures the styles are injected correctly. See https://www.styled-components.com/docs/api#css\\n\\n\",\n  \"13\": \"%s is not a styled component and cannot be referred to via component selector. See https://www.styled-components.com/docs/advanced#referring-to-other-components for more details.\\n\\n\",\n  \"14\": \"ThemeProvider: \\\"theme\\\" prop is required.\\n\\n\",\n  \"15\": \"A stylis plugin has been supplied that is not named. We need a name for each plugin to be able to prevent styling collisions between different stylis configurations within the same app. Before you pass your plugin to `<StyleSheetManager stylisPlugins={[]}>`, please make sure each plugin is uniquely-named, e.g.\\n\\n```js\\nObject.defineProperty(importedPlugin, 'name', { value: 'some-unique-name' });\\n```\\n\\n\",\n  \"16\": \"Reached the limit of how many styled components may be created at group %s.\\nYou may only create up to 1,073,741,824 components. If you're creating components dynamically,\\nas for instance in your render method then you may be running into this limitation.\\n\\n\",\n  \"17\": \"CSSStyleSheet could not be found on HTMLStyleElement.\\nHas styled-components' style tag been unmounted or altered by another script?\\n\"\n};\n\n// \nvar ERRORS =  false ? undefined : {};\n/**\n * super basic version of sprintf\n */\n\nfunction format() {\n  var a = arguments.length <= 0 ? undefined : arguments[0];\n  var b = [];\n\n  for (var c = 1, len = arguments.length; c < len; c += 1) {\n    b.push(c < 0 || arguments.length <= c ? undefined : arguments[c]);\n  }\n\n  b.forEach(function (d) {\n    a = a.replace(/%[a-z]/, d);\n  });\n  return a;\n}\n/**\n * Create an error file out of errors.md for development and a simple web link to the full errors\n * in production mode.\n */\n\n\nfunction throwStyledComponentsError(code) {\n  for (var _len = arguments.length, interpolations = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n    interpolations[_key - 1] = arguments[_key];\n  }\n\n  if (true) {\n    throw new Error(\"An error occurred. See https://github.com/styled-components/styled-components/blob/master/packages/styled-components/src/utils/errors.md#\" + code + \" for more information.\" + (interpolations.length > 0 ? \" Additional arguments: \" + interpolations.join(', ') : ''));\n  } else {}\n}\n\n// \nvar ELEMENT_TYPE = 1;\n/* Node.ELEMENT_TYPE */\n\n/** Find last style element if any inside target */\n\nvar findLastStyleTag = function findLastStyleTag(target) {\n  var childNodes = target.childNodes;\n\n  for (var i = childNodes.length; i >= 0; i--) {\n    var child = childNodes[i];\n\n    if (child && child.nodeType === ELEMENT_TYPE && child.hasAttribute(SC_ATTR)) {\n      return child;\n    }\n  }\n\n  return undefined;\n};\n/** Create a style element inside `target` or <head> after the last */\n\n\nvar makeStyleTag = function makeStyleTag(target) {\n  var head = document.head;\n  var parent = target || head;\n  var style = document.createElement('style');\n  var prevStyle = findLastStyleTag(parent);\n  var nextSibling = prevStyle !== undefined ? prevStyle.nextSibling : null;\n  style.setAttribute(SC_ATTR, SC_ATTR_ACTIVE);\n  style.setAttribute(SC_ATTR_VERSION, SC_VERSION);\n  var nonce = getNonce();\n  if (nonce) style.setAttribute('nonce', nonce);\n  parent.insertBefore(style, nextSibling);\n  return style;\n};\n/** Get the CSSStyleSheet instance for a given style element */\n\nvar getSheet = function getSheet(tag) {\n  if (tag.sheet) {\n    return tag.sheet;\n  } // Avoid Firefox quirk where the style element might not have a sheet property\n\n\n  var _document = document,\n      styleSheets = _document.styleSheets;\n\n  for (var i = 0, l = styleSheets.length; i < l; i++) {\n    var sheet = styleSheets[i];\n\n    if (sheet.ownerNode === tag) {\n      return sheet;\n    }\n  }\n\n  throwStyledComponentsError(17);\n  return undefined;\n};\n\n// \n/** Create a CSSStyleSheet-like tag depending on the environment */\n\nvar makeTag = function makeTag(_ref) {\n  var isServer = _ref.isServer,\n      useCSSOMInjection = _ref.useCSSOMInjection,\n      target = _ref.target;\n\n  if (isServer) {\n    return new VirtualTag(target);\n  } else if (useCSSOMInjection) {\n    return new CSSOMTag(target);\n  } else {\n    return new TextTag(target);\n  }\n};\nvar CSSOMTag = /*#__PURE__*/function () {\n  function CSSOMTag(target) {\n    var element = this.element = makeStyleTag(target); // Avoid Edge bug where empty style elements don't create sheets\n\n    element.appendChild(document.createTextNode(''));\n    this.sheet = getSheet(element);\n    this.length = 0;\n  }\n\n  var _proto = CSSOMTag.prototype;\n\n  _proto.insertRule = function insertRule(index, rule) {\n    try {\n      this.sheet.insertRule(rule, index);\n      this.length++;\n      return true;\n    } catch (_error) {\n      return false;\n    }\n  };\n\n  _proto.deleteRule = function deleteRule(index) {\n    this.sheet.deleteRule(index);\n    this.length--;\n  };\n\n  _proto.getRule = function getRule(index) {\n    var rule = this.sheet.cssRules[index]; // Avoid IE11 quirk where cssText is inaccessible on some invalid rules\n\n    if (rule !== undefined && typeof rule.cssText === 'string') {\n      return rule.cssText;\n    } else {\n      return '';\n    }\n  };\n\n  return CSSOMTag;\n}();\n/** A Tag that emulates the CSSStyleSheet API but uses text nodes */\n\nvar TextTag = /*#__PURE__*/function () {\n  function TextTag(target) {\n    var element = this.element = makeStyleTag(target);\n    this.nodes = element.childNodes;\n    this.length = 0;\n  }\n\n  var _proto2 = TextTag.prototype;\n\n  _proto2.insertRule = function insertRule(index, rule) {\n    if (index <= this.length && index >= 0) {\n      var node = document.createTextNode(rule);\n      var refNode = this.nodes[index];\n      this.element.insertBefore(node, refNode || null);\n      this.length++;\n      return true;\n    } else {\n      return false;\n    }\n  };\n\n  _proto2.deleteRule = function deleteRule(index) {\n    this.element.removeChild(this.nodes[index]);\n    this.length--;\n  };\n\n  _proto2.getRule = function getRule(index) {\n    if (index < this.length) {\n      return this.nodes[index].textContent;\n    } else {\n      return '';\n    }\n  };\n\n  return TextTag;\n}();\n/** A completely virtual (server-side) Tag that doesn't manipulate the DOM */\n\nvar VirtualTag = /*#__PURE__*/function () {\n  function VirtualTag(_target) {\n    this.rules = [];\n    this.length = 0;\n  }\n\n  var _proto3 = VirtualTag.prototype;\n\n  _proto3.insertRule = function insertRule(index, rule) {\n    if (index <= this.length) {\n      this.rules.splice(index, 0, rule);\n      this.length++;\n      return true;\n    } else {\n      return false;\n    }\n  };\n\n  _proto3.deleteRule = function deleteRule(index) {\n    this.rules.splice(index, 1);\n    this.length--;\n  };\n\n  _proto3.getRule = function getRule(index) {\n    if (index < this.length) {\n      return this.rules[index];\n    } else {\n      return '';\n    }\n  };\n\n  return VirtualTag;\n}();\n\n// \n/** Create a GroupedTag with an underlying Tag implementation */\n\nvar makeGroupedTag = function makeGroupedTag(tag) {\n  return new DefaultGroupedTag(tag);\n};\nvar BASE_SIZE = 1 << 9;\n\nvar DefaultGroupedTag = /*#__PURE__*/function () {\n  function DefaultGroupedTag(tag) {\n    this.groupSizes = new Uint32Array(BASE_SIZE);\n    this.length = BASE_SIZE;\n    this.tag = tag;\n  }\n\n  var _proto = DefaultGroupedTag.prototype;\n\n  _proto.indexOfGroup = function indexOfGroup(group) {\n    var index = 0;\n\n    for (var i = 0; i < group; i++) {\n      index += this.groupSizes[i];\n    }\n\n    return index;\n  };\n\n  _proto.insertRules = function insertRules(group, rules) {\n    if (group >= this.groupSizes.length) {\n      var oldBuffer = this.groupSizes;\n      var oldSize = oldBuffer.length;\n      var newSize = oldSize;\n\n      while (group >= newSize) {\n        newSize <<= 1;\n\n        if (newSize < 0) {\n          throwStyledComponentsError(16, \"\" + group);\n        }\n      }\n\n      this.groupSizes = new Uint32Array(newSize);\n      this.groupSizes.set(oldBuffer);\n      this.length = newSize;\n\n      for (var i = oldSize; i < newSize; i++) {\n        this.groupSizes[i] = 0;\n      }\n    }\n\n    var ruleIndex = this.indexOfGroup(group + 1);\n\n    for (var _i = 0, l = rules.length; _i < l; _i++) {\n      if (this.tag.insertRule(ruleIndex, rules[_i])) {\n        this.groupSizes[group]++;\n        ruleIndex++;\n      }\n    }\n  };\n\n  _proto.clearGroup = function clearGroup(group) {\n    if (group < this.length) {\n      var length = this.groupSizes[group];\n      var startIndex = this.indexOfGroup(group);\n      var endIndex = startIndex + length;\n      this.groupSizes[group] = 0;\n\n      for (var i = startIndex; i < endIndex; i++) {\n        this.tag.deleteRule(startIndex);\n      }\n    }\n  };\n\n  _proto.getGroup = function getGroup(group) {\n    var css = '';\n\n    if (group >= this.length || this.groupSizes[group] === 0) {\n      return css;\n    }\n\n    var length = this.groupSizes[group];\n    var startIndex = this.indexOfGroup(group);\n    var endIndex = startIndex + length;\n\n    for (var i = startIndex; i < endIndex; i++) {\n      css += \"\" + this.tag.getRule(i) + SPLITTER;\n    }\n\n    return css;\n  };\n\n  return DefaultGroupedTag;\n}();\n\n// \nvar MAX_SMI = 1 << 31 - 1;\nvar groupIDRegister = new Map();\nvar reverseRegister = new Map();\nvar nextFreeGroup = 1;\nvar getGroupForId = function getGroupForId(id) {\n  if (groupIDRegister.has(id)) {\n    return groupIDRegister.get(id);\n  }\n\n  var group = nextFreeGroup++;\n\n  if (false) {}\n\n  groupIDRegister.set(id, group);\n  reverseRegister.set(group, id);\n  return group;\n};\nvar getIdForGroup = function getIdForGroup(group) {\n  return reverseRegister.get(group);\n};\nvar setGroupForId = function setGroupForId(id, group) {\n  if (group >= nextFreeGroup) {\n    nextFreeGroup = group + 1;\n  }\n\n  groupIDRegister.set(id, group);\n  reverseRegister.set(group, id);\n};\n\n// \nvar SELECTOR = \"style[\" + SC_ATTR + \"][\" + SC_ATTR_VERSION + \"=\\\"\" + SC_VERSION + \"\\\"]\";\nvar MARKER_RE = new RegExp(\"^\" + SC_ATTR + \"\\\\.g(\\\\d+)\\\\[id=\\\"([\\\\w\\\\d-]+)\\\"\\\\].*?\\\"([^\\\"]*)\");\nvar outputSheet = function outputSheet(sheet) {\n  var tag = sheet.getTag();\n  var length = tag.length;\n  var css = '';\n\n  for (var group = 0; group < length; group++) {\n    var id = getIdForGroup(group);\n    if (id === undefined) continue;\n    var names = sheet.names.get(id);\n    var rules = tag.getGroup(group);\n    if (names === undefined || rules.length === 0) continue;\n    var selector = SC_ATTR + \".g\" + group + \"[id=\\\"\" + id + \"\\\"]\";\n    var content = '';\n\n    if (names !== undefined) {\n      names.forEach(function (name) {\n        if (name.length > 0) {\n          content += name + \",\";\n        }\n      });\n    } // NOTE: It's easier to collect rules and have the marker\n    // after the actual rules to simplify the rehydration\n\n\n    css += \"\" + rules + selector + \"{content:\\\"\" + content + \"\\\"}\" + SPLITTER;\n  }\n\n  return css;\n};\n\nvar rehydrateNamesFromContent = function rehydrateNamesFromContent(sheet, id, content) {\n  var names = content.split(',');\n  var name;\n\n  for (var i = 0, l = names.length; i < l; i++) {\n    // eslint-disable-next-line\n    if (name = names[i]) {\n      sheet.registerName(id, name);\n    }\n  }\n};\n\nvar rehydrateSheetFromTag = function rehydrateSheetFromTag(sheet, style) {\n  var parts = style.innerHTML.split(SPLITTER);\n  var rules = [];\n\n  for (var i = 0, l = parts.length; i < l; i++) {\n    var part = parts[i].trim();\n    if (!part) continue;\n    var marker = part.match(MARKER_RE);\n\n    if (marker) {\n      var group = parseInt(marker[1], 10) | 0;\n      var id = marker[2];\n\n      if (group !== 0) {\n        // Rehydrate componentId to group index mapping\n        setGroupForId(id, group); // Rehydrate names and rules\n        // looks like: data-styled.g11[id=\"idA\"]{content:\"nameA,\"}\n\n        rehydrateNamesFromContent(sheet, id, marker[3]);\n        sheet.getTag().insertRules(group, rules);\n      }\n\n      rules.length = 0;\n    } else {\n      rules.push(part);\n    }\n  }\n};\n\nvar rehydrateSheet = function rehydrateSheet(sheet) {\n  var nodes = document.querySelectorAll(SELECTOR);\n\n  for (var i = 0, l = nodes.length; i < l; i++) {\n    var node = nodes[i];\n\n    if (node && node.getAttribute(SC_ATTR) !== SC_ATTR_ACTIVE) {\n      rehydrateSheetFromTag(sheet, node);\n\n      if (node.parentNode) {\n        node.parentNode.removeChild(node);\n      }\n    }\n  }\n};\n\nvar SHOULD_REHYDRATE = IS_BROWSER;\nvar defaultOptions = {\n  isServer: !IS_BROWSER,\n  useCSSOMInjection: !DISABLE_SPEEDY\n};\n/** Contains the main stylesheet logic for stringification and caching */\n\nvar StyleSheet = /*#__PURE__*/function () {\n  /** Register a group ID to give it an index */\n  StyleSheet.registerId = function registerId(id) {\n    return getGroupForId(id);\n  };\n\n  function StyleSheet(options, globalStyles, names) {\n    if (options === void 0) {\n      options = defaultOptions;\n    }\n\n    if (globalStyles === void 0) {\n      globalStyles = {};\n    }\n\n    this.options = _extends({}, defaultOptions, {}, options);\n    this.gs = globalStyles;\n    this.names = new Map(names); // We rehydrate only once and use the sheet that is created first\n\n    if (!this.options.isServer && IS_BROWSER && SHOULD_REHYDRATE) {\n      SHOULD_REHYDRATE = false;\n      rehydrateSheet(this);\n    }\n  }\n\n  var _proto = StyleSheet.prototype;\n\n  _proto.reconstructWithOptions = function reconstructWithOptions(options) {\n    return new StyleSheet(_extends({}, this.options, {}, options), this.gs, this.names);\n  };\n\n  _proto.allocateGSInstance = function allocateGSInstance(id) {\n    return this.gs[id] = (this.gs[id] || 0) + 1;\n  }\n  /** Lazily initialises a GroupedTag for when it's actually needed */\n  ;\n\n  _proto.getTag = function getTag() {\n    return this.tag || (this.tag = makeGroupedTag(makeTag(this.options)));\n  }\n  /** Check whether a name is known for caching */\n  ;\n\n  _proto.hasNameForId = function hasNameForId(id, name) {\n    return this.names.has(id) && this.names.get(id).has(name);\n  }\n  /** Mark a group's name as known for caching */\n  ;\n\n  _proto.registerName = function registerName(id, name) {\n    getGroupForId(id);\n\n    if (!this.names.has(id)) {\n      var groupNames = new Set();\n      groupNames.add(name);\n      this.names.set(id, groupNames);\n    } else {\n      this.names.get(id).add(name);\n    }\n  }\n  /** Insert new rules which also marks the name as known */\n  ;\n\n  _proto.insertRules = function insertRules(id, name, rules) {\n    this.registerName(id, name);\n    this.getTag().insertRules(getGroupForId(id), rules);\n  }\n  /** Clears all cached names for a given group ID */\n  ;\n\n  _proto.clearNames = function clearNames(id) {\n    if (this.names.has(id)) {\n      this.names.get(id).clear();\n    }\n  }\n  /** Clears all rules for a given group ID */\n  ;\n\n  _proto.clearRules = function clearRules(id) {\n    this.getTag().clearGroup(getGroupForId(id));\n    this.clearNames(id);\n  }\n  /** Clears the entire tag which deletes all rules but not its names */\n  ;\n\n  _proto.clearTag = function clearTag() {\n    // NOTE: This does not clear the names, since it's only used during SSR\n    // so that we can continuously output only new rules\n    this.tag = undefined;\n  }\n  /** Outputs the current sheet as a CSS string with markers for SSR */\n  ;\n\n  _proto.toString = function toString() {\n    return outputSheet(this);\n  };\n\n  return StyleSheet;\n}();\n\n// \n\n/* eslint-disable */\nvar SEED = 5381; // When we have separate strings it's useful to run a progressive\n// version of djb2 where we pretend that we're still looping over\n// the same string\n\nvar phash = function phash(h, x) {\n  var i = x.length;\n\n  while (i) {\n    h = h * 33 ^ x.charCodeAt(--i);\n  }\n\n  return h;\n}; // This is a djb2 hashing function\n\nvar hash = function hash(x) {\n  return phash(SEED, x);\n};\n\n/**\n * MIT License\n *\n * Copyright (c) 2016 Sultan Tarimo\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy of\n * this software and associated documentation files (the \"Software\"),\n * to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software and to permit persons to whom the Software is furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in all\n * copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n * OR IMPLIED INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,\n * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR\n * IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n */\n\n/* eslint-disable */\nfunction insertRulePlugin (insertRule) {\n  var delimiter = '/*|*/';\n  var needle = delimiter + \"}\";\n\n  function toSheet(block) {\n    if (block) {\n      try {\n        insertRule(block + \"}\");\n      } catch (e) {}\n    }\n  }\n\n  return function ruleSheet(context, content, selectors, parents, line, column, length, ns, depth, at) {\n    switch (context) {\n      // property\n      case 1:\n        // @import\n        if (depth === 0 && content.charCodeAt(0) === 64) return insertRule(content + \";\"), '';\n        break;\n      // selector\n\n      case 2:\n        if (ns === 0) return content + delimiter;\n        break;\n      // at-rule\n\n      case 3:\n        switch (ns) {\n          // @font-face, @page\n          case 102:\n          case 112:\n            return insertRule(selectors[0] + content), '';\n\n          default:\n            return content + (at === 0 ? delimiter : '');\n        }\n\n      case -2:\n        content.split(needle).forEach(toSheet);\n    }\n  };\n}\n\nvar COMMENT_REGEX = /^\\s*\\/\\/.*$/gm;\nfunction createStylisInstance(_temp) {\n  var _ref = _temp === void 0 ? EMPTY_OBJECT : _temp,\n      _ref$options = _ref.options,\n      options = _ref$options === void 0 ? EMPTY_OBJECT : _ref$options,\n      _ref$plugins = _ref.plugins,\n      plugins = _ref$plugins === void 0 ? EMPTY_ARRAY : _ref$plugins;\n\n  var stylis = new _emotion_stylis__WEBPACK_IMPORTED_MODULE_3__[/* default */ \"a\"](options); // Wrap `insertRulePlugin to build a list of rules,\n  // and then make our own plugin to return the rules. This\n  // makes it easier to hook into the existing SSR architecture\n\n  var parsingRules = []; // eslint-disable-next-line consistent-return\n\n  var returnRulesPlugin = function returnRulesPlugin(context) {\n    if (context === -2) {\n      var parsedRules = parsingRules;\n      parsingRules = [];\n      return parsedRules;\n    }\n  };\n\n  var parseRulesPlugin = insertRulePlugin(function (rule) {\n    parsingRules.push(rule);\n  });\n\n  var _componentId;\n\n  var _selector;\n\n  var _selectorRegexp;\n\n  var selfReferenceReplacer = function selfReferenceReplacer(match, offset, string) {\n    if ( // the first self-ref is always untouched\n    offset > 0 && // there should be at least two self-refs to do a replacement (.b > .b)\n    string.slice(0, offset).indexOf(_selector) !== -1 && // no consecutive self refs (.b.b); that is a precedence boost and treated differently\n    string.slice(offset - _selector.length, offset) !== _selector) {\n      return \".\" + _componentId;\n    }\n\n    return match;\n  };\n  /**\n   * When writing a style like\n   *\n   * & + & {\n   *   color: red;\n   * }\n   *\n   * The second ampersand should be a reference to the static component class. stylis\n   * has no knowledge of static class so we have to intelligently replace the base selector.\n   *\n   * https://github.com/thysultan/stylis.js#plugins <- more info about the context phase values\n   * \"2\" means this plugin is taking effect at the very end after all other processing is complete\n   */\n\n\n  var selfReferenceReplacementPlugin = function selfReferenceReplacementPlugin(context, _, selectors) {\n    if (context === 2 && selectors.length && selectors[0].lastIndexOf(_selector) > 0) {\n      // eslint-disable-next-line no-param-reassign\n      selectors[0] = selectors[0].replace(_selectorRegexp, selfReferenceReplacer);\n    }\n  };\n\n  stylis.use([].concat(plugins, [selfReferenceReplacementPlugin, parseRulesPlugin, returnRulesPlugin]));\n\n  function stringifyRules(css, selector, prefix, componentId) {\n    if (componentId === void 0) {\n      componentId = '&';\n    }\n\n    var flatCSS = css.replace(COMMENT_REGEX, '');\n    var cssStr = selector && prefix ? prefix + \" \" + selector + \" { \" + flatCSS + \" }\" : flatCSS; // stylis has no concept of state to be passed to plugins\n    // but since JS is single=threaded, we can rely on that to ensure\n    // these properties stay in sync with the current stylis run\n\n    _componentId = componentId;\n    _selector = selector;\n    _selectorRegexp = new RegExp(\"\\\\\" + _selector + \"\\\\b\", 'g');\n    return stylis(prefix || !selector ? '' : selector, cssStr);\n  }\n\n  stringifyRules.hash = plugins.length ? plugins.reduce(function (acc, plugin) {\n    if (!plugin.name) {\n      throwStyledComponentsError(15);\n    }\n\n    return phash(acc, plugin.name);\n  }, SEED).toString() : '';\n  return stringifyRules;\n}\n\n// \nvar StyleSheetContext = react__WEBPACK_IMPORTED_MODULE_1___default.a.createContext();\nvar StyleSheetConsumer = StyleSheetContext.Consumer;\nvar StylisContext = react__WEBPACK_IMPORTED_MODULE_1___default.a.createContext();\nvar StylisConsumer = StylisContext.Consumer;\nvar masterSheet = new StyleSheet();\nvar masterStylis = createStylisInstance();\nfunction useStyleSheet() {\n  return Object(react__WEBPACK_IMPORTED_MODULE_1__[\"useContext\"])(StyleSheetContext) || masterSheet;\n}\nfunction useStylis() {\n  return Object(react__WEBPACK_IMPORTED_MODULE_1__[\"useContext\"])(StylisContext) || masterStylis;\n}\nfunction StyleSheetManager(props) {\n  var _useState = Object(react__WEBPACK_IMPORTED_MODULE_1__[\"useState\"])(props.stylisPlugins),\n      plugins = _useState[0],\n      setPlugins = _useState[1];\n\n  var contextStyleSheet = useStyleSheet();\n  var styleSheet = Object(react__WEBPACK_IMPORTED_MODULE_1__[\"useMemo\"])(function () {\n    var sheet = contextStyleSheet;\n\n    if (props.sheet) {\n      // eslint-disable-next-line prefer-destructuring\n      sheet = props.sheet;\n    } else if (props.target) {\n      sheet = sheet.reconstructWithOptions({\n        target: props.target\n      });\n    }\n\n    if (props.disableCSSOMInjection) {\n      sheet = sheet.reconstructWithOptions({\n        useCSSOMInjection: false\n      });\n    }\n\n    return sheet;\n  }, [props.disableCSSOMInjection, props.sheet, props.target]);\n  var stylis = Object(react__WEBPACK_IMPORTED_MODULE_1__[\"useMemo\"])(function () {\n    return createStylisInstance({\n      options: {\n        prefix: !props.disableVendorPrefixes\n      },\n      plugins: plugins\n    });\n  }, [props.disableVendorPrefixes, plugins]);\n  Object(react__WEBPACK_IMPORTED_MODULE_1__[\"useEffect\"])(function () {\n    if (!shallowequal__WEBPACK_IMPORTED_MODULE_2___default()(plugins, props.stylisPlugins)) setPlugins(props.stylisPlugins);\n  }, [props.stylisPlugins]);\n  return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_1___default.a.createElement(StyleSheetContext.Provider, {\n    value: styleSheet\n  }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_1___default.a.createElement(StylisContext.Provider, {\n    value: stylis\n  },  false ? undefined : props.children));\n}\n\n// \n\nvar Keyframes = /*#__PURE__*/function () {\n  function Keyframes(name, stringifyArgs) {\n    var _this = this;\n\n    this.inject = function (styleSheet) {\n      if (!styleSheet.hasNameForId(_this.id, _this.name)) {\n        styleSheet.insertRules(_this.id, _this.name, masterStylis.apply(void 0, _this.stringifyArgs));\n      }\n    };\n\n    this.toString = function () {\n      return throwStyledComponentsError(12, String(_this.name));\n    };\n\n    this.name = name;\n    this.id = \"sc-keyframes-\" + name;\n    this.stringifyArgs = stringifyArgs;\n  }\n\n  var _proto = Keyframes.prototype;\n\n  _proto.getName = function getName() {\n    return this.name;\n  };\n\n  return Keyframes;\n}();\n\n// \n\n/**\n * inlined version of\n * https://github.com/facebook/fbjs/blob/master/packages/fbjs/src/core/hyphenateStyleName.js\n */\nvar uppercasePattern = /([A-Z])/g;\nvar msPattern = /^ms-/;\n/**\n * Hyphenates a camelcased CSS property name, for example:\n *\n *   > hyphenateStyleName('backgroundColor')\n *   < \"background-color\"\n *   > hyphenateStyleName('MozTransition')\n *   < \"-moz-transition\"\n *   > hyphenateStyleName('msTransition')\n *   < \"-ms-transition\"\n *\n * As Modernizr suggests (http://modernizr.com/docs/#prefixed), an `ms` prefix\n * is converted to `-ms-`.\n *\n * @param {string} string\n * @return {string}\n */\n\nfunction hyphenateStyleName(string) {\n  return string.replace(uppercasePattern, '-$1').toLowerCase().replace(msPattern, '-ms-');\n}\n\n// \n\nfunction addUnitIfNeeded(name, value) {\n  // https://github.com/amilajack/eslint-plugin-flowtype-errors/issues/133\n  // $FlowFixMe\n  if (value == null || typeof value === 'boolean' || value === '') {\n    return '';\n  }\n\n  if (typeof value === 'number' && value !== 0 && !(name in _emotion_unitless__WEBPACK_IMPORTED_MODULE_4__[/* default */ \"a\"])) {\n    return value + \"px\"; // Presumes implicit 'px' suffix for unitless numbers\n  }\n\n  return String(value).trim();\n}\n\n// \n/**\n * It's falsish not falsy because 0 is allowed.\n */\n\nvar isFalsish = function isFalsish(chunk) {\n  return chunk === undefined || chunk === null || chunk === false || chunk === '';\n};\n\nvar objToCssArray = function objToCssArray(obj, prevKey) {\n  var rules = [];\n  var keys = Object.keys(obj);\n  keys.forEach(function (key) {\n    if (!isFalsish(obj[key])) {\n      if (isPlainObject(obj[key])) {\n        rules.push.apply(rules, objToCssArray(obj[key], key));\n        return rules;\n      } else if (isFunction(obj[key])) {\n        rules.push(hyphenateStyleName(key) + \":\", obj[key], ';');\n        return rules;\n      }\n\n      rules.push(hyphenateStyleName(key) + \": \" + addUnitIfNeeded(key, obj[key]) + \";\");\n    }\n\n    return rules;\n  });\n  return prevKey ? [prevKey + \" {\"].concat(rules, ['}']) : rules;\n};\nfunction flatten(chunk, executionContext, styleSheet) {\n  if (Array.isArray(chunk)) {\n    var ruleSet = [];\n\n    for (var i = 0, len = chunk.length, result; i < len; i += 1) {\n      result = flatten(chunk[i], executionContext, styleSheet);\n      if (result === '') continue;else if (Array.isArray(result)) ruleSet.push.apply(ruleSet, result);else ruleSet.push(result);\n    }\n\n    return ruleSet;\n  }\n\n  if (isFalsish(chunk)) {\n    return '';\n  }\n  /* Handle other components */\n\n\n  if (isStyledComponent(chunk)) {\n    return \".\" + chunk.styledComponentId;\n  }\n  /* Either execute or defer the function */\n\n\n  if (isFunction(chunk)) {\n    if (isStatelessFunction(chunk) && executionContext) {\n      var _result = chunk(executionContext);\n\n      if (false) {}\n\n      return flatten(_result, executionContext, styleSheet);\n    } else return chunk;\n  }\n\n  if (chunk instanceof Keyframes) {\n    if (styleSheet) {\n      chunk.inject(styleSheet);\n      return chunk.getName();\n    } else return chunk;\n  }\n  /* Handle objects */\n\n\n  return isPlainObject(chunk) ? objToCssArray(chunk) : chunk.toString();\n}\n\n// \nfunction css(styles) {\n  for (var _len = arguments.length, interpolations = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n    interpolations[_key - 1] = arguments[_key];\n  }\n\n  if (isFunction(styles) || isPlainObject(styles)) {\n    // $FlowFixMe\n    return flatten(interleave(EMPTY_ARRAY, [styles].concat(interpolations)));\n  }\n\n  if (interpolations.length === 0 && styles.length === 1 && typeof styles[0] === \"string\") {\n    // $FlowFixMe\n    return styles;\n  } // $FlowFixMe\n\n\n  return flatten(interleave(styles, interpolations));\n}\n\nfunction constructWithOptions(componentConstructor, tag, options) {\n  if (options === void 0) {\n    options = EMPTY_OBJECT;\n  }\n\n  if (!Object(react_is__WEBPACK_IMPORTED_MODULE_0__[\"isValidElementType\"])(tag)) {\n    return throwStyledComponentsError(1, String(tag));\n  }\n  /* This is callable directly as a template function */\n  // $FlowFixMe: Not typed to avoid destructuring arguments\n\n\n  var templateFunction = function templateFunction() {\n    return componentConstructor(tag, options, css.apply(void 0, arguments));\n  };\n  /* If config methods are called, wrap up a new template function and merge options */\n\n\n  templateFunction.withConfig = function (config) {\n    return constructWithOptions(componentConstructor, tag, _extends({}, options, {}, config));\n  };\n  /* Modify/inject new props at runtime */\n\n\n  templateFunction.attrs = function (attrs) {\n    return constructWithOptions(componentConstructor, tag, _extends({}, options, {\n      attrs: Array.prototype.concat(options.attrs, attrs).filter(Boolean)\n    }));\n  };\n\n  return templateFunction;\n}\n\n/* eslint-disable */\n\n/**\n  mixin-deep; https://github.com/jonschlinkert/mixin-deep\n  Inlined such that it will be consistently transpiled to an IE-compatible syntax.\n\n  The MIT License (MIT)\n\n  Copyright (c) 2014-present, Jon Schlinkert.\n\n  Permission is hereby granted, free of charge, to any person obtaining a copy\n  of this software and associated documentation files (the \"Software\"), to deal\n  in the Software without restriction, including without limitation the rights\n  to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n  copies of the Software, and to permit persons to whom the Software is\n  furnished to do so, subject to the following conditions:\n\n  The above copyright notice and this permission notice shall be included in\n  all copies or substantial portions of the Software.\n\n  THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n  IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n  FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n  AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n  LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n  OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n  THE SOFTWARE.\n*/\nvar isObject = function isObject(val) {\n  return typeof val === 'function' || typeof val === 'object' && val !== null && !Array.isArray(val);\n};\n\nvar isValidKey = function isValidKey(key) {\n  return key !== '__proto__' && key !== 'constructor' && key !== 'prototype';\n};\n\nfunction mixin(target, val, key) {\n  var obj = target[key];\n\n  if (isObject(val) && isObject(obj)) {\n    mixinDeep(obj, val);\n  } else {\n    target[key] = val;\n  }\n}\n\nfunction mixinDeep(target) {\n  for (var _len = arguments.length, rest = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n    rest[_key - 1] = arguments[_key];\n  }\n\n  for (var _i = 0, _rest = rest; _i < _rest.length; _i++) {\n    var obj = _rest[_i];\n\n    if (isObject(obj)) {\n      for (var key in obj) {\n        if (isValidKey(key)) {\n          mixin(target, obj[key], key);\n        }\n      }\n    }\n  }\n\n  return target;\n}\n\n// \n\n/* eslint-disable no-bitwise */\nvar AD_REPLACER_R = /(a)(d)/gi;\n/* This is the \"capacity\" of our alphabet i.e. 2x26 for all letters plus their capitalised\n * counterparts */\n\nvar charsLength = 52;\n/* start at 75 for 'a' until 'z' (25) and then start at 65 for capitalised letters */\n\nvar getAlphabeticChar = function getAlphabeticChar(code) {\n  return String.fromCharCode(code + (code > 25 ? 39 : 97));\n};\n/* input a number, usually a hash and convert it to base-52 */\n\n\nfunction generateAlphabeticName(code) {\n  var name = '';\n  var x;\n  /* get a char and divide by alphabet-length */\n\n  for (x = Math.abs(code); x > charsLength; x = x / charsLength | 0) {\n    name = getAlphabeticChar(x % charsLength) + name;\n  }\n\n  return (getAlphabeticChar(x % charsLength) + name).replace(AD_REPLACER_R, '$1-$2');\n}\n\n// \nfunction isStaticRules(rules) {\n  for (var i = 0; i < rules.length; i += 1) {\n    var rule = rules[i];\n\n    if (isFunction(rule) && !isStyledComponent(rule)) {\n      // functions are allowed to be static if they're just being\n      // used to get the classname of a nested styled component\n      return false;\n    }\n  }\n\n  return true;\n}\n\n// \n/*\n ComponentStyle is all the CSS-specific stuff, not\n the React-specific stuff.\n */\n\nvar ComponentStyle = /*#__PURE__*/function () {\n  function ComponentStyle(rules, componentId) {\n    this.rules = rules;\n    this.staticRulesId = '';\n    this.isStatic =  true && isStaticRules(rules);\n    this.componentId = componentId;\n    this.baseHash = hash(componentId); // NOTE: This registers the componentId, which ensures a consistent order\n    // for this component's styles compared to others\n\n    StyleSheet.registerId(componentId);\n  }\n  /*\n   * Flattens a rule set into valid CSS\n   * Hashes it, wraps the whole chunk in a .hash1234 {}\n   * Returns the hash to be injected on render()\n   * */\n\n\n  var _proto = ComponentStyle.prototype;\n\n  _proto.generateAndInjectStyles = function generateAndInjectStyles(executionContext, styleSheet, stylis) {\n    var componentId = this.componentId; // force dynamic classnames if user-supplied stylis plugins are in use\n\n    if (this.isStatic && !stylis.hash) {\n      if (this.staticRulesId && styleSheet.hasNameForId(componentId, this.staticRulesId)) {\n        return this.staticRulesId;\n      }\n\n      var cssStatic = flatten(this.rules, executionContext, styleSheet).join('');\n      var name = generateAlphabeticName(phash(this.baseHash, cssStatic.length) >>> 0);\n\n      if (!styleSheet.hasNameForId(componentId, name)) {\n        var cssStaticFormatted = stylis(cssStatic, \".\" + name, undefined, componentId);\n        styleSheet.insertRules(componentId, name, cssStaticFormatted);\n      }\n\n      this.staticRulesId = name;\n      return name;\n    } else {\n      var length = this.rules.length;\n      var dynamicHash = phash(this.baseHash, stylis.hash);\n      var css = '';\n\n      for (var i = 0; i < length; i++) {\n        var partRule = this.rules[i];\n\n        if (typeof partRule === 'string') {\n          css += partRule;\n          if (false) {}\n        } else {\n          var partChunk = flatten(partRule, executionContext, styleSheet);\n          var partString = Array.isArray(partChunk) ? partChunk.join('') : partChunk;\n          dynamicHash = phash(dynamicHash, partString + i);\n          css += partString;\n        }\n      }\n\n      var _name = generateAlphabeticName(dynamicHash >>> 0);\n\n      if (!styleSheet.hasNameForId(componentId, _name)) {\n        var cssFormatted = stylis(css, \".\" + _name, undefined, componentId);\n        styleSheet.insertRules(componentId, _name, cssFormatted);\n      }\n\n      return _name;\n    }\n  };\n\n  return ComponentStyle;\n}();\n\n// \nvar LIMIT = 200;\nvar createWarnTooManyClasses = (function (displayName, componentId) {\n  var generatedClasses = {};\n  var warningSeen = false;\n  return function (className) {\n    if (!warningSeen) {\n      generatedClasses[className] = true;\n\n      if (Object.keys(generatedClasses).length >= LIMIT) {\n        // Unable to find latestRule in test environment.\n\n        /* eslint-disable no-console, prefer-template */\n        var parsedIdString = componentId ? \" with the id of \\\"\" + componentId + \"\\\"\" : '';\n        console.warn(\"Over \" + LIMIT + \" classes were generated for component \" + displayName + parsedIdString + \".\\n\" + 'Consider using the attrs method, together with a style object for frequently changed styles.\\n' + 'Example:\\n' + '  const Component = styled.div.attrs(props => ({\\n' + '    style: {\\n' + '      background: props.background,\\n' + '    },\\n' + '  }))`width: 100%;`\\n\\n' + '  <Component />');\n        warningSeen = true;\n        generatedClasses = {};\n      }\n    }\n  };\n});\n\n// \nvar invalidHookCallRe = /invalid hook call/i;\nvar seen = new Set();\nvar checkDynamicCreation = function checkDynamicCreation(displayName, componentId) {\n  if (false) { var message, parsedIdString; }\n};\n\n// \nvar determineTheme = (function (props, providedTheme, defaultProps) {\n  if (defaultProps === void 0) {\n    defaultProps = EMPTY_OBJECT;\n  }\n\n  return props.theme !== defaultProps.theme && props.theme || providedTheme || defaultProps.theme;\n});\n\n// \n// Source: https://www.w3.org/TR/cssom-1/#serialize-an-identifier\n// Control characters and non-letter first symbols are not supported\nvar escapeRegex = /[!\"#$%&'()*+,./:;<=>?@[\\\\\\]^`{|}~-]+/g;\nvar dashesAtEnds = /(^-|-$)/g;\n/**\n * TODO: Explore using CSS.escape when it becomes more available\n * in evergreen browsers.\n */\n\nfunction escape(str) {\n  return str // Replace all possible CSS selectors\n  .replace(escapeRegex, '-') // Remove extraneous hyphens at the start and end\n  .replace(dashesAtEnds, '');\n}\n\n// \nfunction isTag(target) {\n  return typeof target === 'string' && ( false ? undefined : true);\n}\n\n// \nfunction generateDisplayName(target) {\n  // $FlowFixMe\n  return isTag(target) ? \"styled.\" + target : \"Styled(\" + getComponentName(target) + \")\";\n}\n\n// \nvar generateComponentId = (function (str) {\n  return generateAlphabeticName(hash(str) >>> 0);\n});\n\n/**\n * Convenience function for joining strings to form className chains\n */\nfunction joinStrings(a, b) {\n  return a && b ? a + \" \" + b : a || b;\n}\n\nvar ThemeContext = react__WEBPACK_IMPORTED_MODULE_1___default.a.createContext();\nvar ThemeConsumer = ThemeContext.Consumer;\n\nfunction mergeTheme(theme, outerTheme) {\n  if (!theme) {\n    return throwStyledComponentsError(14);\n  }\n\n  if (isFunction(theme)) {\n    var mergedTheme = theme(outerTheme);\n\n    if (false) {}\n\n    return mergedTheme;\n  }\n\n  if (Array.isArray(theme) || typeof theme !== 'object') {\n    return throwStyledComponentsError(8);\n  }\n\n  return outerTheme ? _extends({}, outerTheme, {}, theme) : theme;\n}\n/**\n * Provide a theme to an entire react component tree via context\n */\n\n\nfunction ThemeProvider(props) {\n  var outerTheme = Object(react__WEBPACK_IMPORTED_MODULE_1__[\"useContext\"])(ThemeContext);\n  var themeContext = Object(react__WEBPACK_IMPORTED_MODULE_1__[\"useMemo\"])(function () {\n    return mergeTheme(props.theme, outerTheme);\n  }, [props.theme, outerTheme]);\n\n  if (!props.children) {\n    return null;\n  }\n\n  return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_1___default.a.createElement(ThemeContext.Provider, {\n    value: themeContext\n  }, props.children);\n}\n\n/* global $Call */\n\nvar identifiers = {};\n/* We depend on components having unique IDs */\n\nfunction generateId(displayName, parentComponentId) {\n  var name = typeof displayName !== 'string' ? 'sc' : escape(displayName); // Ensure that no displayName can lead to duplicate componentIds\n\n  identifiers[name] = (identifiers[name] || 0) + 1;\n  var componentId = name + \"-\" + generateComponentId(name + identifiers[name]);\n  return parentComponentId ? parentComponentId + \"-\" + componentId : componentId;\n}\n\nfunction useResolvedAttrs(theme, props, attrs) {\n  if (theme === void 0) {\n    theme = EMPTY_OBJECT;\n  }\n\n  // NOTE: can't memoize this\n  // returns [context, resolvedAttrs]\n  // where resolvedAttrs is only the things injected by the attrs themselves\n  var context = _extends({}, props, {\n    theme: theme\n  });\n\n  var resolvedAttrs = {};\n  attrs.forEach(function (attrDef) {\n    var resolvedAttrDef = attrDef;\n    var key;\n\n    if (isFunction(resolvedAttrDef)) {\n      resolvedAttrDef = resolvedAttrDef(context);\n    }\n    /* eslint-disable guard-for-in */\n\n\n    for (key in resolvedAttrDef) {\n      context[key] = resolvedAttrs[key] = key === 'className' ? joinStrings(resolvedAttrs[key], resolvedAttrDef[key]) : resolvedAttrDef[key];\n    }\n    /* eslint-enable guard-for-in */\n\n  });\n  return [context, resolvedAttrs];\n}\n\nfunction useInjectedStyle(componentStyle, hasAttrs, resolvedAttrs, warnTooManyClasses) {\n  var styleSheet = useStyleSheet();\n  var stylis = useStylis(); // statically styled-components don't need to build an execution context object,\n  // and shouldn't be increasing the number of class names\n\n  var isStatic = componentStyle.isStatic && !hasAttrs;\n  var className = isStatic ? componentStyle.generateAndInjectStyles(EMPTY_OBJECT, styleSheet, stylis) : componentStyle.generateAndInjectStyles(resolvedAttrs, styleSheet, stylis);\n  Object(react__WEBPACK_IMPORTED_MODULE_1__[\"useDebugValue\"])(className);\n\n  if (false) {}\n\n  return className;\n}\n\nfunction useStyledComponentImpl(forwardedComponent, props, forwardedRef) {\n  var componentAttrs = forwardedComponent.attrs,\n      componentStyle = forwardedComponent.componentStyle,\n      defaultProps = forwardedComponent.defaultProps,\n      foldedComponentIds = forwardedComponent.foldedComponentIds,\n      shouldForwardProp = forwardedComponent.shouldForwardProp,\n      styledComponentId = forwardedComponent.styledComponentId,\n      target = forwardedComponent.target;\n  Object(react__WEBPACK_IMPORTED_MODULE_1__[\"useDebugValue\"])(styledComponentId); // NOTE: the non-hooks version only subscribes to this when !componentStyle.isStatic,\n  // but that'd be against the rules-of-hooks. We could be naughty and do it anyway as it\n  // should be an immutable value, but behave for now.\n\n  var theme = determineTheme(props, Object(react__WEBPACK_IMPORTED_MODULE_1__[\"useContext\"])(ThemeContext), defaultProps);\n\n  var _useResolvedAttrs = useResolvedAttrs(theme || EMPTY_OBJECT, props, componentAttrs),\n      context = _useResolvedAttrs[0],\n      attrs = _useResolvedAttrs[1];\n\n  var generatedClassName = useInjectedStyle(componentStyle, componentAttrs.length > 0, context,  false ? undefined : undefined);\n  var refToForward = forwardedRef;\n  var elementToBeCreated = attrs.$as || props.$as || attrs.as || props.as || target;\n  var isTargetTag = isTag(elementToBeCreated);\n  var computedProps = attrs !== props ? _extends({}, props, {}, attrs) : props;\n  var propFilterFn = shouldForwardProp || isTargetTag && _emotion_is_prop_valid__WEBPACK_IMPORTED_MODULE_5__[/* default */ \"a\"];\n  var propsForElement = {}; // eslint-disable-next-line guard-for-in\n\n  for (var key in computedProps) {\n    if (key[0] === '$' || key === 'as') continue;else if (key === 'forwardedAs') {\n      propsForElement.as = computedProps[key];\n    } else if (!propFilterFn || propFilterFn(key, _emotion_is_prop_valid__WEBPACK_IMPORTED_MODULE_5__[/* default */ \"a\"])) {\n      // Don't pass through non HTML tags through to HTML elements\n      propsForElement[key] = computedProps[key];\n    }\n  }\n\n  if (props.style && attrs.style !== props.style) {\n    propsForElement.style = _extends({}, props.style, {}, attrs.style);\n  }\n\n  propsForElement.className = Array.prototype.concat(foldedComponentIds, styledComponentId, generatedClassName !== styledComponentId ? generatedClassName : null, props.className, attrs.className).filter(Boolean).join(' ');\n  propsForElement.ref = refToForward;\n  return Object(react__WEBPACK_IMPORTED_MODULE_1__[\"createElement\"])(elementToBeCreated, propsForElement);\n}\n\nfunction createStyledComponent(target, options, rules) {\n  var isTargetStyledComp = isStyledComponent(target);\n  var isCompositeComponent = !isTag(target);\n  var _options$displayName = options.displayName,\n      displayName = _options$displayName === void 0 ? generateDisplayName(target) : _options$displayName,\n      _options$componentId = options.componentId,\n      componentId = _options$componentId === void 0 ? generateId(options.displayName, options.parentComponentId) : _options$componentId,\n      _options$attrs = options.attrs,\n      attrs = _options$attrs === void 0 ? EMPTY_ARRAY : _options$attrs;\n  var styledComponentId = options.displayName && options.componentId ? escape(options.displayName) + \"-\" + options.componentId : options.componentId || componentId; // fold the underlying StyledComponent attrs up (implicit extend)\n\n  var finalAttrs = // $FlowFixMe\n  isTargetStyledComp && target.attrs ? Array.prototype.concat(target.attrs, attrs).filter(Boolean) : attrs; // eslint-disable-next-line prefer-destructuring\n\n  var shouldForwardProp = options.shouldForwardProp; // $FlowFixMe\n\n  if (isTargetStyledComp && target.shouldForwardProp) {\n    if (shouldForwardProp) {\n      // compose nested shouldForwardProp calls\n      shouldForwardProp = function shouldForwardProp(prop, filterFn) {\n        return (// $FlowFixMe\n          target.shouldForwardProp(prop, filterFn) && options.shouldForwardProp(prop, filterFn)\n        );\n      };\n    } else {\n      // eslint-disable-next-line prefer-destructuring\n      shouldForwardProp = target.shouldForwardProp;\n    }\n  }\n\n  var componentStyle = new ComponentStyle(isTargetStyledComp ? // fold the underlying StyledComponent rules up (implicit extend)\n  // $FlowFixMe\n  target.componentStyle.rules.concat(rules) : rules, styledComponentId);\n  /**\n   * forwardRef creates a new interim component, which we'll take advantage of\n   * instead of extending ParentComponent to create _another_ interim class\n   */\n\n  var WrappedStyledComponent; // eslint-disable-next-line react-hooks/rules-of-hooks\n\n  var forwardRef = function forwardRef(props, ref) {\n    return useStyledComponentImpl(WrappedStyledComponent, props, ref);\n  };\n\n  forwardRef.displayName = displayName; // $FlowFixMe this is a forced cast to merge it StyledComponentWrapperProperties\n\n  WrappedStyledComponent = react__WEBPACK_IMPORTED_MODULE_1___default.a.forwardRef(forwardRef);\n  WrappedStyledComponent.attrs = finalAttrs;\n  WrappedStyledComponent.componentStyle = componentStyle;\n  WrappedStyledComponent.displayName = displayName;\n  WrappedStyledComponent.shouldForwardProp = shouldForwardProp; // this static is used to preserve the cascade of static classes for component selector\n  // purposes; this is especially important with usage of the css prop\n\n  WrappedStyledComponent.foldedComponentIds = isTargetStyledComp ? // $FlowFixMe\n  Array.prototype.concat(target.foldedComponentIds, target.styledComponentId) : EMPTY_ARRAY;\n  WrappedStyledComponent.styledComponentId = styledComponentId; // fold the underlying StyledComponent target up since we folded the styles\n\n  WrappedStyledComponent.target = isTargetStyledComp ? // $FlowFixMe\n  target.target : target; // $FlowFixMe\n\n  WrappedStyledComponent.withComponent = function withComponent(tag) {\n    var previousComponentId = options.componentId,\n        optionsToCopy = _objectWithoutPropertiesLoose(options, [\"componentId\"]);\n\n    var newComponentId = previousComponentId && previousComponentId + \"-\" + (isTag(tag) ? tag : escape(getComponentName(tag)));\n\n    var newOptions = _extends({}, optionsToCopy, {\n      attrs: finalAttrs,\n      componentId: newComponentId\n    });\n\n    return createStyledComponent(tag, newOptions, rules);\n  }; // $FlowFixMe\n\n\n  Object.defineProperty(WrappedStyledComponent, 'defaultProps', {\n    get: function get() {\n      return this._foldedDefaultProps;\n    },\n    set: function set(obj) {\n      // $FlowFixMe\n      this._foldedDefaultProps = isTargetStyledComp ? mixinDeep({}, target.defaultProps, obj) : obj;\n    }\n  });\n\n  if (false) {} // $FlowFixMe\n\n\n  WrappedStyledComponent.toString = function () {\n    return \".\" + WrappedStyledComponent.styledComponentId;\n  };\n\n  if (isCompositeComponent) {\n    hoist_non_react_statics__WEBPACK_IMPORTED_MODULE_6___default()(WrappedStyledComponent, target, {\n      // all SC-specific things should not be hoisted\n      attrs: true,\n      componentStyle: true,\n      displayName: true,\n      foldedComponentIds: true,\n      shouldForwardProp: true,\n      self: true,\n      styledComponentId: true,\n      target: true,\n      withComponent: true\n    });\n  }\n\n  return WrappedStyledComponent;\n}\n\n// \n// Thanks to ReactDOMFactories for this handy list!\nvar domElements = ['a', 'abbr', 'address', 'area', 'article', 'aside', 'audio', 'b', 'base', 'bdi', 'bdo', 'big', 'blockquote', 'body', 'br', 'button', 'canvas', 'caption', 'cite', 'code', 'col', 'colgroup', 'data', 'datalist', 'dd', 'del', 'details', 'dfn', 'dialog', 'div', 'dl', 'dt', 'em', 'embed', 'fieldset', 'figcaption', 'figure', 'footer', 'form', 'h1', 'h2', 'h3', 'h4', 'h5', 'h6', 'head', 'header', 'hgroup', 'hr', 'html', 'i', 'iframe', 'img', 'input', 'ins', 'kbd', 'keygen', 'label', 'legend', 'li', 'link', 'main', 'map', 'mark', 'marquee', 'menu', 'menuitem', 'meta', 'meter', 'nav', 'noscript', 'object', 'ol', 'optgroup', 'option', 'output', 'p', 'param', 'picture', 'pre', 'progress', 'q', 'rp', 'rt', 'ruby', 's', 'samp', 'script', 'section', 'select', 'small', 'source', 'span', 'strong', 'style', 'sub', 'summary', 'sup', 'table', 'tbody', 'td', 'textarea', 'tfoot', 'th', 'thead', 'time', 'title', 'tr', 'track', 'u', 'ul', 'var', 'video', 'wbr', // SVG\n'circle', 'clipPath', 'defs', 'ellipse', 'foreignObject', 'g', 'image', 'line', 'linearGradient', 'marker', 'mask', 'path', 'pattern', 'polygon', 'polyline', 'radialGradient', 'rect', 'stop', 'svg', 'text', 'tspan'];\n\n// \n\nvar styled = function styled(tag) {\n  return constructWithOptions(createStyledComponent, tag);\n}; // Shorthands for all valid HTML Elements\n\n\ndomElements.forEach(function (domElement) {\n  styled[domElement] = styled(domElement);\n});\n\n// \n\nvar GlobalStyle = /*#__PURE__*/function () {\n  function GlobalStyle(rules, componentId) {\n    this.rules = rules;\n    this.componentId = componentId;\n    this.isStatic = isStaticRules(rules);\n  }\n\n  var _proto = GlobalStyle.prototype;\n\n  _proto.createStyles = function createStyles(instance, executionContext, styleSheet, stylis) {\n    var flatCSS = flatten(this.rules, executionContext, styleSheet);\n    var css = stylis(flatCSS.join(''), '');\n    var id = this.componentId + instance; // NOTE: We use the id as a name as well, since these rules never change\n\n    styleSheet.insertRules(id, id, css);\n  };\n\n  _proto.removeStyles = function removeStyles(instance, styleSheet) {\n    styleSheet.clearRules(this.componentId + instance);\n  };\n\n  _proto.renderStyles = function renderStyles(instance, executionContext, styleSheet, stylis) {\n    StyleSheet.registerId(this.componentId + instance); // NOTE: Remove old styles, then inject the new ones\n\n    this.removeStyles(instance, styleSheet);\n    this.createStyles(instance, executionContext, styleSheet, stylis);\n  };\n\n  return GlobalStyle;\n}();\n\nfunction createGlobalStyle(strings) {\n  for (var _len = arguments.length, interpolations = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n    interpolations[_key - 1] = arguments[_key];\n  }\n\n  var rules = css.apply(void 0, [strings].concat(interpolations));\n  var styledComponentId = \"sc-global-\" + generateComponentId(JSON.stringify(rules));\n  var globalStyle = new GlobalStyle(rules, styledComponentId);\n\n  if (false) {}\n\n  function GlobalStyleComponent(props) {\n    var styleSheet = useStyleSheet();\n    var stylis = useStylis();\n    var theme = Object(react__WEBPACK_IMPORTED_MODULE_1__[\"useContext\"])(ThemeContext);\n    var instanceRef = Object(react__WEBPACK_IMPORTED_MODULE_1__[\"useRef\"])(null);\n\n    if (instanceRef.current === null) {\n      instanceRef.current = styleSheet.allocateGSInstance(styledComponentId);\n    }\n\n    var instance = instanceRef.current;\n\n    if (false) {}\n\n    if (false) {}\n\n    if (globalStyle.isStatic) {\n      globalStyle.renderStyles(instance, STATIC_EXECUTION_CONTEXT, styleSheet, stylis);\n    } else {\n      var context = _extends({}, props, {\n        theme: determineTheme(props, theme, GlobalStyleComponent.defaultProps)\n      });\n\n      globalStyle.renderStyles(instance, context, styleSheet, stylis);\n    }\n\n    Object(react__WEBPACK_IMPORTED_MODULE_1__[\"useEffect\"])(function () {\n      return function () {\n        return globalStyle.removeStyles(instance, styleSheet);\n      };\n    }, EMPTY_ARRAY);\n    return null;\n  } // $FlowFixMe\n\n\n  return react__WEBPACK_IMPORTED_MODULE_1___default.a.memo(GlobalStyleComponent);\n}\n\n// \nfunction keyframes(strings) {\n  /* Warning if you've used keyframes on React Native */\n  if (false) {}\n\n  for (var _len = arguments.length, interpolations = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n    interpolations[_key - 1] = arguments[_key];\n  }\n\n  var rules = css.apply(void 0, [strings].concat(interpolations)).join('');\n  var name = generateComponentId(rules);\n  return new Keyframes(name, [rules, name, '@keyframes']);\n}\n\nvar ServerStyleSheet = /*#__PURE__*/function () {\n  function ServerStyleSheet() {\n    var _this = this;\n\n    this._emitSheetCSS = function () {\n      var css = _this.instance.toString();\n\n      var nonce = getNonce();\n      var attrs = [nonce && \"nonce=\\\"\" + nonce + \"\\\"\", SC_ATTR + \"=\\\"true\\\"\", SC_ATTR_VERSION + \"=\\\"\" + SC_VERSION + \"\\\"\"];\n      var htmlAttr = attrs.filter(Boolean).join(' ');\n      return \"<style \" + htmlAttr + \">\" + css + \"</style>\";\n    };\n\n    this.getStyleTags = function () {\n      if (_this.sealed) {\n        return throwStyledComponentsError(2);\n      }\n\n      return _this._emitSheetCSS();\n    };\n\n    this.getStyleElement = function () {\n      var _props;\n\n      if (_this.sealed) {\n        return throwStyledComponentsError(2);\n      }\n\n      var props = (_props = {}, _props[SC_ATTR] = '', _props[SC_ATTR_VERSION] = SC_VERSION, _props.dangerouslySetInnerHTML = {\n        __html: _this.instance.toString()\n      }, _props);\n      var nonce = getNonce();\n\n      if (nonce) {\n        props.nonce = nonce;\n      } // v4 returned an array for this fn, so we'll do the same for v5 for backward compat\n\n\n      return [/*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_1___default.a.createElement(\"style\", _extends({}, props, {\n        key: \"sc-0-0\"\n      }))];\n    };\n\n    this.seal = function () {\n      _this.sealed = true;\n    };\n\n    this.instance = new StyleSheet({\n      isServer: true\n    });\n    this.sealed = false;\n  }\n\n  var _proto = ServerStyleSheet.prototype;\n\n  _proto.collectStyles = function collectStyles(children) {\n    if (this.sealed) {\n      return throwStyledComponentsError(2);\n    }\n\n    return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_1___default.a.createElement(StyleSheetManager, {\n      sheet: this.instance\n    }, children);\n  };\n\n  // eslint-disable-next-line consistent-return\n  _proto.interleaveWithNodeStream = function interleaveWithNodeStream(input) {\n    {\n      return throwStyledComponentsError(3);\n    }\n  };\n\n  return ServerStyleSheet;\n}();\n\n// export default <Config: { theme?: any }, Instance>(\n//  Component: AbstractComponent<Config, Instance>\n// ): AbstractComponent<$Diff<Config, { theme?: any }> & { theme?: any }, Instance>\n//\n// but the old build system tooling doesn't support the syntax\n\nvar withTheme = (function (Component) {\n  // $FlowFixMe This should be React.forwardRef<Config, Instance>\n  var WithTheme = react__WEBPACK_IMPORTED_MODULE_1___default.a.forwardRef(function (props, ref) {\n    var theme = Object(react__WEBPACK_IMPORTED_MODULE_1__[\"useContext\"])(ThemeContext); // $FlowFixMe defaultProps isn't declared so it can be inferrable\n\n    var defaultProps = Component.defaultProps;\n    var themeProp = determineTheme(props, theme, defaultProps);\n\n    if (false) {}\n\n    return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_1___default.a.createElement(Component, _extends({}, props, {\n      theme: themeProp,\n      ref: ref\n    }));\n  });\n  hoist_non_react_statics__WEBPACK_IMPORTED_MODULE_6___default()(WithTheme, Component);\n  WithTheme.displayName = \"WithTheme(\" + getComponentName(Component) + \")\";\n  return WithTheme;\n});\n\n// \n\nvar useTheme = function useTheme() {\n  return Object(react__WEBPACK_IMPORTED_MODULE_1__[\"useContext\"])(ThemeContext);\n};\n\n// \nvar __PRIVATE__ = {\n  StyleSheet: StyleSheet,\n  masterSheet: masterSheet\n};\n\n// \n/* Define bundle version for export */\n\nvar version = \"5.1.1\";\n/* Warning if you've imported this file on React Native */\n\nif (false) {}\n/* Warning if there are several instances of styled-components */\n\n\nif (false) {}\n\n/* harmony default export */ __webpack_exports__[\"c\"] = (styled);\n\n//# sourceMappingURL=styled-components.browser.esm.js.map\n\n/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(21)))//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMS5qcyIsInNvdXJjZXMiOlsid2VicGFjazovL0A5MWFwcC9uaW5leWkubGliLnNwYXJrY29yZS8uL25vZGVfbW9kdWxlcy9zdHlsZWQtY29tcG9uZW50cy9kaXN0L3N0eWxlZC1jb21wb25lbnRzLmJyb3dzZXIuZXNtLmpzP2JjZTkiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgdHlwZU9mLCBpc0VsZW1lbnQsIGlzVmFsaWRFbGVtZW50VHlwZSB9IGZyb20gJ3JlYWN0LWlzJztcbmltcG9ydCBSZWFjdCwgeyB1c2VTdGF0ZSwgdXNlQ29udGV4dCwgdXNlTWVtbywgdXNlRWZmZWN0LCB1c2VSZWYsIGNyZWF0ZUVsZW1lbnQsIHVzZURlYnVnVmFsdWUgfSBmcm9tICdyZWFjdCc7XG5pbXBvcnQgc2hhbGxvd2VxdWFsIGZyb20gJ3NoYWxsb3dlcXVhbCc7XG5pbXBvcnQgU3R5bGlzIGZyb20gJ0BlbW90aW9uL3N0eWxpcyc7XG5pbXBvcnQgdW5pdGxlc3MgZnJvbSAnQGVtb3Rpb24vdW5pdGxlc3MnO1xuaW1wb3J0IHZhbGlkQXR0ciBmcm9tICdAZW1vdGlvbi9pcy1wcm9wLXZhbGlkJztcbmltcG9ydCBob2lzdCBmcm9tICdob2lzdC1ub24tcmVhY3Qtc3RhdGljcyc7XG5cbmZ1bmN0aW9uIF9leHRlbmRzKCkge1xuICBfZXh0ZW5kcyA9IE9iamVjdC5hc3NpZ24gfHwgZnVuY3Rpb24gKHRhcmdldCkge1xuICAgIGZvciAodmFyIGkgPSAxOyBpIDwgYXJndW1lbnRzLmxlbmd0aDsgaSsrKSB7XG4gICAgICB2YXIgc291cmNlID0gYXJndW1lbnRzW2ldO1xuXG4gICAgICBmb3IgKHZhciBrZXkgaW4gc291cmNlKSB7XG4gICAgICAgIGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoc291cmNlLCBrZXkpKSB7XG4gICAgICAgICAgdGFyZ2V0W2tleV0gPSBzb3VyY2Vba2V5XTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiB0YXJnZXQ7XG4gIH07XG5cbiAgcmV0dXJuIF9leHRlbmRzLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7XG59XG5cbmZ1bmN0aW9uIF9vYmplY3RXaXRob3V0UHJvcGVydGllc0xvb3NlKHNvdXJjZSwgZXhjbHVkZWQpIHtcbiAgaWYgKHNvdXJjZSA9PSBudWxsKSByZXR1cm4ge307XG4gIHZhciB0YXJnZXQgPSB7fTtcbiAgdmFyIHNvdXJjZUtleXMgPSBPYmplY3Qua2V5cyhzb3VyY2UpO1xuICB2YXIga2V5LCBpO1xuXG4gIGZvciAoaSA9IDA7IGkgPCBzb3VyY2VLZXlzLmxlbmd0aDsgaSsrKSB7XG4gICAga2V5ID0gc291cmNlS2V5c1tpXTtcbiAgICBpZiAoZXhjbHVkZWQuaW5kZXhPZihrZXkpID49IDApIGNvbnRpbnVlO1xuICAgIHRhcmdldFtrZXldID0gc291cmNlW2tleV07XG4gIH1cblxuICByZXR1cm4gdGFyZ2V0O1xufVxuXG4vLyBcbnZhciBpbnRlcmxlYXZlID0gKGZ1bmN0aW9uIChzdHJpbmdzLCBpbnRlcnBvbGF0aW9ucykge1xuICB2YXIgcmVzdWx0ID0gW3N0cmluZ3NbMF1dO1xuXG4gIGZvciAodmFyIGkgPSAwLCBsZW4gPSBpbnRlcnBvbGF0aW9ucy5sZW5ndGg7IGkgPCBsZW47IGkgKz0gMSkge1xuICAgIHJlc3VsdC5wdXNoKGludGVycG9sYXRpb25zW2ldLCBzdHJpbmdzW2kgKyAxXSk7XG4gIH1cblxuICByZXR1cm4gcmVzdWx0O1xufSk7XG5cbi8vIFxudmFyIGlzUGxhaW5PYmplY3QgPSAoZnVuY3Rpb24gKHgpIHtcbiAgcmV0dXJuIHggIT09IG51bGwgJiYgdHlwZW9mIHggPT09ICdvYmplY3QnICYmICh4LnRvU3RyaW5nID8geC50b1N0cmluZygpIDogT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKHgpKSA9PT0gJ1tvYmplY3QgT2JqZWN0XScgJiYgIXR5cGVPZih4KTtcbn0pO1xuXG4vLyBcbnZhciBFTVBUWV9BUlJBWSA9IE9iamVjdC5mcmVlemUoW10pO1xudmFyIEVNUFRZX09CSkVDVCA9IE9iamVjdC5mcmVlemUoe30pO1xuXG4vLyBcbmZ1bmN0aW9uIGlzRnVuY3Rpb24odGVzdCkge1xuICByZXR1cm4gdHlwZW9mIHRlc3QgPT09ICdmdW5jdGlvbic7XG59XG5cbi8vIFxuZnVuY3Rpb24gZ2V0Q29tcG9uZW50TmFtZSh0YXJnZXQpIHtcbiAgcmV0dXJuIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nID8gdHlwZW9mIHRhcmdldCA9PT0gJ3N0cmluZycgJiYgdGFyZ2V0IDogZmFsc2UpIHx8IC8vICRGbG93Rml4TWVcbiAgdGFyZ2V0LmRpc3BsYXlOYW1lIHx8IC8vICRGbG93Rml4TWVcbiAgdGFyZ2V0Lm5hbWUgfHwgJ0NvbXBvbmVudCc7XG59XG5cbi8vIFxuZnVuY3Rpb24gaXNTdGF0ZWxlc3NGdW5jdGlvbih0ZXN0KSB7XG4gIHJldHVybiB0eXBlb2YgdGVzdCA9PT0gJ2Z1bmN0aW9uJyAmJiAhKHRlc3QucHJvdG90eXBlICYmIHRlc3QucHJvdG90eXBlLmlzUmVhY3RDb21wb25lbnQpO1xufVxuXG4vLyBcbmZ1bmN0aW9uIGlzU3R5bGVkQ29tcG9uZW50KHRhcmdldCkge1xuICByZXR1cm4gdGFyZ2V0ICYmIHR5cGVvZiB0YXJnZXQuc3R5bGVkQ29tcG9uZW50SWQgPT09ICdzdHJpbmcnO1xufVxuXG4vLyBcbnZhciBTQ19BVFRSID0gdHlwZW9mIHByb2Nlc3MgIT09ICd1bmRlZmluZWQnICYmIChwcm9jZXNzLmVudi5SRUFDVF9BUFBfU0NfQVRUUiB8fCBwcm9jZXNzLmVudi5TQ19BVFRSKSB8fCAnZGF0YS1zdHlsZWQnO1xudmFyIFNDX0FUVFJfQUNUSVZFID0gJ2FjdGl2ZSc7XG52YXIgU0NfQVRUUl9WRVJTSU9OID0gJ2RhdGEtc3R5bGVkLXZlcnNpb24nO1xudmFyIFNDX1ZFUlNJT04gPSBcIjUuMS4xXCI7XG52YXIgU1BMSVRURVIgPSAnLyohc2MqL1xcbic7XG52YXIgSVNfQlJPV1NFUiA9IHR5cGVvZiB3aW5kb3cgIT09ICd1bmRlZmluZWQnICYmICdIVE1MRWxlbWVudCcgaW4gd2luZG93O1xudmFyIERJU0FCTEVfU1BFRURZID0gdHlwZW9mIFNDX0RJU0FCTEVfU1BFRURZID09PSAnYm9vbGVhbicgJiYgU0NfRElTQUJMRV9TUEVFRFkgfHwgdHlwZW9mIHByb2Nlc3MgIT09ICd1bmRlZmluZWQnICYmIChwcm9jZXNzLmVudi5SRUFDVF9BUFBfU0NfRElTQUJMRV9TUEVFRFkgfHwgcHJvY2Vzcy5lbnYuU0NfRElTQUJMRV9TUEVFRFkpIHx8IHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbic7IC8vIFNoYXJlZCBlbXB0eSBleGVjdXRpb24gY29udGV4dCB3aGVuIGdlbmVyYXRpbmcgc3RhdGljIHN0eWxlc1xuXG52YXIgU1RBVElDX0VYRUNVVElPTl9DT05URVhUID0ge307XG5cbi8vIFxuXG4vKiBlc2xpbnQtZGlzYWJsZSBjYW1lbGNhc2UsIG5vLXVuZGVmICovXG52YXIgZ2V0Tm9uY2UgPSBmdW5jdGlvbiBnZXROb25jZSgpIHtcbiAgcmV0dXJuIHR5cGVvZiBfX3dlYnBhY2tfbm9uY2VfXyAhPT0gJ3VuZGVmaW5lZCcgPyBfX3dlYnBhY2tfbm9uY2VfXyA6IG51bGw7XG59O1xuXG52YXIgZXJyb3JNYXAgPSB7XG4gIFwiMVwiOiBcIkNhbm5vdCBjcmVhdGUgc3R5bGVkLWNvbXBvbmVudCBmb3IgY29tcG9uZW50OiAlcy5cXG5cXG5cIixcbiAgXCIyXCI6IFwiQ2FuJ3QgY29sbGVjdCBzdHlsZXMgb25jZSB5b3UndmUgY29uc3VtZWQgYSBgU2VydmVyU3R5bGVTaGVldGAncyBzdHlsZXMhIGBTZXJ2ZXJTdHlsZVNoZWV0YCBpcyBhIG9uZSBvZmYgaW5zdGFuY2UgZm9yIGVhY2ggc2VydmVyLXNpZGUgcmVuZGVyIGN5Y2xlLlxcblxcbi0gQXJlIHlvdSB0cnlpbmcgdG8gcmV1c2UgaXQgYWNyb3NzIHJlbmRlcnM/XFxuLSBBcmUgeW91IGFjY2lkZW50YWxseSBjYWxsaW5nIGNvbGxlY3RTdHlsZXMgdHdpY2U/XFxuXFxuXCIsXG4gIFwiM1wiOiBcIlN0cmVhbWluZyBTU1IgaXMgb25seSBzdXBwb3J0ZWQgaW4gYSBOb2RlLmpzIGVudmlyb25tZW50OyBQbGVhc2UgZG8gbm90IHRyeSB0byBjYWxsIHRoaXMgbWV0aG9kIGluIHRoZSBicm93c2VyLlxcblxcblwiLFxuICBcIjRcIjogXCJUaGUgYFN0eWxlU2hlZXRNYW5hZ2VyYCBleHBlY3RzIGEgdmFsaWQgdGFyZ2V0IG9yIHNoZWV0IHByb3AhXFxuXFxuLSBEb2VzIHRoaXMgZXJyb3Igb2NjdXIgb24gdGhlIGNsaWVudCBhbmQgaXMgeW91ciB0YXJnZXQgZmFsc3k/XFxuLSBEb2VzIHRoaXMgZXJyb3Igb2NjdXIgb24gdGhlIHNlcnZlciBhbmQgaXMgdGhlIHNoZWV0IGZhbHN5P1xcblxcblwiLFxuICBcIjVcIjogXCJUaGUgY2xvbmUgbWV0aG9kIGNhbm5vdCBiZSB1c2VkIG9uIHRoZSBjbGllbnQhXFxuXFxuLSBBcmUgeW91IHJ1bm5pbmcgaW4gYSBjbGllbnQtbGlrZSBlbnZpcm9ubWVudCBvbiB0aGUgc2VydmVyP1xcbi0gQXJlIHlvdSB0cnlpbmcgdG8gcnVuIFNTUiBvbiB0aGUgY2xpZW50P1xcblxcblwiLFxuICBcIjZcIjogXCJUcnlpbmcgdG8gaW5zZXJ0IGEgbmV3IHN0eWxlIHRhZywgYnV0IHRoZSBnaXZlbiBOb2RlIGlzIHVubW91bnRlZCFcXG5cXG4tIEFyZSB5b3UgdXNpbmcgYSBjdXN0b20gdGFyZ2V0IHRoYXQgaXNuJ3QgbW91bnRlZD9cXG4tIERvZXMgeW91ciBkb2N1bWVudCBub3QgaGF2ZSBhIHZhbGlkIGhlYWQgZWxlbWVudD9cXG4tIEhhdmUgeW91IGFjY2lkZW50YWxseSByZW1vdmVkIGEgc3R5bGUgdGFnIG1hbnVhbGx5P1xcblxcblwiLFxuICBcIjdcIjogXCJUaGVtZVByb3ZpZGVyOiBQbGVhc2UgcmV0dXJuIGFuIG9iamVjdCBmcm9tIHlvdXIgXFxcInRoZW1lXFxcIiBwcm9wIGZ1bmN0aW9uLCBlLmcuXFxuXFxuYGBganNcXG50aGVtZT17KCkgPT4gKHt9KX1cXG5gYGBcXG5cXG5cIixcbiAgXCI4XCI6IFwiVGhlbWVQcm92aWRlcjogUGxlYXNlIG1ha2UgeW91ciBcXFwidGhlbWVcXFwiIHByb3AgYW4gb2JqZWN0LlxcblxcblwiLFxuICBcIjlcIjogXCJNaXNzaW5nIGRvY3VtZW50IGA8aGVhZD5gXFxuXFxuXCIsXG4gIFwiMTBcIjogXCJDYW5ub3QgZmluZCBhIFN0eWxlU2hlZXQgaW5zdGFuY2UuIFVzdWFsbHkgdGhpcyBoYXBwZW5zIGlmIHRoZXJlIGFyZSBtdWx0aXBsZSBjb3BpZXMgb2Ygc3R5bGVkLWNvbXBvbmVudHMgbG9hZGVkIGF0IG9uY2UuIENoZWNrIG91dCB0aGlzIGlzc3VlIGZvciBob3cgdG8gdHJvdWJsZXNob290IGFuZCBmaXggdGhlIGNvbW1vbiBjYXNlcyB3aGVyZSB0aGlzIHNpdHVhdGlvbiBjYW4gaGFwcGVuOiBodHRwczovL2dpdGh1Yi5jb20vc3R5bGVkLWNvbXBvbmVudHMvc3R5bGVkLWNvbXBvbmVudHMvaXNzdWVzLzE5NDEjaXNzdWVjb21tZW50LTQxNzg2MjAyMVxcblxcblwiLFxuICBcIjExXCI6IFwiX1RoaXMgZXJyb3Igd2FzIHJlcGxhY2VkIHdpdGggYSBkZXYtdGltZSB3YXJuaW5nLCBpdCB3aWxsIGJlIGRlbGV0ZWQgZm9yIHY0IGZpbmFsLl8gW2NyZWF0ZUdsb2JhbFN0eWxlXSByZWNlaXZlZCBjaGlsZHJlbiB3aGljaCB3aWxsIG5vdCBiZSByZW5kZXJlZC4gUGxlYXNlIHVzZSB0aGUgY29tcG9uZW50IHdpdGhvdXQgcGFzc2luZyBjaGlsZHJlbiBlbGVtZW50cy5cXG5cXG5cIixcbiAgXCIxMlwiOiBcIkl0IHNlZW1zIHlvdSBhcmUgaW50ZXJwb2xhdGluZyBhIGtleWZyYW1lIGRlY2xhcmF0aW9uICglcykgaW50byBhbiB1bnRhZ2dlZCBzdHJpbmcuIFRoaXMgd2FzIHN1cHBvcnRlZCBpbiBzdHlsZWQtY29tcG9uZW50cyB2MywgYnV0IGlzIG5vdCBsb25nZXIgc3VwcG9ydGVkIGluIHY0IGFzIGtleWZyYW1lcyBhcmUgbm93IGluamVjdGVkIG9uLWRlbWFuZC4gUGxlYXNlIHdyYXAgeW91ciBzdHJpbmcgaW4gdGhlIGNzc1xcXFxgXFxcXGAgaGVscGVyIHdoaWNoIGVuc3VyZXMgdGhlIHN0eWxlcyBhcmUgaW5qZWN0ZWQgY29ycmVjdGx5LiBTZWUgaHR0cHM6Ly93d3cuc3R5bGVkLWNvbXBvbmVudHMuY29tL2RvY3MvYXBpI2Nzc1xcblxcblwiLFxuICBcIjEzXCI6IFwiJXMgaXMgbm90IGEgc3R5bGVkIGNvbXBvbmVudCBhbmQgY2Fubm90IGJlIHJlZmVycmVkIHRvIHZpYSBjb21wb25lbnQgc2VsZWN0b3IuIFNlZSBodHRwczovL3d3dy5zdHlsZWQtY29tcG9uZW50cy5jb20vZG9jcy9hZHZhbmNlZCNyZWZlcnJpbmctdG8tb3RoZXItY29tcG9uZW50cyBmb3IgbW9yZSBkZXRhaWxzLlxcblxcblwiLFxuICBcIjE0XCI6IFwiVGhlbWVQcm92aWRlcjogXFxcInRoZW1lXFxcIiBwcm9wIGlzIHJlcXVpcmVkLlxcblxcblwiLFxuICBcIjE1XCI6IFwiQSBzdHlsaXMgcGx1Z2luIGhhcyBiZWVuIHN1cHBsaWVkIHRoYXQgaXMgbm90IG5hbWVkLiBXZSBuZWVkIGEgbmFtZSBmb3IgZWFjaCBwbHVnaW4gdG8gYmUgYWJsZSB0byBwcmV2ZW50IHN0eWxpbmcgY29sbGlzaW9ucyBiZXR3ZWVuIGRpZmZlcmVudCBzdHlsaXMgY29uZmlndXJhdGlvbnMgd2l0aGluIHRoZSBzYW1lIGFwcC4gQmVmb3JlIHlvdSBwYXNzIHlvdXIgcGx1Z2luIHRvIGA8U3R5bGVTaGVldE1hbmFnZXIgc3R5bGlzUGx1Z2lucz17W119PmAsIHBsZWFzZSBtYWtlIHN1cmUgZWFjaCBwbHVnaW4gaXMgdW5pcXVlbHktbmFtZWQsIGUuZy5cXG5cXG5gYGBqc1xcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShpbXBvcnRlZFBsdWdpbiwgJ25hbWUnLCB7IHZhbHVlOiAnc29tZS11bmlxdWUtbmFtZScgfSk7XFxuYGBgXFxuXFxuXCIsXG4gIFwiMTZcIjogXCJSZWFjaGVkIHRoZSBsaW1pdCBvZiBob3cgbWFueSBzdHlsZWQgY29tcG9uZW50cyBtYXkgYmUgY3JlYXRlZCBhdCBncm91cCAlcy5cXG5Zb3UgbWF5IG9ubHkgY3JlYXRlIHVwIHRvIDEsMDczLDc0MSw4MjQgY29tcG9uZW50cy4gSWYgeW91J3JlIGNyZWF0aW5nIGNvbXBvbmVudHMgZHluYW1pY2FsbHksXFxuYXMgZm9yIGluc3RhbmNlIGluIHlvdXIgcmVuZGVyIG1ldGhvZCB0aGVuIHlvdSBtYXkgYmUgcnVubmluZyBpbnRvIHRoaXMgbGltaXRhdGlvbi5cXG5cXG5cIixcbiAgXCIxN1wiOiBcIkNTU1N0eWxlU2hlZXQgY291bGQgbm90IGJlIGZvdW5kIG9uIEhUTUxTdHlsZUVsZW1lbnQuXFxuSGFzIHN0eWxlZC1jb21wb25lbnRzJyBzdHlsZSB0YWcgYmVlbiB1bm1vdW50ZWQgb3IgYWx0ZXJlZCBieSBhbm90aGVyIHNjcmlwdD9cXG5cIlxufTtcblxuLy8gXG52YXIgRVJST1JTID0gcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyA/IGVycm9yTWFwIDoge307XG4vKipcbiAqIHN1cGVyIGJhc2ljIHZlcnNpb24gb2Ygc3ByaW50ZlxuICovXG5cbmZ1bmN0aW9uIGZvcm1hdCgpIHtcbiAgdmFyIGEgPSBhcmd1bWVudHMubGVuZ3RoIDw9IDAgPyB1bmRlZmluZWQgOiBhcmd1bWVudHNbMF07XG4gIHZhciBiID0gW107XG5cbiAgZm9yICh2YXIgYyA9IDEsIGxlbiA9IGFyZ3VtZW50cy5sZW5ndGg7IGMgPCBsZW47IGMgKz0gMSkge1xuICAgIGIucHVzaChjIDwgMCB8fCBhcmd1bWVudHMubGVuZ3RoIDw9IGMgPyB1bmRlZmluZWQgOiBhcmd1bWVudHNbY10pO1xuICB9XG5cbiAgYi5mb3JFYWNoKGZ1bmN0aW9uIChkKSB7XG4gICAgYSA9IGEucmVwbGFjZSgvJVthLXpdLywgZCk7XG4gIH0pO1xuICByZXR1cm4gYTtcbn1cbi8qKlxuICogQ3JlYXRlIGFuIGVycm9yIGZpbGUgb3V0IG9mIGVycm9ycy5tZCBmb3IgZGV2ZWxvcG1lbnQgYW5kIGEgc2ltcGxlIHdlYiBsaW5rIHRvIHRoZSBmdWxsIGVycm9yc1xuICogaW4gcHJvZHVjdGlvbiBtb2RlLlxuICovXG5cblxuZnVuY3Rpb24gdGhyb3dTdHlsZWRDb21wb25lbnRzRXJyb3IoY29kZSkge1xuICBmb3IgKHZhciBfbGVuID0gYXJndW1lbnRzLmxlbmd0aCwgaW50ZXJwb2xhdGlvbnMgPSBuZXcgQXJyYXkoX2xlbiA+IDEgPyBfbGVuIC0gMSA6IDApLCBfa2V5ID0gMTsgX2tleSA8IF9sZW47IF9rZXkrKykge1xuICAgIGludGVycG9sYXRpb25zW19rZXkgLSAxXSA9IGFyZ3VtZW50c1tfa2V5XTtcbiAgfVxuXG4gIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViA9PT0gJ3Byb2R1Y3Rpb24nKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKFwiQW4gZXJyb3Igb2NjdXJyZWQuIFNlZSBodHRwczovL2dpdGh1Yi5jb20vc3R5bGVkLWNvbXBvbmVudHMvc3R5bGVkLWNvbXBvbmVudHMvYmxvYi9tYXN0ZXIvcGFja2FnZXMvc3R5bGVkLWNvbXBvbmVudHMvc3JjL3V0aWxzL2Vycm9ycy5tZCNcIiArIGNvZGUgKyBcIiBmb3IgbW9yZSBpbmZvcm1hdGlvbi5cIiArIChpbnRlcnBvbGF0aW9ucy5sZW5ndGggPiAwID8gXCIgQWRkaXRpb25hbCBhcmd1bWVudHM6IFwiICsgaW50ZXJwb2xhdGlvbnMuam9pbignLCAnKSA6ICcnKSk7XG4gIH0gZWxzZSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKGZvcm1hdC5hcHBseSh2b2lkIDAsIFtFUlJPUlNbY29kZV1dLmNvbmNhdChpbnRlcnBvbGF0aW9ucykpLnRyaW0oKSk7XG4gIH1cbn1cblxuLy8gXG52YXIgRUxFTUVOVF9UWVBFID0gMTtcbi8qIE5vZGUuRUxFTUVOVF9UWVBFICovXG5cbi8qKiBGaW5kIGxhc3Qgc3R5bGUgZWxlbWVudCBpZiBhbnkgaW5zaWRlIHRhcmdldCAqL1xuXG52YXIgZmluZExhc3RTdHlsZVRhZyA9IGZ1bmN0aW9uIGZpbmRMYXN0U3R5bGVUYWcodGFyZ2V0KSB7XG4gIHZhciBjaGlsZE5vZGVzID0gdGFyZ2V0LmNoaWxkTm9kZXM7XG5cbiAgZm9yICh2YXIgaSA9IGNoaWxkTm9kZXMubGVuZ3RoOyBpID49IDA7IGktLSkge1xuICAgIHZhciBjaGlsZCA9IGNoaWxkTm9kZXNbaV07XG5cbiAgICBpZiAoY2hpbGQgJiYgY2hpbGQubm9kZVR5cGUgPT09IEVMRU1FTlRfVFlQRSAmJiBjaGlsZC5oYXNBdHRyaWJ1dGUoU0NfQVRUUikpIHtcbiAgICAgIHJldHVybiBjaGlsZDtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gdW5kZWZpbmVkO1xufTtcbi8qKiBDcmVhdGUgYSBzdHlsZSBlbGVtZW50IGluc2lkZSBgdGFyZ2V0YCBvciA8aGVhZD4gYWZ0ZXIgdGhlIGxhc3QgKi9cblxuXG52YXIgbWFrZVN0eWxlVGFnID0gZnVuY3Rpb24gbWFrZVN0eWxlVGFnKHRhcmdldCkge1xuICB2YXIgaGVhZCA9IGRvY3VtZW50LmhlYWQ7XG4gIHZhciBwYXJlbnQgPSB0YXJnZXQgfHwgaGVhZDtcbiAgdmFyIHN0eWxlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnc3R5bGUnKTtcbiAgdmFyIHByZXZTdHlsZSA9IGZpbmRMYXN0U3R5bGVUYWcocGFyZW50KTtcbiAgdmFyIG5leHRTaWJsaW5nID0gcHJldlN0eWxlICE9PSB1bmRlZmluZWQgPyBwcmV2U3R5bGUubmV4dFNpYmxpbmcgOiBudWxsO1xuICBzdHlsZS5zZXRBdHRyaWJ1dGUoU0NfQVRUUiwgU0NfQVRUUl9BQ1RJVkUpO1xuICBzdHlsZS5zZXRBdHRyaWJ1dGUoU0NfQVRUUl9WRVJTSU9OLCBTQ19WRVJTSU9OKTtcbiAgdmFyIG5vbmNlID0gZ2V0Tm9uY2UoKTtcbiAgaWYgKG5vbmNlKSBzdHlsZS5zZXRBdHRyaWJ1dGUoJ25vbmNlJywgbm9uY2UpO1xuICBwYXJlbnQuaW5zZXJ0QmVmb3JlKHN0eWxlLCBuZXh0U2libGluZyk7XG4gIHJldHVybiBzdHlsZTtcbn07XG4vKiogR2V0IHRoZSBDU1NTdHlsZVNoZWV0IGluc3RhbmNlIGZvciBhIGdpdmVuIHN0eWxlIGVsZW1lbnQgKi9cblxudmFyIGdldFNoZWV0ID0gZnVuY3Rpb24gZ2V0U2hlZXQodGFnKSB7XG4gIGlmICh0YWcuc2hlZXQpIHtcbiAgICByZXR1cm4gdGFnLnNoZWV0O1xuICB9IC8vIEF2b2lkIEZpcmVmb3ggcXVpcmsgd2hlcmUgdGhlIHN0eWxlIGVsZW1lbnQgbWlnaHQgbm90IGhhdmUgYSBzaGVldCBwcm9wZXJ0eVxuXG5cbiAgdmFyIF9kb2N1bWVudCA9IGRvY3VtZW50LFxuICAgICAgc3R5bGVTaGVldHMgPSBfZG9jdW1lbnQuc3R5bGVTaGVldHM7XG5cbiAgZm9yICh2YXIgaSA9IDAsIGwgPSBzdHlsZVNoZWV0cy5sZW5ndGg7IGkgPCBsOyBpKyspIHtcbiAgICB2YXIgc2hlZXQgPSBzdHlsZVNoZWV0c1tpXTtcblxuICAgIGlmIChzaGVldC5vd25lck5vZGUgPT09IHRhZykge1xuICAgICAgcmV0dXJuIHNoZWV0O1xuICAgIH1cbiAgfVxuXG4gIHRocm93U3R5bGVkQ29tcG9uZW50c0Vycm9yKDE3KTtcbiAgcmV0dXJuIHVuZGVmaW5lZDtcbn07XG5cbi8vIFxuLyoqIENyZWF0ZSBhIENTU1N0eWxlU2hlZXQtbGlrZSB0YWcgZGVwZW5kaW5nIG9uIHRoZSBlbnZpcm9ubWVudCAqL1xuXG52YXIgbWFrZVRhZyA9IGZ1bmN0aW9uIG1ha2VUYWcoX3JlZikge1xuICB2YXIgaXNTZXJ2ZXIgPSBfcmVmLmlzU2VydmVyLFxuICAgICAgdXNlQ1NTT01JbmplY3Rpb24gPSBfcmVmLnVzZUNTU09NSW5qZWN0aW9uLFxuICAgICAgdGFyZ2V0ID0gX3JlZi50YXJnZXQ7XG5cbiAgaWYgKGlzU2VydmVyKSB7XG4gICAgcmV0dXJuIG5ldyBWaXJ0dWFsVGFnKHRhcmdldCk7XG4gIH0gZWxzZSBpZiAodXNlQ1NTT01JbmplY3Rpb24pIHtcbiAgICByZXR1cm4gbmV3IENTU09NVGFnKHRhcmdldCk7XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIG5ldyBUZXh0VGFnKHRhcmdldCk7XG4gIH1cbn07XG52YXIgQ1NTT01UYWcgPSAvKiNfX1BVUkVfXyovZnVuY3Rpb24gKCkge1xuICBmdW5jdGlvbiBDU1NPTVRhZyh0YXJnZXQpIHtcbiAgICB2YXIgZWxlbWVudCA9IHRoaXMuZWxlbWVudCA9IG1ha2VTdHlsZVRhZyh0YXJnZXQpOyAvLyBBdm9pZCBFZGdlIGJ1ZyB3aGVyZSBlbXB0eSBzdHlsZSBlbGVtZW50cyBkb24ndCBjcmVhdGUgc2hlZXRzXG5cbiAgICBlbGVtZW50LmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKCcnKSk7XG4gICAgdGhpcy5zaGVldCA9IGdldFNoZWV0KGVsZW1lbnQpO1xuICAgIHRoaXMubGVuZ3RoID0gMDtcbiAgfVxuXG4gIHZhciBfcHJvdG8gPSBDU1NPTVRhZy5wcm90b3R5cGU7XG5cbiAgX3Byb3RvLmluc2VydFJ1bGUgPSBmdW5jdGlvbiBpbnNlcnRSdWxlKGluZGV4LCBydWxlKSB7XG4gICAgdHJ5IHtcbiAgICAgIHRoaXMuc2hlZXQuaW5zZXJ0UnVsZShydWxlLCBpbmRleCk7XG4gICAgICB0aGlzLmxlbmd0aCsrO1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfSBjYXRjaCAoX2Vycm9yKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICB9O1xuXG4gIF9wcm90by5kZWxldGVSdWxlID0gZnVuY3Rpb24gZGVsZXRlUnVsZShpbmRleCkge1xuICAgIHRoaXMuc2hlZXQuZGVsZXRlUnVsZShpbmRleCk7XG4gICAgdGhpcy5sZW5ndGgtLTtcbiAgfTtcblxuICBfcHJvdG8uZ2V0UnVsZSA9IGZ1bmN0aW9uIGdldFJ1bGUoaW5kZXgpIHtcbiAgICB2YXIgcnVsZSA9IHRoaXMuc2hlZXQuY3NzUnVsZXNbaW5kZXhdOyAvLyBBdm9pZCBJRTExIHF1aXJrIHdoZXJlIGNzc1RleHQgaXMgaW5hY2Nlc3NpYmxlIG9uIHNvbWUgaW52YWxpZCBydWxlc1xuXG4gICAgaWYgKHJ1bGUgIT09IHVuZGVmaW5lZCAmJiB0eXBlb2YgcnVsZS5jc3NUZXh0ID09PSAnc3RyaW5nJykge1xuICAgICAgcmV0dXJuIHJ1bGUuY3NzVGV4dDtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuICcnO1xuICAgIH1cbiAgfTtcblxuICByZXR1cm4gQ1NTT01UYWc7XG59KCk7XG4vKiogQSBUYWcgdGhhdCBlbXVsYXRlcyB0aGUgQ1NTU3R5bGVTaGVldCBBUEkgYnV0IHVzZXMgdGV4dCBub2RlcyAqL1xuXG52YXIgVGV4dFRhZyA9IC8qI19fUFVSRV9fKi9mdW5jdGlvbiAoKSB7XG4gIGZ1bmN0aW9uIFRleHRUYWcodGFyZ2V0KSB7XG4gICAgdmFyIGVsZW1lbnQgPSB0aGlzLmVsZW1lbnQgPSBtYWtlU3R5bGVUYWcodGFyZ2V0KTtcbiAgICB0aGlzLm5vZGVzID0gZWxlbWVudC5jaGlsZE5vZGVzO1xuICAgIHRoaXMubGVuZ3RoID0gMDtcbiAgfVxuXG4gIHZhciBfcHJvdG8yID0gVGV4dFRhZy5wcm90b3R5cGU7XG5cbiAgX3Byb3RvMi5pbnNlcnRSdWxlID0gZnVuY3Rpb24gaW5zZXJ0UnVsZShpbmRleCwgcnVsZSkge1xuICAgIGlmIChpbmRleCA8PSB0aGlzLmxlbmd0aCAmJiBpbmRleCA+PSAwKSB7XG4gICAgICB2YXIgbm9kZSA9IGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKHJ1bGUpO1xuICAgICAgdmFyIHJlZk5vZGUgPSB0aGlzLm5vZGVzW2luZGV4XTtcbiAgICAgIHRoaXMuZWxlbWVudC5pbnNlcnRCZWZvcmUobm9kZSwgcmVmTm9kZSB8fCBudWxsKTtcbiAgICAgIHRoaXMubGVuZ3RoKys7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgfTtcblxuICBfcHJvdG8yLmRlbGV0ZVJ1bGUgPSBmdW5jdGlvbiBkZWxldGVSdWxlKGluZGV4KSB7XG4gICAgdGhpcy5lbGVtZW50LnJlbW92ZUNoaWxkKHRoaXMubm9kZXNbaW5kZXhdKTtcbiAgICB0aGlzLmxlbmd0aC0tO1xuICB9O1xuXG4gIF9wcm90bzIuZ2V0UnVsZSA9IGZ1bmN0aW9uIGdldFJ1bGUoaW5kZXgpIHtcbiAgICBpZiAoaW5kZXggPCB0aGlzLmxlbmd0aCkge1xuICAgICAgcmV0dXJuIHRoaXMubm9kZXNbaW5kZXhdLnRleHRDb250ZW50O1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gJyc7XG4gICAgfVxuICB9O1xuXG4gIHJldHVybiBUZXh0VGFnO1xufSgpO1xuLyoqIEEgY29tcGxldGVseSB2aXJ0dWFsIChzZXJ2ZXItc2lkZSkgVGFnIHRoYXQgZG9lc24ndCBtYW5pcHVsYXRlIHRoZSBET00gKi9cblxudmFyIFZpcnR1YWxUYWcgPSAvKiNfX1BVUkVfXyovZnVuY3Rpb24gKCkge1xuICBmdW5jdGlvbiBWaXJ0dWFsVGFnKF90YXJnZXQpIHtcbiAgICB0aGlzLnJ1bGVzID0gW107XG4gICAgdGhpcy5sZW5ndGggPSAwO1xuICB9XG5cbiAgdmFyIF9wcm90bzMgPSBWaXJ0dWFsVGFnLnByb3RvdHlwZTtcblxuICBfcHJvdG8zLmluc2VydFJ1bGUgPSBmdW5jdGlvbiBpbnNlcnRSdWxlKGluZGV4LCBydWxlKSB7XG4gICAgaWYgKGluZGV4IDw9IHRoaXMubGVuZ3RoKSB7XG4gICAgICB0aGlzLnJ1bGVzLnNwbGljZShpbmRleCwgMCwgcnVsZSk7XG4gICAgICB0aGlzLmxlbmd0aCsrO1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gIH07XG5cbiAgX3Byb3RvMy5kZWxldGVSdWxlID0gZnVuY3Rpb24gZGVsZXRlUnVsZShpbmRleCkge1xuICAgIHRoaXMucnVsZXMuc3BsaWNlKGluZGV4LCAxKTtcbiAgICB0aGlzLmxlbmd0aC0tO1xuICB9O1xuXG4gIF9wcm90bzMuZ2V0UnVsZSA9IGZ1bmN0aW9uIGdldFJ1bGUoaW5kZXgpIHtcbiAgICBpZiAoaW5kZXggPCB0aGlzLmxlbmd0aCkge1xuICAgICAgcmV0dXJuIHRoaXMucnVsZXNbaW5kZXhdO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gJyc7XG4gICAgfVxuICB9O1xuXG4gIHJldHVybiBWaXJ0dWFsVGFnO1xufSgpO1xuXG4vLyBcbi8qKiBDcmVhdGUgYSBHcm91cGVkVGFnIHdpdGggYW4gdW5kZXJseWluZyBUYWcgaW1wbGVtZW50YXRpb24gKi9cblxudmFyIG1ha2VHcm91cGVkVGFnID0gZnVuY3Rpb24gbWFrZUdyb3VwZWRUYWcodGFnKSB7XG4gIHJldHVybiBuZXcgRGVmYXVsdEdyb3VwZWRUYWcodGFnKTtcbn07XG52YXIgQkFTRV9TSVpFID0gMSA8PCA5O1xuXG52YXIgRGVmYXVsdEdyb3VwZWRUYWcgPSAvKiNfX1BVUkVfXyovZnVuY3Rpb24gKCkge1xuICBmdW5jdGlvbiBEZWZhdWx0R3JvdXBlZFRhZyh0YWcpIHtcbiAgICB0aGlzLmdyb3VwU2l6ZXMgPSBuZXcgVWludDMyQXJyYXkoQkFTRV9TSVpFKTtcbiAgICB0aGlzLmxlbmd0aCA9IEJBU0VfU0laRTtcbiAgICB0aGlzLnRhZyA9IHRhZztcbiAgfVxuXG4gIHZhciBfcHJvdG8gPSBEZWZhdWx0R3JvdXBlZFRhZy5wcm90b3R5cGU7XG5cbiAgX3Byb3RvLmluZGV4T2ZHcm91cCA9IGZ1bmN0aW9uIGluZGV4T2ZHcm91cChncm91cCkge1xuICAgIHZhciBpbmRleCA9IDA7XG5cbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGdyb3VwOyBpKyspIHtcbiAgICAgIGluZGV4ICs9IHRoaXMuZ3JvdXBTaXplc1tpXTtcbiAgICB9XG5cbiAgICByZXR1cm4gaW5kZXg7XG4gIH07XG5cbiAgX3Byb3RvLmluc2VydFJ1bGVzID0gZnVuY3Rpb24gaW5zZXJ0UnVsZXMoZ3JvdXAsIHJ1bGVzKSB7XG4gICAgaWYgKGdyb3VwID49IHRoaXMuZ3JvdXBTaXplcy5sZW5ndGgpIHtcbiAgICAgIHZhciBvbGRCdWZmZXIgPSB0aGlzLmdyb3VwU2l6ZXM7XG4gICAgICB2YXIgb2xkU2l6ZSA9IG9sZEJ1ZmZlci5sZW5ndGg7XG4gICAgICB2YXIgbmV3U2l6ZSA9IG9sZFNpemU7XG5cbiAgICAgIHdoaWxlIChncm91cCA+PSBuZXdTaXplKSB7XG4gICAgICAgIG5ld1NpemUgPDw9IDE7XG5cbiAgICAgICAgaWYgKG5ld1NpemUgPCAwKSB7XG4gICAgICAgICAgdGhyb3dTdHlsZWRDb21wb25lbnRzRXJyb3IoMTYsIFwiXCIgKyBncm91cCk7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgdGhpcy5ncm91cFNpemVzID0gbmV3IFVpbnQzMkFycmF5KG5ld1NpemUpO1xuICAgICAgdGhpcy5ncm91cFNpemVzLnNldChvbGRCdWZmZXIpO1xuICAgICAgdGhpcy5sZW5ndGggPSBuZXdTaXplO1xuXG4gICAgICBmb3IgKHZhciBpID0gb2xkU2l6ZTsgaSA8IG5ld1NpemU7IGkrKykge1xuICAgICAgICB0aGlzLmdyb3VwU2l6ZXNbaV0gPSAwO1xuICAgICAgfVxuICAgIH1cblxuICAgIHZhciBydWxlSW5kZXggPSB0aGlzLmluZGV4T2ZHcm91cChncm91cCArIDEpO1xuXG4gICAgZm9yICh2YXIgX2kgPSAwLCBsID0gcnVsZXMubGVuZ3RoOyBfaSA8IGw7IF9pKyspIHtcbiAgICAgIGlmICh0aGlzLnRhZy5pbnNlcnRSdWxlKHJ1bGVJbmRleCwgcnVsZXNbX2ldKSkge1xuICAgICAgICB0aGlzLmdyb3VwU2l6ZXNbZ3JvdXBdKys7XG4gICAgICAgIHJ1bGVJbmRleCsrO1xuICAgICAgfVxuICAgIH1cbiAgfTtcblxuICBfcHJvdG8uY2xlYXJHcm91cCA9IGZ1bmN0aW9uIGNsZWFyR3JvdXAoZ3JvdXApIHtcbiAgICBpZiAoZ3JvdXAgPCB0aGlzLmxlbmd0aCkge1xuICAgICAgdmFyIGxlbmd0aCA9IHRoaXMuZ3JvdXBTaXplc1tncm91cF07XG4gICAgICB2YXIgc3RhcnRJbmRleCA9IHRoaXMuaW5kZXhPZkdyb3VwKGdyb3VwKTtcbiAgICAgIHZhciBlbmRJbmRleCA9IHN0YXJ0SW5kZXggKyBsZW5ndGg7XG4gICAgICB0aGlzLmdyb3VwU2l6ZXNbZ3JvdXBdID0gMDtcblxuICAgICAgZm9yICh2YXIgaSA9IHN0YXJ0SW5kZXg7IGkgPCBlbmRJbmRleDsgaSsrKSB7XG4gICAgICAgIHRoaXMudGFnLmRlbGV0ZVJ1bGUoc3RhcnRJbmRleCk7XG4gICAgICB9XG4gICAgfVxuICB9O1xuXG4gIF9wcm90by5nZXRHcm91cCA9IGZ1bmN0aW9uIGdldEdyb3VwKGdyb3VwKSB7XG4gICAgdmFyIGNzcyA9ICcnO1xuXG4gICAgaWYgKGdyb3VwID49IHRoaXMubGVuZ3RoIHx8IHRoaXMuZ3JvdXBTaXplc1tncm91cF0gPT09IDApIHtcbiAgICAgIHJldHVybiBjc3M7XG4gICAgfVxuXG4gICAgdmFyIGxlbmd0aCA9IHRoaXMuZ3JvdXBTaXplc1tncm91cF07XG4gICAgdmFyIHN0YXJ0SW5kZXggPSB0aGlzLmluZGV4T2ZHcm91cChncm91cCk7XG4gICAgdmFyIGVuZEluZGV4ID0gc3RhcnRJbmRleCArIGxlbmd0aDtcblxuICAgIGZvciAodmFyIGkgPSBzdGFydEluZGV4OyBpIDwgZW5kSW5kZXg7IGkrKykge1xuICAgICAgY3NzICs9IFwiXCIgKyB0aGlzLnRhZy5nZXRSdWxlKGkpICsgU1BMSVRURVI7XG4gICAgfVxuXG4gICAgcmV0dXJuIGNzcztcbiAgfTtcblxuICByZXR1cm4gRGVmYXVsdEdyb3VwZWRUYWc7XG59KCk7XG5cbi8vIFxudmFyIE1BWF9TTUkgPSAxIDw8IDMxIC0gMTtcbnZhciBncm91cElEUmVnaXN0ZXIgPSBuZXcgTWFwKCk7XG52YXIgcmV2ZXJzZVJlZ2lzdGVyID0gbmV3IE1hcCgpO1xudmFyIG5leHRGcmVlR3JvdXAgPSAxO1xudmFyIGdldEdyb3VwRm9ySWQgPSBmdW5jdGlvbiBnZXRHcm91cEZvcklkKGlkKSB7XG4gIGlmIChncm91cElEUmVnaXN0ZXIuaGFzKGlkKSkge1xuICAgIHJldHVybiBncm91cElEUmVnaXN0ZXIuZ2V0KGlkKTtcbiAgfVxuXG4gIHZhciBncm91cCA9IG5leHRGcmVlR3JvdXArKztcblxuICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyAmJiAoKGdyb3VwIHwgMCkgPCAwIHx8IGdyb3VwID4gTUFYX1NNSSkpIHtcbiAgICB0aHJvd1N0eWxlZENvbXBvbmVudHNFcnJvcigxNiwgXCJcIiArIGdyb3VwKTtcbiAgfVxuXG4gIGdyb3VwSURSZWdpc3Rlci5zZXQoaWQsIGdyb3VwKTtcbiAgcmV2ZXJzZVJlZ2lzdGVyLnNldChncm91cCwgaWQpO1xuICByZXR1cm4gZ3JvdXA7XG59O1xudmFyIGdldElkRm9yR3JvdXAgPSBmdW5jdGlvbiBnZXRJZEZvckdyb3VwKGdyb3VwKSB7XG4gIHJldHVybiByZXZlcnNlUmVnaXN0ZXIuZ2V0KGdyb3VwKTtcbn07XG52YXIgc2V0R3JvdXBGb3JJZCA9IGZ1bmN0aW9uIHNldEdyb3VwRm9ySWQoaWQsIGdyb3VwKSB7XG4gIGlmIChncm91cCA+PSBuZXh0RnJlZUdyb3VwKSB7XG4gICAgbmV4dEZyZWVHcm91cCA9IGdyb3VwICsgMTtcbiAgfVxuXG4gIGdyb3VwSURSZWdpc3Rlci5zZXQoaWQsIGdyb3VwKTtcbiAgcmV2ZXJzZVJlZ2lzdGVyLnNldChncm91cCwgaWQpO1xufTtcblxuLy8gXG52YXIgU0VMRUNUT1IgPSBcInN0eWxlW1wiICsgU0NfQVRUUiArIFwiXVtcIiArIFNDX0FUVFJfVkVSU0lPTiArIFwiPVxcXCJcIiArIFNDX1ZFUlNJT04gKyBcIlxcXCJdXCI7XG52YXIgTUFSS0VSX1JFID0gbmV3IFJlZ0V4cChcIl5cIiArIFNDX0FUVFIgKyBcIlxcXFwuZyhcXFxcZCspXFxcXFtpZD1cXFwiKFtcXFxcd1xcXFxkLV0rKVxcXCJcXFxcXS4qP1xcXCIoW15cXFwiXSopXCIpO1xudmFyIG91dHB1dFNoZWV0ID0gZnVuY3Rpb24gb3V0cHV0U2hlZXQoc2hlZXQpIHtcbiAgdmFyIHRhZyA9IHNoZWV0LmdldFRhZygpO1xuICB2YXIgbGVuZ3RoID0gdGFnLmxlbmd0aDtcbiAgdmFyIGNzcyA9ICcnO1xuXG4gIGZvciAodmFyIGdyb3VwID0gMDsgZ3JvdXAgPCBsZW5ndGg7IGdyb3VwKyspIHtcbiAgICB2YXIgaWQgPSBnZXRJZEZvckdyb3VwKGdyb3VwKTtcbiAgICBpZiAoaWQgPT09IHVuZGVmaW5lZCkgY29udGludWU7XG4gICAgdmFyIG5hbWVzID0gc2hlZXQubmFtZXMuZ2V0KGlkKTtcbiAgICB2YXIgcnVsZXMgPSB0YWcuZ2V0R3JvdXAoZ3JvdXApO1xuICAgIGlmIChuYW1lcyA9PT0gdW5kZWZpbmVkIHx8IHJ1bGVzLmxlbmd0aCA9PT0gMCkgY29udGludWU7XG4gICAgdmFyIHNlbGVjdG9yID0gU0NfQVRUUiArIFwiLmdcIiArIGdyb3VwICsgXCJbaWQ9XFxcIlwiICsgaWQgKyBcIlxcXCJdXCI7XG4gICAgdmFyIGNvbnRlbnQgPSAnJztcblxuICAgIGlmIChuYW1lcyAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICBuYW1lcy5mb3JFYWNoKGZ1bmN0aW9uIChuYW1lKSB7XG4gICAgICAgIGlmIChuYW1lLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICBjb250ZW50ICs9IG5hbWUgKyBcIixcIjtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfSAvLyBOT1RFOiBJdCdzIGVhc2llciB0byBjb2xsZWN0IHJ1bGVzIGFuZCBoYXZlIHRoZSBtYXJrZXJcbiAgICAvLyBhZnRlciB0aGUgYWN0dWFsIHJ1bGVzIHRvIHNpbXBsaWZ5IHRoZSByZWh5ZHJhdGlvblxuXG5cbiAgICBjc3MgKz0gXCJcIiArIHJ1bGVzICsgc2VsZWN0b3IgKyBcIntjb250ZW50OlxcXCJcIiArIGNvbnRlbnQgKyBcIlxcXCJ9XCIgKyBTUExJVFRFUjtcbiAgfVxuXG4gIHJldHVybiBjc3M7XG59O1xuXG52YXIgcmVoeWRyYXRlTmFtZXNGcm9tQ29udGVudCA9IGZ1bmN0aW9uIHJlaHlkcmF0ZU5hbWVzRnJvbUNvbnRlbnQoc2hlZXQsIGlkLCBjb250ZW50KSB7XG4gIHZhciBuYW1lcyA9IGNvbnRlbnQuc3BsaXQoJywnKTtcbiAgdmFyIG5hbWU7XG5cbiAgZm9yICh2YXIgaSA9IDAsIGwgPSBuYW1lcy5sZW5ndGg7IGkgPCBsOyBpKyspIHtcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmVcbiAgICBpZiAobmFtZSA9IG5hbWVzW2ldKSB7XG4gICAgICBzaGVldC5yZWdpc3Rlck5hbWUoaWQsIG5hbWUpO1xuICAgIH1cbiAgfVxufTtcblxudmFyIHJlaHlkcmF0ZVNoZWV0RnJvbVRhZyA9IGZ1bmN0aW9uIHJlaHlkcmF0ZVNoZWV0RnJvbVRhZyhzaGVldCwgc3R5bGUpIHtcbiAgdmFyIHBhcnRzID0gc3R5bGUuaW5uZXJIVE1MLnNwbGl0KFNQTElUVEVSKTtcbiAgdmFyIHJ1bGVzID0gW107XG5cbiAgZm9yICh2YXIgaSA9IDAsIGwgPSBwYXJ0cy5sZW5ndGg7IGkgPCBsOyBpKyspIHtcbiAgICB2YXIgcGFydCA9IHBhcnRzW2ldLnRyaW0oKTtcbiAgICBpZiAoIXBhcnQpIGNvbnRpbnVlO1xuICAgIHZhciBtYXJrZXIgPSBwYXJ0Lm1hdGNoKE1BUktFUl9SRSk7XG5cbiAgICBpZiAobWFya2VyKSB7XG4gICAgICB2YXIgZ3JvdXAgPSBwYXJzZUludChtYXJrZXJbMV0sIDEwKSB8IDA7XG4gICAgICB2YXIgaWQgPSBtYXJrZXJbMl07XG5cbiAgICAgIGlmIChncm91cCAhPT0gMCkge1xuICAgICAgICAvLyBSZWh5ZHJhdGUgY29tcG9uZW50SWQgdG8gZ3JvdXAgaW5kZXggbWFwcGluZ1xuICAgICAgICBzZXRHcm91cEZvcklkKGlkLCBncm91cCk7IC8vIFJlaHlkcmF0ZSBuYW1lcyBhbmQgcnVsZXNcbiAgICAgICAgLy8gbG9va3MgbGlrZTogZGF0YS1zdHlsZWQuZzExW2lkPVwiaWRBXCJde2NvbnRlbnQ6XCJuYW1lQSxcIn1cblxuICAgICAgICByZWh5ZHJhdGVOYW1lc0Zyb21Db250ZW50KHNoZWV0LCBpZCwgbWFya2VyWzNdKTtcbiAgICAgICAgc2hlZXQuZ2V0VGFnKCkuaW5zZXJ0UnVsZXMoZ3JvdXAsIHJ1bGVzKTtcbiAgICAgIH1cblxuICAgICAgcnVsZXMubGVuZ3RoID0gMDtcbiAgICB9IGVsc2Uge1xuICAgICAgcnVsZXMucHVzaChwYXJ0KTtcbiAgICB9XG4gIH1cbn07XG5cbnZhciByZWh5ZHJhdGVTaGVldCA9IGZ1bmN0aW9uIHJlaHlkcmF0ZVNoZWV0KHNoZWV0KSB7XG4gIHZhciBub2RlcyA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoU0VMRUNUT1IpO1xuXG4gIGZvciAodmFyIGkgPSAwLCBsID0gbm9kZXMubGVuZ3RoOyBpIDwgbDsgaSsrKSB7XG4gICAgdmFyIG5vZGUgPSBub2Rlc1tpXTtcblxuICAgIGlmIChub2RlICYmIG5vZGUuZ2V0QXR0cmlidXRlKFNDX0FUVFIpICE9PSBTQ19BVFRSX0FDVElWRSkge1xuICAgICAgcmVoeWRyYXRlU2hlZXRGcm9tVGFnKHNoZWV0LCBub2RlKTtcblxuICAgICAgaWYgKG5vZGUucGFyZW50Tm9kZSkge1xuICAgICAgICBub2RlLnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQobm9kZSk7XG4gICAgICB9XG4gICAgfVxuICB9XG59O1xuXG52YXIgU0hPVUxEX1JFSFlEUkFURSA9IElTX0JST1dTRVI7XG52YXIgZGVmYXVsdE9wdGlvbnMgPSB7XG4gIGlzU2VydmVyOiAhSVNfQlJPV1NFUixcbiAgdXNlQ1NTT01JbmplY3Rpb246ICFESVNBQkxFX1NQRUVEWVxufTtcbi8qKiBDb250YWlucyB0aGUgbWFpbiBzdHlsZXNoZWV0IGxvZ2ljIGZvciBzdHJpbmdpZmljYXRpb24gYW5kIGNhY2hpbmcgKi9cblxudmFyIFN0eWxlU2hlZXQgPSAvKiNfX1BVUkVfXyovZnVuY3Rpb24gKCkge1xuICAvKiogUmVnaXN0ZXIgYSBncm91cCBJRCB0byBnaXZlIGl0IGFuIGluZGV4ICovXG4gIFN0eWxlU2hlZXQucmVnaXN0ZXJJZCA9IGZ1bmN0aW9uIHJlZ2lzdGVySWQoaWQpIHtcbiAgICByZXR1cm4gZ2V0R3JvdXBGb3JJZChpZCk7XG4gIH07XG5cbiAgZnVuY3Rpb24gU3R5bGVTaGVldChvcHRpb25zLCBnbG9iYWxTdHlsZXMsIG5hbWVzKSB7XG4gICAgaWYgKG9wdGlvbnMgPT09IHZvaWQgMCkge1xuICAgICAgb3B0aW9ucyA9IGRlZmF1bHRPcHRpb25zO1xuICAgIH1cblxuICAgIGlmIChnbG9iYWxTdHlsZXMgPT09IHZvaWQgMCkge1xuICAgICAgZ2xvYmFsU3R5bGVzID0ge307XG4gICAgfVxuXG4gICAgdGhpcy5vcHRpb25zID0gX2V4dGVuZHMoe30sIGRlZmF1bHRPcHRpb25zLCB7fSwgb3B0aW9ucyk7XG4gICAgdGhpcy5ncyA9IGdsb2JhbFN0eWxlcztcbiAgICB0aGlzLm5hbWVzID0gbmV3IE1hcChuYW1lcyk7IC8vIFdlIHJlaHlkcmF0ZSBvbmx5IG9uY2UgYW5kIHVzZSB0aGUgc2hlZXQgdGhhdCBpcyBjcmVhdGVkIGZpcnN0XG5cbiAgICBpZiAoIXRoaXMub3B0aW9ucy5pc1NlcnZlciAmJiBJU19CUk9XU0VSICYmIFNIT1VMRF9SRUhZRFJBVEUpIHtcbiAgICAgIFNIT1VMRF9SRUhZRFJBVEUgPSBmYWxzZTtcbiAgICAgIHJlaHlkcmF0ZVNoZWV0KHRoaXMpO1xuICAgIH1cbiAgfVxuXG4gIHZhciBfcHJvdG8gPSBTdHlsZVNoZWV0LnByb3RvdHlwZTtcblxuICBfcHJvdG8ucmVjb25zdHJ1Y3RXaXRoT3B0aW9ucyA9IGZ1bmN0aW9uIHJlY29uc3RydWN0V2l0aE9wdGlvbnMob3B0aW9ucykge1xuICAgIHJldHVybiBuZXcgU3R5bGVTaGVldChfZXh0ZW5kcyh7fSwgdGhpcy5vcHRpb25zLCB7fSwgb3B0aW9ucyksIHRoaXMuZ3MsIHRoaXMubmFtZXMpO1xuICB9O1xuXG4gIF9wcm90by5hbGxvY2F0ZUdTSW5zdGFuY2UgPSBmdW5jdGlvbiBhbGxvY2F0ZUdTSW5zdGFuY2UoaWQpIHtcbiAgICByZXR1cm4gdGhpcy5nc1tpZF0gPSAodGhpcy5nc1tpZF0gfHwgMCkgKyAxO1xuICB9XG4gIC8qKiBMYXppbHkgaW5pdGlhbGlzZXMgYSBHcm91cGVkVGFnIGZvciB3aGVuIGl0J3MgYWN0dWFsbHkgbmVlZGVkICovXG4gIDtcblxuICBfcHJvdG8uZ2V0VGFnID0gZnVuY3Rpb24gZ2V0VGFnKCkge1xuICAgIHJldHVybiB0aGlzLnRhZyB8fCAodGhpcy50YWcgPSBtYWtlR3JvdXBlZFRhZyhtYWtlVGFnKHRoaXMub3B0aW9ucykpKTtcbiAgfVxuICAvKiogQ2hlY2sgd2hldGhlciBhIG5hbWUgaXMga25vd24gZm9yIGNhY2hpbmcgKi9cbiAgO1xuXG4gIF9wcm90by5oYXNOYW1lRm9ySWQgPSBmdW5jdGlvbiBoYXNOYW1lRm9ySWQoaWQsIG5hbWUpIHtcbiAgICByZXR1cm4gdGhpcy5uYW1lcy5oYXMoaWQpICYmIHRoaXMubmFtZXMuZ2V0KGlkKS5oYXMobmFtZSk7XG4gIH1cbiAgLyoqIE1hcmsgYSBncm91cCdzIG5hbWUgYXMga25vd24gZm9yIGNhY2hpbmcgKi9cbiAgO1xuXG4gIF9wcm90by5yZWdpc3Rlck5hbWUgPSBmdW5jdGlvbiByZWdpc3Rlck5hbWUoaWQsIG5hbWUpIHtcbiAgICBnZXRHcm91cEZvcklkKGlkKTtcblxuICAgIGlmICghdGhpcy5uYW1lcy5oYXMoaWQpKSB7XG4gICAgICB2YXIgZ3JvdXBOYW1lcyA9IG5ldyBTZXQoKTtcbiAgICAgIGdyb3VwTmFtZXMuYWRkKG5hbWUpO1xuICAgICAgdGhpcy5uYW1lcy5zZXQoaWQsIGdyb3VwTmFtZXMpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLm5hbWVzLmdldChpZCkuYWRkKG5hbWUpO1xuICAgIH1cbiAgfVxuICAvKiogSW5zZXJ0IG5ldyBydWxlcyB3aGljaCBhbHNvIG1hcmtzIHRoZSBuYW1lIGFzIGtub3duICovXG4gIDtcblxuICBfcHJvdG8uaW5zZXJ0UnVsZXMgPSBmdW5jdGlvbiBpbnNlcnRSdWxlcyhpZCwgbmFtZSwgcnVsZXMpIHtcbiAgICB0aGlzLnJlZ2lzdGVyTmFtZShpZCwgbmFtZSk7XG4gICAgdGhpcy5nZXRUYWcoKS5pbnNlcnRSdWxlcyhnZXRHcm91cEZvcklkKGlkKSwgcnVsZXMpO1xuICB9XG4gIC8qKiBDbGVhcnMgYWxsIGNhY2hlZCBuYW1lcyBmb3IgYSBnaXZlbiBncm91cCBJRCAqL1xuICA7XG5cbiAgX3Byb3RvLmNsZWFyTmFtZXMgPSBmdW5jdGlvbiBjbGVhck5hbWVzKGlkKSB7XG4gICAgaWYgKHRoaXMubmFtZXMuaGFzKGlkKSkge1xuICAgICAgdGhpcy5uYW1lcy5nZXQoaWQpLmNsZWFyKCk7XG4gICAgfVxuICB9XG4gIC8qKiBDbGVhcnMgYWxsIHJ1bGVzIGZvciBhIGdpdmVuIGdyb3VwIElEICovXG4gIDtcblxuICBfcHJvdG8uY2xlYXJSdWxlcyA9IGZ1bmN0aW9uIGNsZWFyUnVsZXMoaWQpIHtcbiAgICB0aGlzLmdldFRhZygpLmNsZWFyR3JvdXAoZ2V0R3JvdXBGb3JJZChpZCkpO1xuICAgIHRoaXMuY2xlYXJOYW1lcyhpZCk7XG4gIH1cbiAgLyoqIENsZWFycyB0aGUgZW50aXJlIHRhZyB3aGljaCBkZWxldGVzIGFsbCBydWxlcyBidXQgbm90IGl0cyBuYW1lcyAqL1xuICA7XG5cbiAgX3Byb3RvLmNsZWFyVGFnID0gZnVuY3Rpb24gY2xlYXJUYWcoKSB7XG4gICAgLy8gTk9URTogVGhpcyBkb2VzIG5vdCBjbGVhciB0aGUgbmFtZXMsIHNpbmNlIGl0J3Mgb25seSB1c2VkIGR1cmluZyBTU1JcbiAgICAvLyBzbyB0aGF0IHdlIGNhbiBjb250aW51b3VzbHkgb3V0cHV0IG9ubHkgbmV3IHJ1bGVzXG4gICAgdGhpcy50YWcgPSB1bmRlZmluZWQ7XG4gIH1cbiAgLyoqIE91dHB1dHMgdGhlIGN1cnJlbnQgc2hlZXQgYXMgYSBDU1Mgc3RyaW5nIHdpdGggbWFya2VycyBmb3IgU1NSICovXG4gIDtcblxuICBfcHJvdG8udG9TdHJpbmcgPSBmdW5jdGlvbiB0b1N0cmluZygpIHtcbiAgICByZXR1cm4gb3V0cHV0U2hlZXQodGhpcyk7XG4gIH07XG5cbiAgcmV0dXJuIFN0eWxlU2hlZXQ7XG59KCk7XG5cbi8vIFxuXG4vKiBlc2xpbnQtZGlzYWJsZSAqL1xudmFyIFNFRUQgPSA1MzgxOyAvLyBXaGVuIHdlIGhhdmUgc2VwYXJhdGUgc3RyaW5ncyBpdCdzIHVzZWZ1bCB0byBydW4gYSBwcm9ncmVzc2l2ZVxuLy8gdmVyc2lvbiBvZiBkamIyIHdoZXJlIHdlIHByZXRlbmQgdGhhdCB3ZSdyZSBzdGlsbCBsb29waW5nIG92ZXJcbi8vIHRoZSBzYW1lIHN0cmluZ1xuXG52YXIgcGhhc2ggPSBmdW5jdGlvbiBwaGFzaChoLCB4KSB7XG4gIHZhciBpID0geC5sZW5ndGg7XG5cbiAgd2hpbGUgKGkpIHtcbiAgICBoID0gaCAqIDMzIF4geC5jaGFyQ29kZUF0KC0taSk7XG4gIH1cblxuICByZXR1cm4gaDtcbn07IC8vIFRoaXMgaXMgYSBkamIyIGhhc2hpbmcgZnVuY3Rpb25cblxudmFyIGhhc2ggPSBmdW5jdGlvbiBoYXNoKHgpIHtcbiAgcmV0dXJuIHBoYXNoKFNFRUQsIHgpO1xufTtcblxuLyoqXG4gKiBNSVQgTGljZW5zZVxuICpcbiAqIENvcHlyaWdodCAoYykgMjAxNiBTdWx0YW4gVGFyaW1vXG4gKlxuICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZlxuICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgXCJTb2Z0d2FyZVwiKSxcbiAqIHRvIGRlYWwgaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vclxuICogc2VsbCBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOlxuICpcbiAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbFxuICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS5cbiAqXG4gKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgXCJBUyBJU1wiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTXG4gKiBPUiBJTVBMSUVEIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLFxuICogRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFXG4gKiBBVVRIT1JTIE9SIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSxcbiAqIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1JcbiAqIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuXG4gKi9cblxuLyogZXNsaW50LWRpc2FibGUgKi9cbmZ1bmN0aW9uIGluc2VydFJ1bGVQbHVnaW4gKGluc2VydFJ1bGUpIHtcbiAgdmFyIGRlbGltaXRlciA9ICcvKnwqLyc7XG4gIHZhciBuZWVkbGUgPSBkZWxpbWl0ZXIgKyBcIn1cIjtcblxuICBmdW5jdGlvbiB0b1NoZWV0KGJsb2NrKSB7XG4gICAgaWYgKGJsb2NrKSB7XG4gICAgICB0cnkge1xuICAgICAgICBpbnNlcnRSdWxlKGJsb2NrICsgXCJ9XCIpO1xuICAgICAgfSBjYXRjaCAoZSkge31cbiAgICB9XG4gIH1cblxuICByZXR1cm4gZnVuY3Rpb24gcnVsZVNoZWV0KGNvbnRleHQsIGNvbnRlbnQsIHNlbGVjdG9ycywgcGFyZW50cywgbGluZSwgY29sdW1uLCBsZW5ndGgsIG5zLCBkZXB0aCwgYXQpIHtcbiAgICBzd2l0Y2ggKGNvbnRleHQpIHtcbiAgICAgIC8vIHByb3BlcnR5XG4gICAgICBjYXNlIDE6XG4gICAgICAgIC8vIEBpbXBvcnRcbiAgICAgICAgaWYgKGRlcHRoID09PSAwICYmIGNvbnRlbnQuY2hhckNvZGVBdCgwKSA9PT0gNjQpIHJldHVybiBpbnNlcnRSdWxlKGNvbnRlbnQgKyBcIjtcIiksICcnO1xuICAgICAgICBicmVhaztcbiAgICAgIC8vIHNlbGVjdG9yXG5cbiAgICAgIGNhc2UgMjpcbiAgICAgICAgaWYgKG5zID09PSAwKSByZXR1cm4gY29udGVudCArIGRlbGltaXRlcjtcbiAgICAgICAgYnJlYWs7XG4gICAgICAvLyBhdC1ydWxlXG5cbiAgICAgIGNhc2UgMzpcbiAgICAgICAgc3dpdGNoIChucykge1xuICAgICAgICAgIC8vIEBmb250LWZhY2UsIEBwYWdlXG4gICAgICAgICAgY2FzZSAxMDI6XG4gICAgICAgICAgY2FzZSAxMTI6XG4gICAgICAgICAgICByZXR1cm4gaW5zZXJ0UnVsZShzZWxlY3RvcnNbMF0gKyBjb250ZW50KSwgJyc7XG5cbiAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgcmV0dXJuIGNvbnRlbnQgKyAoYXQgPT09IDAgPyBkZWxpbWl0ZXIgOiAnJyk7XG4gICAgICAgIH1cblxuICAgICAgY2FzZSAtMjpcbiAgICAgICAgY29udGVudC5zcGxpdChuZWVkbGUpLmZvckVhY2godG9TaGVldCk7XG4gICAgfVxuICB9O1xufVxuXG52YXIgQ09NTUVOVF9SRUdFWCA9IC9eXFxzKlxcL1xcLy4qJC9nbTtcbmZ1bmN0aW9uIGNyZWF0ZVN0eWxpc0luc3RhbmNlKF90ZW1wKSB7XG4gIHZhciBfcmVmID0gX3RlbXAgPT09IHZvaWQgMCA/IEVNUFRZX09CSkVDVCA6IF90ZW1wLFxuICAgICAgX3JlZiRvcHRpb25zID0gX3JlZi5vcHRpb25zLFxuICAgICAgb3B0aW9ucyA9IF9yZWYkb3B0aW9ucyA9PT0gdm9pZCAwID8gRU1QVFlfT0JKRUNUIDogX3JlZiRvcHRpb25zLFxuICAgICAgX3JlZiRwbHVnaW5zID0gX3JlZi5wbHVnaW5zLFxuICAgICAgcGx1Z2lucyA9IF9yZWYkcGx1Z2lucyA9PT0gdm9pZCAwID8gRU1QVFlfQVJSQVkgOiBfcmVmJHBsdWdpbnM7XG5cbiAgdmFyIHN0eWxpcyA9IG5ldyBTdHlsaXMob3B0aW9ucyk7IC8vIFdyYXAgYGluc2VydFJ1bGVQbHVnaW4gdG8gYnVpbGQgYSBsaXN0IG9mIHJ1bGVzLFxuICAvLyBhbmQgdGhlbiBtYWtlIG91ciBvd24gcGx1Z2luIHRvIHJldHVybiB0aGUgcnVsZXMuIFRoaXNcbiAgLy8gbWFrZXMgaXQgZWFzaWVyIHRvIGhvb2sgaW50byB0aGUgZXhpc3RpbmcgU1NSIGFyY2hpdGVjdHVyZVxuXG4gIHZhciBwYXJzaW5nUnVsZXMgPSBbXTsgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGNvbnNpc3RlbnQtcmV0dXJuXG5cbiAgdmFyIHJldHVyblJ1bGVzUGx1Z2luID0gZnVuY3Rpb24gcmV0dXJuUnVsZXNQbHVnaW4oY29udGV4dCkge1xuICAgIGlmIChjb250ZXh0ID09PSAtMikge1xuICAgICAgdmFyIHBhcnNlZFJ1bGVzID0gcGFyc2luZ1J1bGVzO1xuICAgICAgcGFyc2luZ1J1bGVzID0gW107XG4gICAgICByZXR1cm4gcGFyc2VkUnVsZXM7XG4gICAgfVxuICB9O1xuXG4gIHZhciBwYXJzZVJ1bGVzUGx1Z2luID0gaW5zZXJ0UnVsZVBsdWdpbihmdW5jdGlvbiAocnVsZSkge1xuICAgIHBhcnNpbmdSdWxlcy5wdXNoKHJ1bGUpO1xuICB9KTtcblxuICB2YXIgX2NvbXBvbmVudElkO1xuXG4gIHZhciBfc2VsZWN0b3I7XG5cbiAgdmFyIF9zZWxlY3RvclJlZ2V4cDtcblxuICB2YXIgc2VsZlJlZmVyZW5jZVJlcGxhY2VyID0gZnVuY3Rpb24gc2VsZlJlZmVyZW5jZVJlcGxhY2VyKG1hdGNoLCBvZmZzZXQsIHN0cmluZykge1xuICAgIGlmICggLy8gdGhlIGZpcnN0IHNlbGYtcmVmIGlzIGFsd2F5cyB1bnRvdWNoZWRcbiAgICBvZmZzZXQgPiAwICYmIC8vIHRoZXJlIHNob3VsZCBiZSBhdCBsZWFzdCB0d28gc2VsZi1yZWZzIHRvIGRvIGEgcmVwbGFjZW1lbnQgKC5iID4gLmIpXG4gICAgc3RyaW5nLnNsaWNlKDAsIG9mZnNldCkuaW5kZXhPZihfc2VsZWN0b3IpICE9PSAtMSAmJiAvLyBubyBjb25zZWN1dGl2ZSBzZWxmIHJlZnMgKC5iLmIpOyB0aGF0IGlzIGEgcHJlY2VkZW5jZSBib29zdCBhbmQgdHJlYXRlZCBkaWZmZXJlbnRseVxuICAgIHN0cmluZy5zbGljZShvZmZzZXQgLSBfc2VsZWN0b3IubGVuZ3RoLCBvZmZzZXQpICE9PSBfc2VsZWN0b3IpIHtcbiAgICAgIHJldHVybiBcIi5cIiArIF9jb21wb25lbnRJZDtcbiAgICB9XG5cbiAgICByZXR1cm4gbWF0Y2g7XG4gIH07XG4gIC8qKlxuICAgKiBXaGVuIHdyaXRpbmcgYSBzdHlsZSBsaWtlXG4gICAqXG4gICAqICYgKyAmIHtcbiAgICogICBjb2xvcjogcmVkO1xuICAgKiB9XG4gICAqXG4gICAqIFRoZSBzZWNvbmQgYW1wZXJzYW5kIHNob3VsZCBiZSBhIHJlZmVyZW5jZSB0byB0aGUgc3RhdGljIGNvbXBvbmVudCBjbGFzcy4gc3R5bGlzXG4gICAqIGhhcyBubyBrbm93bGVkZ2Ugb2Ygc3RhdGljIGNsYXNzIHNvIHdlIGhhdmUgdG8gaW50ZWxsaWdlbnRseSByZXBsYWNlIHRoZSBiYXNlIHNlbGVjdG9yLlxuICAgKlxuICAgKiBodHRwczovL2dpdGh1Yi5jb20vdGh5c3VsdGFuL3N0eWxpcy5qcyNwbHVnaW5zIDwtIG1vcmUgaW5mbyBhYm91dCB0aGUgY29udGV4dCBwaGFzZSB2YWx1ZXNcbiAgICogXCIyXCIgbWVhbnMgdGhpcyBwbHVnaW4gaXMgdGFraW5nIGVmZmVjdCBhdCB0aGUgdmVyeSBlbmQgYWZ0ZXIgYWxsIG90aGVyIHByb2Nlc3NpbmcgaXMgY29tcGxldGVcbiAgICovXG5cblxuICB2YXIgc2VsZlJlZmVyZW5jZVJlcGxhY2VtZW50UGx1Z2luID0gZnVuY3Rpb24gc2VsZlJlZmVyZW5jZVJlcGxhY2VtZW50UGx1Z2luKGNvbnRleHQsIF8sIHNlbGVjdG9ycykge1xuICAgIGlmIChjb250ZXh0ID09PSAyICYmIHNlbGVjdG9ycy5sZW5ndGggJiYgc2VsZWN0b3JzWzBdLmxhc3RJbmRleE9mKF9zZWxlY3RvcikgPiAwKSB7XG4gICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tcGFyYW0tcmVhc3NpZ25cbiAgICAgIHNlbGVjdG9yc1swXSA9IHNlbGVjdG9yc1swXS5yZXBsYWNlKF9zZWxlY3RvclJlZ2V4cCwgc2VsZlJlZmVyZW5jZVJlcGxhY2VyKTtcbiAgICB9XG4gIH07XG5cbiAgc3R5bGlzLnVzZShbXS5jb25jYXQocGx1Z2lucywgW3NlbGZSZWZlcmVuY2VSZXBsYWNlbWVudFBsdWdpbiwgcGFyc2VSdWxlc1BsdWdpbiwgcmV0dXJuUnVsZXNQbHVnaW5dKSk7XG5cbiAgZnVuY3Rpb24gc3RyaW5naWZ5UnVsZXMoY3NzLCBzZWxlY3RvciwgcHJlZml4LCBjb21wb25lbnRJZCkge1xuICAgIGlmIChjb21wb25lbnRJZCA9PT0gdm9pZCAwKSB7XG4gICAgICBjb21wb25lbnRJZCA9ICcmJztcbiAgICB9XG5cbiAgICB2YXIgZmxhdENTUyA9IGNzcy5yZXBsYWNlKENPTU1FTlRfUkVHRVgsICcnKTtcbiAgICB2YXIgY3NzU3RyID0gc2VsZWN0b3IgJiYgcHJlZml4ID8gcHJlZml4ICsgXCIgXCIgKyBzZWxlY3RvciArIFwiIHsgXCIgKyBmbGF0Q1NTICsgXCIgfVwiIDogZmxhdENTUzsgLy8gc3R5bGlzIGhhcyBubyBjb25jZXB0IG9mIHN0YXRlIHRvIGJlIHBhc3NlZCB0byBwbHVnaW5zXG4gICAgLy8gYnV0IHNpbmNlIEpTIGlzIHNpbmdsZT10aHJlYWRlZCwgd2UgY2FuIHJlbHkgb24gdGhhdCB0byBlbnN1cmVcbiAgICAvLyB0aGVzZSBwcm9wZXJ0aWVzIHN0YXkgaW4gc3luYyB3aXRoIHRoZSBjdXJyZW50IHN0eWxpcyBydW5cblxuICAgIF9jb21wb25lbnRJZCA9IGNvbXBvbmVudElkO1xuICAgIF9zZWxlY3RvciA9IHNlbGVjdG9yO1xuICAgIF9zZWxlY3RvclJlZ2V4cCA9IG5ldyBSZWdFeHAoXCJcXFxcXCIgKyBfc2VsZWN0b3IgKyBcIlxcXFxiXCIsICdnJyk7XG4gICAgcmV0dXJuIHN0eWxpcyhwcmVmaXggfHwgIXNlbGVjdG9yID8gJycgOiBzZWxlY3RvciwgY3NzU3RyKTtcbiAgfVxuXG4gIHN0cmluZ2lmeVJ1bGVzLmhhc2ggPSBwbHVnaW5zLmxlbmd0aCA/IHBsdWdpbnMucmVkdWNlKGZ1bmN0aW9uIChhY2MsIHBsdWdpbikge1xuICAgIGlmICghcGx1Z2luLm5hbWUpIHtcbiAgICAgIHRocm93U3R5bGVkQ29tcG9uZW50c0Vycm9yKDE1KTtcbiAgICB9XG5cbiAgICByZXR1cm4gcGhhc2goYWNjLCBwbHVnaW4ubmFtZSk7XG4gIH0sIFNFRUQpLnRvU3RyaW5nKCkgOiAnJztcbiAgcmV0dXJuIHN0cmluZ2lmeVJ1bGVzO1xufVxuXG4vLyBcbnZhciBTdHlsZVNoZWV0Q29udGV4dCA9IFJlYWN0LmNyZWF0ZUNvbnRleHQoKTtcbnZhciBTdHlsZVNoZWV0Q29uc3VtZXIgPSBTdHlsZVNoZWV0Q29udGV4dC5Db25zdW1lcjtcbnZhciBTdHlsaXNDb250ZXh0ID0gUmVhY3QuY3JlYXRlQ29udGV4dCgpO1xudmFyIFN0eWxpc0NvbnN1bWVyID0gU3R5bGlzQ29udGV4dC5Db25zdW1lcjtcbnZhciBtYXN0ZXJTaGVldCA9IG5ldyBTdHlsZVNoZWV0KCk7XG52YXIgbWFzdGVyU3R5bGlzID0gY3JlYXRlU3R5bGlzSW5zdGFuY2UoKTtcbmZ1bmN0aW9uIHVzZVN0eWxlU2hlZXQoKSB7XG4gIHJldHVybiB1c2VDb250ZXh0KFN0eWxlU2hlZXRDb250ZXh0KSB8fCBtYXN0ZXJTaGVldDtcbn1cbmZ1bmN0aW9uIHVzZVN0eWxpcygpIHtcbiAgcmV0dXJuIHVzZUNvbnRleHQoU3R5bGlzQ29udGV4dCkgfHwgbWFzdGVyU3R5bGlzO1xufVxuZnVuY3Rpb24gU3R5bGVTaGVldE1hbmFnZXIocHJvcHMpIHtcbiAgdmFyIF91c2VTdGF0ZSA9IHVzZVN0YXRlKHByb3BzLnN0eWxpc1BsdWdpbnMpLFxuICAgICAgcGx1Z2lucyA9IF91c2VTdGF0ZVswXSxcbiAgICAgIHNldFBsdWdpbnMgPSBfdXNlU3RhdGVbMV07XG5cbiAgdmFyIGNvbnRleHRTdHlsZVNoZWV0ID0gdXNlU3R5bGVTaGVldCgpO1xuICB2YXIgc3R5bGVTaGVldCA9IHVzZU1lbW8oZnVuY3Rpb24gKCkge1xuICAgIHZhciBzaGVldCA9IGNvbnRleHRTdHlsZVNoZWV0O1xuXG4gICAgaWYgKHByb3BzLnNoZWV0KSB7XG4gICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgcHJlZmVyLWRlc3RydWN0dXJpbmdcbiAgICAgIHNoZWV0ID0gcHJvcHMuc2hlZXQ7XG4gICAgfSBlbHNlIGlmIChwcm9wcy50YXJnZXQpIHtcbiAgICAgIHNoZWV0ID0gc2hlZXQucmVjb25zdHJ1Y3RXaXRoT3B0aW9ucyh7XG4gICAgICAgIHRhcmdldDogcHJvcHMudGFyZ2V0XG4gICAgICB9KTtcbiAgICB9XG5cbiAgICBpZiAocHJvcHMuZGlzYWJsZUNTU09NSW5qZWN0aW9uKSB7XG4gICAgICBzaGVldCA9IHNoZWV0LnJlY29uc3RydWN0V2l0aE9wdGlvbnMoe1xuICAgICAgICB1c2VDU1NPTUluamVjdGlvbjogZmFsc2VcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIHJldHVybiBzaGVldDtcbiAgfSwgW3Byb3BzLmRpc2FibGVDU1NPTUluamVjdGlvbiwgcHJvcHMuc2hlZXQsIHByb3BzLnRhcmdldF0pO1xuICB2YXIgc3R5bGlzID0gdXNlTWVtbyhmdW5jdGlvbiAoKSB7XG4gICAgcmV0dXJuIGNyZWF0ZVN0eWxpc0luc3RhbmNlKHtcbiAgICAgIG9wdGlvbnM6IHtcbiAgICAgICAgcHJlZml4OiAhcHJvcHMuZGlzYWJsZVZlbmRvclByZWZpeGVzXG4gICAgICB9LFxuICAgICAgcGx1Z2luczogcGx1Z2luc1xuICAgIH0pO1xuICB9LCBbcHJvcHMuZGlzYWJsZVZlbmRvclByZWZpeGVzLCBwbHVnaW5zXSk7XG4gIHVzZUVmZmVjdChmdW5jdGlvbiAoKSB7XG4gICAgaWYgKCFzaGFsbG93ZXF1YWwocGx1Z2lucywgcHJvcHMuc3R5bGlzUGx1Z2lucykpIHNldFBsdWdpbnMocHJvcHMuc3R5bGlzUGx1Z2lucyk7XG4gIH0sIFtwcm9wcy5zdHlsaXNQbHVnaW5zXSk7XG4gIHJldHVybiAvKiNfX1BVUkVfXyovUmVhY3QuY3JlYXRlRWxlbWVudChTdHlsZVNoZWV0Q29udGV4dC5Qcm92aWRlciwge1xuICAgIHZhbHVlOiBzdHlsZVNoZWV0XG4gIH0sIC8qI19fUFVSRV9fKi9SZWFjdC5jcmVhdGVFbGVtZW50KFN0eWxpc0NvbnRleHQuUHJvdmlkZXIsIHtcbiAgICB2YWx1ZTogc3R5bGlzXG4gIH0sIHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgPyBSZWFjdC5DaGlsZHJlbi5vbmx5KHByb3BzLmNoaWxkcmVuKSA6IHByb3BzLmNoaWxkcmVuKSk7XG59XG5cbi8vIFxuXG52YXIgS2V5ZnJhbWVzID0gLyojX19QVVJFX18qL2Z1bmN0aW9uICgpIHtcbiAgZnVuY3Rpb24gS2V5ZnJhbWVzKG5hbWUsIHN0cmluZ2lmeUFyZ3MpIHtcbiAgICB2YXIgX3RoaXMgPSB0aGlzO1xuXG4gICAgdGhpcy5pbmplY3QgPSBmdW5jdGlvbiAoc3R5bGVTaGVldCkge1xuICAgICAgaWYgKCFzdHlsZVNoZWV0Lmhhc05hbWVGb3JJZChfdGhpcy5pZCwgX3RoaXMubmFtZSkpIHtcbiAgICAgICAgc3R5bGVTaGVldC5pbnNlcnRSdWxlcyhfdGhpcy5pZCwgX3RoaXMubmFtZSwgbWFzdGVyU3R5bGlzLmFwcGx5KHZvaWQgMCwgX3RoaXMuc3RyaW5naWZ5QXJncykpO1xuICAgICAgfVxuICAgIH07XG5cbiAgICB0aGlzLnRvU3RyaW5nID0gZnVuY3Rpb24gKCkge1xuICAgICAgcmV0dXJuIHRocm93U3R5bGVkQ29tcG9uZW50c0Vycm9yKDEyLCBTdHJpbmcoX3RoaXMubmFtZSkpO1xuICAgIH07XG5cbiAgICB0aGlzLm5hbWUgPSBuYW1lO1xuICAgIHRoaXMuaWQgPSBcInNjLWtleWZyYW1lcy1cIiArIG5hbWU7XG4gICAgdGhpcy5zdHJpbmdpZnlBcmdzID0gc3RyaW5naWZ5QXJncztcbiAgfVxuXG4gIHZhciBfcHJvdG8gPSBLZXlmcmFtZXMucHJvdG90eXBlO1xuXG4gIF9wcm90by5nZXROYW1lID0gZnVuY3Rpb24gZ2V0TmFtZSgpIHtcbiAgICByZXR1cm4gdGhpcy5uYW1lO1xuICB9O1xuXG4gIHJldHVybiBLZXlmcmFtZXM7XG59KCk7XG5cbi8vIFxuXG4vKipcbiAqIGlubGluZWQgdmVyc2lvbiBvZlxuICogaHR0cHM6Ly9naXRodWIuY29tL2ZhY2Vib29rL2ZianMvYmxvYi9tYXN0ZXIvcGFja2FnZXMvZmJqcy9zcmMvY29yZS9oeXBoZW5hdGVTdHlsZU5hbWUuanNcbiAqL1xudmFyIHVwcGVyY2FzZVBhdHRlcm4gPSAvKFtBLVpdKS9nO1xudmFyIG1zUGF0dGVybiA9IC9ebXMtLztcbi8qKlxuICogSHlwaGVuYXRlcyBhIGNhbWVsY2FzZWQgQ1NTIHByb3BlcnR5IG5hbWUsIGZvciBleGFtcGxlOlxuICpcbiAqICAgPiBoeXBoZW5hdGVTdHlsZU5hbWUoJ2JhY2tncm91bmRDb2xvcicpXG4gKiAgIDwgXCJiYWNrZ3JvdW5kLWNvbG9yXCJcbiAqICAgPiBoeXBoZW5hdGVTdHlsZU5hbWUoJ01velRyYW5zaXRpb24nKVxuICogICA8IFwiLW1vei10cmFuc2l0aW9uXCJcbiAqICAgPiBoeXBoZW5hdGVTdHlsZU5hbWUoJ21zVHJhbnNpdGlvbicpXG4gKiAgIDwgXCItbXMtdHJhbnNpdGlvblwiXG4gKlxuICogQXMgTW9kZXJuaXpyIHN1Z2dlc3RzIChodHRwOi8vbW9kZXJuaXpyLmNvbS9kb2NzLyNwcmVmaXhlZCksIGFuIGBtc2AgcHJlZml4XG4gKiBpcyBjb252ZXJ0ZWQgdG8gYC1tcy1gLlxuICpcbiAqIEBwYXJhbSB7c3RyaW5nfSBzdHJpbmdcbiAqIEByZXR1cm4ge3N0cmluZ31cbiAqL1xuXG5mdW5jdGlvbiBoeXBoZW5hdGVTdHlsZU5hbWUoc3RyaW5nKSB7XG4gIHJldHVybiBzdHJpbmcucmVwbGFjZSh1cHBlcmNhc2VQYXR0ZXJuLCAnLSQxJykudG9Mb3dlckNhc2UoKS5yZXBsYWNlKG1zUGF0dGVybiwgJy1tcy0nKTtcbn1cblxuLy8gXG5cbmZ1bmN0aW9uIGFkZFVuaXRJZk5lZWRlZChuYW1lLCB2YWx1ZSkge1xuICAvLyBodHRwczovL2dpdGh1Yi5jb20vYW1pbGFqYWNrL2VzbGludC1wbHVnaW4tZmxvd3R5cGUtZXJyb3JzL2lzc3Vlcy8xMzNcbiAgLy8gJEZsb3dGaXhNZVxuICBpZiAodmFsdWUgPT0gbnVsbCB8fCB0eXBlb2YgdmFsdWUgPT09ICdib29sZWFuJyB8fCB2YWx1ZSA9PT0gJycpIHtcbiAgICByZXR1cm4gJyc7XG4gIH1cblxuICBpZiAodHlwZW9mIHZhbHVlID09PSAnbnVtYmVyJyAmJiB2YWx1ZSAhPT0gMCAmJiAhKG5hbWUgaW4gdW5pdGxlc3MpKSB7XG4gICAgcmV0dXJuIHZhbHVlICsgXCJweFwiOyAvLyBQcmVzdW1lcyBpbXBsaWNpdCAncHgnIHN1ZmZpeCBmb3IgdW5pdGxlc3MgbnVtYmVyc1xuICB9XG5cbiAgcmV0dXJuIFN0cmluZyh2YWx1ZSkudHJpbSgpO1xufVxuXG4vLyBcbi8qKlxuICogSXQncyBmYWxzaXNoIG5vdCBmYWxzeSBiZWNhdXNlIDAgaXMgYWxsb3dlZC5cbiAqL1xuXG52YXIgaXNGYWxzaXNoID0gZnVuY3Rpb24gaXNGYWxzaXNoKGNodW5rKSB7XG4gIHJldHVybiBjaHVuayA9PT0gdW5kZWZpbmVkIHx8IGNodW5rID09PSBudWxsIHx8IGNodW5rID09PSBmYWxzZSB8fCBjaHVuayA9PT0gJyc7XG59O1xuXG52YXIgb2JqVG9Dc3NBcnJheSA9IGZ1bmN0aW9uIG9ialRvQ3NzQXJyYXkob2JqLCBwcmV2S2V5KSB7XG4gIHZhciBydWxlcyA9IFtdO1xuICB2YXIga2V5cyA9IE9iamVjdC5rZXlzKG9iaik7XG4gIGtleXMuZm9yRWFjaChmdW5jdGlvbiAoa2V5KSB7XG4gICAgaWYgKCFpc0ZhbHNpc2gob2JqW2tleV0pKSB7XG4gICAgICBpZiAoaXNQbGFpbk9iamVjdChvYmpba2V5XSkpIHtcbiAgICAgICAgcnVsZXMucHVzaC5hcHBseShydWxlcywgb2JqVG9Dc3NBcnJheShvYmpba2V5XSwga2V5KSk7XG4gICAgICAgIHJldHVybiBydWxlcztcbiAgICAgIH0gZWxzZSBpZiAoaXNGdW5jdGlvbihvYmpba2V5XSkpIHtcbiAgICAgICAgcnVsZXMucHVzaChoeXBoZW5hdGVTdHlsZU5hbWUoa2V5KSArIFwiOlwiLCBvYmpba2V5XSwgJzsnKTtcbiAgICAgICAgcmV0dXJuIHJ1bGVzO1xuICAgICAgfVxuXG4gICAgICBydWxlcy5wdXNoKGh5cGhlbmF0ZVN0eWxlTmFtZShrZXkpICsgXCI6IFwiICsgYWRkVW5pdElmTmVlZGVkKGtleSwgb2JqW2tleV0pICsgXCI7XCIpO1xuICAgIH1cblxuICAgIHJldHVybiBydWxlcztcbiAgfSk7XG4gIHJldHVybiBwcmV2S2V5ID8gW3ByZXZLZXkgKyBcIiB7XCJdLmNvbmNhdChydWxlcywgWyd9J10pIDogcnVsZXM7XG59O1xuZnVuY3Rpb24gZmxhdHRlbihjaHVuaywgZXhlY3V0aW9uQ29udGV4dCwgc3R5bGVTaGVldCkge1xuICBpZiAoQXJyYXkuaXNBcnJheShjaHVuaykpIHtcbiAgICB2YXIgcnVsZVNldCA9IFtdO1xuXG4gICAgZm9yICh2YXIgaSA9IDAsIGxlbiA9IGNodW5rLmxlbmd0aCwgcmVzdWx0OyBpIDwgbGVuOyBpICs9IDEpIHtcbiAgICAgIHJlc3VsdCA9IGZsYXR0ZW4oY2h1bmtbaV0sIGV4ZWN1dGlvbkNvbnRleHQsIHN0eWxlU2hlZXQpO1xuICAgICAgaWYgKHJlc3VsdCA9PT0gJycpIGNvbnRpbnVlO2Vsc2UgaWYgKEFycmF5LmlzQXJyYXkocmVzdWx0KSkgcnVsZVNldC5wdXNoLmFwcGx5KHJ1bGVTZXQsIHJlc3VsdCk7ZWxzZSBydWxlU2V0LnB1c2gocmVzdWx0KTtcbiAgICB9XG5cbiAgICByZXR1cm4gcnVsZVNldDtcbiAgfVxuXG4gIGlmIChpc0ZhbHNpc2goY2h1bmspKSB7XG4gICAgcmV0dXJuICcnO1xuICB9XG4gIC8qIEhhbmRsZSBvdGhlciBjb21wb25lbnRzICovXG5cblxuICBpZiAoaXNTdHlsZWRDb21wb25lbnQoY2h1bmspKSB7XG4gICAgcmV0dXJuIFwiLlwiICsgY2h1bmsuc3R5bGVkQ29tcG9uZW50SWQ7XG4gIH1cbiAgLyogRWl0aGVyIGV4ZWN1dGUgb3IgZGVmZXIgdGhlIGZ1bmN0aW9uICovXG5cblxuICBpZiAoaXNGdW5jdGlvbihjaHVuaykpIHtcbiAgICBpZiAoaXNTdGF0ZWxlc3NGdW5jdGlvbihjaHVuaykgJiYgZXhlY3V0aW9uQ29udGV4dCkge1xuICAgICAgdmFyIF9yZXN1bHQgPSBjaHVuayhleGVjdXRpb25Db250ZXh0KTtcblxuICAgICAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgJiYgaXNFbGVtZW50KF9yZXN1bHQpKSB7XG4gICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1jb25zb2xlXG4gICAgICAgIGNvbnNvbGUud2FybihnZXRDb21wb25lbnROYW1lKGNodW5rKSArIFwiIGlzIG5vdCBhIHN0eWxlZCBjb21wb25lbnQgYW5kIGNhbm5vdCBiZSByZWZlcnJlZCB0byB2aWEgY29tcG9uZW50IHNlbGVjdG9yLiBTZWUgaHR0cHM6Ly93d3cuc3R5bGVkLWNvbXBvbmVudHMuY29tL2RvY3MvYWR2YW5jZWQjcmVmZXJyaW5nLXRvLW90aGVyLWNvbXBvbmVudHMgZm9yIG1vcmUgZGV0YWlscy5cIik7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBmbGF0dGVuKF9yZXN1bHQsIGV4ZWN1dGlvbkNvbnRleHQsIHN0eWxlU2hlZXQpO1xuICAgIH0gZWxzZSByZXR1cm4gY2h1bms7XG4gIH1cblxuICBpZiAoY2h1bmsgaW5zdGFuY2VvZiBLZXlmcmFtZXMpIHtcbiAgICBpZiAoc3R5bGVTaGVldCkge1xuICAgICAgY2h1bmsuaW5qZWN0KHN0eWxlU2hlZXQpO1xuICAgICAgcmV0dXJuIGNodW5rLmdldE5hbWUoKTtcbiAgICB9IGVsc2UgcmV0dXJuIGNodW5rO1xuICB9XG4gIC8qIEhhbmRsZSBvYmplY3RzICovXG5cblxuICByZXR1cm4gaXNQbGFpbk9iamVjdChjaHVuaykgPyBvYmpUb0Nzc0FycmF5KGNodW5rKSA6IGNodW5rLnRvU3RyaW5nKCk7XG59XG5cbi8vIFxuZnVuY3Rpb24gY3NzKHN0eWxlcykge1xuICBmb3IgKHZhciBfbGVuID0gYXJndW1lbnRzLmxlbmd0aCwgaW50ZXJwb2xhdGlvbnMgPSBuZXcgQXJyYXkoX2xlbiA+IDEgPyBfbGVuIC0gMSA6IDApLCBfa2V5ID0gMTsgX2tleSA8IF9sZW47IF9rZXkrKykge1xuICAgIGludGVycG9sYXRpb25zW19rZXkgLSAxXSA9IGFyZ3VtZW50c1tfa2V5XTtcbiAgfVxuXG4gIGlmIChpc0Z1bmN0aW9uKHN0eWxlcykgfHwgaXNQbGFpbk9iamVjdChzdHlsZXMpKSB7XG4gICAgLy8gJEZsb3dGaXhNZVxuICAgIHJldHVybiBmbGF0dGVuKGludGVybGVhdmUoRU1QVFlfQVJSQVksIFtzdHlsZXNdLmNvbmNhdChpbnRlcnBvbGF0aW9ucykpKTtcbiAgfVxuXG4gIGlmIChpbnRlcnBvbGF0aW9ucy5sZW5ndGggPT09IDAgJiYgc3R5bGVzLmxlbmd0aCA9PT0gMSAmJiB0eXBlb2Ygc3R5bGVzWzBdID09PSBcInN0cmluZ1wiKSB7XG4gICAgLy8gJEZsb3dGaXhNZVxuICAgIHJldHVybiBzdHlsZXM7XG4gIH0gLy8gJEZsb3dGaXhNZVxuXG5cbiAgcmV0dXJuIGZsYXR0ZW4oaW50ZXJsZWF2ZShzdHlsZXMsIGludGVycG9sYXRpb25zKSk7XG59XG5cbmZ1bmN0aW9uIGNvbnN0cnVjdFdpdGhPcHRpb25zKGNvbXBvbmVudENvbnN0cnVjdG9yLCB0YWcsIG9wdGlvbnMpIHtcbiAgaWYgKG9wdGlvbnMgPT09IHZvaWQgMCkge1xuICAgIG9wdGlvbnMgPSBFTVBUWV9PQkpFQ1Q7XG4gIH1cblxuICBpZiAoIWlzVmFsaWRFbGVtZW50VHlwZSh0YWcpKSB7XG4gICAgcmV0dXJuIHRocm93U3R5bGVkQ29tcG9uZW50c0Vycm9yKDEsIFN0cmluZyh0YWcpKTtcbiAgfVxuICAvKiBUaGlzIGlzIGNhbGxhYmxlIGRpcmVjdGx5IGFzIGEgdGVtcGxhdGUgZnVuY3Rpb24gKi9cbiAgLy8gJEZsb3dGaXhNZTogTm90IHR5cGVkIHRvIGF2b2lkIGRlc3RydWN0dXJpbmcgYXJndW1lbnRzXG5cblxuICB2YXIgdGVtcGxhdGVGdW5jdGlvbiA9IGZ1bmN0aW9uIHRlbXBsYXRlRnVuY3Rpb24oKSB7XG4gICAgcmV0dXJuIGNvbXBvbmVudENvbnN0cnVjdG9yKHRhZywgb3B0aW9ucywgY3NzLmFwcGx5KHZvaWQgMCwgYXJndW1lbnRzKSk7XG4gIH07XG4gIC8qIElmIGNvbmZpZyBtZXRob2RzIGFyZSBjYWxsZWQsIHdyYXAgdXAgYSBuZXcgdGVtcGxhdGUgZnVuY3Rpb24gYW5kIG1lcmdlIG9wdGlvbnMgKi9cblxuXG4gIHRlbXBsYXRlRnVuY3Rpb24ud2l0aENvbmZpZyA9IGZ1bmN0aW9uIChjb25maWcpIHtcbiAgICByZXR1cm4gY29uc3RydWN0V2l0aE9wdGlvbnMoY29tcG9uZW50Q29uc3RydWN0b3IsIHRhZywgX2V4dGVuZHMoe30sIG9wdGlvbnMsIHt9LCBjb25maWcpKTtcbiAgfTtcbiAgLyogTW9kaWZ5L2luamVjdCBuZXcgcHJvcHMgYXQgcnVudGltZSAqL1xuXG5cbiAgdGVtcGxhdGVGdW5jdGlvbi5hdHRycyA9IGZ1bmN0aW9uIChhdHRycykge1xuICAgIHJldHVybiBjb25zdHJ1Y3RXaXRoT3B0aW9ucyhjb21wb25lbnRDb25zdHJ1Y3RvciwgdGFnLCBfZXh0ZW5kcyh7fSwgb3B0aW9ucywge1xuICAgICAgYXR0cnM6IEFycmF5LnByb3RvdHlwZS5jb25jYXQob3B0aW9ucy5hdHRycywgYXR0cnMpLmZpbHRlcihCb29sZWFuKVxuICAgIH0pKTtcbiAgfTtcblxuICByZXR1cm4gdGVtcGxhdGVGdW5jdGlvbjtcbn1cblxuLyogZXNsaW50LWRpc2FibGUgKi9cblxuLyoqXG4gIG1peGluLWRlZXA7IGh0dHBzOi8vZ2l0aHViLmNvbS9qb25zY2hsaW5rZXJ0L21peGluLWRlZXBcbiAgSW5saW5lZCBzdWNoIHRoYXQgaXQgd2lsbCBiZSBjb25zaXN0ZW50bHkgdHJhbnNwaWxlZCB0byBhbiBJRS1jb21wYXRpYmxlIHN5bnRheC5cblxuICBUaGUgTUlUIExpY2Vuc2UgKE1JVClcblxuICBDb3B5cmlnaHQgKGMpIDIwMTQtcHJlc2VudCwgSm9uIFNjaGxpbmtlcnQuXG5cbiAgUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weVxuICBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSBcIlNvZnR3YXJlXCIpLCB0byBkZWFsXG4gIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHNcbiAgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbFxuICBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXNcbiAgZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczpcblxuICBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpblxuICBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS5cblxuICBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgXCJBUyBJU1wiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SXG4gIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLFxuICBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEVcbiAgQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUlxuICBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLFxuICBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOXG4gIFRIRSBTT0ZUV0FSRS5cbiovXG52YXIgaXNPYmplY3QgPSBmdW5jdGlvbiBpc09iamVjdCh2YWwpIHtcbiAgcmV0dXJuIHR5cGVvZiB2YWwgPT09ICdmdW5jdGlvbicgfHwgdHlwZW9mIHZhbCA9PT0gJ29iamVjdCcgJiYgdmFsICE9PSBudWxsICYmICFBcnJheS5pc0FycmF5KHZhbCk7XG59O1xuXG52YXIgaXNWYWxpZEtleSA9IGZ1bmN0aW9uIGlzVmFsaWRLZXkoa2V5KSB7XG4gIHJldHVybiBrZXkgIT09ICdfX3Byb3RvX18nICYmIGtleSAhPT0gJ2NvbnN0cnVjdG9yJyAmJiBrZXkgIT09ICdwcm90b3R5cGUnO1xufTtcblxuZnVuY3Rpb24gbWl4aW4odGFyZ2V0LCB2YWwsIGtleSkge1xuICB2YXIgb2JqID0gdGFyZ2V0W2tleV07XG5cbiAgaWYgKGlzT2JqZWN0KHZhbCkgJiYgaXNPYmplY3Qob2JqKSkge1xuICAgIG1peGluRGVlcChvYmosIHZhbCk7XG4gIH0gZWxzZSB7XG4gICAgdGFyZ2V0W2tleV0gPSB2YWw7XG4gIH1cbn1cblxuZnVuY3Rpb24gbWl4aW5EZWVwKHRhcmdldCkge1xuICBmb3IgKHZhciBfbGVuID0gYXJndW1lbnRzLmxlbmd0aCwgcmVzdCA9IG5ldyBBcnJheShfbGVuID4gMSA/IF9sZW4gLSAxIDogMCksIF9rZXkgPSAxOyBfa2V5IDwgX2xlbjsgX2tleSsrKSB7XG4gICAgcmVzdFtfa2V5IC0gMV0gPSBhcmd1bWVudHNbX2tleV07XG4gIH1cblxuICBmb3IgKHZhciBfaSA9IDAsIF9yZXN0ID0gcmVzdDsgX2kgPCBfcmVzdC5sZW5ndGg7IF9pKyspIHtcbiAgICB2YXIgb2JqID0gX3Jlc3RbX2ldO1xuXG4gICAgaWYgKGlzT2JqZWN0KG9iaikpIHtcbiAgICAgIGZvciAodmFyIGtleSBpbiBvYmopIHtcbiAgICAgICAgaWYgKGlzVmFsaWRLZXkoa2V5KSkge1xuICAgICAgICAgIG1peGluKHRhcmdldCwgb2JqW2tleV0sIGtleSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICByZXR1cm4gdGFyZ2V0O1xufVxuXG4vLyBcblxuLyogZXNsaW50LWRpc2FibGUgbm8tYml0d2lzZSAqL1xudmFyIEFEX1JFUExBQ0VSX1IgPSAvKGEpKGQpL2dpO1xuLyogVGhpcyBpcyB0aGUgXCJjYXBhY2l0eVwiIG9mIG91ciBhbHBoYWJldCBpLmUuIDJ4MjYgZm9yIGFsbCBsZXR0ZXJzIHBsdXMgdGhlaXIgY2FwaXRhbGlzZWRcbiAqIGNvdW50ZXJwYXJ0cyAqL1xuXG52YXIgY2hhcnNMZW5ndGggPSA1Mjtcbi8qIHN0YXJ0IGF0IDc1IGZvciAnYScgdW50aWwgJ3onICgyNSkgYW5kIHRoZW4gc3RhcnQgYXQgNjUgZm9yIGNhcGl0YWxpc2VkIGxldHRlcnMgKi9cblxudmFyIGdldEFscGhhYmV0aWNDaGFyID0gZnVuY3Rpb24gZ2V0QWxwaGFiZXRpY0NoYXIoY29kZSkge1xuICByZXR1cm4gU3RyaW5nLmZyb21DaGFyQ29kZShjb2RlICsgKGNvZGUgPiAyNSA/IDM5IDogOTcpKTtcbn07XG4vKiBpbnB1dCBhIG51bWJlciwgdXN1YWxseSBhIGhhc2ggYW5kIGNvbnZlcnQgaXQgdG8gYmFzZS01MiAqL1xuXG5cbmZ1bmN0aW9uIGdlbmVyYXRlQWxwaGFiZXRpY05hbWUoY29kZSkge1xuICB2YXIgbmFtZSA9ICcnO1xuICB2YXIgeDtcbiAgLyogZ2V0IGEgY2hhciBhbmQgZGl2aWRlIGJ5IGFscGhhYmV0LWxlbmd0aCAqL1xuXG4gIGZvciAoeCA9IE1hdGguYWJzKGNvZGUpOyB4ID4gY2hhcnNMZW5ndGg7IHggPSB4IC8gY2hhcnNMZW5ndGggfCAwKSB7XG4gICAgbmFtZSA9IGdldEFscGhhYmV0aWNDaGFyKHggJSBjaGFyc0xlbmd0aCkgKyBuYW1lO1xuICB9XG5cbiAgcmV0dXJuIChnZXRBbHBoYWJldGljQ2hhcih4ICUgY2hhcnNMZW5ndGgpICsgbmFtZSkucmVwbGFjZShBRF9SRVBMQUNFUl9SLCAnJDEtJDInKTtcbn1cblxuLy8gXG5mdW5jdGlvbiBpc1N0YXRpY1J1bGVzKHJ1bGVzKSB7XG4gIGZvciAodmFyIGkgPSAwOyBpIDwgcnVsZXMubGVuZ3RoOyBpICs9IDEpIHtcbiAgICB2YXIgcnVsZSA9IHJ1bGVzW2ldO1xuXG4gICAgaWYgKGlzRnVuY3Rpb24ocnVsZSkgJiYgIWlzU3R5bGVkQ29tcG9uZW50KHJ1bGUpKSB7XG4gICAgICAvLyBmdW5jdGlvbnMgYXJlIGFsbG93ZWQgdG8gYmUgc3RhdGljIGlmIHRoZXkncmUganVzdCBiZWluZ1xuICAgICAgLy8gdXNlZCB0byBnZXQgdGhlIGNsYXNzbmFtZSBvZiBhIG5lc3RlZCBzdHlsZWQgY29tcG9uZW50XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHRydWU7XG59XG5cbi8vIFxuLypcbiBDb21wb25lbnRTdHlsZSBpcyBhbGwgdGhlIENTUy1zcGVjaWZpYyBzdHVmZiwgbm90XG4gdGhlIFJlYWN0LXNwZWNpZmljIHN0dWZmLlxuICovXG5cbnZhciBDb21wb25lbnRTdHlsZSA9IC8qI19fUFVSRV9fKi9mdW5jdGlvbiAoKSB7XG4gIGZ1bmN0aW9uIENvbXBvbmVudFN0eWxlKHJ1bGVzLCBjb21wb25lbnRJZCkge1xuICAgIHRoaXMucnVsZXMgPSBydWxlcztcbiAgICB0aGlzLnN0YXRpY1J1bGVzSWQgPSAnJztcbiAgICB0aGlzLmlzU3RhdGljID0gcHJvY2Vzcy5lbnYuTk9ERV9FTlYgPT09ICdwcm9kdWN0aW9uJyAmJiBpc1N0YXRpY1J1bGVzKHJ1bGVzKTtcbiAgICB0aGlzLmNvbXBvbmVudElkID0gY29tcG9uZW50SWQ7XG4gICAgdGhpcy5iYXNlSGFzaCA9IGhhc2goY29tcG9uZW50SWQpOyAvLyBOT1RFOiBUaGlzIHJlZ2lzdGVycyB0aGUgY29tcG9uZW50SWQsIHdoaWNoIGVuc3VyZXMgYSBjb25zaXN0ZW50IG9yZGVyXG4gICAgLy8gZm9yIHRoaXMgY29tcG9uZW50J3Mgc3R5bGVzIGNvbXBhcmVkIHRvIG90aGVyc1xuXG4gICAgU3R5bGVTaGVldC5yZWdpc3RlcklkKGNvbXBvbmVudElkKTtcbiAgfVxuICAvKlxuICAgKiBGbGF0dGVucyBhIHJ1bGUgc2V0IGludG8gdmFsaWQgQ1NTXG4gICAqIEhhc2hlcyBpdCwgd3JhcHMgdGhlIHdob2xlIGNodW5rIGluIGEgLmhhc2gxMjM0IHt9XG4gICAqIFJldHVybnMgdGhlIGhhc2ggdG8gYmUgaW5qZWN0ZWQgb24gcmVuZGVyKClcbiAgICogKi9cblxuXG4gIHZhciBfcHJvdG8gPSBDb21wb25lbnRTdHlsZS5wcm90b3R5cGU7XG5cbiAgX3Byb3RvLmdlbmVyYXRlQW5kSW5qZWN0U3R5bGVzID0gZnVuY3Rpb24gZ2VuZXJhdGVBbmRJbmplY3RTdHlsZXMoZXhlY3V0aW9uQ29udGV4dCwgc3R5bGVTaGVldCwgc3R5bGlzKSB7XG4gICAgdmFyIGNvbXBvbmVudElkID0gdGhpcy5jb21wb25lbnRJZDsgLy8gZm9yY2UgZHluYW1pYyBjbGFzc25hbWVzIGlmIHVzZXItc3VwcGxpZWQgc3R5bGlzIHBsdWdpbnMgYXJlIGluIHVzZVxuXG4gICAgaWYgKHRoaXMuaXNTdGF0aWMgJiYgIXN0eWxpcy5oYXNoKSB7XG4gICAgICBpZiAodGhpcy5zdGF0aWNSdWxlc0lkICYmIHN0eWxlU2hlZXQuaGFzTmFtZUZvcklkKGNvbXBvbmVudElkLCB0aGlzLnN0YXRpY1J1bGVzSWQpKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnN0YXRpY1J1bGVzSWQ7XG4gICAgICB9XG5cbiAgICAgIHZhciBjc3NTdGF0aWMgPSBmbGF0dGVuKHRoaXMucnVsZXMsIGV4ZWN1dGlvbkNvbnRleHQsIHN0eWxlU2hlZXQpLmpvaW4oJycpO1xuICAgICAgdmFyIG5hbWUgPSBnZW5lcmF0ZUFscGhhYmV0aWNOYW1lKHBoYXNoKHRoaXMuYmFzZUhhc2gsIGNzc1N0YXRpYy5sZW5ndGgpID4+PiAwKTtcblxuICAgICAgaWYgKCFzdHlsZVNoZWV0Lmhhc05hbWVGb3JJZChjb21wb25lbnRJZCwgbmFtZSkpIHtcbiAgICAgICAgdmFyIGNzc1N0YXRpY0Zvcm1hdHRlZCA9IHN0eWxpcyhjc3NTdGF0aWMsIFwiLlwiICsgbmFtZSwgdW5kZWZpbmVkLCBjb21wb25lbnRJZCk7XG4gICAgICAgIHN0eWxlU2hlZXQuaW5zZXJ0UnVsZXMoY29tcG9uZW50SWQsIG5hbWUsIGNzc1N0YXRpY0Zvcm1hdHRlZCk7XG4gICAgICB9XG5cbiAgICAgIHRoaXMuc3RhdGljUnVsZXNJZCA9IG5hbWU7XG4gICAgICByZXR1cm4gbmFtZTtcbiAgICB9IGVsc2Uge1xuICAgICAgdmFyIGxlbmd0aCA9IHRoaXMucnVsZXMubGVuZ3RoO1xuICAgICAgdmFyIGR5bmFtaWNIYXNoID0gcGhhc2godGhpcy5iYXNlSGFzaCwgc3R5bGlzLmhhc2gpO1xuICAgICAgdmFyIGNzcyA9ICcnO1xuXG4gICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGxlbmd0aDsgaSsrKSB7XG4gICAgICAgIHZhciBwYXJ0UnVsZSA9IHRoaXMucnVsZXNbaV07XG5cbiAgICAgICAgaWYgKHR5cGVvZiBwYXJ0UnVsZSA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgICBjc3MgKz0gcGFydFJ1bGU7XG4gICAgICAgICAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIGR5bmFtaWNIYXNoID0gcGhhc2goZHluYW1pY0hhc2gsIHBhcnRSdWxlICsgaSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdmFyIHBhcnRDaHVuayA9IGZsYXR0ZW4ocGFydFJ1bGUsIGV4ZWN1dGlvbkNvbnRleHQsIHN0eWxlU2hlZXQpO1xuICAgICAgICAgIHZhciBwYXJ0U3RyaW5nID0gQXJyYXkuaXNBcnJheShwYXJ0Q2h1bmspID8gcGFydENodW5rLmpvaW4oJycpIDogcGFydENodW5rO1xuICAgICAgICAgIGR5bmFtaWNIYXNoID0gcGhhc2goZHluYW1pY0hhc2gsIHBhcnRTdHJpbmcgKyBpKTtcbiAgICAgICAgICBjc3MgKz0gcGFydFN0cmluZztcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICB2YXIgX25hbWUgPSBnZW5lcmF0ZUFscGhhYmV0aWNOYW1lKGR5bmFtaWNIYXNoID4+PiAwKTtcblxuICAgICAgaWYgKCFzdHlsZVNoZWV0Lmhhc05hbWVGb3JJZChjb21wb25lbnRJZCwgX25hbWUpKSB7XG4gICAgICAgIHZhciBjc3NGb3JtYXR0ZWQgPSBzdHlsaXMoY3NzLCBcIi5cIiArIF9uYW1lLCB1bmRlZmluZWQsIGNvbXBvbmVudElkKTtcbiAgICAgICAgc3R5bGVTaGVldC5pbnNlcnRSdWxlcyhjb21wb25lbnRJZCwgX25hbWUsIGNzc0Zvcm1hdHRlZCk7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBfbmFtZTtcbiAgICB9XG4gIH07XG5cbiAgcmV0dXJuIENvbXBvbmVudFN0eWxlO1xufSgpO1xuXG4vLyBcbnZhciBMSU1JVCA9IDIwMDtcbnZhciBjcmVhdGVXYXJuVG9vTWFueUNsYXNzZXMgPSAoZnVuY3Rpb24gKGRpc3BsYXlOYW1lLCBjb21wb25lbnRJZCkge1xuICB2YXIgZ2VuZXJhdGVkQ2xhc3NlcyA9IHt9O1xuICB2YXIgd2FybmluZ1NlZW4gPSBmYWxzZTtcbiAgcmV0dXJuIGZ1bmN0aW9uIChjbGFzc05hbWUpIHtcbiAgICBpZiAoIXdhcm5pbmdTZWVuKSB7XG4gICAgICBnZW5lcmF0ZWRDbGFzc2VzW2NsYXNzTmFtZV0gPSB0cnVlO1xuXG4gICAgICBpZiAoT2JqZWN0LmtleXMoZ2VuZXJhdGVkQ2xhc3NlcykubGVuZ3RoID49IExJTUlUKSB7XG4gICAgICAgIC8vIFVuYWJsZSB0byBmaW5kIGxhdGVzdFJ1bGUgaW4gdGVzdCBlbnZpcm9ubWVudC5cblxuICAgICAgICAvKiBlc2xpbnQtZGlzYWJsZSBuby1jb25zb2xlLCBwcmVmZXItdGVtcGxhdGUgKi9cbiAgICAgICAgdmFyIHBhcnNlZElkU3RyaW5nID0gY29tcG9uZW50SWQgPyBcIiB3aXRoIHRoZSBpZCBvZiBcXFwiXCIgKyBjb21wb25lbnRJZCArIFwiXFxcIlwiIDogJyc7XG4gICAgICAgIGNvbnNvbGUud2FybihcIk92ZXIgXCIgKyBMSU1JVCArIFwiIGNsYXNzZXMgd2VyZSBnZW5lcmF0ZWQgZm9yIGNvbXBvbmVudCBcIiArIGRpc3BsYXlOYW1lICsgcGFyc2VkSWRTdHJpbmcgKyBcIi5cXG5cIiArICdDb25zaWRlciB1c2luZyB0aGUgYXR0cnMgbWV0aG9kLCB0b2dldGhlciB3aXRoIGEgc3R5bGUgb2JqZWN0IGZvciBmcmVxdWVudGx5IGNoYW5nZWQgc3R5bGVzLlxcbicgKyAnRXhhbXBsZTpcXG4nICsgJyAgY29uc3QgQ29tcG9uZW50ID0gc3R5bGVkLmRpdi5hdHRycyhwcm9wcyA9PiAoe1xcbicgKyAnICAgIHN0eWxlOiB7XFxuJyArICcgICAgICBiYWNrZ3JvdW5kOiBwcm9wcy5iYWNrZ3JvdW5kLFxcbicgKyAnICAgIH0sXFxuJyArICcgIH0pKWB3aWR0aDogMTAwJTtgXFxuXFxuJyArICcgIDxDb21wb25lbnQgLz4nKTtcbiAgICAgICAgd2FybmluZ1NlZW4gPSB0cnVlO1xuICAgICAgICBnZW5lcmF0ZWRDbGFzc2VzID0ge307XG4gICAgICB9XG4gICAgfVxuICB9O1xufSk7XG5cbi8vIFxudmFyIGludmFsaWRIb29rQ2FsbFJlID0gL2ludmFsaWQgaG9vayBjYWxsL2k7XG52YXIgc2VlbiA9IG5ldyBTZXQoKTtcbnZhciBjaGVja0R5bmFtaWNDcmVhdGlvbiA9IGZ1bmN0aW9uIGNoZWNrRHluYW1pY0NyZWF0aW9uKGRpc3BsYXlOYW1lLCBjb21wb25lbnRJZCkge1xuICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAgIHZhciBwYXJzZWRJZFN0cmluZyA9IGNvbXBvbmVudElkID8gXCIgd2l0aCB0aGUgaWQgb2YgXFxcIlwiICsgY29tcG9uZW50SWQgKyBcIlxcXCJcIiA6ICcnO1xuICAgIHZhciBtZXNzYWdlID0gXCJUaGUgY29tcG9uZW50IFwiICsgZGlzcGxheU5hbWUgKyBwYXJzZWRJZFN0cmluZyArIFwiIGhhcyBiZWVuIGNyZWF0ZWQgZHluYW1pY2FsbHkuXFxuXCIgKyAnWW91IG1heSBzZWUgdGhpcyB3YXJuaW5nIGJlY2F1c2UgeW91XFwndmUgY2FsbGVkIHN0eWxlZCBpbnNpZGUgYW5vdGhlciBjb21wb25lbnQuXFxuJyArICdUbyByZXNvbHZlIHRoaXMgb25seSBjcmVhdGUgbmV3IFN0eWxlZENvbXBvbmVudHMgb3V0c2lkZSBvZiBhbnkgcmVuZGVyIG1ldGhvZCBhbmQgZnVuY3Rpb24gY29tcG9uZW50Lic7XG5cbiAgICB0cnkge1xuICAgICAgLy8gV2UgcHVycG9zZWZ1bGx5IGNhbGwgYHVzZVJlZmAgb3V0c2lkZSBvZiBhIGNvbXBvbmVudCBhbmQgZXhwZWN0IGl0IHRvIHRocm93XG4gICAgICAvLyBJZiBpdCBkb2Vzbid0LCB0aGVuIHdlJ3JlIGluc2lkZSBhbm90aGVyIGNvbXBvbmVudC5cbiAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSByZWFjdC1ob29rcy9ydWxlcy1vZi1ob29rc1xuICAgICAgdXNlUmVmKCk7XG5cbiAgICAgIGlmICghc2Vlbi5oYXMobWVzc2FnZSkpIHtcbiAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLWNvbnNvbGVcbiAgICAgICAgY29uc29sZS53YXJuKG1lc3NhZ2UpO1xuICAgICAgICBzZWVuLmFkZChtZXNzYWdlKTtcbiAgICAgIH1cbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgLy8gVGhlIGVycm9yIGhlcmUgaXMgZXhwZWN0ZWQsIHNpbmNlIHdlJ3JlIGV4cGVjdGluZyBhbnl0aGluZyB0aGF0IHVzZXMgYGNoZWNrRHluYW1pY0NyZWF0aW9uYCB0b1xuICAgICAgLy8gYmUgY2FsbGVkIG91dHNpZGUgb2YgYSBSZWFjdCBjb21wb25lbnQuXG4gICAgICBpZiAoaW52YWxpZEhvb2tDYWxsUmUudGVzdChlcnJvci5tZXNzYWdlKSkge1xuICAgICAgICAvLyBUaGlzIHNob3VsZG4ndCBoYXBwZW4sIGJ1dCByZXNldHMgYHdhcm5pbmdTZWVuYCBpZiB3ZSBoYWQgdGhpcyBlcnJvciBoYXBwZW4gaW50ZXJtaXR0ZW50bHlcbiAgICAgICAgc2VlbltcImRlbGV0ZVwiXShtZXNzYWdlKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbn07XG5cbi8vIFxudmFyIGRldGVybWluZVRoZW1lID0gKGZ1bmN0aW9uIChwcm9wcywgcHJvdmlkZWRUaGVtZSwgZGVmYXVsdFByb3BzKSB7XG4gIGlmIChkZWZhdWx0UHJvcHMgPT09IHZvaWQgMCkge1xuICAgIGRlZmF1bHRQcm9wcyA9IEVNUFRZX09CSkVDVDtcbiAgfVxuXG4gIHJldHVybiBwcm9wcy50aGVtZSAhPT0gZGVmYXVsdFByb3BzLnRoZW1lICYmIHByb3BzLnRoZW1lIHx8IHByb3ZpZGVkVGhlbWUgfHwgZGVmYXVsdFByb3BzLnRoZW1lO1xufSk7XG5cbi8vIFxuLy8gU291cmNlOiBodHRwczovL3d3dy53My5vcmcvVFIvY3Nzb20tMS8jc2VyaWFsaXplLWFuLWlkZW50aWZpZXJcbi8vIENvbnRyb2wgY2hhcmFjdGVycyBhbmQgbm9uLWxldHRlciBmaXJzdCBzeW1ib2xzIGFyZSBub3Qgc3VwcG9ydGVkXG52YXIgZXNjYXBlUmVnZXggPSAvWyFcIiMkJSYnKCkqKywuLzo7PD0+P0BbXFxcXFxcXV5ge3x9fi1dKy9nO1xudmFyIGRhc2hlc0F0RW5kcyA9IC8oXi18LSQpL2c7XG4vKipcbiAqIFRPRE86IEV4cGxvcmUgdXNpbmcgQ1NTLmVzY2FwZSB3aGVuIGl0IGJlY29tZXMgbW9yZSBhdmFpbGFibGVcbiAqIGluIGV2ZXJncmVlbiBicm93c2Vycy5cbiAqL1xuXG5mdW5jdGlvbiBlc2NhcGUoc3RyKSB7XG4gIHJldHVybiBzdHIgLy8gUmVwbGFjZSBhbGwgcG9zc2libGUgQ1NTIHNlbGVjdG9yc1xuICAucmVwbGFjZShlc2NhcGVSZWdleCwgJy0nKSAvLyBSZW1vdmUgZXh0cmFuZW91cyBoeXBoZW5zIGF0IHRoZSBzdGFydCBhbmQgZW5kXG4gIC5yZXBsYWNlKGRhc2hlc0F0RW5kcywgJycpO1xufVxuXG4vLyBcbmZ1bmN0aW9uIGlzVGFnKHRhcmdldCkge1xuICByZXR1cm4gdHlwZW9mIHRhcmdldCA9PT0gJ3N0cmluZycgJiYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgPyB0YXJnZXQuY2hhckF0KDApID09PSB0YXJnZXQuY2hhckF0KDApLnRvTG93ZXJDYXNlKCkgOiB0cnVlKTtcbn1cblxuLy8gXG5mdW5jdGlvbiBnZW5lcmF0ZURpc3BsYXlOYW1lKHRhcmdldCkge1xuICAvLyAkRmxvd0ZpeE1lXG4gIHJldHVybiBpc1RhZyh0YXJnZXQpID8gXCJzdHlsZWQuXCIgKyB0YXJnZXQgOiBcIlN0eWxlZChcIiArIGdldENvbXBvbmVudE5hbWUodGFyZ2V0KSArIFwiKVwiO1xufVxuXG4vLyBcbnZhciBnZW5lcmF0ZUNvbXBvbmVudElkID0gKGZ1bmN0aW9uIChzdHIpIHtcbiAgcmV0dXJuIGdlbmVyYXRlQWxwaGFiZXRpY05hbWUoaGFzaChzdHIpID4+PiAwKTtcbn0pO1xuXG4vKipcbiAqIENvbnZlbmllbmNlIGZ1bmN0aW9uIGZvciBqb2luaW5nIHN0cmluZ3MgdG8gZm9ybSBjbGFzc05hbWUgY2hhaW5zXG4gKi9cbmZ1bmN0aW9uIGpvaW5TdHJpbmdzKGEsIGIpIHtcbiAgcmV0dXJuIGEgJiYgYiA/IGEgKyBcIiBcIiArIGIgOiBhIHx8IGI7XG59XG5cbnZhciBUaGVtZUNvbnRleHQgPSBSZWFjdC5jcmVhdGVDb250ZXh0KCk7XG52YXIgVGhlbWVDb25zdW1lciA9IFRoZW1lQ29udGV4dC5Db25zdW1lcjtcblxuZnVuY3Rpb24gbWVyZ2VUaGVtZSh0aGVtZSwgb3V0ZXJUaGVtZSkge1xuICBpZiAoIXRoZW1lKSB7XG4gICAgcmV0dXJuIHRocm93U3R5bGVkQ29tcG9uZW50c0Vycm9yKDE0KTtcbiAgfVxuXG4gIGlmIChpc0Z1bmN0aW9uKHRoZW1lKSkge1xuICAgIHZhciBtZXJnZWRUaGVtZSA9IHRoZW1lKG91dGVyVGhlbWUpO1xuXG4gICAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgJiYgKG1lcmdlZFRoZW1lID09PSBudWxsIHx8IEFycmF5LmlzQXJyYXkobWVyZ2VkVGhlbWUpIHx8IHR5cGVvZiBtZXJnZWRUaGVtZSAhPT0gJ29iamVjdCcpKSB7XG4gICAgICByZXR1cm4gdGhyb3dTdHlsZWRDb21wb25lbnRzRXJyb3IoNyk7XG4gICAgfVxuXG4gICAgcmV0dXJuIG1lcmdlZFRoZW1lO1xuICB9XG5cbiAgaWYgKEFycmF5LmlzQXJyYXkodGhlbWUpIHx8IHR5cGVvZiB0aGVtZSAhPT0gJ29iamVjdCcpIHtcbiAgICByZXR1cm4gdGhyb3dTdHlsZWRDb21wb25lbnRzRXJyb3IoOCk7XG4gIH1cblxuICByZXR1cm4gb3V0ZXJUaGVtZSA/IF9leHRlbmRzKHt9LCBvdXRlclRoZW1lLCB7fSwgdGhlbWUpIDogdGhlbWU7XG59XG4vKipcbiAqIFByb3ZpZGUgYSB0aGVtZSB0byBhbiBlbnRpcmUgcmVhY3QgY29tcG9uZW50IHRyZWUgdmlhIGNvbnRleHRcbiAqL1xuXG5cbmZ1bmN0aW9uIFRoZW1lUHJvdmlkZXIocHJvcHMpIHtcbiAgdmFyIG91dGVyVGhlbWUgPSB1c2VDb250ZXh0KFRoZW1lQ29udGV4dCk7XG4gIHZhciB0aGVtZUNvbnRleHQgPSB1c2VNZW1vKGZ1bmN0aW9uICgpIHtcbiAgICByZXR1cm4gbWVyZ2VUaGVtZShwcm9wcy50aGVtZSwgb3V0ZXJUaGVtZSk7XG4gIH0sIFtwcm9wcy50aGVtZSwgb3V0ZXJUaGVtZV0pO1xuXG4gIGlmICghcHJvcHMuY2hpbGRyZW4pIHtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuXG4gIHJldHVybiAvKiNfX1BVUkVfXyovUmVhY3QuY3JlYXRlRWxlbWVudChUaGVtZUNvbnRleHQuUHJvdmlkZXIsIHtcbiAgICB2YWx1ZTogdGhlbWVDb250ZXh0XG4gIH0sIHByb3BzLmNoaWxkcmVuKTtcbn1cblxuLyogZ2xvYmFsICRDYWxsICovXG5cbnZhciBpZGVudGlmaWVycyA9IHt9O1xuLyogV2UgZGVwZW5kIG9uIGNvbXBvbmVudHMgaGF2aW5nIHVuaXF1ZSBJRHMgKi9cblxuZnVuY3Rpb24gZ2VuZXJhdGVJZChkaXNwbGF5TmFtZSwgcGFyZW50Q29tcG9uZW50SWQpIHtcbiAgdmFyIG5hbWUgPSB0eXBlb2YgZGlzcGxheU5hbWUgIT09ICdzdHJpbmcnID8gJ3NjJyA6IGVzY2FwZShkaXNwbGF5TmFtZSk7IC8vIEVuc3VyZSB0aGF0IG5vIGRpc3BsYXlOYW1lIGNhbiBsZWFkIHRvIGR1cGxpY2F0ZSBjb21wb25lbnRJZHNcblxuICBpZGVudGlmaWVyc1tuYW1lXSA9IChpZGVudGlmaWVyc1tuYW1lXSB8fCAwKSArIDE7XG4gIHZhciBjb21wb25lbnRJZCA9IG5hbWUgKyBcIi1cIiArIGdlbmVyYXRlQ29tcG9uZW50SWQobmFtZSArIGlkZW50aWZpZXJzW25hbWVdKTtcbiAgcmV0dXJuIHBhcmVudENvbXBvbmVudElkID8gcGFyZW50Q29tcG9uZW50SWQgKyBcIi1cIiArIGNvbXBvbmVudElkIDogY29tcG9uZW50SWQ7XG59XG5cbmZ1bmN0aW9uIHVzZVJlc29sdmVkQXR0cnModGhlbWUsIHByb3BzLCBhdHRycykge1xuICBpZiAodGhlbWUgPT09IHZvaWQgMCkge1xuICAgIHRoZW1lID0gRU1QVFlfT0JKRUNUO1xuICB9XG5cbiAgLy8gTk9URTogY2FuJ3QgbWVtb2l6ZSB0aGlzXG4gIC8vIHJldHVybnMgW2NvbnRleHQsIHJlc29sdmVkQXR0cnNdXG4gIC8vIHdoZXJlIHJlc29sdmVkQXR0cnMgaXMgb25seSB0aGUgdGhpbmdzIGluamVjdGVkIGJ5IHRoZSBhdHRycyB0aGVtc2VsdmVzXG4gIHZhciBjb250ZXh0ID0gX2V4dGVuZHMoe30sIHByb3BzLCB7XG4gICAgdGhlbWU6IHRoZW1lXG4gIH0pO1xuXG4gIHZhciByZXNvbHZlZEF0dHJzID0ge307XG4gIGF0dHJzLmZvckVhY2goZnVuY3Rpb24gKGF0dHJEZWYpIHtcbiAgICB2YXIgcmVzb2x2ZWRBdHRyRGVmID0gYXR0ckRlZjtcbiAgICB2YXIga2V5O1xuXG4gICAgaWYgKGlzRnVuY3Rpb24ocmVzb2x2ZWRBdHRyRGVmKSkge1xuICAgICAgcmVzb2x2ZWRBdHRyRGVmID0gcmVzb2x2ZWRBdHRyRGVmKGNvbnRleHQpO1xuICAgIH1cbiAgICAvKiBlc2xpbnQtZGlzYWJsZSBndWFyZC1mb3ItaW4gKi9cblxuXG4gICAgZm9yIChrZXkgaW4gcmVzb2x2ZWRBdHRyRGVmKSB7XG4gICAgICBjb250ZXh0W2tleV0gPSByZXNvbHZlZEF0dHJzW2tleV0gPSBrZXkgPT09ICdjbGFzc05hbWUnID8gam9pblN0cmluZ3MocmVzb2x2ZWRBdHRyc1trZXldLCByZXNvbHZlZEF0dHJEZWZba2V5XSkgOiByZXNvbHZlZEF0dHJEZWZba2V5XTtcbiAgICB9XG4gICAgLyogZXNsaW50LWVuYWJsZSBndWFyZC1mb3ItaW4gKi9cblxuICB9KTtcbiAgcmV0dXJuIFtjb250ZXh0LCByZXNvbHZlZEF0dHJzXTtcbn1cblxuZnVuY3Rpb24gdXNlSW5qZWN0ZWRTdHlsZShjb21wb25lbnRTdHlsZSwgaGFzQXR0cnMsIHJlc29sdmVkQXR0cnMsIHdhcm5Ub29NYW55Q2xhc3Nlcykge1xuICB2YXIgc3R5bGVTaGVldCA9IHVzZVN0eWxlU2hlZXQoKTtcbiAgdmFyIHN0eWxpcyA9IHVzZVN0eWxpcygpOyAvLyBzdGF0aWNhbGx5IHN0eWxlZC1jb21wb25lbnRzIGRvbid0IG5lZWQgdG8gYnVpbGQgYW4gZXhlY3V0aW9uIGNvbnRleHQgb2JqZWN0LFxuICAvLyBhbmQgc2hvdWxkbid0IGJlIGluY3JlYXNpbmcgdGhlIG51bWJlciBvZiBjbGFzcyBuYW1lc1xuXG4gIHZhciBpc1N0YXRpYyA9IGNvbXBvbmVudFN0eWxlLmlzU3RhdGljICYmICFoYXNBdHRycztcbiAgdmFyIGNsYXNzTmFtZSA9IGlzU3RhdGljID8gY29tcG9uZW50U3R5bGUuZ2VuZXJhdGVBbmRJbmplY3RTdHlsZXMoRU1QVFlfT0JKRUNULCBzdHlsZVNoZWV0LCBzdHlsaXMpIDogY29tcG9uZW50U3R5bGUuZ2VuZXJhdGVBbmRJbmplY3RTdHlsZXMocmVzb2x2ZWRBdHRycywgc3R5bGVTaGVldCwgc3R5bGlzKTtcbiAgdXNlRGVidWdWYWx1ZShjbGFzc05hbWUpO1xuXG4gIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nICYmICFpc1N0YXRpYyAmJiB3YXJuVG9vTWFueUNsYXNzZXMpIHtcbiAgICB3YXJuVG9vTWFueUNsYXNzZXMoY2xhc3NOYW1lKTtcbiAgfVxuXG4gIHJldHVybiBjbGFzc05hbWU7XG59XG5cbmZ1bmN0aW9uIHVzZVN0eWxlZENvbXBvbmVudEltcGwoZm9yd2FyZGVkQ29tcG9uZW50LCBwcm9wcywgZm9yd2FyZGVkUmVmKSB7XG4gIHZhciBjb21wb25lbnRBdHRycyA9IGZvcndhcmRlZENvbXBvbmVudC5hdHRycyxcbiAgICAgIGNvbXBvbmVudFN0eWxlID0gZm9yd2FyZGVkQ29tcG9uZW50LmNvbXBvbmVudFN0eWxlLFxuICAgICAgZGVmYXVsdFByb3BzID0gZm9yd2FyZGVkQ29tcG9uZW50LmRlZmF1bHRQcm9wcyxcbiAgICAgIGZvbGRlZENvbXBvbmVudElkcyA9IGZvcndhcmRlZENvbXBvbmVudC5mb2xkZWRDb21wb25lbnRJZHMsXG4gICAgICBzaG91bGRGb3J3YXJkUHJvcCA9IGZvcndhcmRlZENvbXBvbmVudC5zaG91bGRGb3J3YXJkUHJvcCxcbiAgICAgIHN0eWxlZENvbXBvbmVudElkID0gZm9yd2FyZGVkQ29tcG9uZW50LnN0eWxlZENvbXBvbmVudElkLFxuICAgICAgdGFyZ2V0ID0gZm9yd2FyZGVkQ29tcG9uZW50LnRhcmdldDtcbiAgdXNlRGVidWdWYWx1ZShzdHlsZWRDb21wb25lbnRJZCk7IC8vIE5PVEU6IHRoZSBub24taG9va3MgdmVyc2lvbiBvbmx5IHN1YnNjcmliZXMgdG8gdGhpcyB3aGVuICFjb21wb25lbnRTdHlsZS5pc1N0YXRpYyxcbiAgLy8gYnV0IHRoYXQnZCBiZSBhZ2FpbnN0IHRoZSBydWxlcy1vZi1ob29rcy4gV2UgY291bGQgYmUgbmF1Z2h0eSBhbmQgZG8gaXQgYW55d2F5IGFzIGl0XG4gIC8vIHNob3VsZCBiZSBhbiBpbW11dGFibGUgdmFsdWUsIGJ1dCBiZWhhdmUgZm9yIG5vdy5cblxuICB2YXIgdGhlbWUgPSBkZXRlcm1pbmVUaGVtZShwcm9wcywgdXNlQ29udGV4dChUaGVtZUNvbnRleHQpLCBkZWZhdWx0UHJvcHMpO1xuXG4gIHZhciBfdXNlUmVzb2x2ZWRBdHRycyA9IHVzZVJlc29sdmVkQXR0cnModGhlbWUgfHwgRU1QVFlfT0JKRUNULCBwcm9wcywgY29tcG9uZW50QXR0cnMpLFxuICAgICAgY29udGV4dCA9IF91c2VSZXNvbHZlZEF0dHJzWzBdLFxuICAgICAgYXR0cnMgPSBfdXNlUmVzb2x2ZWRBdHRyc1sxXTtcblxuICB2YXIgZ2VuZXJhdGVkQ2xhc3NOYW1lID0gdXNlSW5qZWN0ZWRTdHlsZShjb21wb25lbnRTdHlsZSwgY29tcG9uZW50QXR0cnMubGVuZ3RoID4gMCwgY29udGV4dCwgcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyA/IGZvcndhcmRlZENvbXBvbmVudC53YXJuVG9vTWFueUNsYXNzZXMgOiB1bmRlZmluZWQpO1xuICB2YXIgcmVmVG9Gb3J3YXJkID0gZm9yd2FyZGVkUmVmO1xuICB2YXIgZWxlbWVudFRvQmVDcmVhdGVkID0gYXR0cnMuJGFzIHx8IHByb3BzLiRhcyB8fCBhdHRycy5hcyB8fCBwcm9wcy5hcyB8fCB0YXJnZXQ7XG4gIHZhciBpc1RhcmdldFRhZyA9IGlzVGFnKGVsZW1lbnRUb0JlQ3JlYXRlZCk7XG4gIHZhciBjb21wdXRlZFByb3BzID0gYXR0cnMgIT09IHByb3BzID8gX2V4dGVuZHMoe30sIHByb3BzLCB7fSwgYXR0cnMpIDogcHJvcHM7XG4gIHZhciBwcm9wRmlsdGVyRm4gPSBzaG91bGRGb3J3YXJkUHJvcCB8fCBpc1RhcmdldFRhZyAmJiB2YWxpZEF0dHI7XG4gIHZhciBwcm9wc0ZvckVsZW1lbnQgPSB7fTsgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGd1YXJkLWZvci1pblxuXG4gIGZvciAodmFyIGtleSBpbiBjb21wdXRlZFByb3BzKSB7XG4gICAgaWYgKGtleVswXSA9PT0gJyQnIHx8IGtleSA9PT0gJ2FzJykgY29udGludWU7ZWxzZSBpZiAoa2V5ID09PSAnZm9yd2FyZGVkQXMnKSB7XG4gICAgICBwcm9wc0ZvckVsZW1lbnQuYXMgPSBjb21wdXRlZFByb3BzW2tleV07XG4gICAgfSBlbHNlIGlmICghcHJvcEZpbHRlckZuIHx8IHByb3BGaWx0ZXJGbihrZXksIHZhbGlkQXR0cikpIHtcbiAgICAgIC8vIERvbid0IHBhc3MgdGhyb3VnaCBub24gSFRNTCB0YWdzIHRocm91Z2ggdG8gSFRNTCBlbGVtZW50c1xuICAgICAgcHJvcHNGb3JFbGVtZW50W2tleV0gPSBjb21wdXRlZFByb3BzW2tleV07XG4gICAgfVxuICB9XG5cbiAgaWYgKHByb3BzLnN0eWxlICYmIGF0dHJzLnN0eWxlICE9PSBwcm9wcy5zdHlsZSkge1xuICAgIHByb3BzRm9yRWxlbWVudC5zdHlsZSA9IF9leHRlbmRzKHt9LCBwcm9wcy5zdHlsZSwge30sIGF0dHJzLnN0eWxlKTtcbiAgfVxuXG4gIHByb3BzRm9yRWxlbWVudC5jbGFzc05hbWUgPSBBcnJheS5wcm90b3R5cGUuY29uY2F0KGZvbGRlZENvbXBvbmVudElkcywgc3R5bGVkQ29tcG9uZW50SWQsIGdlbmVyYXRlZENsYXNzTmFtZSAhPT0gc3R5bGVkQ29tcG9uZW50SWQgPyBnZW5lcmF0ZWRDbGFzc05hbWUgOiBudWxsLCBwcm9wcy5jbGFzc05hbWUsIGF0dHJzLmNsYXNzTmFtZSkuZmlsdGVyKEJvb2xlYW4pLmpvaW4oJyAnKTtcbiAgcHJvcHNGb3JFbGVtZW50LnJlZiA9IHJlZlRvRm9yd2FyZDtcbiAgcmV0dXJuIGNyZWF0ZUVsZW1lbnQoZWxlbWVudFRvQmVDcmVhdGVkLCBwcm9wc0ZvckVsZW1lbnQpO1xufVxuXG5mdW5jdGlvbiBjcmVhdGVTdHlsZWRDb21wb25lbnQodGFyZ2V0LCBvcHRpb25zLCBydWxlcykge1xuICB2YXIgaXNUYXJnZXRTdHlsZWRDb21wID0gaXNTdHlsZWRDb21wb25lbnQodGFyZ2V0KTtcbiAgdmFyIGlzQ29tcG9zaXRlQ29tcG9uZW50ID0gIWlzVGFnKHRhcmdldCk7XG4gIHZhciBfb3B0aW9ucyRkaXNwbGF5TmFtZSA9IG9wdGlvbnMuZGlzcGxheU5hbWUsXG4gICAgICBkaXNwbGF5TmFtZSA9IF9vcHRpb25zJGRpc3BsYXlOYW1lID09PSB2b2lkIDAgPyBnZW5lcmF0ZURpc3BsYXlOYW1lKHRhcmdldCkgOiBfb3B0aW9ucyRkaXNwbGF5TmFtZSxcbiAgICAgIF9vcHRpb25zJGNvbXBvbmVudElkID0gb3B0aW9ucy5jb21wb25lbnRJZCxcbiAgICAgIGNvbXBvbmVudElkID0gX29wdGlvbnMkY29tcG9uZW50SWQgPT09IHZvaWQgMCA/IGdlbmVyYXRlSWQob3B0aW9ucy5kaXNwbGF5TmFtZSwgb3B0aW9ucy5wYXJlbnRDb21wb25lbnRJZCkgOiBfb3B0aW9ucyRjb21wb25lbnRJZCxcbiAgICAgIF9vcHRpb25zJGF0dHJzID0gb3B0aW9ucy5hdHRycyxcbiAgICAgIGF0dHJzID0gX29wdGlvbnMkYXR0cnMgPT09IHZvaWQgMCA/IEVNUFRZX0FSUkFZIDogX29wdGlvbnMkYXR0cnM7XG4gIHZhciBzdHlsZWRDb21wb25lbnRJZCA9IG9wdGlvbnMuZGlzcGxheU5hbWUgJiYgb3B0aW9ucy5jb21wb25lbnRJZCA/IGVzY2FwZShvcHRpb25zLmRpc3BsYXlOYW1lKSArIFwiLVwiICsgb3B0aW9ucy5jb21wb25lbnRJZCA6IG9wdGlvbnMuY29tcG9uZW50SWQgfHwgY29tcG9uZW50SWQ7IC8vIGZvbGQgdGhlIHVuZGVybHlpbmcgU3R5bGVkQ29tcG9uZW50IGF0dHJzIHVwIChpbXBsaWNpdCBleHRlbmQpXG5cbiAgdmFyIGZpbmFsQXR0cnMgPSAvLyAkRmxvd0ZpeE1lXG4gIGlzVGFyZ2V0U3R5bGVkQ29tcCAmJiB0YXJnZXQuYXR0cnMgPyBBcnJheS5wcm90b3R5cGUuY29uY2F0KHRhcmdldC5hdHRycywgYXR0cnMpLmZpbHRlcihCb29sZWFuKSA6IGF0dHJzOyAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgcHJlZmVyLWRlc3RydWN0dXJpbmdcblxuICB2YXIgc2hvdWxkRm9yd2FyZFByb3AgPSBvcHRpb25zLnNob3VsZEZvcndhcmRQcm9wOyAvLyAkRmxvd0ZpeE1lXG5cbiAgaWYgKGlzVGFyZ2V0U3R5bGVkQ29tcCAmJiB0YXJnZXQuc2hvdWxkRm9yd2FyZFByb3ApIHtcbiAgICBpZiAoc2hvdWxkRm9yd2FyZFByb3ApIHtcbiAgICAgIC8vIGNvbXBvc2UgbmVzdGVkIHNob3VsZEZvcndhcmRQcm9wIGNhbGxzXG4gICAgICBzaG91bGRGb3J3YXJkUHJvcCA9IGZ1bmN0aW9uIHNob3VsZEZvcndhcmRQcm9wKHByb3AsIGZpbHRlckZuKSB7XG4gICAgICAgIHJldHVybiAoLy8gJEZsb3dGaXhNZVxuICAgICAgICAgIHRhcmdldC5zaG91bGRGb3J3YXJkUHJvcChwcm9wLCBmaWx0ZXJGbikgJiYgb3B0aW9ucy5zaG91bGRGb3J3YXJkUHJvcChwcm9wLCBmaWx0ZXJGbilcbiAgICAgICAgKTtcbiAgICAgIH07XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBwcmVmZXItZGVzdHJ1Y3R1cmluZ1xuICAgICAgc2hvdWxkRm9yd2FyZFByb3AgPSB0YXJnZXQuc2hvdWxkRm9yd2FyZFByb3A7XG4gICAgfVxuICB9XG5cbiAgdmFyIGNvbXBvbmVudFN0eWxlID0gbmV3IENvbXBvbmVudFN0eWxlKGlzVGFyZ2V0U3R5bGVkQ29tcCA/IC8vIGZvbGQgdGhlIHVuZGVybHlpbmcgU3R5bGVkQ29tcG9uZW50IHJ1bGVzIHVwIChpbXBsaWNpdCBleHRlbmQpXG4gIC8vICRGbG93Rml4TWVcbiAgdGFyZ2V0LmNvbXBvbmVudFN0eWxlLnJ1bGVzLmNvbmNhdChydWxlcykgOiBydWxlcywgc3R5bGVkQ29tcG9uZW50SWQpO1xuICAvKipcbiAgICogZm9yd2FyZFJlZiBjcmVhdGVzIGEgbmV3IGludGVyaW0gY29tcG9uZW50LCB3aGljaCB3ZSdsbCB0YWtlIGFkdmFudGFnZSBvZlxuICAgKiBpbnN0ZWFkIG9mIGV4dGVuZGluZyBQYXJlbnRDb21wb25lbnQgdG8gY3JlYXRlIF9hbm90aGVyXyBpbnRlcmltIGNsYXNzXG4gICAqL1xuXG4gIHZhciBXcmFwcGVkU3R5bGVkQ29tcG9uZW50OyAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgcmVhY3QtaG9va3MvcnVsZXMtb2YtaG9va3NcblxuICB2YXIgZm9yd2FyZFJlZiA9IGZ1bmN0aW9uIGZvcndhcmRSZWYocHJvcHMsIHJlZikge1xuICAgIHJldHVybiB1c2VTdHlsZWRDb21wb25lbnRJbXBsKFdyYXBwZWRTdHlsZWRDb21wb25lbnQsIHByb3BzLCByZWYpO1xuICB9O1xuXG4gIGZvcndhcmRSZWYuZGlzcGxheU5hbWUgPSBkaXNwbGF5TmFtZTsgLy8gJEZsb3dGaXhNZSB0aGlzIGlzIGEgZm9yY2VkIGNhc3QgdG8gbWVyZ2UgaXQgU3R5bGVkQ29tcG9uZW50V3JhcHBlclByb3BlcnRpZXNcblxuICBXcmFwcGVkU3R5bGVkQ29tcG9uZW50ID0gUmVhY3QuZm9yd2FyZFJlZihmb3J3YXJkUmVmKTtcbiAgV3JhcHBlZFN0eWxlZENvbXBvbmVudC5hdHRycyA9IGZpbmFsQXR0cnM7XG4gIFdyYXBwZWRTdHlsZWRDb21wb25lbnQuY29tcG9uZW50U3R5bGUgPSBjb21wb25lbnRTdHlsZTtcbiAgV3JhcHBlZFN0eWxlZENvbXBvbmVudC5kaXNwbGF5TmFtZSA9IGRpc3BsYXlOYW1lO1xuICBXcmFwcGVkU3R5bGVkQ29tcG9uZW50LnNob3VsZEZvcndhcmRQcm9wID0gc2hvdWxkRm9yd2FyZFByb3A7IC8vIHRoaXMgc3RhdGljIGlzIHVzZWQgdG8gcHJlc2VydmUgdGhlIGNhc2NhZGUgb2Ygc3RhdGljIGNsYXNzZXMgZm9yIGNvbXBvbmVudCBzZWxlY3RvclxuICAvLyBwdXJwb3NlczsgdGhpcyBpcyBlc3BlY2lhbGx5IGltcG9ydGFudCB3aXRoIHVzYWdlIG9mIHRoZSBjc3MgcHJvcFxuXG4gIFdyYXBwZWRTdHlsZWRDb21wb25lbnQuZm9sZGVkQ29tcG9uZW50SWRzID0gaXNUYXJnZXRTdHlsZWRDb21wID8gLy8gJEZsb3dGaXhNZVxuICBBcnJheS5wcm90b3R5cGUuY29uY2F0KHRhcmdldC5mb2xkZWRDb21wb25lbnRJZHMsIHRhcmdldC5zdHlsZWRDb21wb25lbnRJZCkgOiBFTVBUWV9BUlJBWTtcbiAgV3JhcHBlZFN0eWxlZENvbXBvbmVudC5zdHlsZWRDb21wb25lbnRJZCA9IHN0eWxlZENvbXBvbmVudElkOyAvLyBmb2xkIHRoZSB1bmRlcmx5aW5nIFN0eWxlZENvbXBvbmVudCB0YXJnZXQgdXAgc2luY2Ugd2UgZm9sZGVkIHRoZSBzdHlsZXNcblxuICBXcmFwcGVkU3R5bGVkQ29tcG9uZW50LnRhcmdldCA9IGlzVGFyZ2V0U3R5bGVkQ29tcCA/IC8vICRGbG93Rml4TWVcbiAgdGFyZ2V0LnRhcmdldCA6IHRhcmdldDsgLy8gJEZsb3dGaXhNZVxuXG4gIFdyYXBwZWRTdHlsZWRDb21wb25lbnQud2l0aENvbXBvbmVudCA9IGZ1bmN0aW9uIHdpdGhDb21wb25lbnQodGFnKSB7XG4gICAgdmFyIHByZXZpb3VzQ29tcG9uZW50SWQgPSBvcHRpb25zLmNvbXBvbmVudElkLFxuICAgICAgICBvcHRpb25zVG9Db3B5ID0gX29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzTG9vc2Uob3B0aW9ucywgW1wiY29tcG9uZW50SWRcIl0pO1xuXG4gICAgdmFyIG5ld0NvbXBvbmVudElkID0gcHJldmlvdXNDb21wb25lbnRJZCAmJiBwcmV2aW91c0NvbXBvbmVudElkICsgXCItXCIgKyAoaXNUYWcodGFnKSA/IHRhZyA6IGVzY2FwZShnZXRDb21wb25lbnROYW1lKHRhZykpKTtcblxuICAgIHZhciBuZXdPcHRpb25zID0gX2V4dGVuZHMoe30sIG9wdGlvbnNUb0NvcHksIHtcbiAgICAgIGF0dHJzOiBmaW5hbEF0dHJzLFxuICAgICAgY29tcG9uZW50SWQ6IG5ld0NvbXBvbmVudElkXG4gICAgfSk7XG5cbiAgICByZXR1cm4gY3JlYXRlU3R5bGVkQ29tcG9uZW50KHRhZywgbmV3T3B0aW9ucywgcnVsZXMpO1xuICB9OyAvLyAkRmxvd0ZpeE1lXG5cblxuICBPYmplY3QuZGVmaW5lUHJvcGVydHkoV3JhcHBlZFN0eWxlZENvbXBvbmVudCwgJ2RlZmF1bHRQcm9wcycsIHtcbiAgICBnZXQ6IGZ1bmN0aW9uIGdldCgpIHtcbiAgICAgIHJldHVybiB0aGlzLl9mb2xkZWREZWZhdWx0UHJvcHM7XG4gICAgfSxcbiAgICBzZXQ6IGZ1bmN0aW9uIHNldChvYmopIHtcbiAgICAgIC8vICRGbG93Rml4TWVcbiAgICAgIHRoaXMuX2ZvbGRlZERlZmF1bHRQcm9wcyA9IGlzVGFyZ2V0U3R5bGVkQ29tcCA/IG1peGluRGVlcCh7fSwgdGFyZ2V0LmRlZmF1bHRQcm9wcywgb2JqKSA6IG9iajtcbiAgICB9XG4gIH0pO1xuXG4gIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gICAgY2hlY2tEeW5hbWljQ3JlYXRpb24oZGlzcGxheU5hbWUsIHN0eWxlZENvbXBvbmVudElkKTtcbiAgICBXcmFwcGVkU3R5bGVkQ29tcG9uZW50Lndhcm5Ub29NYW55Q2xhc3NlcyA9IGNyZWF0ZVdhcm5Ub29NYW55Q2xhc3NlcyhkaXNwbGF5TmFtZSwgc3R5bGVkQ29tcG9uZW50SWQpO1xuICB9IC8vICRGbG93Rml4TWVcblxuXG4gIFdyYXBwZWRTdHlsZWRDb21wb25lbnQudG9TdHJpbmcgPSBmdW5jdGlvbiAoKSB7XG4gICAgcmV0dXJuIFwiLlwiICsgV3JhcHBlZFN0eWxlZENvbXBvbmVudC5zdHlsZWRDb21wb25lbnRJZDtcbiAgfTtcblxuICBpZiAoaXNDb21wb3NpdGVDb21wb25lbnQpIHtcbiAgICBob2lzdChXcmFwcGVkU3R5bGVkQ29tcG9uZW50LCB0YXJnZXQsIHtcbiAgICAgIC8vIGFsbCBTQy1zcGVjaWZpYyB0aGluZ3Mgc2hvdWxkIG5vdCBiZSBob2lzdGVkXG4gICAgICBhdHRyczogdHJ1ZSxcbiAgICAgIGNvbXBvbmVudFN0eWxlOiB0cnVlLFxuICAgICAgZGlzcGxheU5hbWU6IHRydWUsXG4gICAgICBmb2xkZWRDb21wb25lbnRJZHM6IHRydWUsXG4gICAgICBzaG91bGRGb3J3YXJkUHJvcDogdHJ1ZSxcbiAgICAgIHNlbGY6IHRydWUsXG4gICAgICBzdHlsZWRDb21wb25lbnRJZDogdHJ1ZSxcbiAgICAgIHRhcmdldDogdHJ1ZSxcbiAgICAgIHdpdGhDb21wb25lbnQ6IHRydWVcbiAgICB9KTtcbiAgfVxuXG4gIHJldHVybiBXcmFwcGVkU3R5bGVkQ29tcG9uZW50O1xufVxuXG4vLyBcbi8vIFRoYW5rcyB0byBSZWFjdERPTUZhY3RvcmllcyBmb3IgdGhpcyBoYW5keSBsaXN0IVxudmFyIGRvbUVsZW1lbnRzID0gWydhJywgJ2FiYnInLCAnYWRkcmVzcycsICdhcmVhJywgJ2FydGljbGUnLCAnYXNpZGUnLCAnYXVkaW8nLCAnYicsICdiYXNlJywgJ2JkaScsICdiZG8nLCAnYmlnJywgJ2Jsb2NrcXVvdGUnLCAnYm9keScsICdicicsICdidXR0b24nLCAnY2FudmFzJywgJ2NhcHRpb24nLCAnY2l0ZScsICdjb2RlJywgJ2NvbCcsICdjb2xncm91cCcsICdkYXRhJywgJ2RhdGFsaXN0JywgJ2RkJywgJ2RlbCcsICdkZXRhaWxzJywgJ2RmbicsICdkaWFsb2cnLCAnZGl2JywgJ2RsJywgJ2R0JywgJ2VtJywgJ2VtYmVkJywgJ2ZpZWxkc2V0JywgJ2ZpZ2NhcHRpb24nLCAnZmlndXJlJywgJ2Zvb3RlcicsICdmb3JtJywgJ2gxJywgJ2gyJywgJ2gzJywgJ2g0JywgJ2g1JywgJ2g2JywgJ2hlYWQnLCAnaGVhZGVyJywgJ2hncm91cCcsICdocicsICdodG1sJywgJ2knLCAnaWZyYW1lJywgJ2ltZycsICdpbnB1dCcsICdpbnMnLCAna2JkJywgJ2tleWdlbicsICdsYWJlbCcsICdsZWdlbmQnLCAnbGknLCAnbGluaycsICdtYWluJywgJ21hcCcsICdtYXJrJywgJ21hcnF1ZWUnLCAnbWVudScsICdtZW51aXRlbScsICdtZXRhJywgJ21ldGVyJywgJ25hdicsICdub3NjcmlwdCcsICdvYmplY3QnLCAnb2wnLCAnb3B0Z3JvdXAnLCAnb3B0aW9uJywgJ291dHB1dCcsICdwJywgJ3BhcmFtJywgJ3BpY3R1cmUnLCAncHJlJywgJ3Byb2dyZXNzJywgJ3EnLCAncnAnLCAncnQnLCAncnVieScsICdzJywgJ3NhbXAnLCAnc2NyaXB0JywgJ3NlY3Rpb24nLCAnc2VsZWN0JywgJ3NtYWxsJywgJ3NvdXJjZScsICdzcGFuJywgJ3N0cm9uZycsICdzdHlsZScsICdzdWInLCAnc3VtbWFyeScsICdzdXAnLCAndGFibGUnLCAndGJvZHknLCAndGQnLCAndGV4dGFyZWEnLCAndGZvb3QnLCAndGgnLCAndGhlYWQnLCAndGltZScsICd0aXRsZScsICd0cicsICd0cmFjaycsICd1JywgJ3VsJywgJ3ZhcicsICd2aWRlbycsICd3YnInLCAvLyBTVkdcbidjaXJjbGUnLCAnY2xpcFBhdGgnLCAnZGVmcycsICdlbGxpcHNlJywgJ2ZvcmVpZ25PYmplY3QnLCAnZycsICdpbWFnZScsICdsaW5lJywgJ2xpbmVhckdyYWRpZW50JywgJ21hcmtlcicsICdtYXNrJywgJ3BhdGgnLCAncGF0dGVybicsICdwb2x5Z29uJywgJ3BvbHlsaW5lJywgJ3JhZGlhbEdyYWRpZW50JywgJ3JlY3QnLCAnc3RvcCcsICdzdmcnLCAndGV4dCcsICd0c3BhbiddO1xuXG4vLyBcblxudmFyIHN0eWxlZCA9IGZ1bmN0aW9uIHN0eWxlZCh0YWcpIHtcbiAgcmV0dXJuIGNvbnN0cnVjdFdpdGhPcHRpb25zKGNyZWF0ZVN0eWxlZENvbXBvbmVudCwgdGFnKTtcbn07IC8vIFNob3J0aGFuZHMgZm9yIGFsbCB2YWxpZCBIVE1MIEVsZW1lbnRzXG5cblxuZG9tRWxlbWVudHMuZm9yRWFjaChmdW5jdGlvbiAoZG9tRWxlbWVudCkge1xuICBzdHlsZWRbZG9tRWxlbWVudF0gPSBzdHlsZWQoZG9tRWxlbWVudCk7XG59KTtcblxuLy8gXG5cbnZhciBHbG9iYWxTdHlsZSA9IC8qI19fUFVSRV9fKi9mdW5jdGlvbiAoKSB7XG4gIGZ1bmN0aW9uIEdsb2JhbFN0eWxlKHJ1bGVzLCBjb21wb25lbnRJZCkge1xuICAgIHRoaXMucnVsZXMgPSBydWxlcztcbiAgICB0aGlzLmNvbXBvbmVudElkID0gY29tcG9uZW50SWQ7XG4gICAgdGhpcy5pc1N0YXRpYyA9IGlzU3RhdGljUnVsZXMocnVsZXMpO1xuICB9XG5cbiAgdmFyIF9wcm90byA9IEdsb2JhbFN0eWxlLnByb3RvdHlwZTtcblxuICBfcHJvdG8uY3JlYXRlU3R5bGVzID0gZnVuY3Rpb24gY3JlYXRlU3R5bGVzKGluc3RhbmNlLCBleGVjdXRpb25Db250ZXh0LCBzdHlsZVNoZWV0LCBzdHlsaXMpIHtcbiAgICB2YXIgZmxhdENTUyA9IGZsYXR0ZW4odGhpcy5ydWxlcywgZXhlY3V0aW9uQ29udGV4dCwgc3R5bGVTaGVldCk7XG4gICAgdmFyIGNzcyA9IHN0eWxpcyhmbGF0Q1NTLmpvaW4oJycpLCAnJyk7XG4gICAgdmFyIGlkID0gdGhpcy5jb21wb25lbnRJZCArIGluc3RhbmNlOyAvLyBOT1RFOiBXZSB1c2UgdGhlIGlkIGFzIGEgbmFtZSBhcyB3ZWxsLCBzaW5jZSB0aGVzZSBydWxlcyBuZXZlciBjaGFuZ2VcblxuICAgIHN0eWxlU2hlZXQuaW5zZXJ0UnVsZXMoaWQsIGlkLCBjc3MpO1xuICB9O1xuXG4gIF9wcm90by5yZW1vdmVTdHlsZXMgPSBmdW5jdGlvbiByZW1vdmVTdHlsZXMoaW5zdGFuY2UsIHN0eWxlU2hlZXQpIHtcbiAgICBzdHlsZVNoZWV0LmNsZWFyUnVsZXModGhpcy5jb21wb25lbnRJZCArIGluc3RhbmNlKTtcbiAgfTtcblxuICBfcHJvdG8ucmVuZGVyU3R5bGVzID0gZnVuY3Rpb24gcmVuZGVyU3R5bGVzKGluc3RhbmNlLCBleGVjdXRpb25Db250ZXh0LCBzdHlsZVNoZWV0LCBzdHlsaXMpIHtcbiAgICBTdHlsZVNoZWV0LnJlZ2lzdGVySWQodGhpcy5jb21wb25lbnRJZCArIGluc3RhbmNlKTsgLy8gTk9URTogUmVtb3ZlIG9sZCBzdHlsZXMsIHRoZW4gaW5qZWN0IHRoZSBuZXcgb25lc1xuXG4gICAgdGhpcy5yZW1vdmVTdHlsZXMoaW5zdGFuY2UsIHN0eWxlU2hlZXQpO1xuICAgIHRoaXMuY3JlYXRlU3R5bGVzKGluc3RhbmNlLCBleGVjdXRpb25Db250ZXh0LCBzdHlsZVNoZWV0LCBzdHlsaXMpO1xuICB9O1xuXG4gIHJldHVybiBHbG9iYWxTdHlsZTtcbn0oKTtcblxuZnVuY3Rpb24gY3JlYXRlR2xvYmFsU3R5bGUoc3RyaW5ncykge1xuICBmb3IgKHZhciBfbGVuID0gYXJndW1lbnRzLmxlbmd0aCwgaW50ZXJwb2xhdGlvbnMgPSBuZXcgQXJyYXkoX2xlbiA+IDEgPyBfbGVuIC0gMSA6IDApLCBfa2V5ID0gMTsgX2tleSA8IF9sZW47IF9rZXkrKykge1xuICAgIGludGVycG9sYXRpb25zW19rZXkgLSAxXSA9IGFyZ3VtZW50c1tfa2V5XTtcbiAgfVxuXG4gIHZhciBydWxlcyA9IGNzcy5hcHBseSh2b2lkIDAsIFtzdHJpbmdzXS5jb25jYXQoaW50ZXJwb2xhdGlvbnMpKTtcbiAgdmFyIHN0eWxlZENvbXBvbmVudElkID0gXCJzYy1nbG9iYWwtXCIgKyBnZW5lcmF0ZUNvbXBvbmVudElkKEpTT04uc3RyaW5naWZ5KHJ1bGVzKSk7XG4gIHZhciBnbG9iYWxTdHlsZSA9IG5ldyBHbG9iYWxTdHlsZShydWxlcywgc3R5bGVkQ29tcG9uZW50SWQpO1xuXG4gIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gICAgY2hlY2tEeW5hbWljQ3JlYXRpb24oc3R5bGVkQ29tcG9uZW50SWQpO1xuICB9XG5cbiAgZnVuY3Rpb24gR2xvYmFsU3R5bGVDb21wb25lbnQocHJvcHMpIHtcbiAgICB2YXIgc3R5bGVTaGVldCA9IHVzZVN0eWxlU2hlZXQoKTtcbiAgICB2YXIgc3R5bGlzID0gdXNlU3R5bGlzKCk7XG4gICAgdmFyIHRoZW1lID0gdXNlQ29udGV4dChUaGVtZUNvbnRleHQpO1xuICAgIHZhciBpbnN0YW5jZVJlZiA9IHVzZVJlZihudWxsKTtcblxuICAgIGlmIChpbnN0YW5jZVJlZi5jdXJyZW50ID09PSBudWxsKSB7XG4gICAgICBpbnN0YW5jZVJlZi5jdXJyZW50ID0gc3R5bGVTaGVldC5hbGxvY2F0ZUdTSW5zdGFuY2Uoc3R5bGVkQ29tcG9uZW50SWQpO1xuICAgIH1cblxuICAgIHZhciBpbnN0YW5jZSA9IGluc3RhbmNlUmVmLmN1cnJlbnQ7XG5cbiAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyAmJiBSZWFjdC5DaGlsZHJlbi5jb3VudChwcm9wcy5jaGlsZHJlbikpIHtcbiAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1jb25zb2xlXG4gICAgICBjb25zb2xlLndhcm4oXCJUaGUgZ2xvYmFsIHN0eWxlIGNvbXBvbmVudCBcIiArIHN0eWxlZENvbXBvbmVudElkICsgXCIgd2FzIGdpdmVuIGNoaWxkIEpTWC4gY3JlYXRlR2xvYmFsU3R5bGUgZG9lcyBub3QgcmVuZGVyIGNoaWxkcmVuLlwiKTtcbiAgICB9XG5cbiAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyAmJiBydWxlcy5zb21lKGZ1bmN0aW9uIChydWxlKSB7XG4gICAgICByZXR1cm4gdHlwZW9mIHJ1bGUgPT09ICdzdHJpbmcnICYmIHJ1bGUuaW5kZXhPZignQGltcG9ydCcpICE9PSAtMTtcbiAgICB9KSkge1xuICAgICAgY29uc29sZS53YXJuKFwiUGxlYXNlIGRvIG5vdCB1c2UgQGltcG9ydCBDU1Mgc3ludGF4IGluIGNyZWF0ZUdsb2JhbFN0eWxlIGF0IHRoaXMgdGltZSwgYXMgdGhlIENTU09NIEFQSXMgd2UgdXNlIGluIHByb2R1Y3Rpb24gZG8gbm90IGhhbmRsZSBpdCB3ZWxsLiBJbnN0ZWFkLCB3ZSByZWNvbW1lbmQgdXNpbmcgYSBsaWJyYXJ5IHN1Y2ggYXMgcmVhY3QtaGVsbWV0IHRvIGluamVjdCBhIHR5cGljYWwgPGxpbms+IG1ldGEgdGFnIHRvIHRoZSBzdHlsZXNoZWV0LCBvciBzaW1wbHkgZW1iZWRkaW5nIGl0IG1hbnVhbGx5IGluIHlvdXIgaW5kZXguaHRtbCA8aGVhZD4gc2VjdGlvbiBmb3IgYSBzaW1wbGVyIGFwcC5cIik7XG4gICAgfVxuXG4gICAgaWYgKGdsb2JhbFN0eWxlLmlzU3RhdGljKSB7XG4gICAgICBnbG9iYWxTdHlsZS5yZW5kZXJTdHlsZXMoaW5zdGFuY2UsIFNUQVRJQ19FWEVDVVRJT05fQ09OVEVYVCwgc3R5bGVTaGVldCwgc3R5bGlzKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdmFyIGNvbnRleHQgPSBfZXh0ZW5kcyh7fSwgcHJvcHMsIHtcbiAgICAgICAgdGhlbWU6IGRldGVybWluZVRoZW1lKHByb3BzLCB0aGVtZSwgR2xvYmFsU3R5bGVDb21wb25lbnQuZGVmYXVsdFByb3BzKVxuICAgICAgfSk7XG5cbiAgICAgIGdsb2JhbFN0eWxlLnJlbmRlclN0eWxlcyhpbnN0YW5jZSwgY29udGV4dCwgc3R5bGVTaGVldCwgc3R5bGlzKTtcbiAgICB9XG5cbiAgICB1c2VFZmZlY3QoZnVuY3Rpb24gKCkge1xuICAgICAgcmV0dXJuIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgcmV0dXJuIGdsb2JhbFN0eWxlLnJlbW92ZVN0eWxlcyhpbnN0YW5jZSwgc3R5bGVTaGVldCk7XG4gICAgICB9O1xuICAgIH0sIEVNUFRZX0FSUkFZKTtcbiAgICByZXR1cm4gbnVsbDtcbiAgfSAvLyAkRmxvd0ZpeE1lXG5cblxuICByZXR1cm4gUmVhY3QubWVtbyhHbG9iYWxTdHlsZUNvbXBvbmVudCk7XG59XG5cbi8vIFxuZnVuY3Rpb24ga2V5ZnJhbWVzKHN0cmluZ3MpIHtcbiAgLyogV2FybmluZyBpZiB5b3UndmUgdXNlZCBrZXlmcmFtZXMgb24gUmVhY3QgTmF0aXZlICovXG4gIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nICYmIHR5cGVvZiBuYXZpZ2F0b3IgIT09ICd1bmRlZmluZWQnICYmIG5hdmlnYXRvci5wcm9kdWN0ID09PSAnUmVhY3ROYXRpdmUnKSB7XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLWNvbnNvbGVcbiAgICBjb25zb2xlLndhcm4oJ2BrZXlmcmFtZXNgIGNhbm5vdCBiZSB1c2VkIG9uIFJlYWN0TmF0aXZlLCBvbmx5IG9uIHRoZSB3ZWIuIFRvIGRvIGFuaW1hdGlvbiBpbiBSZWFjdE5hdGl2ZSBwbGVhc2UgdXNlIEFuaW1hdGVkLicpO1xuICB9XG5cbiAgZm9yICh2YXIgX2xlbiA9IGFyZ3VtZW50cy5sZW5ndGgsIGludGVycG9sYXRpb25zID0gbmV3IEFycmF5KF9sZW4gPiAxID8gX2xlbiAtIDEgOiAwKSwgX2tleSA9IDE7IF9rZXkgPCBfbGVuOyBfa2V5KyspIHtcbiAgICBpbnRlcnBvbGF0aW9uc1tfa2V5IC0gMV0gPSBhcmd1bWVudHNbX2tleV07XG4gIH1cblxuICB2YXIgcnVsZXMgPSBjc3MuYXBwbHkodm9pZCAwLCBbc3RyaW5nc10uY29uY2F0KGludGVycG9sYXRpb25zKSkuam9pbignJyk7XG4gIHZhciBuYW1lID0gZ2VuZXJhdGVDb21wb25lbnRJZChydWxlcyk7XG4gIHJldHVybiBuZXcgS2V5ZnJhbWVzKG5hbWUsIFtydWxlcywgbmFtZSwgJ0BrZXlmcmFtZXMnXSk7XG59XG5cbnZhciBTZXJ2ZXJTdHlsZVNoZWV0ID0gLyojX19QVVJFX18qL2Z1bmN0aW9uICgpIHtcbiAgZnVuY3Rpb24gU2VydmVyU3R5bGVTaGVldCgpIHtcbiAgICB2YXIgX3RoaXMgPSB0aGlzO1xuXG4gICAgdGhpcy5fZW1pdFNoZWV0Q1NTID0gZnVuY3Rpb24gKCkge1xuICAgICAgdmFyIGNzcyA9IF90aGlzLmluc3RhbmNlLnRvU3RyaW5nKCk7XG5cbiAgICAgIHZhciBub25jZSA9IGdldE5vbmNlKCk7XG4gICAgICB2YXIgYXR0cnMgPSBbbm9uY2UgJiYgXCJub25jZT1cXFwiXCIgKyBub25jZSArIFwiXFxcIlwiLCBTQ19BVFRSICsgXCI9XFxcInRydWVcXFwiXCIsIFNDX0FUVFJfVkVSU0lPTiArIFwiPVxcXCJcIiArIFNDX1ZFUlNJT04gKyBcIlxcXCJcIl07XG4gICAgICB2YXIgaHRtbEF0dHIgPSBhdHRycy5maWx0ZXIoQm9vbGVhbikuam9pbignICcpO1xuICAgICAgcmV0dXJuIFwiPHN0eWxlIFwiICsgaHRtbEF0dHIgKyBcIj5cIiArIGNzcyArIFwiPC9zdHlsZT5cIjtcbiAgICB9O1xuXG4gICAgdGhpcy5nZXRTdHlsZVRhZ3MgPSBmdW5jdGlvbiAoKSB7XG4gICAgICBpZiAoX3RoaXMuc2VhbGVkKSB7XG4gICAgICAgIHJldHVybiB0aHJvd1N0eWxlZENvbXBvbmVudHNFcnJvcigyKTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIF90aGlzLl9lbWl0U2hlZXRDU1MoKTtcbiAgICB9O1xuXG4gICAgdGhpcy5nZXRTdHlsZUVsZW1lbnQgPSBmdW5jdGlvbiAoKSB7XG4gICAgICB2YXIgX3Byb3BzO1xuXG4gICAgICBpZiAoX3RoaXMuc2VhbGVkKSB7XG4gICAgICAgIHJldHVybiB0aHJvd1N0eWxlZENvbXBvbmVudHNFcnJvcigyKTtcbiAgICAgIH1cblxuICAgICAgdmFyIHByb3BzID0gKF9wcm9wcyA9IHt9LCBfcHJvcHNbU0NfQVRUUl0gPSAnJywgX3Byb3BzW1NDX0FUVFJfVkVSU0lPTl0gPSBTQ19WRVJTSU9OLCBfcHJvcHMuZGFuZ2Vyb3VzbHlTZXRJbm5lckhUTUwgPSB7XG4gICAgICAgIF9faHRtbDogX3RoaXMuaW5zdGFuY2UudG9TdHJpbmcoKVxuICAgICAgfSwgX3Byb3BzKTtcbiAgICAgIHZhciBub25jZSA9IGdldE5vbmNlKCk7XG5cbiAgICAgIGlmIChub25jZSkge1xuICAgICAgICBwcm9wcy5ub25jZSA9IG5vbmNlO1xuICAgICAgfSAvLyB2NCByZXR1cm5lZCBhbiBhcnJheSBmb3IgdGhpcyBmbiwgc28gd2UnbGwgZG8gdGhlIHNhbWUgZm9yIHY1IGZvciBiYWNrd2FyZCBjb21wYXRcblxuXG4gICAgICByZXR1cm4gWy8qI19fUFVSRV9fKi9SZWFjdC5jcmVhdGVFbGVtZW50KFwic3R5bGVcIiwgX2V4dGVuZHMoe30sIHByb3BzLCB7XG4gICAgICAgIGtleTogXCJzYy0wLTBcIlxuICAgICAgfSkpXTtcbiAgICB9O1xuXG4gICAgdGhpcy5zZWFsID0gZnVuY3Rpb24gKCkge1xuICAgICAgX3RoaXMuc2VhbGVkID0gdHJ1ZTtcbiAgICB9O1xuXG4gICAgdGhpcy5pbnN0YW5jZSA9IG5ldyBTdHlsZVNoZWV0KHtcbiAgICAgIGlzU2VydmVyOiB0cnVlXG4gICAgfSk7XG4gICAgdGhpcy5zZWFsZWQgPSBmYWxzZTtcbiAgfVxuXG4gIHZhciBfcHJvdG8gPSBTZXJ2ZXJTdHlsZVNoZWV0LnByb3RvdHlwZTtcblxuICBfcHJvdG8uY29sbGVjdFN0eWxlcyA9IGZ1bmN0aW9uIGNvbGxlY3RTdHlsZXMoY2hpbGRyZW4pIHtcbiAgICBpZiAodGhpcy5zZWFsZWQpIHtcbiAgICAgIHJldHVybiB0aHJvd1N0eWxlZENvbXBvbmVudHNFcnJvcigyKTtcbiAgICB9XG5cbiAgICByZXR1cm4gLyojX19QVVJFX18qL1JlYWN0LmNyZWF0ZUVsZW1lbnQoU3R5bGVTaGVldE1hbmFnZXIsIHtcbiAgICAgIHNoZWV0OiB0aGlzLmluc3RhbmNlXG4gICAgfSwgY2hpbGRyZW4pO1xuICB9O1xuXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBjb25zaXN0ZW50LXJldHVyblxuICBfcHJvdG8uaW50ZXJsZWF2ZVdpdGhOb2RlU3RyZWFtID0gZnVuY3Rpb24gaW50ZXJsZWF2ZVdpdGhOb2RlU3RyZWFtKGlucHV0KSB7XG4gICAge1xuICAgICAgcmV0dXJuIHRocm93U3R5bGVkQ29tcG9uZW50c0Vycm9yKDMpO1xuICAgIH1cbiAgfTtcblxuICByZXR1cm4gU2VydmVyU3R5bGVTaGVldDtcbn0oKTtcblxuLy8gZXhwb3J0IGRlZmF1bHQgPENvbmZpZzogeyB0aGVtZT86IGFueSB9LCBJbnN0YW5jZT4oXG4vLyAgQ29tcG9uZW50OiBBYnN0cmFjdENvbXBvbmVudDxDb25maWcsIEluc3RhbmNlPlxuLy8gKTogQWJzdHJhY3RDb21wb25lbnQ8JERpZmY8Q29uZmlnLCB7IHRoZW1lPzogYW55IH0+ICYgeyB0aGVtZT86IGFueSB9LCBJbnN0YW5jZT5cbi8vXG4vLyBidXQgdGhlIG9sZCBidWlsZCBzeXN0ZW0gdG9vbGluZyBkb2Vzbid0IHN1cHBvcnQgdGhlIHN5bnRheFxuXG52YXIgd2l0aFRoZW1lID0gKGZ1bmN0aW9uIChDb21wb25lbnQpIHtcbiAgLy8gJEZsb3dGaXhNZSBUaGlzIHNob3VsZCBiZSBSZWFjdC5mb3J3YXJkUmVmPENvbmZpZywgSW5zdGFuY2U+XG4gIHZhciBXaXRoVGhlbWUgPSBSZWFjdC5mb3J3YXJkUmVmKGZ1bmN0aW9uIChwcm9wcywgcmVmKSB7XG4gICAgdmFyIHRoZW1lID0gdXNlQ29udGV4dChUaGVtZUNvbnRleHQpOyAvLyAkRmxvd0ZpeE1lIGRlZmF1bHRQcm9wcyBpc24ndCBkZWNsYXJlZCBzbyBpdCBjYW4gYmUgaW5mZXJyYWJsZVxuXG4gICAgdmFyIGRlZmF1bHRQcm9wcyA9IENvbXBvbmVudC5kZWZhdWx0UHJvcHM7XG4gICAgdmFyIHRoZW1lUHJvcCA9IGRldGVybWluZVRoZW1lKHByb3BzLCB0aGVtZSwgZGVmYXVsdFByb3BzKTtcblxuICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nICYmIHRoZW1lUHJvcCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tY29uc29sZVxuICAgICAgY29uc29sZS53YXJuKFwiW3dpdGhUaGVtZV0gWW91IGFyZSBub3QgdXNpbmcgYSBUaGVtZVByb3ZpZGVyIG5vciBwYXNzaW5nIGEgdGhlbWUgcHJvcCBvciBhIHRoZW1lIGluIGRlZmF1bHRQcm9wcyBpbiBjb21wb25lbnQgY2xhc3MgXFxcIlwiICsgZ2V0Q29tcG9uZW50TmFtZShDb21wb25lbnQpICsgXCJcXFwiXCIpO1xuICAgIH1cblxuICAgIHJldHVybiAvKiNfX1BVUkVfXyovUmVhY3QuY3JlYXRlRWxlbWVudChDb21wb25lbnQsIF9leHRlbmRzKHt9LCBwcm9wcywge1xuICAgICAgdGhlbWU6IHRoZW1lUHJvcCxcbiAgICAgIHJlZjogcmVmXG4gICAgfSkpO1xuICB9KTtcbiAgaG9pc3QoV2l0aFRoZW1lLCBDb21wb25lbnQpO1xuICBXaXRoVGhlbWUuZGlzcGxheU5hbWUgPSBcIldpdGhUaGVtZShcIiArIGdldENvbXBvbmVudE5hbWUoQ29tcG9uZW50KSArIFwiKVwiO1xuICByZXR1cm4gV2l0aFRoZW1lO1xufSk7XG5cbi8vIFxuXG52YXIgdXNlVGhlbWUgPSBmdW5jdGlvbiB1c2VUaGVtZSgpIHtcbiAgcmV0dXJuIHVzZUNvbnRleHQoVGhlbWVDb250ZXh0KTtcbn07XG5cbi8vIFxudmFyIF9fUFJJVkFURV9fID0ge1xuICBTdHlsZVNoZWV0OiBTdHlsZVNoZWV0LFxuICBtYXN0ZXJTaGVldDogbWFzdGVyU2hlZXRcbn07XG5cbi8vIFxuLyogRGVmaW5lIGJ1bmRsZSB2ZXJzaW9uIGZvciBleHBvcnQgKi9cblxudmFyIHZlcnNpb24gPSBcIjUuMS4xXCI7XG4vKiBXYXJuaW5nIGlmIHlvdSd2ZSBpbXBvcnRlZCB0aGlzIGZpbGUgb24gUmVhY3QgTmF0aXZlICovXG5cbmlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nICYmIHR5cGVvZiBuYXZpZ2F0b3IgIT09ICd1bmRlZmluZWQnICYmIG5hdmlnYXRvci5wcm9kdWN0ID09PSAnUmVhY3ROYXRpdmUnKSB7XG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1jb25zb2xlXG4gIGNvbnNvbGUud2FybihcIkl0IGxvb2tzIGxpa2UgeW91J3ZlIGltcG9ydGVkICdzdHlsZWQtY29tcG9uZW50cycgb24gUmVhY3QgTmF0aXZlLlxcblwiICsgXCJQZXJoYXBzIHlvdSdyZSBsb29raW5nIHRvIGltcG9ydCAnc3R5bGVkLWNvbXBvbmVudHMvbmF0aXZlJz9cXG5cIiArICdSZWFkIG1vcmUgYWJvdXQgdGhpcyBhdCBodHRwczovL3d3dy5zdHlsZWQtY29tcG9uZW50cy5jb20vZG9jcy9iYXNpY3MjcmVhY3QtbmF0aXZlJyk7XG59XG4vKiBXYXJuaW5nIGlmIHRoZXJlIGFyZSBzZXZlcmFsIGluc3RhbmNlcyBvZiBzdHlsZWQtY29tcG9uZW50cyAqL1xuXG5cbmlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nICYmIHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAndGVzdCcgJiYgdHlwZW9mIHdpbmRvdyAhPT0gJ3VuZGVmaW5lZCcpIHtcbiAgd2luZG93WydfX3N0eWxlZC1jb21wb25lbnRzLWluaXRfXyddID0gd2luZG93WydfX3N0eWxlZC1jb21wb25lbnRzLWluaXRfXyddIHx8IDA7XG5cbiAgaWYgKHdpbmRvd1snX19zdHlsZWQtY29tcG9uZW50cy1pbml0X18nXSA9PT0gMSkge1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1jb25zb2xlXG4gICAgY29uc29sZS53YXJuKFwiSXQgbG9va3MgbGlrZSB0aGVyZSBhcmUgc2V2ZXJhbCBpbnN0YW5jZXMgb2YgJ3N0eWxlZC1jb21wb25lbnRzJyBpbml0aWFsaXplZCBpbiB0aGlzIGFwcGxpY2F0aW9uLiBcIiArICdUaGlzIG1heSBjYXVzZSBkeW5hbWljIHN0eWxlcyBub3QgcmVuZGVyaW5nIHByb3Blcmx5LCBlcnJvcnMgaGFwcGVuaW5nIGR1cmluZyByZWh5ZHJhdGlvbiBwcm9jZXNzLCAnICsgJ21pc3NpbmcgdGhlbWUgcHJvcCwgYW5kIG1ha2VzIHlvdXIgYXBwbGljYXRpb24gYmlnZ2VyIHdpdGhvdXQgYSBnb29kIHJlYXNvbi5cXG5cXG4nICsgJ1NlZSBodHRwczovL3MtYy5zaC8yQkFYemVkIGZvciBtb3JlIGluZm8uJyk7XG4gIH1cblxuICB3aW5kb3dbJ19fc3R5bGVkLWNvbXBvbmVudHMtaW5pdF9fJ10gKz0gMTtcbn1cblxuZXhwb3J0IGRlZmF1bHQgc3R5bGVkO1xuZXhwb3J0IHsgU2VydmVyU3R5bGVTaGVldCwgU3R5bGVTaGVldENvbnN1bWVyLCBTdHlsZVNoZWV0Q29udGV4dCwgU3R5bGVTaGVldE1hbmFnZXIsIFRoZW1lQ29uc3VtZXIsIFRoZW1lQ29udGV4dCwgVGhlbWVQcm92aWRlciwgX19QUklWQVRFX18sIGNyZWF0ZUdsb2JhbFN0eWxlLCBjc3MsIGlzU3R5bGVkQ29tcG9uZW50LCBrZXlmcmFtZXMsIHVzZVRoZW1lLCB2ZXJzaW9uLCB3aXRoVGhlbWUgfTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPXN0eWxlZC1jb21wb25lbnRzLmJyb3dzZXIuZXNtLmpzLm1hcFxuIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGVBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsbUJBR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSw2Q0F1QkE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGlCQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsZUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsZUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsZUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsaUJBR0E7QUFDQTtBQUNBLGFBRUEsSUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxlQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsaUJBR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsYUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGFBU0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QSIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///1\n")},function(module,exports,__webpack_require__){eval("/* WEBPACK VAR INJECTION */(function(global, module) {var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;//     Underscore.js 1.9.0\n//     http://underscorejs.org\n//     (c) 2009-2018 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n//     Underscore may be freely distributed under the MIT license.\n\n(function() {\n\n  // Baseline setup\n  // --------------\n\n  // Establish the root object, `window` (`self`) in the browser, `global`\n  // on the server, or `this` in some virtual machines. We use `self`\n  // instead of `window` for `WebWorker` support.\n  var root = typeof self == 'object' && self.self === self && self ||\n            typeof global == 'object' && global.global === global && global ||\n            this ||\n            {};\n\n  // Save the previous value of the `_` variable.\n  var previousUnderscore = root._;\n\n  // Save bytes in the minified (but not gzipped) version:\n  var ArrayProto = Array.prototype, ObjProto = Object.prototype;\n  var SymbolProto = typeof Symbol !== 'undefined' ? Symbol.prototype : null;\n\n  // Create quick reference variables for speed access to core prototypes.\n  var push = ArrayProto.push,\n      slice = ArrayProto.slice,\n      toString = ObjProto.toString,\n      hasOwnProperty = ObjProto.hasOwnProperty;\n\n  // All **ECMAScript 5** native function implementations that we hope to use\n  // are declared here.\n  var nativeIsArray = Array.isArray,\n      nativeKeys = Object.keys,\n      nativeCreate = Object.create;\n\n  // Naked function reference for surrogate-prototype-swapping.\n  var Ctor = function(){};\n\n  // Create a safe reference to the Underscore object for use below.\n  var _ = function(obj) {\n    if (obj instanceof _) return obj;\n    if (!(this instanceof _)) return new _(obj);\n    this._wrapped = obj;\n  };\n\n  // Export the Underscore object for **Node.js**, with\n  // backwards-compatibility for their old module API. If we're in\n  // the browser, add `_` as a global object.\n  // (`nodeType` is checked to ensure that `module`\n  // and `exports` are not HTML elements.)\n  if ( true && !exports.nodeType) {\n    if ( true && !module.nodeType && module.exports) {\n      exports = module.exports = _;\n    }\n    exports._ = _;\n  } else {\n    root._ = _;\n  }\n\n  // Current version.\n  _.VERSION = '1.9.0';\n\n  // Internal function that returns an efficient (for current engines) version\n  // of the passed-in callback, to be repeatedly applied in other Underscore\n  // functions.\n  var optimizeCb = function(func, context, argCount) {\n    if (context === void 0) return func;\n    switch (argCount == null ? 3 : argCount) {\n      case 1: return function(value) {\n        return func.call(context, value);\n      };\n      // The 2-argument case is omitted because we’re not using it.\n      case 3: return function(value, index, collection) {\n        return func.call(context, value, index, collection);\n      };\n      case 4: return function(accumulator, value, index, collection) {\n        return func.call(context, accumulator, value, index, collection);\n      };\n    }\n    return function() {\n      return func.apply(context, arguments);\n    };\n  };\n\n  var builtinIteratee;\n\n  // An internal function to generate callbacks that can be applied to each\n  // element in a collection, returning the desired result — either `identity`,\n  // an arbitrary callback, a property matcher, or a property accessor.\n  var cb = function(value, context, argCount) {\n    if (_.iteratee !== builtinIteratee) return _.iteratee(value, context);\n    if (value == null) return _.identity;\n    if (_.isFunction(value)) return optimizeCb(value, context, argCount);\n    if (_.isObject(value) && !_.isArray(value)) return _.matcher(value);\n    return _.property(value);\n  };\n\n  // External wrapper for our callback generator. Users may customize\n  // `_.iteratee` if they want additional predicate/iteratee shorthand styles.\n  // This abstraction hides the internal-only argCount argument.\n  _.iteratee = builtinIteratee = function(value, context) {\n    return cb(value, context, Infinity);\n  };\n\n  // Some functions take a variable number of arguments, or a few expected\n  // arguments at the beginning and then a variable number of values to operate\n  // on. This helper accumulates all remaining arguments past the function’s\n  // argument length (or an explicit `startIndex`), into an array that becomes\n  // the last argument. Similar to ES6’s \"rest parameter\".\n  var restArguments = function(func, startIndex) {\n    startIndex = startIndex == null ? func.length - 1 : +startIndex;\n    return function() {\n      var length = Math.max(arguments.length - startIndex, 0),\n          rest = Array(length),\n          index = 0;\n      for (; index < length; index++) {\n        rest[index] = arguments[index + startIndex];\n      }\n      switch (startIndex) {\n        case 0: return func.call(this, rest);\n        case 1: return func.call(this, arguments[0], rest);\n        case 2: return func.call(this, arguments[0], arguments[1], rest);\n      }\n      var args = Array(startIndex + 1);\n      for (index = 0; index < startIndex; index++) {\n        args[index] = arguments[index];\n      }\n      args[startIndex] = rest;\n      return func.apply(this, args);\n    };\n  };\n\n  // An internal function for creating a new object that inherits from another.\n  var baseCreate = function(prototype) {\n    if (!_.isObject(prototype)) return {};\n    if (nativeCreate) return nativeCreate(prototype);\n    Ctor.prototype = prototype;\n    var result = new Ctor;\n    Ctor.prototype = null;\n    return result;\n  };\n\n  var shallowProperty = function(key) {\n    return function(obj) {\n      return obj == null ? void 0 : obj[key];\n    };\n  };\n\n  var deepGet = function(obj, path) {\n    var length = path.length;\n    for (var i = 0; i < length; i++) {\n      if (obj == null) return void 0;\n      obj = obj[path[i]];\n    }\n    return length ? obj : void 0;\n  };\n\n  // Helper for collection methods to determine whether a collection\n  // should be iterated as an array or as an object.\n  // Related: http://people.mozilla.org/~jorendorff/es6-draft.html#sec-tolength\n  // Avoids a very nasty iOS 8 JIT bug on ARM-64. #2094\n  var MAX_ARRAY_INDEX = Math.pow(2, 53) - 1;\n  var getLength = shallowProperty('length');\n  var isArrayLike = function(collection) {\n    var length = getLength(collection);\n    return typeof length == 'number' && length >= 0 && length <= MAX_ARRAY_INDEX;\n  };\n\n  // Collection Functions\n  // --------------------\n\n  // The cornerstone, an `each` implementation, aka `forEach`.\n  // Handles raw objects in addition to array-likes. Treats all\n  // sparse array-likes as if they were dense.\n  _.each = _.forEach = function(obj, iteratee, context) {\n    iteratee = optimizeCb(iteratee, context);\n    var i, length;\n    if (isArrayLike(obj)) {\n      for (i = 0, length = obj.length; i < length; i++) {\n        iteratee(obj[i], i, obj);\n      }\n    } else {\n      var keys = _.keys(obj);\n      for (i = 0, length = keys.length; i < length; i++) {\n        iteratee(obj[keys[i]], keys[i], obj);\n      }\n    }\n    return obj;\n  };\n\n  // Return the results of applying the iteratee to each element.\n  _.map = _.collect = function(obj, iteratee, context) {\n    iteratee = cb(iteratee, context);\n    var keys = !isArrayLike(obj) && _.keys(obj),\n        length = (keys || obj).length,\n        results = Array(length);\n    for (var index = 0; index < length; index++) {\n      var currentKey = keys ? keys[index] : index;\n      results[index] = iteratee(obj[currentKey], currentKey, obj);\n    }\n    return results;\n  };\n\n  // Create a reducing function iterating left or right.\n  var createReduce = function(dir) {\n    // Wrap code that reassigns argument variables in a separate function than\n    // the one that accesses `arguments.length` to avoid a perf hit. (#1991)\n    var reducer = function(obj, iteratee, memo, initial) {\n      var keys = !isArrayLike(obj) && _.keys(obj),\n          length = (keys || obj).length,\n          index = dir > 0 ? 0 : length - 1;\n      if (!initial) {\n        memo = obj[keys ? keys[index] : index];\n        index += dir;\n      }\n      for (; index >= 0 && index < length; index += dir) {\n        var currentKey = keys ? keys[index] : index;\n        memo = iteratee(memo, obj[currentKey], currentKey, obj);\n      }\n      return memo;\n    };\n\n    return function(obj, iteratee, memo, context) {\n      var initial = arguments.length >= 3;\n      return reducer(obj, optimizeCb(iteratee, context, 4), memo, initial);\n    };\n  };\n\n  // **Reduce** builds up a single result from a list of values, aka `inject`,\n  // or `foldl`.\n  _.reduce = _.foldl = _.inject = createReduce(1);\n\n  // The right-associative version of reduce, also known as `foldr`.\n  _.reduceRight = _.foldr = createReduce(-1);\n\n  // Return the first value which passes a truth test. Aliased as `detect`.\n  _.find = _.detect = function(obj, predicate, context) {\n    var keyFinder = isArrayLike(obj) ? _.findIndex : _.findKey;\n    var key = keyFinder(obj, predicate, context);\n    if (key !== void 0 && key !== -1) return obj[key];\n  };\n\n  // Return all the elements that pass a truth test.\n  // Aliased as `select`.\n  _.filter = _.select = function(obj, predicate, context) {\n    var results = [];\n    predicate = cb(predicate, context);\n    _.each(obj, function(value, index, list) {\n      if (predicate(value, index, list)) results.push(value);\n    });\n    return results;\n  };\n\n  // Return all the elements for which a truth test fails.\n  _.reject = function(obj, predicate, context) {\n    return _.filter(obj, _.negate(cb(predicate)), context);\n  };\n\n  // Determine whether all of the elements match a truth test.\n  // Aliased as `all`.\n  _.every = _.all = function(obj, predicate, context) {\n    predicate = cb(predicate, context);\n    var keys = !isArrayLike(obj) && _.keys(obj),\n        length = (keys || obj).length;\n    for (var index = 0; index < length; index++) {\n      var currentKey = keys ? keys[index] : index;\n      if (!predicate(obj[currentKey], currentKey, obj)) return false;\n    }\n    return true;\n  };\n\n  // Determine if at least one element in the object matches a truth test.\n  // Aliased as `any`.\n  _.some = _.any = function(obj, predicate, context) {\n    predicate = cb(predicate, context);\n    var keys = !isArrayLike(obj) && _.keys(obj),\n        length = (keys || obj).length;\n    for (var index = 0; index < length; index++) {\n      var currentKey = keys ? keys[index] : index;\n      if (predicate(obj[currentKey], currentKey, obj)) return true;\n    }\n    return false;\n  };\n\n  // Determine if the array or object contains a given item (using `===`).\n  // Aliased as `includes` and `include`.\n  _.contains = _.includes = _.include = function(obj, item, fromIndex, guard) {\n    if (!isArrayLike(obj)) obj = _.values(obj);\n    if (typeof fromIndex != 'number' || guard) fromIndex = 0;\n    return _.indexOf(obj, item, fromIndex) >= 0;\n  };\n\n  // Invoke a method (with arguments) on every item in a collection.\n  _.invoke = restArguments(function(obj, path, args) {\n    var contextPath, func;\n    if (_.isFunction(path)) {\n      func = path;\n    } else if (_.isArray(path)) {\n      contextPath = path.slice(0, -1);\n      path = path[path.length - 1];\n    }\n    return _.map(obj, function(context) {\n      var method = func;\n      if (!method) {\n        if (contextPath && contextPath.length) {\n          context = deepGet(context, contextPath);\n        }\n        if (context == null) return void 0;\n        method = context[path];\n      }\n      return method == null ? method : method.apply(context, args);\n    });\n  });\n\n  // Convenience version of a common use case of `map`: fetching a property.\n  _.pluck = function(obj, key) {\n    return _.map(obj, _.property(key));\n  };\n\n  // Convenience version of a common use case of `filter`: selecting only objects\n  // containing specific `key:value` pairs.\n  _.where = function(obj, attrs) {\n    return _.filter(obj, _.matcher(attrs));\n  };\n\n  // Convenience version of a common use case of `find`: getting the first object\n  // containing specific `key:value` pairs.\n  _.findWhere = function(obj, attrs) {\n    return _.find(obj, _.matcher(attrs));\n  };\n\n  // Return the maximum element (or element-based computation).\n  _.max = function(obj, iteratee, context) {\n    var result = -Infinity, lastComputed = -Infinity,\n        value, computed;\n    if (iteratee == null || typeof iteratee == 'number' && typeof obj[0] != 'object' && obj != null) {\n      obj = isArrayLike(obj) ? obj : _.values(obj);\n      for (var i = 0, length = obj.length; i < length; i++) {\n        value = obj[i];\n        if (value != null && value > result) {\n          result = value;\n        }\n      }\n    } else {\n      iteratee = cb(iteratee, context);\n      _.each(obj, function(v, index, list) {\n        computed = iteratee(v, index, list);\n        if (computed > lastComputed || computed === -Infinity && result === -Infinity) {\n          result = v;\n          lastComputed = computed;\n        }\n      });\n    }\n    return result;\n  };\n\n  // Return the minimum element (or element-based computation).\n  _.min = function(obj, iteratee, context) {\n    var result = Infinity, lastComputed = Infinity,\n        value, computed;\n    if (iteratee == null || typeof iteratee == 'number' && typeof obj[0] != 'object' && obj != null) {\n      obj = isArrayLike(obj) ? obj : _.values(obj);\n      for (var i = 0, length = obj.length; i < length; i++) {\n        value = obj[i];\n        if (value != null && value < result) {\n          result = value;\n        }\n      }\n    } else {\n      iteratee = cb(iteratee, context);\n      _.each(obj, function(v, index, list) {\n        computed = iteratee(v, index, list);\n        if (computed < lastComputed || computed === Infinity && result === Infinity) {\n          result = v;\n          lastComputed = computed;\n        }\n      });\n    }\n    return result;\n  };\n\n  // Shuffle a collection.\n  _.shuffle = function(obj) {\n    return _.sample(obj, Infinity);\n  };\n\n  // Sample **n** random values from a collection using the modern version of the\n  // [Fisher-Yates shuffle](http://en.wikipedia.org/wiki/Fisher–Yates_shuffle).\n  // If **n** is not specified, returns a single random element.\n  // The internal `guard` argument allows it to work with `map`.\n  _.sample = function(obj, n, guard) {\n    if (n == null || guard) {\n      if (!isArrayLike(obj)) obj = _.values(obj);\n      return obj[_.random(obj.length - 1)];\n    }\n    var sample = isArrayLike(obj) ? _.clone(obj) : _.values(obj);\n    var length = getLength(sample);\n    n = Math.max(Math.min(n, length), 0);\n    var last = length - 1;\n    for (var index = 0; index < n; index++) {\n      var rand = _.random(index, last);\n      var temp = sample[index];\n      sample[index] = sample[rand];\n      sample[rand] = temp;\n    }\n    return sample.slice(0, n);\n  };\n\n  // Sort the object's values by a criterion produced by an iteratee.\n  _.sortBy = function(obj, iteratee, context) {\n    var index = 0;\n    iteratee = cb(iteratee, context);\n    return _.pluck(_.map(obj, function(value, key, list) {\n      return {\n        value: value,\n        index: index++,\n        criteria: iteratee(value, key, list)\n      };\n    }).sort(function(left, right) {\n      var a = left.criteria;\n      var b = right.criteria;\n      if (a !== b) {\n        if (a > b || a === void 0) return 1;\n        if (a < b || b === void 0) return -1;\n      }\n      return left.index - right.index;\n    }), 'value');\n  };\n\n  // An internal function used for aggregate \"group by\" operations.\n  var group = function(behavior, partition) {\n    return function(obj, iteratee, context) {\n      var result = partition ? [[], []] : {};\n      iteratee = cb(iteratee, context);\n      _.each(obj, function(value, index) {\n        var key = iteratee(value, index, obj);\n        behavior(result, value, key);\n      });\n      return result;\n    };\n  };\n\n  // Groups the object's values by a criterion. Pass either a string attribute\n  // to group by, or a function that returns the criterion.\n  _.groupBy = group(function(result, value, key) {\n    if (_.has(result, key)) result[key].push(value); else result[key] = [value];\n  });\n\n  // Indexes the object's values by a criterion, similar to `groupBy`, but for\n  // when you know that your index values will be unique.\n  _.indexBy = group(function(result, value, key) {\n    result[key] = value;\n  });\n\n  // Counts instances of an object that group by a certain criterion. Pass\n  // either a string attribute to count by, or a function that returns the\n  // criterion.\n  _.countBy = group(function(result, value, key) {\n    if (_.has(result, key)) result[key]++; else result[key] = 1;\n  });\n\n  var reStrSymbol = /[^\\ud800-\\udfff]|[\\ud800-\\udbff][\\udc00-\\udfff]|[\\ud800-\\udfff]/g;\n  // Safely create a real, live array from anything iterable.\n  _.toArray = function(obj) {\n    if (!obj) return [];\n    if (_.isArray(obj)) return slice.call(obj);\n    if (_.isString(obj)) {\n      // Keep surrogate pair characters together\n      return obj.match(reStrSymbol);\n    }\n    if (isArrayLike(obj)) return _.map(obj, _.identity);\n    return _.values(obj);\n  };\n\n  // Return the number of elements in an object.\n  _.size = function(obj) {\n    if (obj == null) return 0;\n    return isArrayLike(obj) ? obj.length : _.keys(obj).length;\n  };\n\n  // Split a collection into two arrays: one whose elements all satisfy the given\n  // predicate, and one whose elements all do not satisfy the predicate.\n  _.partition = group(function(result, value, pass) {\n    result[pass ? 0 : 1].push(value);\n  }, true);\n\n  // Array Functions\n  // ---------------\n\n  // Get the first element of an array. Passing **n** will return the first N\n  // values in the array. Aliased as `head` and `take`. The **guard** check\n  // allows it to work with `_.map`.\n  _.first = _.head = _.take = function(array, n, guard) {\n    if (array == null || array.length < 1) return void 0;\n    if (n == null || guard) return array[0];\n    return _.initial(array, array.length - n);\n  };\n\n  // Returns everything but the last entry of the array. Especially useful on\n  // the arguments object. Passing **n** will return all the values in\n  // the array, excluding the last N.\n  _.initial = function(array, n, guard) {\n    return slice.call(array, 0, Math.max(0, array.length - (n == null || guard ? 1 : n)));\n  };\n\n  // Get the last element of an array. Passing **n** will return the last N\n  // values in the array.\n  _.last = function(array, n, guard) {\n    if (array == null || array.length < 1) return void 0;\n    if (n == null || guard) return array[array.length - 1];\n    return _.rest(array, Math.max(0, array.length - n));\n  };\n\n  // Returns everything but the first entry of the array. Aliased as `tail` and `drop`.\n  // Especially useful on the arguments object. Passing an **n** will return\n  // the rest N values in the array.\n  _.rest = _.tail = _.drop = function(array, n, guard) {\n    return slice.call(array, n == null || guard ? 1 : n);\n  };\n\n  // Trim out all falsy values from an array.\n  _.compact = function(array) {\n    return _.filter(array, Boolean);\n  };\n\n  // Internal implementation of a recursive `flatten` function.\n  var flatten = function(input, shallow, strict, output) {\n    output = output || [];\n    var idx = output.length;\n    for (var i = 0, length = getLength(input); i < length; i++) {\n      var value = input[i];\n      if (isArrayLike(value) && (_.isArray(value) || _.isArguments(value))) {\n        // Flatten current level of array or arguments object.\n        if (shallow) {\n          var j = 0, len = value.length;\n          while (j < len) output[idx++] = value[j++];\n        } else {\n          flatten(value, shallow, strict, output);\n          idx = output.length;\n        }\n      } else if (!strict) {\n        output[idx++] = value;\n      }\n    }\n    return output;\n  };\n\n  // Flatten out an array, either recursively (by default), or just one level.\n  _.flatten = function(array, shallow) {\n    return flatten(array, shallow, false);\n  };\n\n  // Return a version of the array that does not contain the specified value(s).\n  _.without = restArguments(function(array, otherArrays) {\n    return _.difference(array, otherArrays);\n  });\n\n  // Produce a duplicate-free version of the array. If the array has already\n  // been sorted, you have the option of using a faster algorithm.\n  // The faster algorithm will not work with an iteratee if the iteratee\n  // is not a one-to-one function, so providing an iteratee will disable\n  // the faster algorithm.\n  // Aliased as `unique`.\n  _.uniq = _.unique = function(array, isSorted, iteratee, context) {\n    if (!_.isBoolean(isSorted)) {\n      context = iteratee;\n      iteratee = isSorted;\n      isSorted = false;\n    }\n    if (iteratee != null) iteratee = cb(iteratee, context);\n    var result = [];\n    var seen = [];\n    for (var i = 0, length = getLength(array); i < length; i++) {\n      var value = array[i],\n          computed = iteratee ? iteratee(value, i, array) : value;\n      if (isSorted && !iteratee) {\n        if (!i || seen !== computed) result.push(value);\n        seen = computed;\n      } else if (iteratee) {\n        if (!_.contains(seen, computed)) {\n          seen.push(computed);\n          result.push(value);\n        }\n      } else if (!_.contains(result, value)) {\n        result.push(value);\n      }\n    }\n    return result;\n  };\n\n  // Produce an array that contains the union: each distinct element from all of\n  // the passed-in arrays.\n  _.union = restArguments(function(arrays) {\n    return _.uniq(flatten(arrays, true, true));\n  });\n\n  // Produce an array that contains every item shared between all the\n  // passed-in arrays.\n  _.intersection = function(array) {\n    var result = [];\n    var argsLength = arguments.length;\n    for (var i = 0, length = getLength(array); i < length; i++) {\n      var item = array[i];\n      if (_.contains(result, item)) continue;\n      var j;\n      for (j = 1; j < argsLength; j++) {\n        if (!_.contains(arguments[j], item)) break;\n      }\n      if (j === argsLength) result.push(item);\n    }\n    return result;\n  };\n\n  // Take the difference between one array and a number of other arrays.\n  // Only the elements present in just the first array will remain.\n  _.difference = restArguments(function(array, rest) {\n    rest = flatten(rest, true, true);\n    return _.filter(array, function(value){\n      return !_.contains(rest, value);\n    });\n  });\n\n  // Complement of _.zip. Unzip accepts an array of arrays and groups\n  // each array's elements on shared indices.\n  _.unzip = function(array) {\n    var length = array && _.max(array, getLength).length || 0;\n    var result = Array(length);\n\n    for (var index = 0; index < length; index++) {\n      result[index] = _.pluck(array, index);\n    }\n    return result;\n  };\n\n  // Zip together multiple lists into a single array -- elements that share\n  // an index go together.\n  _.zip = restArguments(_.unzip);\n\n  // Converts lists into objects. Pass either a single array of `[key, value]`\n  // pairs, or two parallel arrays of the same length -- one of keys, and one of\n  // the corresponding values. Passing by pairs is the reverse of _.pairs.\n  _.object = function(list, values) {\n    var result = {};\n    for (var i = 0, length = getLength(list); i < length; i++) {\n      if (values) {\n        result[list[i]] = values[i];\n      } else {\n        result[list[i][0]] = list[i][1];\n      }\n    }\n    return result;\n  };\n\n  // Generator function to create the findIndex and findLastIndex functions.\n  var createPredicateIndexFinder = function(dir) {\n    return function(array, predicate, context) {\n      predicate = cb(predicate, context);\n      var length = getLength(array);\n      var index = dir > 0 ? 0 : length - 1;\n      for (; index >= 0 && index < length; index += dir) {\n        if (predicate(array[index], index, array)) return index;\n      }\n      return -1;\n    };\n  };\n\n  // Returns the first index on an array-like that passes a predicate test.\n  _.findIndex = createPredicateIndexFinder(1);\n  _.findLastIndex = createPredicateIndexFinder(-1);\n\n  // Use a comparator function to figure out the smallest index at which\n  // an object should be inserted so as to maintain order. Uses binary search.\n  _.sortedIndex = function(array, obj, iteratee, context) {\n    iteratee = cb(iteratee, context, 1);\n    var value = iteratee(obj);\n    var low = 0, high = getLength(array);\n    while (low < high) {\n      var mid = Math.floor((low + high) / 2);\n      if (iteratee(array[mid]) < value) low = mid + 1; else high = mid;\n    }\n    return low;\n  };\n\n  // Generator function to create the indexOf and lastIndexOf functions.\n  var createIndexFinder = function(dir, predicateFind, sortedIndex) {\n    return function(array, item, idx) {\n      var i = 0, length = getLength(array);\n      if (typeof idx == 'number') {\n        if (dir > 0) {\n          i = idx >= 0 ? idx : Math.max(idx + length, i);\n        } else {\n          length = idx >= 0 ? Math.min(idx + 1, length) : idx + length + 1;\n        }\n      } else if (sortedIndex && idx && length) {\n        idx = sortedIndex(array, item);\n        return array[idx] === item ? idx : -1;\n      }\n      if (item !== item) {\n        idx = predicateFind(slice.call(array, i, length), _.isNaN);\n        return idx >= 0 ? idx + i : -1;\n      }\n      for (idx = dir > 0 ? i : length - 1; idx >= 0 && idx < length; idx += dir) {\n        if (array[idx] === item) return idx;\n      }\n      return -1;\n    };\n  };\n\n  // Return the position of the first occurrence of an item in an array,\n  // or -1 if the item is not included in the array.\n  // If the array is large and already in sort order, pass `true`\n  // for **isSorted** to use binary search.\n  _.indexOf = createIndexFinder(1, _.findIndex, _.sortedIndex);\n  _.lastIndexOf = createIndexFinder(-1, _.findLastIndex);\n\n  // Generate an integer Array containing an arithmetic progression. A port of\n  // the native Python `range()` function. See\n  // [the Python documentation](http://docs.python.org/library/functions.html#range).\n  _.range = function(start, stop, step) {\n    if (stop == null) {\n      stop = start || 0;\n      start = 0;\n    }\n    if (!step) {\n      step = stop < start ? -1 : 1;\n    }\n\n    var length = Math.max(Math.ceil((stop - start) / step), 0);\n    var range = Array(length);\n\n    for (var idx = 0; idx < length; idx++, start += step) {\n      range[idx] = start;\n    }\n\n    return range;\n  };\n\n  // Chunk a single array into multiple arrays, each containing `count` or fewer\n  // items.\n  _.chunk = function(array, count) {\n    if (count == null || count < 1) return [];\n    var result = [];\n    var i = 0, length = array.length;\n    while (i < length) {\n      result.push(slice.call(array, i, i += count));\n    }\n    return result;\n  };\n\n  // Function (ahem) Functions\n  // ------------------\n\n  // Determines whether to execute a function as a constructor\n  // or a normal function with the provided arguments.\n  var executeBound = function(sourceFunc, boundFunc, context, callingContext, args) {\n    if (!(callingContext instanceof boundFunc)) return sourceFunc.apply(context, args);\n    var self = baseCreate(sourceFunc.prototype);\n    var result = sourceFunc.apply(self, args);\n    if (_.isObject(result)) return result;\n    return self;\n  };\n\n  // Create a function bound to a given object (assigning `this`, and arguments,\n  // optionally). Delegates to **ECMAScript 5**'s native `Function.bind` if\n  // available.\n  _.bind = restArguments(function(func, context, args) {\n    if (!_.isFunction(func)) throw new TypeError('Bind must be called on a function');\n    var bound = restArguments(function(callArgs) {\n      return executeBound(func, bound, context, this, args.concat(callArgs));\n    });\n    return bound;\n  });\n\n  // Partially apply a function by creating a version that has had some of its\n  // arguments pre-filled, without changing its dynamic `this` context. _ acts\n  // as a placeholder by default, allowing any combination of arguments to be\n  // pre-filled. Set `_.partial.placeholder` for a custom placeholder argument.\n  _.partial = restArguments(function(func, boundArgs) {\n    var placeholder = _.partial.placeholder;\n    var bound = function() {\n      var position = 0, length = boundArgs.length;\n      var args = Array(length);\n      for (var i = 0; i < length; i++) {\n        args[i] = boundArgs[i] === placeholder ? arguments[position++] : boundArgs[i];\n      }\n      while (position < arguments.length) args.push(arguments[position++]);\n      return executeBound(func, bound, this, this, args);\n    };\n    return bound;\n  });\n\n  _.partial.placeholder = _;\n\n  // Bind a number of an object's methods to that object. Remaining arguments\n  // are the method names to be bound. Useful for ensuring that all callbacks\n  // defined on an object belong to it.\n  _.bindAll = restArguments(function(obj, keys) {\n    keys = flatten(keys, false, false);\n    var index = keys.length;\n    if (index < 1) throw new Error('bindAll must be passed function names');\n    while (index--) {\n      var key = keys[index];\n      obj[key] = _.bind(obj[key], obj);\n    }\n  });\n\n  // Memoize an expensive function by storing its results.\n  _.memoize = function(func, hasher) {\n    var memoize = function(key) {\n      var cache = memoize.cache;\n      var address = '' + (hasher ? hasher.apply(this, arguments) : key);\n      if (!_.has(cache, address)) cache[address] = func.apply(this, arguments);\n      return cache[address];\n    };\n    memoize.cache = {};\n    return memoize;\n  };\n\n  // Delays a function for the given number of milliseconds, and then calls\n  // it with the arguments supplied.\n  _.delay = restArguments(function(func, wait, args) {\n    return setTimeout(function() {\n      return func.apply(null, args);\n    }, wait);\n  });\n\n  // Defers a function, scheduling it to run after the current call stack has\n  // cleared.\n  _.defer = _.partial(_.delay, _, 1);\n\n  // Returns a function, that, when invoked, will only be triggered at most once\n  // during a given window of time. Normally, the throttled function will run\n  // as much as it can, without ever going more than once per `wait` duration;\n  // but if you'd like to disable the execution on the leading edge, pass\n  // `{leading: false}`. To disable execution on the trailing edge, ditto.\n  _.throttle = function(func, wait, options) {\n    var timeout, context, args, result;\n    var previous = 0;\n    if (!options) options = {};\n\n    var later = function() {\n      previous = options.leading === false ? 0 : _.now();\n      timeout = null;\n      result = func.apply(context, args);\n      if (!timeout) context = args = null;\n    };\n\n    var throttled = function() {\n      var now = _.now();\n      if (!previous && options.leading === false) previous = now;\n      var remaining = wait - (now - previous);\n      context = this;\n      args = arguments;\n      if (remaining <= 0 || remaining > wait) {\n        if (timeout) {\n          clearTimeout(timeout);\n          timeout = null;\n        }\n        previous = now;\n        result = func.apply(context, args);\n        if (!timeout) context = args = null;\n      } else if (!timeout && options.trailing !== false) {\n        timeout = setTimeout(later, remaining);\n      }\n      return result;\n    };\n\n    throttled.cancel = function() {\n      clearTimeout(timeout);\n      previous = 0;\n      timeout = context = args = null;\n    };\n\n    return throttled;\n  };\n\n  // Returns a function, that, as long as it continues to be invoked, will not\n  // be triggered. The function will be called after it stops being called for\n  // N milliseconds. If `immediate` is passed, trigger the function on the\n  // leading edge, instead of the trailing.\n  _.debounce = function(func, wait, immediate) {\n    var timeout, result;\n\n    var later = function(context, args) {\n      timeout = null;\n      if (args) result = func.apply(context, args);\n    };\n\n    var debounced = restArguments(function(args) {\n      if (timeout) clearTimeout(timeout);\n      if (immediate) {\n        var callNow = !timeout;\n        timeout = setTimeout(later, wait);\n        if (callNow) result = func.apply(this, args);\n      } else {\n        timeout = _.delay(later, wait, this, args);\n      }\n\n      return result;\n    });\n\n    debounced.cancel = function() {\n      clearTimeout(timeout);\n      timeout = null;\n    };\n\n    return debounced;\n  };\n\n  // Returns the first function passed as an argument to the second,\n  // allowing you to adjust arguments, run code before and after, and\n  // conditionally execute the original function.\n  _.wrap = function(func, wrapper) {\n    return _.partial(wrapper, func);\n  };\n\n  // Returns a negated version of the passed-in predicate.\n  _.negate = function(predicate) {\n    return function() {\n      return !predicate.apply(this, arguments);\n    };\n  };\n\n  // Returns a function that is the composition of a list of functions, each\n  // consuming the return value of the function that follows.\n  _.compose = function() {\n    var args = arguments;\n    var start = args.length - 1;\n    return function() {\n      var i = start;\n      var result = args[start].apply(this, arguments);\n      while (i--) result = args[i].call(this, result);\n      return result;\n    };\n  };\n\n  // Returns a function that will only be executed on and after the Nth call.\n  _.after = function(times, func) {\n    return function() {\n      if (--times < 1) {\n        return func.apply(this, arguments);\n      }\n    };\n  };\n\n  // Returns a function that will only be executed up to (but not including) the Nth call.\n  _.before = function(times, func) {\n    var memo;\n    return function() {\n      if (--times > 0) {\n        memo = func.apply(this, arguments);\n      }\n      if (times <= 1) func = null;\n      return memo;\n    };\n  };\n\n  // Returns a function that will be executed at most one time, no matter how\n  // often you call it. Useful for lazy initialization.\n  _.once = _.partial(_.before, 2);\n\n  _.restArguments = restArguments;\n\n  // Object Functions\n  // ----------------\n\n  // Keys in IE < 9 that won't be iterated by `for key in ...` and thus missed.\n  var hasEnumBug = !{toString: null}.propertyIsEnumerable('toString');\n  var nonEnumerableProps = ['valueOf', 'isPrototypeOf', 'toString',\n    'propertyIsEnumerable', 'hasOwnProperty', 'toLocaleString'];\n\n  var collectNonEnumProps = function(obj, keys) {\n    var nonEnumIdx = nonEnumerableProps.length;\n    var constructor = obj.constructor;\n    var proto = _.isFunction(constructor) && constructor.prototype || ObjProto;\n\n    // Constructor is a special case.\n    var prop = 'constructor';\n    if (_.has(obj, prop) && !_.contains(keys, prop)) keys.push(prop);\n\n    while (nonEnumIdx--) {\n      prop = nonEnumerableProps[nonEnumIdx];\n      if (prop in obj && obj[prop] !== proto[prop] && !_.contains(keys, prop)) {\n        keys.push(prop);\n      }\n    }\n  };\n\n  // Retrieve the names of an object's own properties.\n  // Delegates to **ECMAScript 5**'s native `Object.keys`.\n  _.keys = function(obj) {\n    if (!_.isObject(obj)) return [];\n    if (nativeKeys) return nativeKeys(obj);\n    var keys = [];\n    for (var key in obj) if (_.has(obj, key)) keys.push(key);\n    // Ahem, IE < 9.\n    if (hasEnumBug) collectNonEnumProps(obj, keys);\n    return keys;\n  };\n\n  // Retrieve all the property names of an object.\n  _.allKeys = function(obj) {\n    if (!_.isObject(obj)) return [];\n    var keys = [];\n    for (var key in obj) keys.push(key);\n    // Ahem, IE < 9.\n    if (hasEnumBug) collectNonEnumProps(obj, keys);\n    return keys;\n  };\n\n  // Retrieve the values of an object's properties.\n  _.values = function(obj) {\n    var keys = _.keys(obj);\n    var length = keys.length;\n    var values = Array(length);\n    for (var i = 0; i < length; i++) {\n      values[i] = obj[keys[i]];\n    }\n    return values;\n  };\n\n  // Returns the results of applying the iteratee to each element of the object.\n  // In contrast to _.map it returns an object.\n  _.mapObject = function(obj, iteratee, context) {\n    iteratee = cb(iteratee, context);\n    var keys = _.keys(obj),\n        length = keys.length,\n        results = {};\n    for (var index = 0; index < length; index++) {\n      var currentKey = keys[index];\n      results[currentKey] = iteratee(obj[currentKey], currentKey, obj);\n    }\n    return results;\n  };\n\n  // Convert an object into a list of `[key, value]` pairs.\n  // The opposite of _.object.\n  _.pairs = function(obj) {\n    var keys = _.keys(obj);\n    var length = keys.length;\n    var pairs = Array(length);\n    for (var i = 0; i < length; i++) {\n      pairs[i] = [keys[i], obj[keys[i]]];\n    }\n    return pairs;\n  };\n\n  // Invert the keys and values of an object. The values must be serializable.\n  _.invert = function(obj) {\n    var result = {};\n    var keys = _.keys(obj);\n    for (var i = 0, length = keys.length; i < length; i++) {\n      result[obj[keys[i]]] = keys[i];\n    }\n    return result;\n  };\n\n  // Return a sorted list of the function names available on the object.\n  // Aliased as `methods`.\n  _.functions = _.methods = function(obj) {\n    var names = [];\n    for (var key in obj) {\n      if (_.isFunction(obj[key])) names.push(key);\n    }\n    return names.sort();\n  };\n\n  // An internal function for creating assigner functions.\n  var createAssigner = function(keysFunc, defaults) {\n    return function(obj) {\n      var length = arguments.length;\n      if (defaults) obj = Object(obj);\n      if (length < 2 || obj == null) return obj;\n      for (var index = 1; index < length; index++) {\n        var source = arguments[index],\n            keys = keysFunc(source),\n            l = keys.length;\n        for (var i = 0; i < l; i++) {\n          var key = keys[i];\n          if (!defaults || obj[key] === void 0) obj[key] = source[key];\n        }\n      }\n      return obj;\n    };\n  };\n\n  // Extend a given object with all the properties in passed-in object(s).\n  _.extend = createAssigner(_.allKeys);\n\n  // Assigns a given object with all the own properties in the passed-in object(s).\n  // (https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Object/assign)\n  _.extendOwn = _.assign = createAssigner(_.keys);\n\n  // Returns the first key on an object that passes a predicate test.\n  _.findKey = function(obj, predicate, context) {\n    predicate = cb(predicate, context);\n    var keys = _.keys(obj), key;\n    for (var i = 0, length = keys.length; i < length; i++) {\n      key = keys[i];\n      if (predicate(obj[key], key, obj)) return key;\n    }\n  };\n\n  // Internal pick helper function to determine if `obj` has key `key`.\n  var keyInObj = function(value, key, obj) {\n    return key in obj;\n  };\n\n  // Return a copy of the object only containing the whitelisted properties.\n  _.pick = restArguments(function(obj, keys) {\n    var result = {}, iteratee = keys[0];\n    if (obj == null) return result;\n    if (_.isFunction(iteratee)) {\n      if (keys.length > 1) iteratee = optimizeCb(iteratee, keys[1]);\n      keys = _.allKeys(obj);\n    } else {\n      iteratee = keyInObj;\n      keys = flatten(keys, false, false);\n      obj = Object(obj);\n    }\n    for (var i = 0, length = keys.length; i < length; i++) {\n      var key = keys[i];\n      var value = obj[key];\n      if (iteratee(value, key, obj)) result[key] = value;\n    }\n    return result;\n  });\n\n  // Return a copy of the object without the blacklisted properties.\n  _.omit = restArguments(function(obj, keys) {\n    var iteratee = keys[0], context;\n    if (_.isFunction(iteratee)) {\n      iteratee = _.negate(iteratee);\n      if (keys.length > 1) context = keys[1];\n    } else {\n      keys = _.map(flatten(keys, false, false), String);\n      iteratee = function(value, key) {\n        return !_.contains(keys, key);\n      };\n    }\n    return _.pick(obj, iteratee, context);\n  });\n\n  // Fill in a given object with default properties.\n  _.defaults = createAssigner(_.allKeys, true);\n\n  // Creates an object that inherits from the given prototype object.\n  // If additional properties are provided then they will be added to the\n  // created object.\n  _.create = function(prototype, props) {\n    var result = baseCreate(prototype);\n    if (props) _.extendOwn(result, props);\n    return result;\n  };\n\n  // Create a (shallow-cloned) duplicate of an object.\n  _.clone = function(obj) {\n    if (!_.isObject(obj)) return obj;\n    return _.isArray(obj) ? obj.slice() : _.extend({}, obj);\n  };\n\n  // Invokes interceptor with the obj, and then returns obj.\n  // The primary purpose of this method is to \"tap into\" a method chain, in\n  // order to perform operations on intermediate results within the chain.\n  _.tap = function(obj, interceptor) {\n    interceptor(obj);\n    return obj;\n  };\n\n  // Returns whether an object has a given set of `key:value` pairs.\n  _.isMatch = function(object, attrs) {\n    var keys = _.keys(attrs), length = keys.length;\n    if (object == null) return !length;\n    var obj = Object(object);\n    for (var i = 0; i < length; i++) {\n      var key = keys[i];\n      if (attrs[key] !== obj[key] || !(key in obj)) return false;\n    }\n    return true;\n  };\n\n\n  // Internal recursive comparison function for `isEqual`.\n  var eq, deepEq;\n  eq = function(a, b, aStack, bStack) {\n    // Identical objects are equal. `0 === -0`, but they aren't identical.\n    // See the [Harmony `egal` proposal](http://wiki.ecmascript.org/doku.php?id=harmony:egal).\n    if (a === b) return a !== 0 || 1 / a === 1 / b;\n    // `null` or `undefined` only equal to itself (strict comparison).\n    if (a == null || b == null) return false;\n    // `NaN`s are equivalent, but non-reflexive.\n    if (a !== a) return b !== b;\n    // Exhaust primitive checks\n    var type = typeof a;\n    if (type !== 'function' && type !== 'object' && typeof b != 'object') return false;\n    return deepEq(a, b, aStack, bStack);\n  };\n\n  // Internal recursive comparison function for `isEqual`.\n  deepEq = function(a, b, aStack, bStack) {\n    // Unwrap any wrapped objects.\n    if (a instanceof _) a = a._wrapped;\n    if (b instanceof _) b = b._wrapped;\n    // Compare `[[Class]]` names.\n    var className = toString.call(a);\n    if (className !== toString.call(b)) return false;\n    switch (className) {\n      // Strings, numbers, regular expressions, dates, and booleans are compared by value.\n      case '[object RegExp]':\n      // RegExps are coerced to strings for comparison (Note: '' + /a/i === '/a/i')\n      case '[object String]':\n        // Primitives and their corresponding object wrappers are equivalent; thus, `\"5\"` is\n        // equivalent to `new String(\"5\")`.\n        return '' + a === '' + b;\n      case '[object Number]':\n        // `NaN`s are equivalent, but non-reflexive.\n        // Object(NaN) is equivalent to NaN.\n        if (+a !== +a) return +b !== +b;\n        // An `egal` comparison is performed for other numeric values.\n        return +a === 0 ? 1 / +a === 1 / b : +a === +b;\n      case '[object Date]':\n      case '[object Boolean]':\n        // Coerce dates and booleans to numeric primitive values. Dates are compared by their\n        // millisecond representations. Note that invalid dates with millisecond representations\n        // of `NaN` are not equivalent.\n        return +a === +b;\n      case '[object Symbol]':\n        return SymbolProto.valueOf.call(a) === SymbolProto.valueOf.call(b);\n    }\n\n    var areArrays = className === '[object Array]';\n    if (!areArrays) {\n      if (typeof a != 'object' || typeof b != 'object') return false;\n\n      // Objects with different constructors are not equivalent, but `Object`s or `Array`s\n      // from different frames are.\n      var aCtor = a.constructor, bCtor = b.constructor;\n      if (aCtor !== bCtor && !(_.isFunction(aCtor) && aCtor instanceof aCtor &&\n                               _.isFunction(bCtor) && bCtor instanceof bCtor)\n                          && ('constructor' in a && 'constructor' in b)) {\n        return false;\n      }\n    }\n    // Assume equality for cyclic structures. The algorithm for detecting cyclic\n    // structures is adapted from ES 5.1 section 15.12.3, abstract operation `JO`.\n\n    // Initializing stack of traversed objects.\n    // It's done here since we only need them for objects and arrays comparison.\n    aStack = aStack || [];\n    bStack = bStack || [];\n    var length = aStack.length;\n    while (length--) {\n      // Linear search. Performance is inversely proportional to the number of\n      // unique nested structures.\n      if (aStack[length] === a) return bStack[length] === b;\n    }\n\n    // Add the first object to the stack of traversed objects.\n    aStack.push(a);\n    bStack.push(b);\n\n    // Recursively compare objects and arrays.\n    if (areArrays) {\n      // Compare array lengths to determine if a deep comparison is necessary.\n      length = a.length;\n      if (length !== b.length) return false;\n      // Deep compare the contents, ignoring non-numeric properties.\n      while (length--) {\n        if (!eq(a[length], b[length], aStack, bStack)) return false;\n      }\n    } else {\n      // Deep compare objects.\n      var keys = _.keys(a), key;\n      length = keys.length;\n      // Ensure that both objects contain the same number of properties before comparing deep equality.\n      if (_.keys(b).length !== length) return false;\n      while (length--) {\n        // Deep compare each member\n        key = keys[length];\n        if (!(_.has(b, key) && eq(a[key], b[key], aStack, bStack))) return false;\n      }\n    }\n    // Remove the first object from the stack of traversed objects.\n    aStack.pop();\n    bStack.pop();\n    return true;\n  };\n\n  // Perform a deep comparison to check if two objects are equal.\n  _.isEqual = function(a, b) {\n    return eq(a, b);\n  };\n\n  // Is a given array, string, or object empty?\n  // An \"empty\" object has no enumerable own-properties.\n  _.isEmpty = function(obj) {\n    if (obj == null) return true;\n    if (isArrayLike(obj) && (_.isArray(obj) || _.isString(obj) || _.isArguments(obj))) return obj.length === 0;\n    return _.keys(obj).length === 0;\n  };\n\n  // Is a given value a DOM element?\n  _.isElement = function(obj) {\n    return !!(obj && obj.nodeType === 1);\n  };\n\n  // Is a given value an array?\n  // Delegates to ECMA5's native Array.isArray\n  _.isArray = nativeIsArray || function(obj) {\n    return toString.call(obj) === '[object Array]';\n  };\n\n  // Is a given variable an object?\n  _.isObject = function(obj) {\n    var type = typeof obj;\n    return type === 'function' || type === 'object' && !!obj;\n  };\n\n  // Add some isType methods: isArguments, isFunction, isString, isNumber, isDate, isRegExp, isError, isMap, isWeakMap, isSet, isWeakSet.\n  _.each(['Arguments', 'Function', 'String', 'Number', 'Date', 'RegExp', 'Error', 'Symbol', 'Map', 'WeakMap', 'Set', 'WeakSet'], function(name) {\n    _['is' + name] = function(obj) {\n      return toString.call(obj) === '[object ' + name + ']';\n    };\n  });\n\n  // Define a fallback version of the method in browsers (ahem, IE < 9), where\n  // there isn't any inspectable \"Arguments\" type.\n  if (!_.isArguments(arguments)) {\n    _.isArguments = function(obj) {\n      return _.has(obj, 'callee');\n    };\n  }\n\n  // Optimize `isFunction` if appropriate. Work around some typeof bugs in old v8,\n  // IE 11 (#1621), Safari 8 (#1929), and PhantomJS (#2236).\n  var nodelist = root.document && root.document.childNodes;\n  if ( true && typeof Int8Array != 'object' && typeof nodelist != 'function') {\n    _.isFunction = function(obj) {\n      return typeof obj == 'function' || false;\n    };\n  }\n\n  // Is a given object a finite number?\n  _.isFinite = function(obj) {\n    return !_.isSymbol(obj) && isFinite(obj) && !isNaN(parseFloat(obj));\n  };\n\n  // Is the given value `NaN`?\n  _.isNaN = function(obj) {\n    return _.isNumber(obj) && isNaN(obj);\n  };\n\n  // Is a given value a boolean?\n  _.isBoolean = function(obj) {\n    return obj === true || obj === false || toString.call(obj) === '[object Boolean]';\n  };\n\n  // Is a given value equal to null?\n  _.isNull = function(obj) {\n    return obj === null;\n  };\n\n  // Is a given variable undefined?\n  _.isUndefined = function(obj) {\n    return obj === void 0;\n  };\n\n  // Shortcut function for checking if an object has a given property directly\n  // on itself (in other words, not on a prototype).\n  _.has = function(obj, path) {\n    if (!_.isArray(path)) {\n      return obj != null && hasOwnProperty.call(obj, path);\n    }\n    var length = path.length;\n    for (var i = 0; i < length; i++) {\n      var key = path[i];\n      if (obj == null || !hasOwnProperty.call(obj, key)) {\n        return false;\n      }\n      obj = obj[key];\n    }\n    return !!length;\n  };\n\n  // Utility Functions\n  // -----------------\n\n  // Run Underscore.js in *noConflict* mode, returning the `_` variable to its\n  // previous owner. Returns a reference to the Underscore object.\n  _.noConflict = function() {\n    root._ = previousUnderscore;\n    return this;\n  };\n\n  // Keep the identity function around for default iteratees.\n  _.identity = function(value) {\n    return value;\n  };\n\n  // Predicate-generating functions. Often useful outside of Underscore.\n  _.constant = function(value) {\n    return function() {\n      return value;\n    };\n  };\n\n  _.noop = function(){};\n\n  // Creates a function that, when passed an object, will traverse that object’s\n  // properties down the given `path`, specified as an array of keys or indexes.\n  _.property = function(path) {\n    if (!_.isArray(path)) {\n      return shallowProperty(path);\n    }\n    return function(obj) {\n      return deepGet(obj, path);\n    };\n  };\n\n  // Generates a function for a given object that returns a given property.\n  _.propertyOf = function(obj) {\n    if (obj == null) {\n      return function(){};\n    }\n    return function(path) {\n      return !_.isArray(path) ? obj[path] : deepGet(obj, path);\n    };\n  };\n\n  // Returns a predicate for checking whether an object has a given set of\n  // `key:value` pairs.\n  _.matcher = _.matches = function(attrs) {\n    attrs = _.extendOwn({}, attrs);\n    return function(obj) {\n      return _.isMatch(obj, attrs);\n    };\n  };\n\n  // Run a function **n** times.\n  _.times = function(n, iteratee, context) {\n    var accum = Array(Math.max(0, n));\n    iteratee = optimizeCb(iteratee, context, 1);\n    for (var i = 0; i < n; i++) accum[i] = iteratee(i);\n    return accum;\n  };\n\n  // Return a random integer between min and max (inclusive).\n  _.random = function(min, max) {\n    if (max == null) {\n      max = min;\n      min = 0;\n    }\n    return min + Math.floor(Math.random() * (max - min + 1));\n  };\n\n  // A (possibly faster) way to get the current timestamp as an integer.\n  _.now = Date.now || function() {\n    return new Date().getTime();\n  };\n\n  // List of HTML entities for escaping.\n  var escapeMap = {\n    '&': '&amp;',\n    '<': '&lt;',\n    '>': '&gt;',\n    '\"': '&quot;',\n    \"'\": '&#x27;',\n    '`': '&#x60;'\n  };\n  var unescapeMap = _.invert(escapeMap);\n\n  // Functions for escaping and unescaping strings to/from HTML interpolation.\n  var createEscaper = function(map) {\n    var escaper = function(match) {\n      return map[match];\n    };\n    // Regexes for identifying a key that needs to be escaped.\n    var source = '(?:' + _.keys(map).join('|') + ')';\n    var testRegexp = RegExp(source);\n    var replaceRegexp = RegExp(source, 'g');\n    return function(string) {\n      string = string == null ? '' : '' + string;\n      return testRegexp.test(string) ? string.replace(replaceRegexp, escaper) : string;\n    };\n  };\n  _.escape = createEscaper(escapeMap);\n  _.unescape = createEscaper(unescapeMap);\n\n  // Traverses the children of `obj` along `path`. If a child is a function, it\n  // is invoked with its parent as context. Returns the value of the final\n  // child, or `fallback` if any child is undefined.\n  _.result = function(obj, path, fallback) {\n    if (!_.isArray(path)) path = [path];\n    var length = path.length;\n    if (!length) {\n      return _.isFunction(fallback) ? fallback.call(obj) : fallback;\n    }\n    for (var i = 0; i < length; i++) {\n      var prop = obj == null ? void 0 : obj[path[i]];\n      if (prop === void 0) {\n        prop = fallback;\n        i = length; // Ensure we don't continue iterating.\n      }\n      obj = _.isFunction(prop) ? prop.call(obj) : prop;\n    }\n    return obj;\n  };\n\n  // Generate a unique integer id (unique within the entire client session).\n  // Useful for temporary DOM ids.\n  var idCounter = 0;\n  _.uniqueId = function(prefix) {\n    var id = ++idCounter + '';\n    return prefix ? prefix + id : id;\n  };\n\n  // By default, Underscore uses ERB-style template delimiters, change the\n  // following template settings to use alternative delimiters.\n  _.templateSettings = {\n    evaluate: /<%([\\s\\S]+?)%>/g,\n    interpolate: /<%=([\\s\\S]+?)%>/g,\n    escape: /<%-([\\s\\S]+?)%>/g\n  };\n\n  // When customizing `templateSettings`, if you don't want to define an\n  // interpolation, evaluation or escaping regex, we need one that is\n  // guaranteed not to match.\n  var noMatch = /(.)^/;\n\n  // Certain characters need to be escaped so that they can be put into a\n  // string literal.\n  var escapes = {\n    \"'\": \"'\",\n    '\\\\': '\\\\',\n    '\\r': 'r',\n    '\\n': 'n',\n    '\\u2028': 'u2028',\n    '\\u2029': 'u2029'\n  };\n\n  var escapeRegExp = /\\\\|'|\\r|\\n|\\u2028|\\u2029/g;\n\n  var escapeChar = function(match) {\n    return '\\\\' + escapes[match];\n  };\n\n  // JavaScript micro-templating, similar to John Resig's implementation.\n  // Underscore templating handles arbitrary delimiters, preserves whitespace,\n  // and correctly escapes quotes within interpolated code.\n  // NB: `oldSettings` only exists for backwards compatibility.\n  _.template = function(text, settings, oldSettings) {\n    if (!settings && oldSettings) settings = oldSettings;\n    settings = _.defaults({}, settings, _.templateSettings);\n\n    // Combine delimiters into one regular expression via alternation.\n    var matcher = RegExp([\n      (settings.escape || noMatch).source,\n      (settings.interpolate || noMatch).source,\n      (settings.evaluate || noMatch).source\n    ].join('|') + '|$', 'g');\n\n    // Compile the template source, escaping string literals appropriately.\n    var index = 0;\n    var source = \"__p+='\";\n    text.replace(matcher, function(match, escape, interpolate, evaluate, offset) {\n      source += text.slice(index, offset).replace(escapeRegExp, escapeChar);\n      index = offset + match.length;\n\n      if (escape) {\n        source += \"'+\\n((__t=(\" + escape + \"))==null?'':_.escape(__t))+\\n'\";\n      } else if (interpolate) {\n        source += \"'+\\n((__t=(\" + interpolate + \"))==null?'':__t)+\\n'\";\n      } else if (evaluate) {\n        source += \"';\\n\" + evaluate + \"\\n__p+='\";\n      }\n\n      // Adobe VMs need the match returned to produce the correct offset.\n      return match;\n    });\n    source += \"';\\n\";\n\n    // If a variable is not specified, place data values in local scope.\n    if (!settings.variable) source = 'with(obj||{}){\\n' + source + '}\\n';\n\n    source = \"var __t,__p='',__j=Array.prototype.join,\" +\n      \"print=function(){__p+=__j.call(arguments,'');};\\n\" +\n      source + 'return __p;\\n';\n\n    var render;\n    try {\n      render = new Function(settings.variable || 'obj', '_', source);\n    } catch (e) {\n      e.source = source;\n      throw e;\n    }\n\n    var template = function(data) {\n      return render.call(this, data, _);\n    };\n\n    // Provide the compiled source as a convenience for precompilation.\n    var argument = settings.variable || 'obj';\n    template.source = 'function(' + argument + '){\\n' + source + '}';\n\n    return template;\n  };\n\n  // Add a \"chain\" function. Start chaining a wrapped Underscore object.\n  _.chain = function(obj) {\n    var instance = _(obj);\n    instance._chain = true;\n    return instance;\n  };\n\n  // OOP\n  // ---------------\n  // If Underscore is called as a function, it returns a wrapped object that\n  // can be used OO-style. This wrapper holds altered versions of all the\n  // underscore functions. Wrapped objects may be chained.\n\n  // Helper function to continue chaining intermediate results.\n  var chainResult = function(instance, obj) {\n    return instance._chain ? _(obj).chain() : obj;\n  };\n\n  // Add your own custom functions to the Underscore object.\n  _.mixin = function(obj) {\n    _.each(_.functions(obj), function(name) {\n      var func = _[name] = obj[name];\n      _.prototype[name] = function() {\n        var args = [this._wrapped];\n        push.apply(args, arguments);\n        return chainResult(this, func.apply(_, args));\n      };\n    });\n    return _;\n  };\n\n  // Add all of the Underscore functions to the wrapper object.\n  _.mixin(_);\n\n  // Add all mutator Array functions to the wrapper.\n  _.each(['pop', 'push', 'reverse', 'shift', 'sort', 'splice', 'unshift'], function(name) {\n    var method = ArrayProto[name];\n    _.prototype[name] = function() {\n      var obj = this._wrapped;\n      method.apply(obj, arguments);\n      if ((name === 'shift' || name === 'splice') && obj.length === 0) delete obj[0];\n      return chainResult(this, obj);\n    };\n  });\n\n  // Add all accessor Array functions to the wrapper.\n  _.each(['concat', 'join', 'slice'], function(name) {\n    var method = ArrayProto[name];\n    _.prototype[name] = function() {\n      return chainResult(this, method.apply(this._wrapped, arguments));\n    };\n  });\n\n  // Extracts the result from a wrapped and chained object.\n  _.prototype.value = function() {\n    return this._wrapped;\n  };\n\n  // Provide unwrapping proxy for some methods used in engine operations\n  // such as arithmetic and JSON stringification.\n  _.prototype.valueOf = _.prototype.toJSON = _.prototype.value;\n\n  _.prototype.toString = function() {\n    return String(this._wrapped);\n  };\n\n  // AMD registration happens at the end for compatibility with AMD loaders\n  // that may not enforce next-turn semantics on modules. Even though general\n  // practice for AMD registration is to be anonymous, underscore registers\n  // as a named module because, like jQuery, it is a base library that is\n  // popular enough to be bundled in a third party lib, but not be part of\n  // an AMD load request. Those cases could generate an error when an\n  // anonymous define() is called outside of a loader request.\n  if (true) {\n    !(__WEBPACK_AMD_DEFINE_ARRAY__ = [], __WEBPACK_AMD_DEFINE_RESULT__ = (function() {\n      return _;\n    }).apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n  }\n}());\n\n/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(17), __webpack_require__(18)(module)))//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMi5qcyIsInNvdXJjZXMiOlsid2VicGFjazovL0A5MWFwcC9uaW5leWkubGliLnNwYXJrY29yZS8uL25vZGVfbW9kdWxlcy91bmRlcnNjb3JlL3VuZGVyc2NvcmUuanM/MTdmYiJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyAgICAgVW5kZXJzY29yZS5qcyAxLjkuMFxuLy8gICAgIGh0dHA6Ly91bmRlcnNjb3JlanMub3JnXG4vLyAgICAgKGMpIDIwMDktMjAxOCBKZXJlbXkgQXNoa2VuYXMsIERvY3VtZW50Q2xvdWQgYW5kIEludmVzdGlnYXRpdmUgUmVwb3J0ZXJzICYgRWRpdG9yc1xuLy8gICAgIFVuZGVyc2NvcmUgbWF5IGJlIGZyZWVseSBkaXN0cmlidXRlZCB1bmRlciB0aGUgTUlUIGxpY2Vuc2UuXG5cbihmdW5jdGlvbigpIHtcblxuICAvLyBCYXNlbGluZSBzZXR1cFxuICAvLyAtLS0tLS0tLS0tLS0tLVxuXG4gIC8vIEVzdGFibGlzaCB0aGUgcm9vdCBvYmplY3QsIGB3aW5kb3dgIChgc2VsZmApIGluIHRoZSBicm93c2VyLCBgZ2xvYmFsYFxuICAvLyBvbiB0aGUgc2VydmVyLCBvciBgdGhpc2AgaW4gc29tZSB2aXJ0dWFsIG1hY2hpbmVzLiBXZSB1c2UgYHNlbGZgXG4gIC8vIGluc3RlYWQgb2YgYHdpbmRvd2AgZm9yIGBXZWJXb3JrZXJgIHN1cHBvcnQuXG4gIHZhciByb290ID0gdHlwZW9mIHNlbGYgPT0gJ29iamVjdCcgJiYgc2VsZi5zZWxmID09PSBzZWxmICYmIHNlbGYgfHxcbiAgICAgICAgICAgIHR5cGVvZiBnbG9iYWwgPT0gJ29iamVjdCcgJiYgZ2xvYmFsLmdsb2JhbCA9PT0gZ2xvYmFsICYmIGdsb2JhbCB8fFxuICAgICAgICAgICAgdGhpcyB8fFxuICAgICAgICAgICAge307XG5cbiAgLy8gU2F2ZSB0aGUgcHJldmlvdXMgdmFsdWUgb2YgdGhlIGBfYCB2YXJpYWJsZS5cbiAgdmFyIHByZXZpb3VzVW5kZXJzY29yZSA9IHJvb3QuXztcblxuICAvLyBTYXZlIGJ5dGVzIGluIHRoZSBtaW5pZmllZCAoYnV0IG5vdCBnemlwcGVkKSB2ZXJzaW9uOlxuICB2YXIgQXJyYXlQcm90byA9IEFycmF5LnByb3RvdHlwZSwgT2JqUHJvdG8gPSBPYmplY3QucHJvdG90eXBlO1xuICB2YXIgU3ltYm9sUHJvdG8gPSB0eXBlb2YgU3ltYm9sICE9PSAndW5kZWZpbmVkJyA/IFN5bWJvbC5wcm90b3R5cGUgOiBudWxsO1xuXG4gIC8vIENyZWF0ZSBxdWljayByZWZlcmVuY2UgdmFyaWFibGVzIGZvciBzcGVlZCBhY2Nlc3MgdG8gY29yZSBwcm90b3R5cGVzLlxuICB2YXIgcHVzaCA9IEFycmF5UHJvdG8ucHVzaCxcbiAgICAgIHNsaWNlID0gQXJyYXlQcm90by5zbGljZSxcbiAgICAgIHRvU3RyaW5nID0gT2JqUHJvdG8udG9TdHJpbmcsXG4gICAgICBoYXNPd25Qcm9wZXJ0eSA9IE9ialByb3RvLmhhc093blByb3BlcnR5O1xuXG4gIC8vIEFsbCAqKkVDTUFTY3JpcHQgNSoqIG5hdGl2ZSBmdW5jdGlvbiBpbXBsZW1lbnRhdGlvbnMgdGhhdCB3ZSBob3BlIHRvIHVzZVxuICAvLyBhcmUgZGVjbGFyZWQgaGVyZS5cbiAgdmFyIG5hdGl2ZUlzQXJyYXkgPSBBcnJheS5pc0FycmF5LFxuICAgICAgbmF0aXZlS2V5cyA9IE9iamVjdC5rZXlzLFxuICAgICAgbmF0aXZlQ3JlYXRlID0gT2JqZWN0LmNyZWF0ZTtcblxuICAvLyBOYWtlZCBmdW5jdGlvbiByZWZlcmVuY2UgZm9yIHN1cnJvZ2F0ZS1wcm90b3R5cGUtc3dhcHBpbmcuXG4gIHZhciBDdG9yID0gZnVuY3Rpb24oKXt9O1xuXG4gIC8vIENyZWF0ZSBhIHNhZmUgcmVmZXJlbmNlIHRvIHRoZSBVbmRlcnNjb3JlIG9iamVjdCBmb3IgdXNlIGJlbG93LlxuICB2YXIgXyA9IGZ1bmN0aW9uKG9iaikge1xuICAgIGlmIChvYmogaW5zdGFuY2VvZiBfKSByZXR1cm4gb2JqO1xuICAgIGlmICghKHRoaXMgaW5zdGFuY2VvZiBfKSkgcmV0dXJuIG5ldyBfKG9iaik7XG4gICAgdGhpcy5fd3JhcHBlZCA9IG9iajtcbiAgfTtcblxuICAvLyBFeHBvcnQgdGhlIFVuZGVyc2NvcmUgb2JqZWN0IGZvciAqKk5vZGUuanMqKiwgd2l0aFxuICAvLyBiYWNrd2FyZHMtY29tcGF0aWJpbGl0eSBmb3IgdGhlaXIgb2xkIG1vZHVsZSBBUEkuIElmIHdlJ3JlIGluXG4gIC8vIHRoZSBicm93c2VyLCBhZGQgYF9gIGFzIGEgZ2xvYmFsIG9iamVjdC5cbiAgLy8gKGBub2RlVHlwZWAgaXMgY2hlY2tlZCB0byBlbnN1cmUgdGhhdCBgbW9kdWxlYFxuICAvLyBhbmQgYGV4cG9ydHNgIGFyZSBub3QgSFRNTCBlbGVtZW50cy4pXG4gIGlmICh0eXBlb2YgZXhwb3J0cyAhPSAndW5kZWZpbmVkJyAmJiAhZXhwb3J0cy5ub2RlVHlwZSkge1xuICAgIGlmICh0eXBlb2YgbW9kdWxlICE9ICd1bmRlZmluZWQnICYmICFtb2R1bGUubm9kZVR5cGUgJiYgbW9kdWxlLmV4cG9ydHMpIHtcbiAgICAgIGV4cG9ydHMgPSBtb2R1bGUuZXhwb3J0cyA9IF87XG4gICAgfVxuICAgIGV4cG9ydHMuXyA9IF87XG4gIH0gZWxzZSB7XG4gICAgcm9vdC5fID0gXztcbiAgfVxuXG4gIC8vIEN1cnJlbnQgdmVyc2lvbi5cbiAgXy5WRVJTSU9OID0gJzEuOS4wJztcblxuICAvLyBJbnRlcm5hbCBmdW5jdGlvbiB0aGF0IHJldHVybnMgYW4gZWZmaWNpZW50IChmb3IgY3VycmVudCBlbmdpbmVzKSB2ZXJzaW9uXG4gIC8vIG9mIHRoZSBwYXNzZWQtaW4gY2FsbGJhY2ssIHRvIGJlIHJlcGVhdGVkbHkgYXBwbGllZCBpbiBvdGhlciBVbmRlcnNjb3JlXG4gIC8vIGZ1bmN0aW9ucy5cbiAgdmFyIG9wdGltaXplQ2IgPSBmdW5jdGlvbihmdW5jLCBjb250ZXh0LCBhcmdDb3VudCkge1xuICAgIGlmIChjb250ZXh0ID09PSB2b2lkIDApIHJldHVybiBmdW5jO1xuICAgIHN3aXRjaCAoYXJnQ291bnQgPT0gbnVsbCA/IDMgOiBhcmdDb3VudCkge1xuICAgICAgY2FzZSAxOiByZXR1cm4gZnVuY3Rpb24odmFsdWUpIHtcbiAgICAgICAgcmV0dXJuIGZ1bmMuY2FsbChjb250ZXh0LCB2YWx1ZSk7XG4gICAgICB9O1xuICAgICAgLy8gVGhlIDItYXJndW1lbnQgY2FzZSBpcyBvbWl0dGVkIGJlY2F1c2Ugd2XigJlyZSBub3QgdXNpbmcgaXQuXG4gICAgICBjYXNlIDM6IHJldHVybiBmdW5jdGlvbih2YWx1ZSwgaW5kZXgsIGNvbGxlY3Rpb24pIHtcbiAgICAgICAgcmV0dXJuIGZ1bmMuY2FsbChjb250ZXh0LCB2YWx1ZSwgaW5kZXgsIGNvbGxlY3Rpb24pO1xuICAgICAgfTtcbiAgICAgIGNhc2UgNDogcmV0dXJuIGZ1bmN0aW9uKGFjY3VtdWxhdG9yLCB2YWx1ZSwgaW5kZXgsIGNvbGxlY3Rpb24pIHtcbiAgICAgICAgcmV0dXJuIGZ1bmMuY2FsbChjb250ZXh0LCBhY2N1bXVsYXRvciwgdmFsdWUsIGluZGV4LCBjb2xsZWN0aW9uKTtcbiAgICAgIH07XG4gICAgfVxuICAgIHJldHVybiBmdW5jdGlvbigpIHtcbiAgICAgIHJldHVybiBmdW5jLmFwcGx5KGNvbnRleHQsIGFyZ3VtZW50cyk7XG4gICAgfTtcbiAgfTtcblxuICB2YXIgYnVpbHRpbkl0ZXJhdGVlO1xuXG4gIC8vIEFuIGludGVybmFsIGZ1bmN0aW9uIHRvIGdlbmVyYXRlIGNhbGxiYWNrcyB0aGF0IGNhbiBiZSBhcHBsaWVkIHRvIGVhY2hcbiAgLy8gZWxlbWVudCBpbiBhIGNvbGxlY3Rpb24sIHJldHVybmluZyB0aGUgZGVzaXJlZCByZXN1bHQg4oCUIGVpdGhlciBgaWRlbnRpdHlgLFxuICAvLyBhbiBhcmJpdHJhcnkgY2FsbGJhY2ssIGEgcHJvcGVydHkgbWF0Y2hlciwgb3IgYSBwcm9wZXJ0eSBhY2Nlc3Nvci5cbiAgdmFyIGNiID0gZnVuY3Rpb24odmFsdWUsIGNvbnRleHQsIGFyZ0NvdW50KSB7XG4gICAgaWYgKF8uaXRlcmF0ZWUgIT09IGJ1aWx0aW5JdGVyYXRlZSkgcmV0dXJuIF8uaXRlcmF0ZWUodmFsdWUsIGNvbnRleHQpO1xuICAgIGlmICh2YWx1ZSA9PSBudWxsKSByZXR1cm4gXy5pZGVudGl0eTtcbiAgICBpZiAoXy5pc0Z1bmN0aW9uKHZhbHVlKSkgcmV0dXJuIG9wdGltaXplQ2IodmFsdWUsIGNvbnRleHQsIGFyZ0NvdW50KTtcbiAgICBpZiAoXy5pc09iamVjdCh2YWx1ZSkgJiYgIV8uaXNBcnJheSh2YWx1ZSkpIHJldHVybiBfLm1hdGNoZXIodmFsdWUpO1xuICAgIHJldHVybiBfLnByb3BlcnR5KHZhbHVlKTtcbiAgfTtcblxuICAvLyBFeHRlcm5hbCB3cmFwcGVyIGZvciBvdXIgY2FsbGJhY2sgZ2VuZXJhdG9yLiBVc2VycyBtYXkgY3VzdG9taXplXG4gIC8vIGBfLml0ZXJhdGVlYCBpZiB0aGV5IHdhbnQgYWRkaXRpb25hbCBwcmVkaWNhdGUvaXRlcmF0ZWUgc2hvcnRoYW5kIHN0eWxlcy5cbiAgLy8gVGhpcyBhYnN0cmFjdGlvbiBoaWRlcyB0aGUgaW50ZXJuYWwtb25seSBhcmdDb3VudCBhcmd1bWVudC5cbiAgXy5pdGVyYXRlZSA9IGJ1aWx0aW5JdGVyYXRlZSA9IGZ1bmN0aW9uKHZhbHVlLCBjb250ZXh0KSB7XG4gICAgcmV0dXJuIGNiKHZhbHVlLCBjb250ZXh0LCBJbmZpbml0eSk7XG4gIH07XG5cbiAgLy8gU29tZSBmdW5jdGlvbnMgdGFrZSBhIHZhcmlhYmxlIG51bWJlciBvZiBhcmd1bWVudHMsIG9yIGEgZmV3IGV4cGVjdGVkXG4gIC8vIGFyZ3VtZW50cyBhdCB0aGUgYmVnaW5uaW5nIGFuZCB0aGVuIGEgdmFyaWFibGUgbnVtYmVyIG9mIHZhbHVlcyB0byBvcGVyYXRlXG4gIC8vIG9uLiBUaGlzIGhlbHBlciBhY2N1bXVsYXRlcyBhbGwgcmVtYWluaW5nIGFyZ3VtZW50cyBwYXN0IHRoZSBmdW5jdGlvbuKAmXNcbiAgLy8gYXJndW1lbnQgbGVuZ3RoIChvciBhbiBleHBsaWNpdCBgc3RhcnRJbmRleGApLCBpbnRvIGFuIGFycmF5IHRoYXQgYmVjb21lc1xuICAvLyB0aGUgbGFzdCBhcmd1bWVudC4gU2ltaWxhciB0byBFUzbigJlzIFwicmVzdCBwYXJhbWV0ZXJcIi5cbiAgdmFyIHJlc3RBcmd1bWVudHMgPSBmdW5jdGlvbihmdW5jLCBzdGFydEluZGV4KSB7XG4gICAgc3RhcnRJbmRleCA9IHN0YXJ0SW5kZXggPT0gbnVsbCA/IGZ1bmMubGVuZ3RoIC0gMSA6ICtzdGFydEluZGV4O1xuICAgIHJldHVybiBmdW5jdGlvbigpIHtcbiAgICAgIHZhciBsZW5ndGggPSBNYXRoLm1heChhcmd1bWVudHMubGVuZ3RoIC0gc3RhcnRJbmRleCwgMCksXG4gICAgICAgICAgcmVzdCA9IEFycmF5KGxlbmd0aCksXG4gICAgICAgICAgaW5kZXggPSAwO1xuICAgICAgZm9yICg7IGluZGV4IDwgbGVuZ3RoOyBpbmRleCsrKSB7XG4gICAgICAgIHJlc3RbaW5kZXhdID0gYXJndW1lbnRzW2luZGV4ICsgc3RhcnRJbmRleF07XG4gICAgICB9XG4gICAgICBzd2l0Y2ggKHN0YXJ0SW5kZXgpIHtcbiAgICAgICAgY2FzZSAwOiByZXR1cm4gZnVuYy5jYWxsKHRoaXMsIHJlc3QpO1xuICAgICAgICBjYXNlIDE6IHJldHVybiBmdW5jLmNhbGwodGhpcywgYXJndW1lbnRzWzBdLCByZXN0KTtcbiAgICAgICAgY2FzZSAyOiByZXR1cm4gZnVuYy5jYWxsKHRoaXMsIGFyZ3VtZW50c1swXSwgYXJndW1lbnRzWzFdLCByZXN0KTtcbiAgICAgIH1cbiAgICAgIHZhciBhcmdzID0gQXJyYXkoc3RhcnRJbmRleCArIDEpO1xuICAgICAgZm9yIChpbmRleCA9IDA7IGluZGV4IDwgc3RhcnRJbmRleDsgaW5kZXgrKykge1xuICAgICAgICBhcmdzW2luZGV4XSA9IGFyZ3VtZW50c1tpbmRleF07XG4gICAgICB9XG4gICAgICBhcmdzW3N0YXJ0SW5kZXhdID0gcmVzdDtcbiAgICAgIHJldHVybiBmdW5jLmFwcGx5KHRoaXMsIGFyZ3MpO1xuICAgIH07XG4gIH07XG5cbiAgLy8gQW4gaW50ZXJuYWwgZnVuY3Rpb24gZm9yIGNyZWF0aW5nIGEgbmV3IG9iamVjdCB0aGF0IGluaGVyaXRzIGZyb20gYW5vdGhlci5cbiAgdmFyIGJhc2VDcmVhdGUgPSBmdW5jdGlvbihwcm90b3R5cGUpIHtcbiAgICBpZiAoIV8uaXNPYmplY3QocHJvdG90eXBlKSkgcmV0dXJuIHt9O1xuICAgIGlmIChuYXRpdmVDcmVhdGUpIHJldHVybiBuYXRpdmVDcmVhdGUocHJvdG90eXBlKTtcbiAgICBDdG9yLnByb3RvdHlwZSA9IHByb3RvdHlwZTtcbiAgICB2YXIgcmVzdWx0ID0gbmV3IEN0b3I7XG4gICAgQ3Rvci5wcm90b3R5cGUgPSBudWxsO1xuICAgIHJldHVybiByZXN1bHQ7XG4gIH07XG5cbiAgdmFyIHNoYWxsb3dQcm9wZXJ0eSA9IGZ1bmN0aW9uKGtleSkge1xuICAgIHJldHVybiBmdW5jdGlvbihvYmopIHtcbiAgICAgIHJldHVybiBvYmogPT0gbnVsbCA/IHZvaWQgMCA6IG9ialtrZXldO1xuICAgIH07XG4gIH07XG5cbiAgdmFyIGRlZXBHZXQgPSBmdW5jdGlvbihvYmosIHBhdGgpIHtcbiAgICB2YXIgbGVuZ3RoID0gcGF0aC5sZW5ndGg7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBsZW5ndGg7IGkrKykge1xuICAgICAgaWYgKG9iaiA9PSBudWxsKSByZXR1cm4gdm9pZCAwO1xuICAgICAgb2JqID0gb2JqW3BhdGhbaV1dO1xuICAgIH1cbiAgICByZXR1cm4gbGVuZ3RoID8gb2JqIDogdm9pZCAwO1xuICB9O1xuXG4gIC8vIEhlbHBlciBmb3IgY29sbGVjdGlvbiBtZXRob2RzIHRvIGRldGVybWluZSB3aGV0aGVyIGEgY29sbGVjdGlvblxuICAvLyBzaG91bGQgYmUgaXRlcmF0ZWQgYXMgYW4gYXJyYXkgb3IgYXMgYW4gb2JqZWN0LlxuICAvLyBSZWxhdGVkOiBodHRwOi8vcGVvcGxlLm1vemlsbGEub3JnL35qb3JlbmRvcmZmL2VzNi1kcmFmdC5odG1sI3NlYy10b2xlbmd0aFxuICAvLyBBdm9pZHMgYSB2ZXJ5IG5hc3R5IGlPUyA4IEpJVCBidWcgb24gQVJNLTY0LiAjMjA5NFxuICB2YXIgTUFYX0FSUkFZX0lOREVYID0gTWF0aC5wb3coMiwgNTMpIC0gMTtcbiAgdmFyIGdldExlbmd0aCA9IHNoYWxsb3dQcm9wZXJ0eSgnbGVuZ3RoJyk7XG4gIHZhciBpc0FycmF5TGlrZSA9IGZ1bmN0aW9uKGNvbGxlY3Rpb24pIHtcbiAgICB2YXIgbGVuZ3RoID0gZ2V0TGVuZ3RoKGNvbGxlY3Rpb24pO1xuICAgIHJldHVybiB0eXBlb2YgbGVuZ3RoID09ICdudW1iZXInICYmIGxlbmd0aCA+PSAwICYmIGxlbmd0aCA8PSBNQVhfQVJSQVlfSU5ERVg7XG4gIH07XG5cbiAgLy8gQ29sbGVjdGlvbiBGdW5jdGlvbnNcbiAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS1cblxuICAvLyBUaGUgY29ybmVyc3RvbmUsIGFuIGBlYWNoYCBpbXBsZW1lbnRhdGlvbiwgYWthIGBmb3JFYWNoYC5cbiAgLy8gSGFuZGxlcyByYXcgb2JqZWN0cyBpbiBhZGRpdGlvbiB0byBhcnJheS1saWtlcy4gVHJlYXRzIGFsbFxuICAvLyBzcGFyc2UgYXJyYXktbGlrZXMgYXMgaWYgdGhleSB3ZXJlIGRlbnNlLlxuICBfLmVhY2ggPSBfLmZvckVhY2ggPSBmdW5jdGlvbihvYmosIGl0ZXJhdGVlLCBjb250ZXh0KSB7XG4gICAgaXRlcmF0ZWUgPSBvcHRpbWl6ZUNiKGl0ZXJhdGVlLCBjb250ZXh0KTtcbiAgICB2YXIgaSwgbGVuZ3RoO1xuICAgIGlmIChpc0FycmF5TGlrZShvYmopKSB7XG4gICAgICBmb3IgKGkgPSAwLCBsZW5ndGggPSBvYmoubGVuZ3RoOyBpIDwgbGVuZ3RoOyBpKyspIHtcbiAgICAgICAgaXRlcmF0ZWUob2JqW2ldLCBpLCBvYmopO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICB2YXIga2V5cyA9IF8ua2V5cyhvYmopO1xuICAgICAgZm9yIChpID0gMCwgbGVuZ3RoID0ga2V5cy5sZW5ndGg7IGkgPCBsZW5ndGg7IGkrKykge1xuICAgICAgICBpdGVyYXRlZShvYmpba2V5c1tpXV0sIGtleXNbaV0sIG9iaik7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBvYmo7XG4gIH07XG5cbiAgLy8gUmV0dXJuIHRoZSByZXN1bHRzIG9mIGFwcGx5aW5nIHRoZSBpdGVyYXRlZSB0byBlYWNoIGVsZW1lbnQuXG4gIF8ubWFwID0gXy5jb2xsZWN0ID0gZnVuY3Rpb24ob2JqLCBpdGVyYXRlZSwgY29udGV4dCkge1xuICAgIGl0ZXJhdGVlID0gY2IoaXRlcmF0ZWUsIGNvbnRleHQpO1xuICAgIHZhciBrZXlzID0gIWlzQXJyYXlMaWtlKG9iaikgJiYgXy5rZXlzKG9iaiksXG4gICAgICAgIGxlbmd0aCA9IChrZXlzIHx8IG9iaikubGVuZ3RoLFxuICAgICAgICByZXN1bHRzID0gQXJyYXkobGVuZ3RoKTtcbiAgICBmb3IgKHZhciBpbmRleCA9IDA7IGluZGV4IDwgbGVuZ3RoOyBpbmRleCsrKSB7XG4gICAgICB2YXIgY3VycmVudEtleSA9IGtleXMgPyBrZXlzW2luZGV4XSA6IGluZGV4O1xuICAgICAgcmVzdWx0c1tpbmRleF0gPSBpdGVyYXRlZShvYmpbY3VycmVudEtleV0sIGN1cnJlbnRLZXksIG9iaik7XG4gICAgfVxuICAgIHJldHVybiByZXN1bHRzO1xuICB9O1xuXG4gIC8vIENyZWF0ZSBhIHJlZHVjaW5nIGZ1bmN0aW9uIGl0ZXJhdGluZyBsZWZ0IG9yIHJpZ2h0LlxuICB2YXIgY3JlYXRlUmVkdWNlID0gZnVuY3Rpb24oZGlyKSB7XG4gICAgLy8gV3JhcCBjb2RlIHRoYXQgcmVhc3NpZ25zIGFyZ3VtZW50IHZhcmlhYmxlcyBpbiBhIHNlcGFyYXRlIGZ1bmN0aW9uIHRoYW5cbiAgICAvLyB0aGUgb25lIHRoYXQgYWNjZXNzZXMgYGFyZ3VtZW50cy5sZW5ndGhgIHRvIGF2b2lkIGEgcGVyZiBoaXQuICgjMTk5MSlcbiAgICB2YXIgcmVkdWNlciA9IGZ1bmN0aW9uKG9iaiwgaXRlcmF0ZWUsIG1lbW8sIGluaXRpYWwpIHtcbiAgICAgIHZhciBrZXlzID0gIWlzQXJyYXlMaWtlKG9iaikgJiYgXy5rZXlzKG9iaiksXG4gICAgICAgICAgbGVuZ3RoID0gKGtleXMgfHwgb2JqKS5sZW5ndGgsXG4gICAgICAgICAgaW5kZXggPSBkaXIgPiAwID8gMCA6IGxlbmd0aCAtIDE7XG4gICAgICBpZiAoIWluaXRpYWwpIHtcbiAgICAgICAgbWVtbyA9IG9ialtrZXlzID8ga2V5c1tpbmRleF0gOiBpbmRleF07XG4gICAgICAgIGluZGV4ICs9IGRpcjtcbiAgICAgIH1cbiAgICAgIGZvciAoOyBpbmRleCA+PSAwICYmIGluZGV4IDwgbGVuZ3RoOyBpbmRleCArPSBkaXIpIHtcbiAgICAgICAgdmFyIGN1cnJlbnRLZXkgPSBrZXlzID8ga2V5c1tpbmRleF0gOiBpbmRleDtcbiAgICAgICAgbWVtbyA9IGl0ZXJhdGVlKG1lbW8sIG9ialtjdXJyZW50S2V5XSwgY3VycmVudEtleSwgb2JqKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBtZW1vO1xuICAgIH07XG5cbiAgICByZXR1cm4gZnVuY3Rpb24ob2JqLCBpdGVyYXRlZSwgbWVtbywgY29udGV4dCkge1xuICAgICAgdmFyIGluaXRpYWwgPSBhcmd1bWVudHMubGVuZ3RoID49IDM7XG4gICAgICByZXR1cm4gcmVkdWNlcihvYmosIG9wdGltaXplQ2IoaXRlcmF0ZWUsIGNvbnRleHQsIDQpLCBtZW1vLCBpbml0aWFsKTtcbiAgICB9O1xuICB9O1xuXG4gIC8vICoqUmVkdWNlKiogYnVpbGRzIHVwIGEgc2luZ2xlIHJlc3VsdCBmcm9tIGEgbGlzdCBvZiB2YWx1ZXMsIGFrYSBgaW5qZWN0YCxcbiAgLy8gb3IgYGZvbGRsYC5cbiAgXy5yZWR1Y2UgPSBfLmZvbGRsID0gXy5pbmplY3QgPSBjcmVhdGVSZWR1Y2UoMSk7XG5cbiAgLy8gVGhlIHJpZ2h0LWFzc29jaWF0aXZlIHZlcnNpb24gb2YgcmVkdWNlLCBhbHNvIGtub3duIGFzIGBmb2xkcmAuXG4gIF8ucmVkdWNlUmlnaHQgPSBfLmZvbGRyID0gY3JlYXRlUmVkdWNlKC0xKTtcblxuICAvLyBSZXR1cm4gdGhlIGZpcnN0IHZhbHVlIHdoaWNoIHBhc3NlcyBhIHRydXRoIHRlc3QuIEFsaWFzZWQgYXMgYGRldGVjdGAuXG4gIF8uZmluZCA9IF8uZGV0ZWN0ID0gZnVuY3Rpb24ob2JqLCBwcmVkaWNhdGUsIGNvbnRleHQpIHtcbiAgICB2YXIga2V5RmluZGVyID0gaXNBcnJheUxpa2Uob2JqKSA/IF8uZmluZEluZGV4IDogXy5maW5kS2V5O1xuICAgIHZhciBrZXkgPSBrZXlGaW5kZXIob2JqLCBwcmVkaWNhdGUsIGNvbnRleHQpO1xuICAgIGlmIChrZXkgIT09IHZvaWQgMCAmJiBrZXkgIT09IC0xKSByZXR1cm4gb2JqW2tleV07XG4gIH07XG5cbiAgLy8gUmV0dXJuIGFsbCB0aGUgZWxlbWVudHMgdGhhdCBwYXNzIGEgdHJ1dGggdGVzdC5cbiAgLy8gQWxpYXNlZCBhcyBgc2VsZWN0YC5cbiAgXy5maWx0ZXIgPSBfLnNlbGVjdCA9IGZ1bmN0aW9uKG9iaiwgcHJlZGljYXRlLCBjb250ZXh0KSB7XG4gICAgdmFyIHJlc3VsdHMgPSBbXTtcbiAgICBwcmVkaWNhdGUgPSBjYihwcmVkaWNhdGUsIGNvbnRleHQpO1xuICAgIF8uZWFjaChvYmosIGZ1bmN0aW9uKHZhbHVlLCBpbmRleCwgbGlzdCkge1xuICAgICAgaWYgKHByZWRpY2F0ZSh2YWx1ZSwgaW5kZXgsIGxpc3QpKSByZXN1bHRzLnB1c2godmFsdWUpO1xuICAgIH0pO1xuICAgIHJldHVybiByZXN1bHRzO1xuICB9O1xuXG4gIC8vIFJldHVybiBhbGwgdGhlIGVsZW1lbnRzIGZvciB3aGljaCBhIHRydXRoIHRlc3QgZmFpbHMuXG4gIF8ucmVqZWN0ID0gZnVuY3Rpb24ob2JqLCBwcmVkaWNhdGUsIGNvbnRleHQpIHtcbiAgICByZXR1cm4gXy5maWx0ZXIob2JqLCBfLm5lZ2F0ZShjYihwcmVkaWNhdGUpKSwgY29udGV4dCk7XG4gIH07XG5cbiAgLy8gRGV0ZXJtaW5lIHdoZXRoZXIgYWxsIG9mIHRoZSBlbGVtZW50cyBtYXRjaCBhIHRydXRoIHRlc3QuXG4gIC8vIEFsaWFzZWQgYXMgYGFsbGAuXG4gIF8uZXZlcnkgPSBfLmFsbCA9IGZ1bmN0aW9uKG9iaiwgcHJlZGljYXRlLCBjb250ZXh0KSB7XG4gICAgcHJlZGljYXRlID0gY2IocHJlZGljYXRlLCBjb250ZXh0KTtcbiAgICB2YXIga2V5cyA9ICFpc0FycmF5TGlrZShvYmopICYmIF8ua2V5cyhvYmopLFxuICAgICAgICBsZW5ndGggPSAoa2V5cyB8fCBvYmopLmxlbmd0aDtcbiAgICBmb3IgKHZhciBpbmRleCA9IDA7IGluZGV4IDwgbGVuZ3RoOyBpbmRleCsrKSB7XG4gICAgICB2YXIgY3VycmVudEtleSA9IGtleXMgPyBrZXlzW2luZGV4XSA6IGluZGV4O1xuICAgICAgaWYgKCFwcmVkaWNhdGUob2JqW2N1cnJlbnRLZXldLCBjdXJyZW50S2V5LCBvYmopKSByZXR1cm4gZmFsc2U7XG4gICAgfVxuICAgIHJldHVybiB0cnVlO1xuICB9O1xuXG4gIC8vIERldGVybWluZSBpZiBhdCBsZWFzdCBvbmUgZWxlbWVudCBpbiB0aGUgb2JqZWN0IG1hdGNoZXMgYSB0cnV0aCB0ZXN0LlxuICAvLyBBbGlhc2VkIGFzIGBhbnlgLlxuICBfLnNvbWUgPSBfLmFueSA9IGZ1bmN0aW9uKG9iaiwgcHJlZGljYXRlLCBjb250ZXh0KSB7XG4gICAgcHJlZGljYXRlID0gY2IocHJlZGljYXRlLCBjb250ZXh0KTtcbiAgICB2YXIga2V5cyA9ICFpc0FycmF5TGlrZShvYmopICYmIF8ua2V5cyhvYmopLFxuICAgICAgICBsZW5ndGggPSAoa2V5cyB8fCBvYmopLmxlbmd0aDtcbiAgICBmb3IgKHZhciBpbmRleCA9IDA7IGluZGV4IDwgbGVuZ3RoOyBpbmRleCsrKSB7XG4gICAgICB2YXIgY3VycmVudEtleSA9IGtleXMgPyBrZXlzW2luZGV4XSA6IGluZGV4O1xuICAgICAgaWYgKHByZWRpY2F0ZShvYmpbY3VycmVudEtleV0sIGN1cnJlbnRLZXksIG9iaikpIHJldHVybiB0cnVlO1xuICAgIH1cbiAgICByZXR1cm4gZmFsc2U7XG4gIH07XG5cbiAgLy8gRGV0ZXJtaW5lIGlmIHRoZSBhcnJheSBvciBvYmplY3QgY29udGFpbnMgYSBnaXZlbiBpdGVtICh1c2luZyBgPT09YCkuXG4gIC8vIEFsaWFzZWQgYXMgYGluY2x1ZGVzYCBhbmQgYGluY2x1ZGVgLlxuICBfLmNvbnRhaW5zID0gXy5pbmNsdWRlcyA9IF8uaW5jbHVkZSA9IGZ1bmN0aW9uKG9iaiwgaXRlbSwgZnJvbUluZGV4LCBndWFyZCkge1xuICAgIGlmICghaXNBcnJheUxpa2Uob2JqKSkgb2JqID0gXy52YWx1ZXMob2JqKTtcbiAgICBpZiAodHlwZW9mIGZyb21JbmRleCAhPSAnbnVtYmVyJyB8fCBndWFyZCkgZnJvbUluZGV4ID0gMDtcbiAgICByZXR1cm4gXy5pbmRleE9mKG9iaiwgaXRlbSwgZnJvbUluZGV4KSA+PSAwO1xuICB9O1xuXG4gIC8vIEludm9rZSBhIG1ldGhvZCAod2l0aCBhcmd1bWVudHMpIG9uIGV2ZXJ5IGl0ZW0gaW4gYSBjb2xsZWN0aW9uLlxuICBfLmludm9rZSA9IHJlc3RBcmd1bWVudHMoZnVuY3Rpb24ob2JqLCBwYXRoLCBhcmdzKSB7XG4gICAgdmFyIGNvbnRleHRQYXRoLCBmdW5jO1xuICAgIGlmIChfLmlzRnVuY3Rpb24ocGF0aCkpIHtcbiAgICAgIGZ1bmMgPSBwYXRoO1xuICAgIH0gZWxzZSBpZiAoXy5pc0FycmF5KHBhdGgpKSB7XG4gICAgICBjb250ZXh0UGF0aCA9IHBhdGguc2xpY2UoMCwgLTEpO1xuICAgICAgcGF0aCA9IHBhdGhbcGF0aC5sZW5ndGggLSAxXTtcbiAgICB9XG4gICAgcmV0dXJuIF8ubWFwKG9iaiwgZnVuY3Rpb24oY29udGV4dCkge1xuICAgICAgdmFyIG1ldGhvZCA9IGZ1bmM7XG4gICAgICBpZiAoIW1ldGhvZCkge1xuICAgICAgICBpZiAoY29udGV4dFBhdGggJiYgY29udGV4dFBhdGgubGVuZ3RoKSB7XG4gICAgICAgICAgY29udGV4dCA9IGRlZXBHZXQoY29udGV4dCwgY29udGV4dFBhdGgpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChjb250ZXh0ID09IG51bGwpIHJldHVybiB2b2lkIDA7XG4gICAgICAgIG1ldGhvZCA9IGNvbnRleHRbcGF0aF07XG4gICAgICB9XG4gICAgICByZXR1cm4gbWV0aG9kID09IG51bGwgPyBtZXRob2QgOiBtZXRob2QuYXBwbHkoY29udGV4dCwgYXJncyk7XG4gICAgfSk7XG4gIH0pO1xuXG4gIC8vIENvbnZlbmllbmNlIHZlcnNpb24gb2YgYSBjb21tb24gdXNlIGNhc2Ugb2YgYG1hcGA6IGZldGNoaW5nIGEgcHJvcGVydHkuXG4gIF8ucGx1Y2sgPSBmdW5jdGlvbihvYmosIGtleSkge1xuICAgIHJldHVybiBfLm1hcChvYmosIF8ucHJvcGVydHkoa2V5KSk7XG4gIH07XG5cbiAgLy8gQ29udmVuaWVuY2UgdmVyc2lvbiBvZiBhIGNvbW1vbiB1c2UgY2FzZSBvZiBgZmlsdGVyYDogc2VsZWN0aW5nIG9ubHkgb2JqZWN0c1xuICAvLyBjb250YWluaW5nIHNwZWNpZmljIGBrZXk6dmFsdWVgIHBhaXJzLlxuICBfLndoZXJlID0gZnVuY3Rpb24ob2JqLCBhdHRycykge1xuICAgIHJldHVybiBfLmZpbHRlcihvYmosIF8ubWF0Y2hlcihhdHRycykpO1xuICB9O1xuXG4gIC8vIENvbnZlbmllbmNlIHZlcnNpb24gb2YgYSBjb21tb24gdXNlIGNhc2Ugb2YgYGZpbmRgOiBnZXR0aW5nIHRoZSBmaXJzdCBvYmplY3RcbiAgLy8gY29udGFpbmluZyBzcGVjaWZpYyBga2V5OnZhbHVlYCBwYWlycy5cbiAgXy5maW5kV2hlcmUgPSBmdW5jdGlvbihvYmosIGF0dHJzKSB7XG4gICAgcmV0dXJuIF8uZmluZChvYmosIF8ubWF0Y2hlcihhdHRycykpO1xuICB9O1xuXG4gIC8vIFJldHVybiB0aGUgbWF4aW11bSBlbGVtZW50IChvciBlbGVtZW50LWJhc2VkIGNvbXB1dGF0aW9uKS5cbiAgXy5tYXggPSBmdW5jdGlvbihvYmosIGl0ZXJhdGVlLCBjb250ZXh0KSB7XG4gICAgdmFyIHJlc3VsdCA9IC1JbmZpbml0eSwgbGFzdENvbXB1dGVkID0gLUluZmluaXR5LFxuICAgICAgICB2YWx1ZSwgY29tcHV0ZWQ7XG4gICAgaWYgKGl0ZXJhdGVlID09IG51bGwgfHwgdHlwZW9mIGl0ZXJhdGVlID09ICdudW1iZXInICYmIHR5cGVvZiBvYmpbMF0gIT0gJ29iamVjdCcgJiYgb2JqICE9IG51bGwpIHtcbiAgICAgIG9iaiA9IGlzQXJyYXlMaWtlKG9iaikgPyBvYmogOiBfLnZhbHVlcyhvYmopO1xuICAgICAgZm9yICh2YXIgaSA9IDAsIGxlbmd0aCA9IG9iai5sZW5ndGg7IGkgPCBsZW5ndGg7IGkrKykge1xuICAgICAgICB2YWx1ZSA9IG9ialtpXTtcbiAgICAgICAgaWYgKHZhbHVlICE9IG51bGwgJiYgdmFsdWUgPiByZXN1bHQpIHtcbiAgICAgICAgICByZXN1bHQgPSB2YWx1ZTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBpdGVyYXRlZSA9IGNiKGl0ZXJhdGVlLCBjb250ZXh0KTtcbiAgICAgIF8uZWFjaChvYmosIGZ1bmN0aW9uKHYsIGluZGV4LCBsaXN0KSB7XG4gICAgICAgIGNvbXB1dGVkID0gaXRlcmF0ZWUodiwgaW5kZXgsIGxpc3QpO1xuICAgICAgICBpZiAoY29tcHV0ZWQgPiBsYXN0Q29tcHV0ZWQgfHwgY29tcHV0ZWQgPT09IC1JbmZpbml0eSAmJiByZXN1bHQgPT09IC1JbmZpbml0eSkge1xuICAgICAgICAgIHJlc3VsdCA9IHY7XG4gICAgICAgICAgbGFzdENvbXB1dGVkID0gY29tcHV0ZWQ7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH1cbiAgICByZXR1cm4gcmVzdWx0O1xuICB9O1xuXG4gIC8vIFJldHVybiB0aGUgbWluaW11bSBlbGVtZW50IChvciBlbGVtZW50LWJhc2VkIGNvbXB1dGF0aW9uKS5cbiAgXy5taW4gPSBmdW5jdGlvbihvYmosIGl0ZXJhdGVlLCBjb250ZXh0KSB7XG4gICAgdmFyIHJlc3VsdCA9IEluZmluaXR5LCBsYXN0Q29tcHV0ZWQgPSBJbmZpbml0eSxcbiAgICAgICAgdmFsdWUsIGNvbXB1dGVkO1xuICAgIGlmIChpdGVyYXRlZSA9PSBudWxsIHx8IHR5cGVvZiBpdGVyYXRlZSA9PSAnbnVtYmVyJyAmJiB0eXBlb2Ygb2JqWzBdICE9ICdvYmplY3QnICYmIG9iaiAhPSBudWxsKSB7XG4gICAgICBvYmogPSBpc0FycmF5TGlrZShvYmopID8gb2JqIDogXy52YWx1ZXMob2JqKTtcbiAgICAgIGZvciAodmFyIGkgPSAwLCBsZW5ndGggPSBvYmoubGVuZ3RoOyBpIDwgbGVuZ3RoOyBpKyspIHtcbiAgICAgICAgdmFsdWUgPSBvYmpbaV07XG4gICAgICAgIGlmICh2YWx1ZSAhPSBudWxsICYmIHZhbHVlIDwgcmVzdWx0KSB7XG4gICAgICAgICAgcmVzdWx0ID0gdmFsdWU7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgaXRlcmF0ZWUgPSBjYihpdGVyYXRlZSwgY29udGV4dCk7XG4gICAgICBfLmVhY2gob2JqLCBmdW5jdGlvbih2LCBpbmRleCwgbGlzdCkge1xuICAgICAgICBjb21wdXRlZCA9IGl0ZXJhdGVlKHYsIGluZGV4LCBsaXN0KTtcbiAgICAgICAgaWYgKGNvbXB1dGVkIDwgbGFzdENvbXB1dGVkIHx8IGNvbXB1dGVkID09PSBJbmZpbml0eSAmJiByZXN1bHQgPT09IEluZmluaXR5KSB7XG4gICAgICAgICAgcmVzdWx0ID0gdjtcbiAgICAgICAgICBsYXN0Q29tcHV0ZWQgPSBjb21wdXRlZDtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfVxuICAgIHJldHVybiByZXN1bHQ7XG4gIH07XG5cbiAgLy8gU2h1ZmZsZSBhIGNvbGxlY3Rpb24uXG4gIF8uc2h1ZmZsZSA9IGZ1bmN0aW9uKG9iaikge1xuICAgIHJldHVybiBfLnNhbXBsZShvYmosIEluZmluaXR5KTtcbiAgfTtcblxuICAvLyBTYW1wbGUgKipuKiogcmFuZG9tIHZhbHVlcyBmcm9tIGEgY29sbGVjdGlvbiB1c2luZyB0aGUgbW9kZXJuIHZlcnNpb24gb2YgdGhlXG4gIC8vIFtGaXNoZXItWWF0ZXMgc2h1ZmZsZV0oaHR0cDovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9GaXNoZXLigJNZYXRlc19zaHVmZmxlKS5cbiAgLy8gSWYgKipuKiogaXMgbm90IHNwZWNpZmllZCwgcmV0dXJucyBhIHNpbmdsZSByYW5kb20gZWxlbWVudC5cbiAgLy8gVGhlIGludGVybmFsIGBndWFyZGAgYXJndW1lbnQgYWxsb3dzIGl0IHRvIHdvcmsgd2l0aCBgbWFwYC5cbiAgXy5zYW1wbGUgPSBmdW5jdGlvbihvYmosIG4sIGd1YXJkKSB7XG4gICAgaWYgKG4gPT0gbnVsbCB8fCBndWFyZCkge1xuICAgICAgaWYgKCFpc0FycmF5TGlrZShvYmopKSBvYmogPSBfLnZhbHVlcyhvYmopO1xuICAgICAgcmV0dXJuIG9ialtfLnJhbmRvbShvYmoubGVuZ3RoIC0gMSldO1xuICAgIH1cbiAgICB2YXIgc2FtcGxlID0gaXNBcnJheUxpa2Uob2JqKSA/IF8uY2xvbmUob2JqKSA6IF8udmFsdWVzKG9iaik7XG4gICAgdmFyIGxlbmd0aCA9IGdldExlbmd0aChzYW1wbGUpO1xuICAgIG4gPSBNYXRoLm1heChNYXRoLm1pbihuLCBsZW5ndGgpLCAwKTtcbiAgICB2YXIgbGFzdCA9IGxlbmd0aCAtIDE7XG4gICAgZm9yICh2YXIgaW5kZXggPSAwOyBpbmRleCA8IG47IGluZGV4KyspIHtcbiAgICAgIHZhciByYW5kID0gXy5yYW5kb20oaW5kZXgsIGxhc3QpO1xuICAgICAgdmFyIHRlbXAgPSBzYW1wbGVbaW5kZXhdO1xuICAgICAgc2FtcGxlW2luZGV4XSA9IHNhbXBsZVtyYW5kXTtcbiAgICAgIHNhbXBsZVtyYW5kXSA9IHRlbXA7XG4gICAgfVxuICAgIHJldHVybiBzYW1wbGUuc2xpY2UoMCwgbik7XG4gIH07XG5cbiAgLy8gU29ydCB0aGUgb2JqZWN0J3MgdmFsdWVzIGJ5IGEgY3JpdGVyaW9uIHByb2R1Y2VkIGJ5IGFuIGl0ZXJhdGVlLlxuICBfLnNvcnRCeSA9IGZ1bmN0aW9uKG9iaiwgaXRlcmF0ZWUsIGNvbnRleHQpIHtcbiAgICB2YXIgaW5kZXggPSAwO1xuICAgIGl0ZXJhdGVlID0gY2IoaXRlcmF0ZWUsIGNvbnRleHQpO1xuICAgIHJldHVybiBfLnBsdWNrKF8ubWFwKG9iaiwgZnVuY3Rpb24odmFsdWUsIGtleSwgbGlzdCkge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgdmFsdWU6IHZhbHVlLFxuICAgICAgICBpbmRleDogaW5kZXgrKyxcbiAgICAgICAgY3JpdGVyaWE6IGl0ZXJhdGVlKHZhbHVlLCBrZXksIGxpc3QpXG4gICAgICB9O1xuICAgIH0pLnNvcnQoZnVuY3Rpb24obGVmdCwgcmlnaHQpIHtcbiAgICAgIHZhciBhID0gbGVmdC5jcml0ZXJpYTtcbiAgICAgIHZhciBiID0gcmlnaHQuY3JpdGVyaWE7XG4gICAgICBpZiAoYSAhPT0gYikge1xuICAgICAgICBpZiAoYSA+IGIgfHwgYSA9PT0gdm9pZCAwKSByZXR1cm4gMTtcbiAgICAgICAgaWYgKGEgPCBiIHx8IGIgPT09IHZvaWQgMCkgcmV0dXJuIC0xO1xuICAgICAgfVxuICAgICAgcmV0dXJuIGxlZnQuaW5kZXggLSByaWdodC5pbmRleDtcbiAgICB9KSwgJ3ZhbHVlJyk7XG4gIH07XG5cbiAgLy8gQW4gaW50ZXJuYWwgZnVuY3Rpb24gdXNlZCBmb3IgYWdncmVnYXRlIFwiZ3JvdXAgYnlcIiBvcGVyYXRpb25zLlxuICB2YXIgZ3JvdXAgPSBmdW5jdGlvbihiZWhhdmlvciwgcGFydGl0aW9uKSB7XG4gICAgcmV0dXJuIGZ1bmN0aW9uKG9iaiwgaXRlcmF0ZWUsIGNvbnRleHQpIHtcbiAgICAgIHZhciByZXN1bHQgPSBwYXJ0aXRpb24gPyBbW10sIFtdXSA6IHt9O1xuICAgICAgaXRlcmF0ZWUgPSBjYihpdGVyYXRlZSwgY29udGV4dCk7XG4gICAgICBfLmVhY2gob2JqLCBmdW5jdGlvbih2YWx1ZSwgaW5kZXgpIHtcbiAgICAgICAgdmFyIGtleSA9IGl0ZXJhdGVlKHZhbHVlLCBpbmRleCwgb2JqKTtcbiAgICAgICAgYmVoYXZpb3IocmVzdWx0LCB2YWx1ZSwga2V5KTtcbiAgICAgIH0pO1xuICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9O1xuICB9O1xuXG4gIC8vIEdyb3VwcyB0aGUgb2JqZWN0J3MgdmFsdWVzIGJ5IGEgY3JpdGVyaW9uLiBQYXNzIGVpdGhlciBhIHN0cmluZyBhdHRyaWJ1dGVcbiAgLy8gdG8gZ3JvdXAgYnksIG9yIGEgZnVuY3Rpb24gdGhhdCByZXR1cm5zIHRoZSBjcml0ZXJpb24uXG4gIF8uZ3JvdXBCeSA9IGdyb3VwKGZ1bmN0aW9uKHJlc3VsdCwgdmFsdWUsIGtleSkge1xuICAgIGlmIChfLmhhcyhyZXN1bHQsIGtleSkpIHJlc3VsdFtrZXldLnB1c2godmFsdWUpOyBlbHNlIHJlc3VsdFtrZXldID0gW3ZhbHVlXTtcbiAgfSk7XG5cbiAgLy8gSW5kZXhlcyB0aGUgb2JqZWN0J3MgdmFsdWVzIGJ5IGEgY3JpdGVyaW9uLCBzaW1pbGFyIHRvIGBncm91cEJ5YCwgYnV0IGZvclxuICAvLyB3aGVuIHlvdSBrbm93IHRoYXQgeW91ciBpbmRleCB2YWx1ZXMgd2lsbCBiZSB1bmlxdWUuXG4gIF8uaW5kZXhCeSA9IGdyb3VwKGZ1bmN0aW9uKHJlc3VsdCwgdmFsdWUsIGtleSkge1xuICAgIHJlc3VsdFtrZXldID0gdmFsdWU7XG4gIH0pO1xuXG4gIC8vIENvdW50cyBpbnN0YW5jZXMgb2YgYW4gb2JqZWN0IHRoYXQgZ3JvdXAgYnkgYSBjZXJ0YWluIGNyaXRlcmlvbi4gUGFzc1xuICAvLyBlaXRoZXIgYSBzdHJpbmcgYXR0cmlidXRlIHRvIGNvdW50IGJ5LCBvciBhIGZ1bmN0aW9uIHRoYXQgcmV0dXJucyB0aGVcbiAgLy8gY3JpdGVyaW9uLlxuICBfLmNvdW50QnkgPSBncm91cChmdW5jdGlvbihyZXN1bHQsIHZhbHVlLCBrZXkpIHtcbiAgICBpZiAoXy5oYXMocmVzdWx0LCBrZXkpKSByZXN1bHRba2V5XSsrOyBlbHNlIHJlc3VsdFtrZXldID0gMTtcbiAgfSk7XG5cbiAgdmFyIHJlU3RyU3ltYm9sID0gL1teXFx1ZDgwMC1cXHVkZmZmXXxbXFx1ZDgwMC1cXHVkYmZmXVtcXHVkYzAwLVxcdWRmZmZdfFtcXHVkODAwLVxcdWRmZmZdL2c7XG4gIC8vIFNhZmVseSBjcmVhdGUgYSByZWFsLCBsaXZlIGFycmF5IGZyb20gYW55dGhpbmcgaXRlcmFibGUuXG4gIF8udG9BcnJheSA9IGZ1bmN0aW9uKG9iaikge1xuICAgIGlmICghb2JqKSByZXR1cm4gW107XG4gICAgaWYgKF8uaXNBcnJheShvYmopKSByZXR1cm4gc2xpY2UuY2FsbChvYmopO1xuICAgIGlmIChfLmlzU3RyaW5nKG9iaikpIHtcbiAgICAgIC8vIEtlZXAgc3Vycm9nYXRlIHBhaXIgY2hhcmFjdGVycyB0b2dldGhlclxuICAgICAgcmV0dXJuIG9iai5tYXRjaChyZVN0clN5bWJvbCk7XG4gICAgfVxuICAgIGlmIChpc0FycmF5TGlrZShvYmopKSByZXR1cm4gXy5tYXAob2JqLCBfLmlkZW50aXR5KTtcbiAgICByZXR1cm4gXy52YWx1ZXMob2JqKTtcbiAgfTtcblxuICAvLyBSZXR1cm4gdGhlIG51bWJlciBvZiBlbGVtZW50cyBpbiBhbiBvYmplY3QuXG4gIF8uc2l6ZSA9IGZ1bmN0aW9uKG9iaikge1xuICAgIGlmIChvYmogPT0gbnVsbCkgcmV0dXJuIDA7XG4gICAgcmV0dXJuIGlzQXJyYXlMaWtlKG9iaikgPyBvYmoubGVuZ3RoIDogXy5rZXlzKG9iaikubGVuZ3RoO1xuICB9O1xuXG4gIC8vIFNwbGl0IGEgY29sbGVjdGlvbiBpbnRvIHR3byBhcnJheXM6IG9uZSB3aG9zZSBlbGVtZW50cyBhbGwgc2F0aXNmeSB0aGUgZ2l2ZW5cbiAgLy8gcHJlZGljYXRlLCBhbmQgb25lIHdob3NlIGVsZW1lbnRzIGFsbCBkbyBub3Qgc2F0aXNmeSB0aGUgcHJlZGljYXRlLlxuICBfLnBhcnRpdGlvbiA9IGdyb3VwKGZ1bmN0aW9uKHJlc3VsdCwgdmFsdWUsIHBhc3MpIHtcbiAgICByZXN1bHRbcGFzcyA/IDAgOiAxXS5wdXNoKHZhbHVlKTtcbiAgfSwgdHJ1ZSk7XG5cbiAgLy8gQXJyYXkgRnVuY3Rpb25zXG4gIC8vIC0tLS0tLS0tLS0tLS0tLVxuXG4gIC8vIEdldCB0aGUgZmlyc3QgZWxlbWVudCBvZiBhbiBhcnJheS4gUGFzc2luZyAqKm4qKiB3aWxsIHJldHVybiB0aGUgZmlyc3QgTlxuICAvLyB2YWx1ZXMgaW4gdGhlIGFycmF5LiBBbGlhc2VkIGFzIGBoZWFkYCBhbmQgYHRha2VgLiBUaGUgKipndWFyZCoqIGNoZWNrXG4gIC8vIGFsbG93cyBpdCB0byB3b3JrIHdpdGggYF8ubWFwYC5cbiAgXy5maXJzdCA9IF8uaGVhZCA9IF8udGFrZSA9IGZ1bmN0aW9uKGFycmF5LCBuLCBndWFyZCkge1xuICAgIGlmIChhcnJheSA9PSBudWxsIHx8IGFycmF5Lmxlbmd0aCA8IDEpIHJldHVybiB2b2lkIDA7XG4gICAgaWYgKG4gPT0gbnVsbCB8fCBndWFyZCkgcmV0dXJuIGFycmF5WzBdO1xuICAgIHJldHVybiBfLmluaXRpYWwoYXJyYXksIGFycmF5Lmxlbmd0aCAtIG4pO1xuICB9O1xuXG4gIC8vIFJldHVybnMgZXZlcnl0aGluZyBidXQgdGhlIGxhc3QgZW50cnkgb2YgdGhlIGFycmF5LiBFc3BlY2lhbGx5IHVzZWZ1bCBvblxuICAvLyB0aGUgYXJndW1lbnRzIG9iamVjdC4gUGFzc2luZyAqKm4qKiB3aWxsIHJldHVybiBhbGwgdGhlIHZhbHVlcyBpblxuICAvLyB0aGUgYXJyYXksIGV4Y2x1ZGluZyB0aGUgbGFzdCBOLlxuICBfLmluaXRpYWwgPSBmdW5jdGlvbihhcnJheSwgbiwgZ3VhcmQpIHtcbiAgICByZXR1cm4gc2xpY2UuY2FsbChhcnJheSwgMCwgTWF0aC5tYXgoMCwgYXJyYXkubGVuZ3RoIC0gKG4gPT0gbnVsbCB8fCBndWFyZCA/IDEgOiBuKSkpO1xuICB9O1xuXG4gIC8vIEdldCB0aGUgbGFzdCBlbGVtZW50IG9mIGFuIGFycmF5LiBQYXNzaW5nICoqbioqIHdpbGwgcmV0dXJuIHRoZSBsYXN0IE5cbiAgLy8gdmFsdWVzIGluIHRoZSBhcnJheS5cbiAgXy5sYXN0ID0gZnVuY3Rpb24oYXJyYXksIG4sIGd1YXJkKSB7XG4gICAgaWYgKGFycmF5ID09IG51bGwgfHwgYXJyYXkubGVuZ3RoIDwgMSkgcmV0dXJuIHZvaWQgMDtcbiAgICBpZiAobiA9PSBudWxsIHx8IGd1YXJkKSByZXR1cm4gYXJyYXlbYXJyYXkubGVuZ3RoIC0gMV07XG4gICAgcmV0dXJuIF8ucmVzdChhcnJheSwgTWF0aC5tYXgoMCwgYXJyYXkubGVuZ3RoIC0gbikpO1xuICB9O1xuXG4gIC8vIFJldHVybnMgZXZlcnl0aGluZyBidXQgdGhlIGZpcnN0IGVudHJ5IG9mIHRoZSBhcnJheS4gQWxpYXNlZCBhcyBgdGFpbGAgYW5kIGBkcm9wYC5cbiAgLy8gRXNwZWNpYWxseSB1c2VmdWwgb24gdGhlIGFyZ3VtZW50cyBvYmplY3QuIFBhc3NpbmcgYW4gKipuKiogd2lsbCByZXR1cm5cbiAgLy8gdGhlIHJlc3QgTiB2YWx1ZXMgaW4gdGhlIGFycmF5LlxuICBfLnJlc3QgPSBfLnRhaWwgPSBfLmRyb3AgPSBmdW5jdGlvbihhcnJheSwgbiwgZ3VhcmQpIHtcbiAgICByZXR1cm4gc2xpY2UuY2FsbChhcnJheSwgbiA9PSBudWxsIHx8IGd1YXJkID8gMSA6IG4pO1xuICB9O1xuXG4gIC8vIFRyaW0gb3V0IGFsbCBmYWxzeSB2YWx1ZXMgZnJvbSBhbiBhcnJheS5cbiAgXy5jb21wYWN0ID0gZnVuY3Rpb24oYXJyYXkpIHtcbiAgICByZXR1cm4gXy5maWx0ZXIoYXJyYXksIEJvb2xlYW4pO1xuICB9O1xuXG4gIC8vIEludGVybmFsIGltcGxlbWVudGF0aW9uIG9mIGEgcmVjdXJzaXZlIGBmbGF0dGVuYCBmdW5jdGlvbi5cbiAgdmFyIGZsYXR0ZW4gPSBmdW5jdGlvbihpbnB1dCwgc2hhbGxvdywgc3RyaWN0LCBvdXRwdXQpIHtcbiAgICBvdXRwdXQgPSBvdXRwdXQgfHwgW107XG4gICAgdmFyIGlkeCA9IG91dHB1dC5sZW5ndGg7XG4gICAgZm9yICh2YXIgaSA9IDAsIGxlbmd0aCA9IGdldExlbmd0aChpbnB1dCk7IGkgPCBsZW5ndGg7IGkrKykge1xuICAgICAgdmFyIHZhbHVlID0gaW5wdXRbaV07XG4gICAgICBpZiAoaXNBcnJheUxpa2UodmFsdWUpICYmIChfLmlzQXJyYXkodmFsdWUpIHx8IF8uaXNBcmd1bWVudHModmFsdWUpKSkge1xuICAgICAgICAvLyBGbGF0dGVuIGN1cnJlbnQgbGV2ZWwgb2YgYXJyYXkgb3IgYXJndW1lbnRzIG9iamVjdC5cbiAgICAgICAgaWYgKHNoYWxsb3cpIHtcbiAgICAgICAgICB2YXIgaiA9IDAsIGxlbiA9IHZhbHVlLmxlbmd0aDtcbiAgICAgICAgICB3aGlsZSAoaiA8IGxlbikgb3V0cHV0W2lkeCsrXSA9IHZhbHVlW2orK107XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgZmxhdHRlbih2YWx1ZSwgc2hhbGxvdywgc3RyaWN0LCBvdXRwdXQpO1xuICAgICAgICAgIGlkeCA9IG91dHB1dC5sZW5ndGg7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSBpZiAoIXN0cmljdCkge1xuICAgICAgICBvdXRwdXRbaWR4KytdID0gdmFsdWU7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBvdXRwdXQ7XG4gIH07XG5cbiAgLy8gRmxhdHRlbiBvdXQgYW4gYXJyYXksIGVpdGhlciByZWN1cnNpdmVseSAoYnkgZGVmYXVsdCksIG9yIGp1c3Qgb25lIGxldmVsLlxuICBfLmZsYXR0ZW4gPSBmdW5jdGlvbihhcnJheSwgc2hhbGxvdykge1xuICAgIHJldHVybiBmbGF0dGVuKGFycmF5LCBzaGFsbG93LCBmYWxzZSk7XG4gIH07XG5cbiAgLy8gUmV0dXJuIGEgdmVyc2lvbiBvZiB0aGUgYXJyYXkgdGhhdCBkb2VzIG5vdCBjb250YWluIHRoZSBzcGVjaWZpZWQgdmFsdWUocykuXG4gIF8ud2l0aG91dCA9IHJlc3RBcmd1bWVudHMoZnVuY3Rpb24oYXJyYXksIG90aGVyQXJyYXlzKSB7XG4gICAgcmV0dXJuIF8uZGlmZmVyZW5jZShhcnJheSwgb3RoZXJBcnJheXMpO1xuICB9KTtcblxuICAvLyBQcm9kdWNlIGEgZHVwbGljYXRlLWZyZWUgdmVyc2lvbiBvZiB0aGUgYXJyYXkuIElmIHRoZSBhcnJheSBoYXMgYWxyZWFkeVxuICAvLyBiZWVuIHNvcnRlZCwgeW91IGhhdmUgdGhlIG9wdGlvbiBvZiB1c2luZyBhIGZhc3RlciBhbGdvcml0aG0uXG4gIC8vIFRoZSBmYXN0ZXIgYWxnb3JpdGhtIHdpbGwgbm90IHdvcmsgd2l0aCBhbiBpdGVyYXRlZSBpZiB0aGUgaXRlcmF0ZWVcbiAgLy8gaXMgbm90IGEgb25lLXRvLW9uZSBmdW5jdGlvbiwgc28gcHJvdmlkaW5nIGFuIGl0ZXJhdGVlIHdpbGwgZGlzYWJsZVxuICAvLyB0aGUgZmFzdGVyIGFsZ29yaXRobS5cbiAgLy8gQWxpYXNlZCBhcyBgdW5pcXVlYC5cbiAgXy51bmlxID0gXy51bmlxdWUgPSBmdW5jdGlvbihhcnJheSwgaXNTb3J0ZWQsIGl0ZXJhdGVlLCBjb250ZXh0KSB7XG4gICAgaWYgKCFfLmlzQm9vbGVhbihpc1NvcnRlZCkpIHtcbiAgICAgIGNvbnRleHQgPSBpdGVyYXRlZTtcbiAgICAgIGl0ZXJhdGVlID0gaXNTb3J0ZWQ7XG4gICAgICBpc1NvcnRlZCA9IGZhbHNlO1xuICAgIH1cbiAgICBpZiAoaXRlcmF0ZWUgIT0gbnVsbCkgaXRlcmF0ZWUgPSBjYihpdGVyYXRlZSwgY29udGV4dCk7XG4gICAgdmFyIHJlc3VsdCA9IFtdO1xuICAgIHZhciBzZWVuID0gW107XG4gICAgZm9yICh2YXIgaSA9IDAsIGxlbmd0aCA9IGdldExlbmd0aChhcnJheSk7IGkgPCBsZW5ndGg7IGkrKykge1xuICAgICAgdmFyIHZhbHVlID0gYXJyYXlbaV0sXG4gICAgICAgICAgY29tcHV0ZWQgPSBpdGVyYXRlZSA/IGl0ZXJhdGVlKHZhbHVlLCBpLCBhcnJheSkgOiB2YWx1ZTtcbiAgICAgIGlmIChpc1NvcnRlZCAmJiAhaXRlcmF0ZWUpIHtcbiAgICAgICAgaWYgKCFpIHx8IHNlZW4gIT09IGNvbXB1dGVkKSByZXN1bHQucHVzaCh2YWx1ZSk7XG4gICAgICAgIHNlZW4gPSBjb21wdXRlZDtcbiAgICAgIH0gZWxzZSBpZiAoaXRlcmF0ZWUpIHtcbiAgICAgICAgaWYgKCFfLmNvbnRhaW5zKHNlZW4sIGNvbXB1dGVkKSkge1xuICAgICAgICAgIHNlZW4ucHVzaChjb21wdXRlZCk7XG4gICAgICAgICAgcmVzdWx0LnB1c2godmFsdWUpO1xuICAgICAgICB9XG4gICAgICB9IGVsc2UgaWYgKCFfLmNvbnRhaW5zKHJlc3VsdCwgdmFsdWUpKSB7XG4gICAgICAgIHJlc3VsdC5wdXNoKHZhbHVlKTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfTtcblxuICAvLyBQcm9kdWNlIGFuIGFycmF5IHRoYXQgY29udGFpbnMgdGhlIHVuaW9uOiBlYWNoIGRpc3RpbmN0IGVsZW1lbnQgZnJvbSBhbGwgb2ZcbiAgLy8gdGhlIHBhc3NlZC1pbiBhcnJheXMuXG4gIF8udW5pb24gPSByZXN0QXJndW1lbnRzKGZ1bmN0aW9uKGFycmF5cykge1xuICAgIHJldHVybiBfLnVuaXEoZmxhdHRlbihhcnJheXMsIHRydWUsIHRydWUpKTtcbiAgfSk7XG5cbiAgLy8gUHJvZHVjZSBhbiBhcnJheSB0aGF0IGNvbnRhaW5zIGV2ZXJ5IGl0ZW0gc2hhcmVkIGJldHdlZW4gYWxsIHRoZVxuICAvLyBwYXNzZWQtaW4gYXJyYXlzLlxuICBfLmludGVyc2VjdGlvbiA9IGZ1bmN0aW9uKGFycmF5KSB7XG4gICAgdmFyIHJlc3VsdCA9IFtdO1xuICAgIHZhciBhcmdzTGVuZ3RoID0gYXJndW1lbnRzLmxlbmd0aDtcbiAgICBmb3IgKHZhciBpID0gMCwgbGVuZ3RoID0gZ2V0TGVuZ3RoKGFycmF5KTsgaSA8IGxlbmd0aDsgaSsrKSB7XG4gICAgICB2YXIgaXRlbSA9IGFycmF5W2ldO1xuICAgICAgaWYgKF8uY29udGFpbnMocmVzdWx0LCBpdGVtKSkgY29udGludWU7XG4gICAgICB2YXIgajtcbiAgICAgIGZvciAoaiA9IDE7IGogPCBhcmdzTGVuZ3RoOyBqKyspIHtcbiAgICAgICAgaWYgKCFfLmNvbnRhaW5zKGFyZ3VtZW50c1tqXSwgaXRlbSkpIGJyZWFrO1xuICAgICAgfVxuICAgICAgaWYgKGogPT09IGFyZ3NMZW5ndGgpIHJlc3VsdC5wdXNoKGl0ZW0pO1xuICAgIH1cbiAgICByZXR1cm4gcmVzdWx0O1xuICB9O1xuXG4gIC8vIFRha2UgdGhlIGRpZmZlcmVuY2UgYmV0d2VlbiBvbmUgYXJyYXkgYW5kIGEgbnVtYmVyIG9mIG90aGVyIGFycmF5cy5cbiAgLy8gT25seSB0aGUgZWxlbWVudHMgcHJlc2VudCBpbiBqdXN0IHRoZSBmaXJzdCBhcnJheSB3aWxsIHJlbWFpbi5cbiAgXy5kaWZmZXJlbmNlID0gcmVzdEFyZ3VtZW50cyhmdW5jdGlvbihhcnJheSwgcmVzdCkge1xuICAgIHJlc3QgPSBmbGF0dGVuKHJlc3QsIHRydWUsIHRydWUpO1xuICAgIHJldHVybiBfLmZpbHRlcihhcnJheSwgZnVuY3Rpb24odmFsdWUpe1xuICAgICAgcmV0dXJuICFfLmNvbnRhaW5zKHJlc3QsIHZhbHVlKTtcbiAgICB9KTtcbiAgfSk7XG5cbiAgLy8gQ29tcGxlbWVudCBvZiBfLnppcC4gVW56aXAgYWNjZXB0cyBhbiBhcnJheSBvZiBhcnJheXMgYW5kIGdyb3Vwc1xuICAvLyBlYWNoIGFycmF5J3MgZWxlbWVudHMgb24gc2hhcmVkIGluZGljZXMuXG4gIF8udW56aXAgPSBmdW5jdGlvbihhcnJheSkge1xuICAgIHZhciBsZW5ndGggPSBhcnJheSAmJiBfLm1heChhcnJheSwgZ2V0TGVuZ3RoKS5sZW5ndGggfHwgMDtcbiAgICB2YXIgcmVzdWx0ID0gQXJyYXkobGVuZ3RoKTtcblxuICAgIGZvciAodmFyIGluZGV4ID0gMDsgaW5kZXggPCBsZW5ndGg7IGluZGV4KyspIHtcbiAgICAgIHJlc3VsdFtpbmRleF0gPSBfLnBsdWNrKGFycmF5LCBpbmRleCk7XG4gICAgfVxuICAgIHJldHVybiByZXN1bHQ7XG4gIH07XG5cbiAgLy8gWmlwIHRvZ2V0aGVyIG11bHRpcGxlIGxpc3RzIGludG8gYSBzaW5nbGUgYXJyYXkgLS0gZWxlbWVudHMgdGhhdCBzaGFyZVxuICAvLyBhbiBpbmRleCBnbyB0b2dldGhlci5cbiAgXy56aXAgPSByZXN0QXJndW1lbnRzKF8udW56aXApO1xuXG4gIC8vIENvbnZlcnRzIGxpc3RzIGludG8gb2JqZWN0cy4gUGFzcyBlaXRoZXIgYSBzaW5nbGUgYXJyYXkgb2YgYFtrZXksIHZhbHVlXWBcbiAgLy8gcGFpcnMsIG9yIHR3byBwYXJhbGxlbCBhcnJheXMgb2YgdGhlIHNhbWUgbGVuZ3RoIC0tIG9uZSBvZiBrZXlzLCBhbmQgb25lIG9mXG4gIC8vIHRoZSBjb3JyZXNwb25kaW5nIHZhbHVlcy4gUGFzc2luZyBieSBwYWlycyBpcyB0aGUgcmV2ZXJzZSBvZiBfLnBhaXJzLlxuICBfLm9iamVjdCA9IGZ1bmN0aW9uKGxpc3QsIHZhbHVlcykge1xuICAgIHZhciByZXN1bHQgPSB7fTtcbiAgICBmb3IgKHZhciBpID0gMCwgbGVuZ3RoID0gZ2V0TGVuZ3RoKGxpc3QpOyBpIDwgbGVuZ3RoOyBpKyspIHtcbiAgICAgIGlmICh2YWx1ZXMpIHtcbiAgICAgICAgcmVzdWx0W2xpc3RbaV1dID0gdmFsdWVzW2ldO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmVzdWx0W2xpc3RbaV1bMF1dID0gbGlzdFtpXVsxXTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfTtcblxuICAvLyBHZW5lcmF0b3IgZnVuY3Rpb24gdG8gY3JlYXRlIHRoZSBmaW5kSW5kZXggYW5kIGZpbmRMYXN0SW5kZXggZnVuY3Rpb25zLlxuICB2YXIgY3JlYXRlUHJlZGljYXRlSW5kZXhGaW5kZXIgPSBmdW5jdGlvbihkaXIpIHtcbiAgICByZXR1cm4gZnVuY3Rpb24oYXJyYXksIHByZWRpY2F0ZSwgY29udGV4dCkge1xuICAgICAgcHJlZGljYXRlID0gY2IocHJlZGljYXRlLCBjb250ZXh0KTtcbiAgICAgIHZhciBsZW5ndGggPSBnZXRMZW5ndGgoYXJyYXkpO1xuICAgICAgdmFyIGluZGV4ID0gZGlyID4gMCA/IDAgOiBsZW5ndGggLSAxO1xuICAgICAgZm9yICg7IGluZGV4ID49IDAgJiYgaW5kZXggPCBsZW5ndGg7IGluZGV4ICs9IGRpcikge1xuICAgICAgICBpZiAocHJlZGljYXRlKGFycmF5W2luZGV4XSwgaW5kZXgsIGFycmF5KSkgcmV0dXJuIGluZGV4O1xuICAgICAgfVxuICAgICAgcmV0dXJuIC0xO1xuICAgIH07XG4gIH07XG5cbiAgLy8gUmV0dXJucyB0aGUgZmlyc3QgaW5kZXggb24gYW4gYXJyYXktbGlrZSB0aGF0IHBhc3NlcyBhIHByZWRpY2F0ZSB0ZXN0LlxuICBfLmZpbmRJbmRleCA9IGNyZWF0ZVByZWRpY2F0ZUluZGV4RmluZGVyKDEpO1xuICBfLmZpbmRMYXN0SW5kZXggPSBjcmVhdGVQcmVkaWNhdGVJbmRleEZpbmRlcigtMSk7XG5cbiAgLy8gVXNlIGEgY29tcGFyYXRvciBmdW5jdGlvbiB0byBmaWd1cmUgb3V0IHRoZSBzbWFsbGVzdCBpbmRleCBhdCB3aGljaFxuICAvLyBhbiBvYmplY3Qgc2hvdWxkIGJlIGluc2VydGVkIHNvIGFzIHRvIG1haW50YWluIG9yZGVyLiBVc2VzIGJpbmFyeSBzZWFyY2guXG4gIF8uc29ydGVkSW5kZXggPSBmdW5jdGlvbihhcnJheSwgb2JqLCBpdGVyYXRlZSwgY29udGV4dCkge1xuICAgIGl0ZXJhdGVlID0gY2IoaXRlcmF0ZWUsIGNvbnRleHQsIDEpO1xuICAgIHZhciB2YWx1ZSA9IGl0ZXJhdGVlKG9iaik7XG4gICAgdmFyIGxvdyA9IDAsIGhpZ2ggPSBnZXRMZW5ndGgoYXJyYXkpO1xuICAgIHdoaWxlIChsb3cgPCBoaWdoKSB7XG4gICAgICB2YXIgbWlkID0gTWF0aC5mbG9vcigobG93ICsgaGlnaCkgLyAyKTtcbiAgICAgIGlmIChpdGVyYXRlZShhcnJheVttaWRdKSA8IHZhbHVlKSBsb3cgPSBtaWQgKyAxOyBlbHNlIGhpZ2ggPSBtaWQ7XG4gICAgfVxuICAgIHJldHVybiBsb3c7XG4gIH07XG5cbiAgLy8gR2VuZXJhdG9yIGZ1bmN0aW9uIHRvIGNyZWF0ZSB0aGUgaW5kZXhPZiBhbmQgbGFzdEluZGV4T2YgZnVuY3Rpb25zLlxuICB2YXIgY3JlYXRlSW5kZXhGaW5kZXIgPSBmdW5jdGlvbihkaXIsIHByZWRpY2F0ZUZpbmQsIHNvcnRlZEluZGV4KSB7XG4gICAgcmV0dXJuIGZ1bmN0aW9uKGFycmF5LCBpdGVtLCBpZHgpIHtcbiAgICAgIHZhciBpID0gMCwgbGVuZ3RoID0gZ2V0TGVuZ3RoKGFycmF5KTtcbiAgICAgIGlmICh0eXBlb2YgaWR4ID09ICdudW1iZXInKSB7XG4gICAgICAgIGlmIChkaXIgPiAwKSB7XG4gICAgICAgICAgaSA9IGlkeCA+PSAwID8gaWR4IDogTWF0aC5tYXgoaWR4ICsgbGVuZ3RoLCBpKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBsZW5ndGggPSBpZHggPj0gMCA/IE1hdGgubWluKGlkeCArIDEsIGxlbmd0aCkgOiBpZHggKyBsZW5ndGggKyAxO1xuICAgICAgICB9XG4gICAgICB9IGVsc2UgaWYgKHNvcnRlZEluZGV4ICYmIGlkeCAmJiBsZW5ndGgpIHtcbiAgICAgICAgaWR4ID0gc29ydGVkSW5kZXgoYXJyYXksIGl0ZW0pO1xuICAgICAgICByZXR1cm4gYXJyYXlbaWR4XSA9PT0gaXRlbSA/IGlkeCA6IC0xO1xuICAgICAgfVxuICAgICAgaWYgKGl0ZW0gIT09IGl0ZW0pIHtcbiAgICAgICAgaWR4ID0gcHJlZGljYXRlRmluZChzbGljZS5jYWxsKGFycmF5LCBpLCBsZW5ndGgpLCBfLmlzTmFOKTtcbiAgICAgICAgcmV0dXJuIGlkeCA+PSAwID8gaWR4ICsgaSA6IC0xO1xuICAgICAgfVxuICAgICAgZm9yIChpZHggPSBkaXIgPiAwID8gaSA6IGxlbmd0aCAtIDE7IGlkeCA+PSAwICYmIGlkeCA8IGxlbmd0aDsgaWR4ICs9IGRpcikge1xuICAgICAgICBpZiAoYXJyYXlbaWR4XSA9PT0gaXRlbSkgcmV0dXJuIGlkeDtcbiAgICAgIH1cbiAgICAgIHJldHVybiAtMTtcbiAgICB9O1xuICB9O1xuXG4gIC8vIFJldHVybiB0aGUgcG9zaXRpb24gb2YgdGhlIGZpcnN0IG9jY3VycmVuY2Ugb2YgYW4gaXRlbSBpbiBhbiBhcnJheSxcbiAgLy8gb3IgLTEgaWYgdGhlIGl0ZW0gaXMgbm90IGluY2x1ZGVkIGluIHRoZSBhcnJheS5cbiAgLy8gSWYgdGhlIGFycmF5IGlzIGxhcmdlIGFuZCBhbHJlYWR5IGluIHNvcnQgb3JkZXIsIHBhc3MgYHRydWVgXG4gIC8vIGZvciAqKmlzU29ydGVkKiogdG8gdXNlIGJpbmFyeSBzZWFyY2guXG4gIF8uaW5kZXhPZiA9IGNyZWF0ZUluZGV4RmluZGVyKDEsIF8uZmluZEluZGV4LCBfLnNvcnRlZEluZGV4KTtcbiAgXy5sYXN0SW5kZXhPZiA9IGNyZWF0ZUluZGV4RmluZGVyKC0xLCBfLmZpbmRMYXN0SW5kZXgpO1xuXG4gIC8vIEdlbmVyYXRlIGFuIGludGVnZXIgQXJyYXkgY29udGFpbmluZyBhbiBhcml0aG1ldGljIHByb2dyZXNzaW9uLiBBIHBvcnQgb2ZcbiAgLy8gdGhlIG5hdGl2ZSBQeXRob24gYHJhbmdlKClgIGZ1bmN0aW9uLiBTZWVcbiAgLy8gW3RoZSBQeXRob24gZG9jdW1lbnRhdGlvbl0oaHR0cDovL2RvY3MucHl0aG9uLm9yZy9saWJyYXJ5L2Z1bmN0aW9ucy5odG1sI3JhbmdlKS5cbiAgXy5yYW5nZSA9IGZ1bmN0aW9uKHN0YXJ0LCBzdG9wLCBzdGVwKSB7XG4gICAgaWYgKHN0b3AgPT0gbnVsbCkge1xuICAgICAgc3RvcCA9IHN0YXJ0IHx8IDA7XG4gICAgICBzdGFydCA9IDA7XG4gICAgfVxuICAgIGlmICghc3RlcCkge1xuICAgICAgc3RlcCA9IHN0b3AgPCBzdGFydCA/IC0xIDogMTtcbiAgICB9XG5cbiAgICB2YXIgbGVuZ3RoID0gTWF0aC5tYXgoTWF0aC5jZWlsKChzdG9wIC0gc3RhcnQpIC8gc3RlcCksIDApO1xuICAgIHZhciByYW5nZSA9IEFycmF5KGxlbmd0aCk7XG5cbiAgICBmb3IgKHZhciBpZHggPSAwOyBpZHggPCBsZW5ndGg7IGlkeCsrLCBzdGFydCArPSBzdGVwKSB7XG4gICAgICByYW5nZVtpZHhdID0gc3RhcnQ7XG4gICAgfVxuXG4gICAgcmV0dXJuIHJhbmdlO1xuICB9O1xuXG4gIC8vIENodW5rIGEgc2luZ2xlIGFycmF5IGludG8gbXVsdGlwbGUgYXJyYXlzLCBlYWNoIGNvbnRhaW5pbmcgYGNvdW50YCBvciBmZXdlclxuICAvLyBpdGVtcy5cbiAgXy5jaHVuayA9IGZ1bmN0aW9uKGFycmF5LCBjb3VudCkge1xuICAgIGlmIChjb3VudCA9PSBudWxsIHx8IGNvdW50IDwgMSkgcmV0dXJuIFtdO1xuICAgIHZhciByZXN1bHQgPSBbXTtcbiAgICB2YXIgaSA9IDAsIGxlbmd0aCA9IGFycmF5Lmxlbmd0aDtcbiAgICB3aGlsZSAoaSA8IGxlbmd0aCkge1xuICAgICAgcmVzdWx0LnB1c2goc2xpY2UuY2FsbChhcnJheSwgaSwgaSArPSBjb3VudCkpO1xuICAgIH1cbiAgICByZXR1cm4gcmVzdWx0O1xuICB9O1xuXG4gIC8vIEZ1bmN0aW9uIChhaGVtKSBGdW5jdGlvbnNcbiAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tXG5cbiAgLy8gRGV0ZXJtaW5lcyB3aGV0aGVyIHRvIGV4ZWN1dGUgYSBmdW5jdGlvbiBhcyBhIGNvbnN0cnVjdG9yXG4gIC8vIG9yIGEgbm9ybWFsIGZ1bmN0aW9uIHdpdGggdGhlIHByb3ZpZGVkIGFyZ3VtZW50cy5cbiAgdmFyIGV4ZWN1dGVCb3VuZCA9IGZ1bmN0aW9uKHNvdXJjZUZ1bmMsIGJvdW5kRnVuYywgY29udGV4dCwgY2FsbGluZ0NvbnRleHQsIGFyZ3MpIHtcbiAgICBpZiAoIShjYWxsaW5nQ29udGV4dCBpbnN0YW5jZW9mIGJvdW5kRnVuYykpIHJldHVybiBzb3VyY2VGdW5jLmFwcGx5KGNvbnRleHQsIGFyZ3MpO1xuICAgIHZhciBzZWxmID0gYmFzZUNyZWF0ZShzb3VyY2VGdW5jLnByb3RvdHlwZSk7XG4gICAgdmFyIHJlc3VsdCA9IHNvdXJjZUZ1bmMuYXBwbHkoc2VsZiwgYXJncyk7XG4gICAgaWYgKF8uaXNPYmplY3QocmVzdWx0KSkgcmV0dXJuIHJlc3VsdDtcbiAgICByZXR1cm4gc2VsZjtcbiAgfTtcblxuICAvLyBDcmVhdGUgYSBmdW5jdGlvbiBib3VuZCB0byBhIGdpdmVuIG9iamVjdCAoYXNzaWduaW5nIGB0aGlzYCwgYW5kIGFyZ3VtZW50cyxcbiAgLy8gb3B0aW9uYWxseSkuIERlbGVnYXRlcyB0byAqKkVDTUFTY3JpcHQgNSoqJ3MgbmF0aXZlIGBGdW5jdGlvbi5iaW5kYCBpZlxuICAvLyBhdmFpbGFibGUuXG4gIF8uYmluZCA9IHJlc3RBcmd1bWVudHMoZnVuY3Rpb24oZnVuYywgY29udGV4dCwgYXJncykge1xuICAgIGlmICghXy5pc0Z1bmN0aW9uKGZ1bmMpKSB0aHJvdyBuZXcgVHlwZUVycm9yKCdCaW5kIG11c3QgYmUgY2FsbGVkIG9uIGEgZnVuY3Rpb24nKTtcbiAgICB2YXIgYm91bmQgPSByZXN0QXJndW1lbnRzKGZ1bmN0aW9uKGNhbGxBcmdzKSB7XG4gICAgICByZXR1cm4gZXhlY3V0ZUJvdW5kKGZ1bmMsIGJvdW5kLCBjb250ZXh0LCB0aGlzLCBhcmdzLmNvbmNhdChjYWxsQXJncykpO1xuICAgIH0pO1xuICAgIHJldHVybiBib3VuZDtcbiAgfSk7XG5cbiAgLy8gUGFydGlhbGx5IGFwcGx5IGEgZnVuY3Rpb24gYnkgY3JlYXRpbmcgYSB2ZXJzaW9uIHRoYXQgaGFzIGhhZCBzb21lIG9mIGl0c1xuICAvLyBhcmd1bWVudHMgcHJlLWZpbGxlZCwgd2l0aG91dCBjaGFuZ2luZyBpdHMgZHluYW1pYyBgdGhpc2AgY29udGV4dC4gXyBhY3RzXG4gIC8vIGFzIGEgcGxhY2Vob2xkZXIgYnkgZGVmYXVsdCwgYWxsb3dpbmcgYW55IGNvbWJpbmF0aW9uIG9mIGFyZ3VtZW50cyB0byBiZVxuICAvLyBwcmUtZmlsbGVkLiBTZXQgYF8ucGFydGlhbC5wbGFjZWhvbGRlcmAgZm9yIGEgY3VzdG9tIHBsYWNlaG9sZGVyIGFyZ3VtZW50LlxuICBfLnBhcnRpYWwgPSByZXN0QXJndW1lbnRzKGZ1bmN0aW9uKGZ1bmMsIGJvdW5kQXJncykge1xuICAgIHZhciBwbGFjZWhvbGRlciA9IF8ucGFydGlhbC5wbGFjZWhvbGRlcjtcbiAgICB2YXIgYm91bmQgPSBmdW5jdGlvbigpIHtcbiAgICAgIHZhciBwb3NpdGlvbiA9IDAsIGxlbmd0aCA9IGJvdW5kQXJncy5sZW5ndGg7XG4gICAgICB2YXIgYXJncyA9IEFycmF5KGxlbmd0aCk7XG4gICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGxlbmd0aDsgaSsrKSB7XG4gICAgICAgIGFyZ3NbaV0gPSBib3VuZEFyZ3NbaV0gPT09IHBsYWNlaG9sZGVyID8gYXJndW1lbnRzW3Bvc2l0aW9uKytdIDogYm91bmRBcmdzW2ldO1xuICAgICAgfVxuICAgICAgd2hpbGUgKHBvc2l0aW9uIDwgYXJndW1lbnRzLmxlbmd0aCkgYXJncy5wdXNoKGFyZ3VtZW50c1twb3NpdGlvbisrXSk7XG4gICAgICByZXR1cm4gZXhlY3V0ZUJvdW5kKGZ1bmMsIGJvdW5kLCB0aGlzLCB0aGlzLCBhcmdzKTtcbiAgICB9O1xuICAgIHJldHVybiBib3VuZDtcbiAgfSk7XG5cbiAgXy5wYXJ0aWFsLnBsYWNlaG9sZGVyID0gXztcblxuICAvLyBCaW5kIGEgbnVtYmVyIG9mIGFuIG9iamVjdCdzIG1ldGhvZHMgdG8gdGhhdCBvYmplY3QuIFJlbWFpbmluZyBhcmd1bWVudHNcbiAgLy8gYXJlIHRoZSBtZXRob2QgbmFtZXMgdG8gYmUgYm91bmQuIFVzZWZ1bCBmb3IgZW5zdXJpbmcgdGhhdCBhbGwgY2FsbGJhY2tzXG4gIC8vIGRlZmluZWQgb24gYW4gb2JqZWN0IGJlbG9uZyB0byBpdC5cbiAgXy5iaW5kQWxsID0gcmVzdEFyZ3VtZW50cyhmdW5jdGlvbihvYmosIGtleXMpIHtcbiAgICBrZXlzID0gZmxhdHRlbihrZXlzLCBmYWxzZSwgZmFsc2UpO1xuICAgIHZhciBpbmRleCA9IGtleXMubGVuZ3RoO1xuICAgIGlmIChpbmRleCA8IDEpIHRocm93IG5ldyBFcnJvcignYmluZEFsbCBtdXN0IGJlIHBhc3NlZCBmdW5jdGlvbiBuYW1lcycpO1xuICAgIHdoaWxlIChpbmRleC0tKSB7XG4gICAgICB2YXIga2V5ID0ga2V5c1tpbmRleF07XG4gICAgICBvYmpba2V5XSA9IF8uYmluZChvYmpba2V5XSwgb2JqKTtcbiAgICB9XG4gIH0pO1xuXG4gIC8vIE1lbW9pemUgYW4gZXhwZW5zaXZlIGZ1bmN0aW9uIGJ5IHN0b3JpbmcgaXRzIHJlc3VsdHMuXG4gIF8ubWVtb2l6ZSA9IGZ1bmN0aW9uKGZ1bmMsIGhhc2hlcikge1xuICAgIHZhciBtZW1vaXplID0gZnVuY3Rpb24oa2V5KSB7XG4gICAgICB2YXIgY2FjaGUgPSBtZW1vaXplLmNhY2hlO1xuICAgICAgdmFyIGFkZHJlc3MgPSAnJyArIChoYXNoZXIgPyBoYXNoZXIuYXBwbHkodGhpcywgYXJndW1lbnRzKSA6IGtleSk7XG4gICAgICBpZiAoIV8uaGFzKGNhY2hlLCBhZGRyZXNzKSkgY2FjaGVbYWRkcmVzc10gPSBmdW5jLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7XG4gICAgICByZXR1cm4gY2FjaGVbYWRkcmVzc107XG4gICAgfTtcbiAgICBtZW1vaXplLmNhY2hlID0ge307XG4gICAgcmV0dXJuIG1lbW9pemU7XG4gIH07XG5cbiAgLy8gRGVsYXlzIGEgZnVuY3Rpb24gZm9yIHRoZSBnaXZlbiBudW1iZXIgb2YgbWlsbGlzZWNvbmRzLCBhbmQgdGhlbiBjYWxsc1xuICAvLyBpdCB3aXRoIHRoZSBhcmd1bWVudHMgc3VwcGxpZWQuXG4gIF8uZGVsYXkgPSByZXN0QXJndW1lbnRzKGZ1bmN0aW9uKGZ1bmMsIHdhaXQsIGFyZ3MpIHtcbiAgICByZXR1cm4gc2V0VGltZW91dChmdW5jdGlvbigpIHtcbiAgICAgIHJldHVybiBmdW5jLmFwcGx5KG51bGwsIGFyZ3MpO1xuICAgIH0sIHdhaXQpO1xuICB9KTtcblxuICAvLyBEZWZlcnMgYSBmdW5jdGlvbiwgc2NoZWR1bGluZyBpdCB0byBydW4gYWZ0ZXIgdGhlIGN1cnJlbnQgY2FsbCBzdGFjayBoYXNcbiAgLy8gY2xlYXJlZC5cbiAgXy5kZWZlciA9IF8ucGFydGlhbChfLmRlbGF5LCBfLCAxKTtcblxuICAvLyBSZXR1cm5zIGEgZnVuY3Rpb24sIHRoYXQsIHdoZW4gaW52b2tlZCwgd2lsbCBvbmx5IGJlIHRyaWdnZXJlZCBhdCBtb3N0IG9uY2VcbiAgLy8gZHVyaW5nIGEgZ2l2ZW4gd2luZG93IG9mIHRpbWUuIE5vcm1hbGx5LCB0aGUgdGhyb3R0bGVkIGZ1bmN0aW9uIHdpbGwgcnVuXG4gIC8vIGFzIG11Y2ggYXMgaXQgY2FuLCB3aXRob3V0IGV2ZXIgZ29pbmcgbW9yZSB0aGFuIG9uY2UgcGVyIGB3YWl0YCBkdXJhdGlvbjtcbiAgLy8gYnV0IGlmIHlvdSdkIGxpa2UgdG8gZGlzYWJsZSB0aGUgZXhlY3V0aW9uIG9uIHRoZSBsZWFkaW5nIGVkZ2UsIHBhc3NcbiAgLy8gYHtsZWFkaW5nOiBmYWxzZX1gLiBUbyBkaXNhYmxlIGV4ZWN1dGlvbiBvbiB0aGUgdHJhaWxpbmcgZWRnZSwgZGl0dG8uXG4gIF8udGhyb3R0bGUgPSBmdW5jdGlvbihmdW5jLCB3YWl0LCBvcHRpb25zKSB7XG4gICAgdmFyIHRpbWVvdXQsIGNvbnRleHQsIGFyZ3MsIHJlc3VsdDtcbiAgICB2YXIgcHJldmlvdXMgPSAwO1xuICAgIGlmICghb3B0aW9ucykgb3B0aW9ucyA9IHt9O1xuXG4gICAgdmFyIGxhdGVyID0gZnVuY3Rpb24oKSB7XG4gICAgICBwcmV2aW91cyA9IG9wdGlvbnMubGVhZGluZyA9PT0gZmFsc2UgPyAwIDogXy5ub3coKTtcbiAgICAgIHRpbWVvdXQgPSBudWxsO1xuICAgICAgcmVzdWx0ID0gZnVuYy5hcHBseShjb250ZXh0LCBhcmdzKTtcbiAgICAgIGlmICghdGltZW91dCkgY29udGV4dCA9IGFyZ3MgPSBudWxsO1xuICAgIH07XG5cbiAgICB2YXIgdGhyb3R0bGVkID0gZnVuY3Rpb24oKSB7XG4gICAgICB2YXIgbm93ID0gXy5ub3coKTtcbiAgICAgIGlmICghcHJldmlvdXMgJiYgb3B0aW9ucy5sZWFkaW5nID09PSBmYWxzZSkgcHJldmlvdXMgPSBub3c7XG4gICAgICB2YXIgcmVtYWluaW5nID0gd2FpdCAtIChub3cgLSBwcmV2aW91cyk7XG4gICAgICBjb250ZXh0ID0gdGhpcztcbiAgICAgIGFyZ3MgPSBhcmd1bWVudHM7XG4gICAgICBpZiAocmVtYWluaW5nIDw9IDAgfHwgcmVtYWluaW5nID4gd2FpdCkge1xuICAgICAgICBpZiAodGltZW91dCkge1xuICAgICAgICAgIGNsZWFyVGltZW91dCh0aW1lb3V0KTtcbiAgICAgICAgICB0aW1lb3V0ID0gbnVsbDtcbiAgICAgICAgfVxuICAgICAgICBwcmV2aW91cyA9IG5vdztcbiAgICAgICAgcmVzdWx0ID0gZnVuYy5hcHBseShjb250ZXh0LCBhcmdzKTtcbiAgICAgICAgaWYgKCF0aW1lb3V0KSBjb250ZXh0ID0gYXJncyA9IG51bGw7XG4gICAgICB9IGVsc2UgaWYgKCF0aW1lb3V0ICYmIG9wdGlvbnMudHJhaWxpbmcgIT09IGZhbHNlKSB7XG4gICAgICAgIHRpbWVvdXQgPSBzZXRUaW1lb3V0KGxhdGVyLCByZW1haW5pbmcpO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9O1xuXG4gICAgdGhyb3R0bGVkLmNhbmNlbCA9IGZ1bmN0aW9uKCkge1xuICAgICAgY2xlYXJUaW1lb3V0KHRpbWVvdXQpO1xuICAgICAgcHJldmlvdXMgPSAwO1xuICAgICAgdGltZW91dCA9IGNvbnRleHQgPSBhcmdzID0gbnVsbDtcbiAgICB9O1xuXG4gICAgcmV0dXJuIHRocm90dGxlZDtcbiAgfTtcblxuICAvLyBSZXR1cm5zIGEgZnVuY3Rpb24sIHRoYXQsIGFzIGxvbmcgYXMgaXQgY29udGludWVzIHRvIGJlIGludm9rZWQsIHdpbGwgbm90XG4gIC8vIGJlIHRyaWdnZXJlZC4gVGhlIGZ1bmN0aW9uIHdpbGwgYmUgY2FsbGVkIGFmdGVyIGl0IHN0b3BzIGJlaW5nIGNhbGxlZCBmb3JcbiAgLy8gTiBtaWxsaXNlY29uZHMuIElmIGBpbW1lZGlhdGVgIGlzIHBhc3NlZCwgdHJpZ2dlciB0aGUgZnVuY3Rpb24gb24gdGhlXG4gIC8vIGxlYWRpbmcgZWRnZSwgaW5zdGVhZCBvZiB0aGUgdHJhaWxpbmcuXG4gIF8uZGVib3VuY2UgPSBmdW5jdGlvbihmdW5jLCB3YWl0LCBpbW1lZGlhdGUpIHtcbiAgICB2YXIgdGltZW91dCwgcmVzdWx0O1xuXG4gICAgdmFyIGxhdGVyID0gZnVuY3Rpb24oY29udGV4dCwgYXJncykge1xuICAgICAgdGltZW91dCA9IG51bGw7XG4gICAgICBpZiAoYXJncykgcmVzdWx0ID0gZnVuYy5hcHBseShjb250ZXh0LCBhcmdzKTtcbiAgICB9O1xuXG4gICAgdmFyIGRlYm91bmNlZCA9IHJlc3RBcmd1bWVudHMoZnVuY3Rpb24oYXJncykge1xuICAgICAgaWYgKHRpbWVvdXQpIGNsZWFyVGltZW91dCh0aW1lb3V0KTtcbiAgICAgIGlmIChpbW1lZGlhdGUpIHtcbiAgICAgICAgdmFyIGNhbGxOb3cgPSAhdGltZW91dDtcbiAgICAgICAgdGltZW91dCA9IHNldFRpbWVvdXQobGF0ZXIsIHdhaXQpO1xuICAgICAgICBpZiAoY2FsbE5vdykgcmVzdWx0ID0gZnVuYy5hcHBseSh0aGlzLCBhcmdzKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRpbWVvdXQgPSBfLmRlbGF5KGxhdGVyLCB3YWl0LCB0aGlzLCBhcmdzKTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9KTtcblxuICAgIGRlYm91bmNlZC5jYW5jZWwgPSBmdW5jdGlvbigpIHtcbiAgICAgIGNsZWFyVGltZW91dCh0aW1lb3V0KTtcbiAgICAgIHRpbWVvdXQgPSBudWxsO1xuICAgIH07XG5cbiAgICByZXR1cm4gZGVib3VuY2VkO1xuICB9O1xuXG4gIC8vIFJldHVybnMgdGhlIGZpcnN0IGZ1bmN0aW9uIHBhc3NlZCBhcyBhbiBhcmd1bWVudCB0byB0aGUgc2Vjb25kLFxuICAvLyBhbGxvd2luZyB5b3UgdG8gYWRqdXN0IGFyZ3VtZW50cywgcnVuIGNvZGUgYmVmb3JlIGFuZCBhZnRlciwgYW5kXG4gIC8vIGNvbmRpdGlvbmFsbHkgZXhlY3V0ZSB0aGUgb3JpZ2luYWwgZnVuY3Rpb24uXG4gIF8ud3JhcCA9IGZ1bmN0aW9uKGZ1bmMsIHdyYXBwZXIpIHtcbiAgICByZXR1cm4gXy5wYXJ0aWFsKHdyYXBwZXIsIGZ1bmMpO1xuICB9O1xuXG4gIC8vIFJldHVybnMgYSBuZWdhdGVkIHZlcnNpb24gb2YgdGhlIHBhc3NlZC1pbiBwcmVkaWNhdGUuXG4gIF8ubmVnYXRlID0gZnVuY3Rpb24ocHJlZGljYXRlKSB7XG4gICAgcmV0dXJuIGZ1bmN0aW9uKCkge1xuICAgICAgcmV0dXJuICFwcmVkaWNhdGUuYXBwbHkodGhpcywgYXJndW1lbnRzKTtcbiAgICB9O1xuICB9O1xuXG4gIC8vIFJldHVybnMgYSBmdW5jdGlvbiB0aGF0IGlzIHRoZSBjb21wb3NpdGlvbiBvZiBhIGxpc3Qgb2YgZnVuY3Rpb25zLCBlYWNoXG4gIC8vIGNvbnN1bWluZyB0aGUgcmV0dXJuIHZhbHVlIG9mIHRoZSBmdW5jdGlvbiB0aGF0IGZvbGxvd3MuXG4gIF8uY29tcG9zZSA9IGZ1bmN0aW9uKCkge1xuICAgIHZhciBhcmdzID0gYXJndW1lbnRzO1xuICAgIHZhciBzdGFydCA9IGFyZ3MubGVuZ3RoIC0gMTtcbiAgICByZXR1cm4gZnVuY3Rpb24oKSB7XG4gICAgICB2YXIgaSA9IHN0YXJ0O1xuICAgICAgdmFyIHJlc3VsdCA9IGFyZ3Nbc3RhcnRdLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7XG4gICAgICB3aGlsZSAoaS0tKSByZXN1bHQgPSBhcmdzW2ldLmNhbGwodGhpcywgcmVzdWx0KTtcbiAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfTtcbiAgfTtcblxuICAvLyBSZXR1cm5zIGEgZnVuY3Rpb24gdGhhdCB3aWxsIG9ubHkgYmUgZXhlY3V0ZWQgb24gYW5kIGFmdGVyIHRoZSBOdGggY2FsbC5cbiAgXy5hZnRlciA9IGZ1bmN0aW9uKHRpbWVzLCBmdW5jKSB7XG4gICAgcmV0dXJuIGZ1bmN0aW9uKCkge1xuICAgICAgaWYgKC0tdGltZXMgPCAxKSB7XG4gICAgICAgIHJldHVybiBmdW5jLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7XG4gICAgICB9XG4gICAgfTtcbiAgfTtcblxuICAvLyBSZXR1cm5zIGEgZnVuY3Rpb24gdGhhdCB3aWxsIG9ubHkgYmUgZXhlY3V0ZWQgdXAgdG8gKGJ1dCBub3QgaW5jbHVkaW5nKSB0aGUgTnRoIGNhbGwuXG4gIF8uYmVmb3JlID0gZnVuY3Rpb24odGltZXMsIGZ1bmMpIHtcbiAgICB2YXIgbWVtbztcbiAgICByZXR1cm4gZnVuY3Rpb24oKSB7XG4gICAgICBpZiAoLS10aW1lcyA+IDApIHtcbiAgICAgICAgbWVtbyA9IGZ1bmMuYXBwbHkodGhpcywgYXJndW1lbnRzKTtcbiAgICAgIH1cbiAgICAgIGlmICh0aW1lcyA8PSAxKSBmdW5jID0gbnVsbDtcbiAgICAgIHJldHVybiBtZW1vO1xuICAgIH07XG4gIH07XG5cbiAgLy8gUmV0dXJucyBhIGZ1bmN0aW9uIHRoYXQgd2lsbCBiZSBleGVjdXRlZCBhdCBtb3N0IG9uZSB0aW1lLCBubyBtYXR0ZXIgaG93XG4gIC8vIG9mdGVuIHlvdSBjYWxsIGl0LiBVc2VmdWwgZm9yIGxhenkgaW5pdGlhbGl6YXRpb24uXG4gIF8ub25jZSA9IF8ucGFydGlhbChfLmJlZm9yZSwgMik7XG5cbiAgXy5yZXN0QXJndW1lbnRzID0gcmVzdEFyZ3VtZW50cztcblxuICAvLyBPYmplY3QgRnVuY3Rpb25zXG4gIC8vIC0tLS0tLS0tLS0tLS0tLS1cblxuICAvLyBLZXlzIGluIElFIDwgOSB0aGF0IHdvbid0IGJlIGl0ZXJhdGVkIGJ5IGBmb3Iga2V5IGluIC4uLmAgYW5kIHRodXMgbWlzc2VkLlxuICB2YXIgaGFzRW51bUJ1ZyA9ICF7dG9TdHJpbmc6IG51bGx9LnByb3BlcnR5SXNFbnVtZXJhYmxlKCd0b1N0cmluZycpO1xuICB2YXIgbm9uRW51bWVyYWJsZVByb3BzID0gWyd2YWx1ZU9mJywgJ2lzUHJvdG90eXBlT2YnLCAndG9TdHJpbmcnLFxuICAgICdwcm9wZXJ0eUlzRW51bWVyYWJsZScsICdoYXNPd25Qcm9wZXJ0eScsICd0b0xvY2FsZVN0cmluZyddO1xuXG4gIHZhciBjb2xsZWN0Tm9uRW51bVByb3BzID0gZnVuY3Rpb24ob2JqLCBrZXlzKSB7XG4gICAgdmFyIG5vbkVudW1JZHggPSBub25FbnVtZXJhYmxlUHJvcHMubGVuZ3RoO1xuICAgIHZhciBjb25zdHJ1Y3RvciA9IG9iai5jb25zdHJ1Y3RvcjtcbiAgICB2YXIgcHJvdG8gPSBfLmlzRnVuY3Rpb24oY29uc3RydWN0b3IpICYmIGNvbnN0cnVjdG9yLnByb3RvdHlwZSB8fCBPYmpQcm90bztcblxuICAgIC8vIENvbnN0cnVjdG9yIGlzIGEgc3BlY2lhbCBjYXNlLlxuICAgIHZhciBwcm9wID0gJ2NvbnN0cnVjdG9yJztcbiAgICBpZiAoXy5oYXMob2JqLCBwcm9wKSAmJiAhXy5jb250YWlucyhrZXlzLCBwcm9wKSkga2V5cy5wdXNoKHByb3ApO1xuXG4gICAgd2hpbGUgKG5vbkVudW1JZHgtLSkge1xuICAgICAgcHJvcCA9IG5vbkVudW1lcmFibGVQcm9wc1tub25FbnVtSWR4XTtcbiAgICAgIGlmIChwcm9wIGluIG9iaiAmJiBvYmpbcHJvcF0gIT09IHByb3RvW3Byb3BdICYmICFfLmNvbnRhaW5zKGtleXMsIHByb3ApKSB7XG4gICAgICAgIGtleXMucHVzaChwcm9wKTtcbiAgICAgIH1cbiAgICB9XG4gIH07XG5cbiAgLy8gUmV0cmlldmUgdGhlIG5hbWVzIG9mIGFuIG9iamVjdCdzIG93biBwcm9wZXJ0aWVzLlxuICAvLyBEZWxlZ2F0ZXMgdG8gKipFQ01BU2NyaXB0IDUqKidzIG5hdGl2ZSBgT2JqZWN0LmtleXNgLlxuICBfLmtleXMgPSBmdW5jdGlvbihvYmopIHtcbiAgICBpZiAoIV8uaXNPYmplY3Qob2JqKSkgcmV0dXJuIFtdO1xuICAgIGlmIChuYXRpdmVLZXlzKSByZXR1cm4gbmF0aXZlS2V5cyhvYmopO1xuICAgIHZhciBrZXlzID0gW107XG4gICAgZm9yICh2YXIga2V5IGluIG9iaikgaWYgKF8uaGFzKG9iaiwga2V5KSkga2V5cy5wdXNoKGtleSk7XG4gICAgLy8gQWhlbSwgSUUgPCA5LlxuICAgIGlmIChoYXNFbnVtQnVnKSBjb2xsZWN0Tm9uRW51bVByb3BzKG9iaiwga2V5cyk7XG4gICAgcmV0dXJuIGtleXM7XG4gIH07XG5cbiAgLy8gUmV0cmlldmUgYWxsIHRoZSBwcm9wZXJ0eSBuYW1lcyBvZiBhbiBvYmplY3QuXG4gIF8uYWxsS2V5cyA9IGZ1bmN0aW9uKG9iaikge1xuICAgIGlmICghXy5pc09iamVjdChvYmopKSByZXR1cm4gW107XG4gICAgdmFyIGtleXMgPSBbXTtcbiAgICBmb3IgKHZhciBrZXkgaW4gb2JqKSBrZXlzLnB1c2goa2V5KTtcbiAgICAvLyBBaGVtLCBJRSA8IDkuXG4gICAgaWYgKGhhc0VudW1CdWcpIGNvbGxlY3ROb25FbnVtUHJvcHMob2JqLCBrZXlzKTtcbiAgICByZXR1cm4ga2V5cztcbiAgfTtcblxuICAvLyBSZXRyaWV2ZSB0aGUgdmFsdWVzIG9mIGFuIG9iamVjdCdzIHByb3BlcnRpZXMuXG4gIF8udmFsdWVzID0gZnVuY3Rpb24ob2JqKSB7XG4gICAgdmFyIGtleXMgPSBfLmtleXMob2JqKTtcbiAgICB2YXIgbGVuZ3RoID0ga2V5cy5sZW5ndGg7XG4gICAgdmFyIHZhbHVlcyA9IEFycmF5KGxlbmd0aCk7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBsZW5ndGg7IGkrKykge1xuICAgICAgdmFsdWVzW2ldID0gb2JqW2tleXNbaV1dO1xuICAgIH1cbiAgICByZXR1cm4gdmFsdWVzO1xuICB9O1xuXG4gIC8vIFJldHVybnMgdGhlIHJlc3VsdHMgb2YgYXBwbHlpbmcgdGhlIGl0ZXJhdGVlIHRvIGVhY2ggZWxlbWVudCBvZiB0aGUgb2JqZWN0LlxuICAvLyBJbiBjb250cmFzdCB0byBfLm1hcCBpdCByZXR1cm5zIGFuIG9iamVjdC5cbiAgXy5tYXBPYmplY3QgPSBmdW5jdGlvbihvYmosIGl0ZXJhdGVlLCBjb250ZXh0KSB7XG4gICAgaXRlcmF0ZWUgPSBjYihpdGVyYXRlZSwgY29udGV4dCk7XG4gICAgdmFyIGtleXMgPSBfLmtleXMob2JqKSxcbiAgICAgICAgbGVuZ3RoID0ga2V5cy5sZW5ndGgsXG4gICAgICAgIHJlc3VsdHMgPSB7fTtcbiAgICBmb3IgKHZhciBpbmRleCA9IDA7IGluZGV4IDwgbGVuZ3RoOyBpbmRleCsrKSB7XG4gICAgICB2YXIgY3VycmVudEtleSA9IGtleXNbaW5kZXhdO1xuICAgICAgcmVzdWx0c1tjdXJyZW50S2V5XSA9IGl0ZXJhdGVlKG9ialtjdXJyZW50S2V5XSwgY3VycmVudEtleSwgb2JqKTtcbiAgICB9XG4gICAgcmV0dXJuIHJlc3VsdHM7XG4gIH07XG5cbiAgLy8gQ29udmVydCBhbiBvYmplY3QgaW50byBhIGxpc3Qgb2YgYFtrZXksIHZhbHVlXWAgcGFpcnMuXG4gIC8vIFRoZSBvcHBvc2l0ZSBvZiBfLm9iamVjdC5cbiAgXy5wYWlycyA9IGZ1bmN0aW9uKG9iaikge1xuICAgIHZhciBrZXlzID0gXy5rZXlzKG9iaik7XG4gICAgdmFyIGxlbmd0aCA9IGtleXMubGVuZ3RoO1xuICAgIHZhciBwYWlycyA9IEFycmF5KGxlbmd0aCk7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBsZW5ndGg7IGkrKykge1xuICAgICAgcGFpcnNbaV0gPSBba2V5c1tpXSwgb2JqW2tleXNbaV1dXTtcbiAgICB9XG4gICAgcmV0dXJuIHBhaXJzO1xuICB9O1xuXG4gIC8vIEludmVydCB0aGUga2V5cyBhbmQgdmFsdWVzIG9mIGFuIG9iamVjdC4gVGhlIHZhbHVlcyBtdXN0IGJlIHNlcmlhbGl6YWJsZS5cbiAgXy5pbnZlcnQgPSBmdW5jdGlvbihvYmopIHtcbiAgICB2YXIgcmVzdWx0ID0ge307XG4gICAgdmFyIGtleXMgPSBfLmtleXMob2JqKTtcbiAgICBmb3IgKHZhciBpID0gMCwgbGVuZ3RoID0ga2V5cy5sZW5ndGg7IGkgPCBsZW5ndGg7IGkrKykge1xuICAgICAgcmVzdWx0W29ialtrZXlzW2ldXV0gPSBrZXlzW2ldO1xuICAgIH1cbiAgICByZXR1cm4gcmVzdWx0O1xuICB9O1xuXG4gIC8vIFJldHVybiBhIHNvcnRlZCBsaXN0IG9mIHRoZSBmdW5jdGlvbiBuYW1lcyBhdmFpbGFibGUgb24gdGhlIG9iamVjdC5cbiAgLy8gQWxpYXNlZCBhcyBgbWV0aG9kc2AuXG4gIF8uZnVuY3Rpb25zID0gXy5tZXRob2RzID0gZnVuY3Rpb24ob2JqKSB7XG4gICAgdmFyIG5hbWVzID0gW107XG4gICAgZm9yICh2YXIga2V5IGluIG9iaikge1xuICAgICAgaWYgKF8uaXNGdW5jdGlvbihvYmpba2V5XSkpIG5hbWVzLnB1c2goa2V5KTtcbiAgICB9XG4gICAgcmV0dXJuIG5hbWVzLnNvcnQoKTtcbiAgfTtcblxuICAvLyBBbiBpbnRlcm5hbCBmdW5jdGlvbiBmb3IgY3JlYXRpbmcgYXNzaWduZXIgZnVuY3Rpb25zLlxuICB2YXIgY3JlYXRlQXNzaWduZXIgPSBmdW5jdGlvbihrZXlzRnVuYywgZGVmYXVsdHMpIHtcbiAgICByZXR1cm4gZnVuY3Rpb24ob2JqKSB7XG4gICAgICB2YXIgbGVuZ3RoID0gYXJndW1lbnRzLmxlbmd0aDtcbiAgICAgIGlmIChkZWZhdWx0cykgb2JqID0gT2JqZWN0KG9iaik7XG4gICAgICBpZiAobGVuZ3RoIDwgMiB8fCBvYmogPT0gbnVsbCkgcmV0dXJuIG9iajtcbiAgICAgIGZvciAodmFyIGluZGV4ID0gMTsgaW5kZXggPCBsZW5ndGg7IGluZGV4KyspIHtcbiAgICAgICAgdmFyIHNvdXJjZSA9IGFyZ3VtZW50c1tpbmRleF0sXG4gICAgICAgICAgICBrZXlzID0ga2V5c0Z1bmMoc291cmNlKSxcbiAgICAgICAgICAgIGwgPSBrZXlzLmxlbmd0aDtcbiAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBsOyBpKyspIHtcbiAgICAgICAgICB2YXIga2V5ID0ga2V5c1tpXTtcbiAgICAgICAgICBpZiAoIWRlZmF1bHRzIHx8IG9ialtrZXldID09PSB2b2lkIDApIG9ialtrZXldID0gc291cmNlW2tleV07XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHJldHVybiBvYmo7XG4gICAgfTtcbiAgfTtcblxuICAvLyBFeHRlbmQgYSBnaXZlbiBvYmplY3Qgd2l0aCBhbGwgdGhlIHByb3BlcnRpZXMgaW4gcGFzc2VkLWluIG9iamVjdChzKS5cbiAgXy5leHRlbmQgPSBjcmVhdGVBc3NpZ25lcihfLmFsbEtleXMpO1xuXG4gIC8vIEFzc2lnbnMgYSBnaXZlbiBvYmplY3Qgd2l0aCBhbGwgdGhlIG93biBwcm9wZXJ0aWVzIGluIHRoZSBwYXNzZWQtaW4gb2JqZWN0KHMpLlxuICAvLyAoaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvSmF2YVNjcmlwdC9SZWZlcmVuY2UvR2xvYmFsX09iamVjdHMvT2JqZWN0L2Fzc2lnbilcbiAgXy5leHRlbmRPd24gPSBfLmFzc2lnbiA9IGNyZWF0ZUFzc2lnbmVyKF8ua2V5cyk7XG5cbiAgLy8gUmV0dXJucyB0aGUgZmlyc3Qga2V5IG9uIGFuIG9iamVjdCB0aGF0IHBhc3NlcyBhIHByZWRpY2F0ZSB0ZXN0LlxuICBfLmZpbmRLZXkgPSBmdW5jdGlvbihvYmosIHByZWRpY2F0ZSwgY29udGV4dCkge1xuICAgIHByZWRpY2F0ZSA9IGNiKHByZWRpY2F0ZSwgY29udGV4dCk7XG4gICAgdmFyIGtleXMgPSBfLmtleXMob2JqKSwga2V5O1xuICAgIGZvciAodmFyIGkgPSAwLCBsZW5ndGggPSBrZXlzLmxlbmd0aDsgaSA8IGxlbmd0aDsgaSsrKSB7XG4gICAgICBrZXkgPSBrZXlzW2ldO1xuICAgICAgaWYgKHByZWRpY2F0ZShvYmpba2V5XSwga2V5LCBvYmopKSByZXR1cm4ga2V5O1xuICAgIH1cbiAgfTtcblxuICAvLyBJbnRlcm5hbCBwaWNrIGhlbHBlciBmdW5jdGlvbiB0byBkZXRlcm1pbmUgaWYgYG9iamAgaGFzIGtleSBga2V5YC5cbiAgdmFyIGtleUluT2JqID0gZnVuY3Rpb24odmFsdWUsIGtleSwgb2JqKSB7XG4gICAgcmV0dXJuIGtleSBpbiBvYmo7XG4gIH07XG5cbiAgLy8gUmV0dXJuIGEgY29weSBvZiB0aGUgb2JqZWN0IG9ubHkgY29udGFpbmluZyB0aGUgd2hpdGVsaXN0ZWQgcHJvcGVydGllcy5cbiAgXy5waWNrID0gcmVzdEFyZ3VtZW50cyhmdW5jdGlvbihvYmosIGtleXMpIHtcbiAgICB2YXIgcmVzdWx0ID0ge30sIGl0ZXJhdGVlID0ga2V5c1swXTtcbiAgICBpZiAob2JqID09IG51bGwpIHJldHVybiByZXN1bHQ7XG4gICAgaWYgKF8uaXNGdW5jdGlvbihpdGVyYXRlZSkpIHtcbiAgICAgIGlmIChrZXlzLmxlbmd0aCA+IDEpIGl0ZXJhdGVlID0gb3B0aW1pemVDYihpdGVyYXRlZSwga2V5c1sxXSk7XG4gICAgICBrZXlzID0gXy5hbGxLZXlzKG9iaik7XG4gICAgfSBlbHNlIHtcbiAgICAgIGl0ZXJhdGVlID0ga2V5SW5PYmo7XG4gICAgICBrZXlzID0gZmxhdHRlbihrZXlzLCBmYWxzZSwgZmFsc2UpO1xuICAgICAgb2JqID0gT2JqZWN0KG9iaik7XG4gICAgfVxuICAgIGZvciAodmFyIGkgPSAwLCBsZW5ndGggPSBrZXlzLmxlbmd0aDsgaSA8IGxlbmd0aDsgaSsrKSB7XG4gICAgICB2YXIga2V5ID0ga2V5c1tpXTtcbiAgICAgIHZhciB2YWx1ZSA9IG9ialtrZXldO1xuICAgICAgaWYgKGl0ZXJhdGVlKHZhbHVlLCBrZXksIG9iaikpIHJlc3VsdFtrZXldID0gdmFsdWU7XG4gICAgfVxuICAgIHJldHVybiByZXN1bHQ7XG4gIH0pO1xuXG4gIC8vIFJldHVybiBhIGNvcHkgb2YgdGhlIG9iamVjdCB3aXRob3V0IHRoZSBibGFja2xpc3RlZCBwcm9wZXJ0aWVzLlxuICBfLm9taXQgPSByZXN0QXJndW1lbnRzKGZ1bmN0aW9uKG9iaiwga2V5cykge1xuICAgIHZhciBpdGVyYXRlZSA9IGtleXNbMF0sIGNvbnRleHQ7XG4gICAgaWYgKF8uaXNGdW5jdGlvbihpdGVyYXRlZSkpIHtcbiAgICAgIGl0ZXJhdGVlID0gXy5uZWdhdGUoaXRlcmF0ZWUpO1xuICAgICAgaWYgKGtleXMubGVuZ3RoID4gMSkgY29udGV4dCA9IGtleXNbMV07XG4gICAgfSBlbHNlIHtcbiAgICAgIGtleXMgPSBfLm1hcChmbGF0dGVuKGtleXMsIGZhbHNlLCBmYWxzZSksIFN0cmluZyk7XG4gICAgICBpdGVyYXRlZSA9IGZ1bmN0aW9uKHZhbHVlLCBrZXkpIHtcbiAgICAgICAgcmV0dXJuICFfLmNvbnRhaW5zKGtleXMsIGtleSk7XG4gICAgICB9O1xuICAgIH1cbiAgICByZXR1cm4gXy5waWNrKG9iaiwgaXRlcmF0ZWUsIGNvbnRleHQpO1xuICB9KTtcblxuICAvLyBGaWxsIGluIGEgZ2l2ZW4gb2JqZWN0IHdpdGggZGVmYXVsdCBwcm9wZXJ0aWVzLlxuICBfLmRlZmF1bHRzID0gY3JlYXRlQXNzaWduZXIoXy5hbGxLZXlzLCB0cnVlKTtcblxuICAvLyBDcmVhdGVzIGFuIG9iamVjdCB0aGF0IGluaGVyaXRzIGZyb20gdGhlIGdpdmVuIHByb3RvdHlwZSBvYmplY3QuXG4gIC8vIElmIGFkZGl0aW9uYWwgcHJvcGVydGllcyBhcmUgcHJvdmlkZWQgdGhlbiB0aGV5IHdpbGwgYmUgYWRkZWQgdG8gdGhlXG4gIC8vIGNyZWF0ZWQgb2JqZWN0LlxuICBfLmNyZWF0ZSA9IGZ1bmN0aW9uKHByb3RvdHlwZSwgcHJvcHMpIHtcbiAgICB2YXIgcmVzdWx0ID0gYmFzZUNyZWF0ZShwcm90b3R5cGUpO1xuICAgIGlmIChwcm9wcykgXy5leHRlbmRPd24ocmVzdWx0LCBwcm9wcyk7XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfTtcblxuICAvLyBDcmVhdGUgYSAoc2hhbGxvdy1jbG9uZWQpIGR1cGxpY2F0ZSBvZiBhbiBvYmplY3QuXG4gIF8uY2xvbmUgPSBmdW5jdGlvbihvYmopIHtcbiAgICBpZiAoIV8uaXNPYmplY3Qob2JqKSkgcmV0dXJuIG9iajtcbiAgICByZXR1cm4gXy5pc0FycmF5KG9iaikgPyBvYmouc2xpY2UoKSA6IF8uZXh0ZW5kKHt9LCBvYmopO1xuICB9O1xuXG4gIC8vIEludm9rZXMgaW50ZXJjZXB0b3Igd2l0aCB0aGUgb2JqLCBhbmQgdGhlbiByZXR1cm5zIG9iai5cbiAgLy8gVGhlIHByaW1hcnkgcHVycG9zZSBvZiB0aGlzIG1ldGhvZCBpcyB0byBcInRhcCBpbnRvXCIgYSBtZXRob2QgY2hhaW4sIGluXG4gIC8vIG9yZGVyIHRvIHBlcmZvcm0gb3BlcmF0aW9ucyBvbiBpbnRlcm1lZGlhdGUgcmVzdWx0cyB3aXRoaW4gdGhlIGNoYWluLlxuICBfLnRhcCA9IGZ1bmN0aW9uKG9iaiwgaW50ZXJjZXB0b3IpIHtcbiAgICBpbnRlcmNlcHRvcihvYmopO1xuICAgIHJldHVybiBvYmo7XG4gIH07XG5cbiAgLy8gUmV0dXJucyB3aGV0aGVyIGFuIG9iamVjdCBoYXMgYSBnaXZlbiBzZXQgb2YgYGtleTp2YWx1ZWAgcGFpcnMuXG4gIF8uaXNNYXRjaCA9IGZ1bmN0aW9uKG9iamVjdCwgYXR0cnMpIHtcbiAgICB2YXIga2V5cyA9IF8ua2V5cyhhdHRycyksIGxlbmd0aCA9IGtleXMubGVuZ3RoO1xuICAgIGlmIChvYmplY3QgPT0gbnVsbCkgcmV0dXJuICFsZW5ndGg7XG4gICAgdmFyIG9iaiA9IE9iamVjdChvYmplY3QpO1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbGVuZ3RoOyBpKyspIHtcbiAgICAgIHZhciBrZXkgPSBrZXlzW2ldO1xuICAgICAgaWYgKGF0dHJzW2tleV0gIT09IG9ialtrZXldIHx8ICEoa2V5IGluIG9iaikpIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgcmV0dXJuIHRydWU7XG4gIH07XG5cblxuICAvLyBJbnRlcm5hbCByZWN1cnNpdmUgY29tcGFyaXNvbiBmdW5jdGlvbiBmb3IgYGlzRXF1YWxgLlxuICB2YXIgZXEsIGRlZXBFcTtcbiAgZXEgPSBmdW5jdGlvbihhLCBiLCBhU3RhY2ssIGJTdGFjaykge1xuICAgIC8vIElkZW50aWNhbCBvYmplY3RzIGFyZSBlcXVhbC4gYDAgPT09IC0wYCwgYnV0IHRoZXkgYXJlbid0IGlkZW50aWNhbC5cbiAgICAvLyBTZWUgdGhlIFtIYXJtb255IGBlZ2FsYCBwcm9wb3NhbF0oaHR0cDovL3dpa2kuZWNtYXNjcmlwdC5vcmcvZG9rdS5waHA/aWQ9aGFybW9ueTplZ2FsKS5cbiAgICBpZiAoYSA9PT0gYikgcmV0dXJuIGEgIT09IDAgfHwgMSAvIGEgPT09IDEgLyBiO1xuICAgIC8vIGBudWxsYCBvciBgdW5kZWZpbmVkYCBvbmx5IGVxdWFsIHRvIGl0c2VsZiAoc3RyaWN0IGNvbXBhcmlzb24pLlxuICAgIGlmIChhID09IG51bGwgfHwgYiA9PSBudWxsKSByZXR1cm4gZmFsc2U7XG4gICAgLy8gYE5hTmBzIGFyZSBlcXVpdmFsZW50LCBidXQgbm9uLXJlZmxleGl2ZS5cbiAgICBpZiAoYSAhPT0gYSkgcmV0dXJuIGIgIT09IGI7XG4gICAgLy8gRXhoYXVzdCBwcmltaXRpdmUgY2hlY2tzXG4gICAgdmFyIHR5cGUgPSB0eXBlb2YgYTtcbiAgICBpZiAodHlwZSAhPT0gJ2Z1bmN0aW9uJyAmJiB0eXBlICE9PSAnb2JqZWN0JyAmJiB0eXBlb2YgYiAhPSAnb2JqZWN0JykgcmV0dXJuIGZhbHNlO1xuICAgIHJldHVybiBkZWVwRXEoYSwgYiwgYVN0YWNrLCBiU3RhY2spO1xuICB9O1xuXG4gIC8vIEludGVybmFsIHJlY3Vyc2l2ZSBjb21wYXJpc29uIGZ1bmN0aW9uIGZvciBgaXNFcXVhbGAuXG4gIGRlZXBFcSA9IGZ1bmN0aW9uKGEsIGIsIGFTdGFjaywgYlN0YWNrKSB7XG4gICAgLy8gVW53cmFwIGFueSB3cmFwcGVkIG9iamVjdHMuXG4gICAgaWYgKGEgaW5zdGFuY2VvZiBfKSBhID0gYS5fd3JhcHBlZDtcbiAgICBpZiAoYiBpbnN0YW5jZW9mIF8pIGIgPSBiLl93cmFwcGVkO1xuICAgIC8vIENvbXBhcmUgYFtbQ2xhc3NdXWAgbmFtZXMuXG4gICAgdmFyIGNsYXNzTmFtZSA9IHRvU3RyaW5nLmNhbGwoYSk7XG4gICAgaWYgKGNsYXNzTmFtZSAhPT0gdG9TdHJpbmcuY2FsbChiKSkgcmV0dXJuIGZhbHNlO1xuICAgIHN3aXRjaCAoY2xhc3NOYW1lKSB7XG4gICAgICAvLyBTdHJpbmdzLCBudW1iZXJzLCByZWd1bGFyIGV4cHJlc3Npb25zLCBkYXRlcywgYW5kIGJvb2xlYW5zIGFyZSBjb21wYXJlZCBieSB2YWx1ZS5cbiAgICAgIGNhc2UgJ1tvYmplY3QgUmVnRXhwXSc6XG4gICAgICAvLyBSZWdFeHBzIGFyZSBjb2VyY2VkIHRvIHN0cmluZ3MgZm9yIGNvbXBhcmlzb24gKE5vdGU6ICcnICsgL2EvaSA9PT0gJy9hL2knKVxuICAgICAgY2FzZSAnW29iamVjdCBTdHJpbmddJzpcbiAgICAgICAgLy8gUHJpbWl0aXZlcyBhbmQgdGhlaXIgY29ycmVzcG9uZGluZyBvYmplY3Qgd3JhcHBlcnMgYXJlIGVxdWl2YWxlbnQ7IHRodXMsIGBcIjVcImAgaXNcbiAgICAgICAgLy8gZXF1aXZhbGVudCB0byBgbmV3IFN0cmluZyhcIjVcIilgLlxuICAgICAgICByZXR1cm4gJycgKyBhID09PSAnJyArIGI7XG4gICAgICBjYXNlICdbb2JqZWN0IE51bWJlcl0nOlxuICAgICAgICAvLyBgTmFOYHMgYXJlIGVxdWl2YWxlbnQsIGJ1dCBub24tcmVmbGV4aXZlLlxuICAgICAgICAvLyBPYmplY3QoTmFOKSBpcyBlcXVpdmFsZW50IHRvIE5hTi5cbiAgICAgICAgaWYgKCthICE9PSArYSkgcmV0dXJuICtiICE9PSArYjtcbiAgICAgICAgLy8gQW4gYGVnYWxgIGNvbXBhcmlzb24gaXMgcGVyZm9ybWVkIGZvciBvdGhlciBudW1lcmljIHZhbHVlcy5cbiAgICAgICAgcmV0dXJuICthID09PSAwID8gMSAvICthID09PSAxIC8gYiA6ICthID09PSArYjtcbiAgICAgIGNhc2UgJ1tvYmplY3QgRGF0ZV0nOlxuICAgICAgY2FzZSAnW29iamVjdCBCb29sZWFuXSc6XG4gICAgICAgIC8vIENvZXJjZSBkYXRlcyBhbmQgYm9vbGVhbnMgdG8gbnVtZXJpYyBwcmltaXRpdmUgdmFsdWVzLiBEYXRlcyBhcmUgY29tcGFyZWQgYnkgdGhlaXJcbiAgICAgICAgLy8gbWlsbGlzZWNvbmQgcmVwcmVzZW50YXRpb25zLiBOb3RlIHRoYXQgaW52YWxpZCBkYXRlcyB3aXRoIG1pbGxpc2Vjb25kIHJlcHJlc2VudGF0aW9uc1xuICAgICAgICAvLyBvZiBgTmFOYCBhcmUgbm90IGVxdWl2YWxlbnQuXG4gICAgICAgIHJldHVybiArYSA9PT0gK2I7XG4gICAgICBjYXNlICdbb2JqZWN0IFN5bWJvbF0nOlxuICAgICAgICByZXR1cm4gU3ltYm9sUHJvdG8udmFsdWVPZi5jYWxsKGEpID09PSBTeW1ib2xQcm90by52YWx1ZU9mLmNhbGwoYik7XG4gICAgfVxuXG4gICAgdmFyIGFyZUFycmF5cyA9IGNsYXNzTmFtZSA9PT0gJ1tvYmplY3QgQXJyYXldJztcbiAgICBpZiAoIWFyZUFycmF5cykge1xuICAgICAgaWYgKHR5cGVvZiBhICE9ICdvYmplY3QnIHx8IHR5cGVvZiBiICE9ICdvYmplY3QnKSByZXR1cm4gZmFsc2U7XG5cbiAgICAgIC8vIE9iamVjdHMgd2l0aCBkaWZmZXJlbnQgY29uc3RydWN0b3JzIGFyZSBub3QgZXF1aXZhbGVudCwgYnV0IGBPYmplY3RgcyBvciBgQXJyYXlgc1xuICAgICAgLy8gZnJvbSBkaWZmZXJlbnQgZnJhbWVzIGFyZS5cbiAgICAgIHZhciBhQ3RvciA9IGEuY29uc3RydWN0b3IsIGJDdG9yID0gYi5jb25zdHJ1Y3RvcjtcbiAgICAgIGlmIChhQ3RvciAhPT0gYkN0b3IgJiYgIShfLmlzRnVuY3Rpb24oYUN0b3IpICYmIGFDdG9yIGluc3RhbmNlb2YgYUN0b3IgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfLmlzRnVuY3Rpb24oYkN0b3IpICYmIGJDdG9yIGluc3RhbmNlb2YgYkN0b3IpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICYmICgnY29uc3RydWN0b3InIGluIGEgJiYgJ2NvbnN0cnVjdG9yJyBpbiBiKSkge1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICB9XG4gICAgfVxuICAgIC8vIEFzc3VtZSBlcXVhbGl0eSBmb3IgY3ljbGljIHN0cnVjdHVyZXMuIFRoZSBhbGdvcml0aG0gZm9yIGRldGVjdGluZyBjeWNsaWNcbiAgICAvLyBzdHJ1Y3R1cmVzIGlzIGFkYXB0ZWQgZnJvbSBFUyA1LjEgc2VjdGlvbiAxNS4xMi4zLCBhYnN0cmFjdCBvcGVyYXRpb24gYEpPYC5cblxuICAgIC8vIEluaXRpYWxpemluZyBzdGFjayBvZiB0cmF2ZXJzZWQgb2JqZWN0cy5cbiAgICAvLyBJdCdzIGRvbmUgaGVyZSBzaW5jZSB3ZSBvbmx5IG5lZWQgdGhlbSBmb3Igb2JqZWN0cyBhbmQgYXJyYXlzIGNvbXBhcmlzb24uXG4gICAgYVN0YWNrID0gYVN0YWNrIHx8IFtdO1xuICAgIGJTdGFjayA9IGJTdGFjayB8fCBbXTtcbiAgICB2YXIgbGVuZ3RoID0gYVN0YWNrLmxlbmd0aDtcbiAgICB3aGlsZSAobGVuZ3RoLS0pIHtcbiAgICAgIC8vIExpbmVhciBzZWFyY2guIFBlcmZvcm1hbmNlIGlzIGludmVyc2VseSBwcm9wb3J0aW9uYWwgdG8gdGhlIG51bWJlciBvZlxuICAgICAgLy8gdW5pcXVlIG5lc3RlZCBzdHJ1Y3R1cmVzLlxuICAgICAgaWYgKGFTdGFja1tsZW5ndGhdID09PSBhKSByZXR1cm4gYlN0YWNrW2xlbmd0aF0gPT09IGI7XG4gICAgfVxuXG4gICAgLy8gQWRkIHRoZSBmaXJzdCBvYmplY3QgdG8gdGhlIHN0YWNrIG9mIHRyYXZlcnNlZCBvYmplY3RzLlxuICAgIGFTdGFjay5wdXNoKGEpO1xuICAgIGJTdGFjay5wdXNoKGIpO1xuXG4gICAgLy8gUmVjdXJzaXZlbHkgY29tcGFyZSBvYmplY3RzIGFuZCBhcnJheXMuXG4gICAgaWYgKGFyZUFycmF5cykge1xuICAgICAgLy8gQ29tcGFyZSBhcnJheSBsZW5ndGhzIHRvIGRldGVybWluZSBpZiBhIGRlZXAgY29tcGFyaXNvbiBpcyBuZWNlc3NhcnkuXG4gICAgICBsZW5ndGggPSBhLmxlbmd0aDtcbiAgICAgIGlmIChsZW5ndGggIT09IGIubGVuZ3RoKSByZXR1cm4gZmFsc2U7XG4gICAgICAvLyBEZWVwIGNvbXBhcmUgdGhlIGNvbnRlbnRzLCBpZ25vcmluZyBub24tbnVtZXJpYyBwcm9wZXJ0aWVzLlxuICAgICAgd2hpbGUgKGxlbmd0aC0tKSB7XG4gICAgICAgIGlmICghZXEoYVtsZW5ndGhdLCBiW2xlbmd0aF0sIGFTdGFjaywgYlN0YWNrKSkgcmV0dXJuIGZhbHNlO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICAvLyBEZWVwIGNvbXBhcmUgb2JqZWN0cy5cbiAgICAgIHZhciBrZXlzID0gXy5rZXlzKGEpLCBrZXk7XG4gICAgICBsZW5ndGggPSBrZXlzLmxlbmd0aDtcbiAgICAgIC8vIEVuc3VyZSB0aGF0IGJvdGggb2JqZWN0cyBjb250YWluIHRoZSBzYW1lIG51bWJlciBvZiBwcm9wZXJ0aWVzIGJlZm9yZSBjb21wYXJpbmcgZGVlcCBlcXVhbGl0eS5cbiAgICAgIGlmIChfLmtleXMoYikubGVuZ3RoICE9PSBsZW5ndGgpIHJldHVybiBmYWxzZTtcbiAgICAgIHdoaWxlIChsZW5ndGgtLSkge1xuICAgICAgICAvLyBEZWVwIGNvbXBhcmUgZWFjaCBtZW1iZXJcbiAgICAgICAga2V5ID0ga2V5c1tsZW5ndGhdO1xuICAgICAgICBpZiAoIShfLmhhcyhiLCBrZXkpICYmIGVxKGFba2V5XSwgYltrZXldLCBhU3RhY2ssIGJTdGFjaykpKSByZXR1cm4gZmFsc2U7XG4gICAgICB9XG4gICAgfVxuICAgIC8vIFJlbW92ZSB0aGUgZmlyc3Qgb2JqZWN0IGZyb20gdGhlIHN0YWNrIG9mIHRyYXZlcnNlZCBvYmplY3RzLlxuICAgIGFTdGFjay5wb3AoKTtcbiAgICBiU3RhY2sucG9wKCk7XG4gICAgcmV0dXJuIHRydWU7XG4gIH07XG5cbiAgLy8gUGVyZm9ybSBhIGRlZXAgY29tcGFyaXNvbiB0byBjaGVjayBpZiB0d28gb2JqZWN0cyBhcmUgZXF1YWwuXG4gIF8uaXNFcXVhbCA9IGZ1bmN0aW9uKGEsIGIpIHtcbiAgICByZXR1cm4gZXEoYSwgYik7XG4gIH07XG5cbiAgLy8gSXMgYSBnaXZlbiBhcnJheSwgc3RyaW5nLCBvciBvYmplY3QgZW1wdHk/XG4gIC8vIEFuIFwiZW1wdHlcIiBvYmplY3QgaGFzIG5vIGVudW1lcmFibGUgb3duLXByb3BlcnRpZXMuXG4gIF8uaXNFbXB0eSA9IGZ1bmN0aW9uKG9iaikge1xuICAgIGlmIChvYmogPT0gbnVsbCkgcmV0dXJuIHRydWU7XG4gICAgaWYgKGlzQXJyYXlMaWtlKG9iaikgJiYgKF8uaXNBcnJheShvYmopIHx8IF8uaXNTdHJpbmcob2JqKSB8fCBfLmlzQXJndW1lbnRzKG9iaikpKSByZXR1cm4gb2JqLmxlbmd0aCA9PT0gMDtcbiAgICByZXR1cm4gXy5rZXlzKG9iaikubGVuZ3RoID09PSAwO1xuICB9O1xuXG4gIC8vIElzIGEgZ2l2ZW4gdmFsdWUgYSBET00gZWxlbWVudD9cbiAgXy5pc0VsZW1lbnQgPSBmdW5jdGlvbihvYmopIHtcbiAgICByZXR1cm4gISEob2JqICYmIG9iai5ub2RlVHlwZSA9PT0gMSk7XG4gIH07XG5cbiAgLy8gSXMgYSBnaXZlbiB2YWx1ZSBhbiBhcnJheT9cbiAgLy8gRGVsZWdhdGVzIHRvIEVDTUE1J3MgbmF0aXZlIEFycmF5LmlzQXJyYXlcbiAgXy5pc0FycmF5ID0gbmF0aXZlSXNBcnJheSB8fCBmdW5jdGlvbihvYmopIHtcbiAgICByZXR1cm4gdG9TdHJpbmcuY2FsbChvYmopID09PSAnW29iamVjdCBBcnJheV0nO1xuICB9O1xuXG4gIC8vIElzIGEgZ2l2ZW4gdmFyaWFibGUgYW4gb2JqZWN0P1xuICBfLmlzT2JqZWN0ID0gZnVuY3Rpb24ob2JqKSB7XG4gICAgdmFyIHR5cGUgPSB0eXBlb2Ygb2JqO1xuICAgIHJldHVybiB0eXBlID09PSAnZnVuY3Rpb24nIHx8IHR5cGUgPT09ICdvYmplY3QnICYmICEhb2JqO1xuICB9O1xuXG4gIC8vIEFkZCBzb21lIGlzVHlwZSBtZXRob2RzOiBpc0FyZ3VtZW50cywgaXNGdW5jdGlvbiwgaXNTdHJpbmcsIGlzTnVtYmVyLCBpc0RhdGUsIGlzUmVnRXhwLCBpc0Vycm9yLCBpc01hcCwgaXNXZWFrTWFwLCBpc1NldCwgaXNXZWFrU2V0LlxuICBfLmVhY2goWydBcmd1bWVudHMnLCAnRnVuY3Rpb24nLCAnU3RyaW5nJywgJ051bWJlcicsICdEYXRlJywgJ1JlZ0V4cCcsICdFcnJvcicsICdTeW1ib2wnLCAnTWFwJywgJ1dlYWtNYXAnLCAnU2V0JywgJ1dlYWtTZXQnXSwgZnVuY3Rpb24obmFtZSkge1xuICAgIF9bJ2lzJyArIG5hbWVdID0gZnVuY3Rpb24ob2JqKSB7XG4gICAgICByZXR1cm4gdG9TdHJpbmcuY2FsbChvYmopID09PSAnW29iamVjdCAnICsgbmFtZSArICddJztcbiAgICB9O1xuICB9KTtcblxuICAvLyBEZWZpbmUgYSBmYWxsYmFjayB2ZXJzaW9uIG9mIHRoZSBtZXRob2QgaW4gYnJvd3NlcnMgKGFoZW0sIElFIDwgOSksIHdoZXJlXG4gIC8vIHRoZXJlIGlzbid0IGFueSBpbnNwZWN0YWJsZSBcIkFyZ3VtZW50c1wiIHR5cGUuXG4gIGlmICghXy5pc0FyZ3VtZW50cyhhcmd1bWVudHMpKSB7XG4gICAgXy5pc0FyZ3VtZW50cyA9IGZ1bmN0aW9uKG9iaikge1xuICAgICAgcmV0dXJuIF8uaGFzKG9iaiwgJ2NhbGxlZScpO1xuICAgIH07XG4gIH1cblxuICAvLyBPcHRpbWl6ZSBgaXNGdW5jdGlvbmAgaWYgYXBwcm9wcmlhdGUuIFdvcmsgYXJvdW5kIHNvbWUgdHlwZW9mIGJ1Z3MgaW4gb2xkIHY4LFxuICAvLyBJRSAxMSAoIzE2MjEpLCBTYWZhcmkgOCAoIzE5MjkpLCBhbmQgUGhhbnRvbUpTICgjMjIzNikuXG4gIHZhciBub2RlbGlzdCA9IHJvb3QuZG9jdW1lbnQgJiYgcm9vdC5kb2N1bWVudC5jaGlsZE5vZGVzO1xuICBpZiAodHlwZW9mIC8uLyAhPSAnZnVuY3Rpb24nICYmIHR5cGVvZiBJbnQ4QXJyYXkgIT0gJ29iamVjdCcgJiYgdHlwZW9mIG5vZGVsaXN0ICE9ICdmdW5jdGlvbicpIHtcbiAgICBfLmlzRnVuY3Rpb24gPSBmdW5jdGlvbihvYmopIHtcbiAgICAgIHJldHVybiB0eXBlb2Ygb2JqID09ICdmdW5jdGlvbicgfHwgZmFsc2U7XG4gICAgfTtcbiAgfVxuXG4gIC8vIElzIGEgZ2l2ZW4gb2JqZWN0IGEgZmluaXRlIG51bWJlcj9cbiAgXy5pc0Zpbml0ZSA9IGZ1bmN0aW9uKG9iaikge1xuICAgIHJldHVybiAhXy5pc1N5bWJvbChvYmopICYmIGlzRmluaXRlKG9iaikgJiYgIWlzTmFOKHBhcnNlRmxvYXQob2JqKSk7XG4gIH07XG5cbiAgLy8gSXMgdGhlIGdpdmVuIHZhbHVlIGBOYU5gP1xuICBfLmlzTmFOID0gZnVuY3Rpb24ob2JqKSB7XG4gICAgcmV0dXJuIF8uaXNOdW1iZXIob2JqKSAmJiBpc05hTihvYmopO1xuICB9O1xuXG4gIC8vIElzIGEgZ2l2ZW4gdmFsdWUgYSBib29sZWFuP1xuICBfLmlzQm9vbGVhbiA9IGZ1bmN0aW9uKG9iaikge1xuICAgIHJldHVybiBvYmogPT09IHRydWUgfHwgb2JqID09PSBmYWxzZSB8fCB0b1N0cmluZy5jYWxsKG9iaikgPT09ICdbb2JqZWN0IEJvb2xlYW5dJztcbiAgfTtcblxuICAvLyBJcyBhIGdpdmVuIHZhbHVlIGVxdWFsIHRvIG51bGw/XG4gIF8uaXNOdWxsID0gZnVuY3Rpb24ob2JqKSB7XG4gICAgcmV0dXJuIG9iaiA9PT0gbnVsbDtcbiAgfTtcblxuICAvLyBJcyBhIGdpdmVuIHZhcmlhYmxlIHVuZGVmaW5lZD9cbiAgXy5pc1VuZGVmaW5lZCA9IGZ1bmN0aW9uKG9iaikge1xuICAgIHJldHVybiBvYmogPT09IHZvaWQgMDtcbiAgfTtcblxuICAvLyBTaG9ydGN1dCBmdW5jdGlvbiBmb3IgY2hlY2tpbmcgaWYgYW4gb2JqZWN0IGhhcyBhIGdpdmVuIHByb3BlcnR5IGRpcmVjdGx5XG4gIC8vIG9uIGl0c2VsZiAoaW4gb3RoZXIgd29yZHMsIG5vdCBvbiBhIHByb3RvdHlwZSkuXG4gIF8uaGFzID0gZnVuY3Rpb24ob2JqLCBwYXRoKSB7XG4gICAgaWYgKCFfLmlzQXJyYXkocGF0aCkpIHtcbiAgICAgIHJldHVybiBvYmogIT0gbnVsbCAmJiBoYXNPd25Qcm9wZXJ0eS5jYWxsKG9iaiwgcGF0aCk7XG4gICAgfVxuICAgIHZhciBsZW5ndGggPSBwYXRoLmxlbmd0aDtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGxlbmd0aDsgaSsrKSB7XG4gICAgICB2YXIga2V5ID0gcGF0aFtpXTtcbiAgICAgIGlmIChvYmogPT0gbnVsbCB8fCAhaGFzT3duUHJvcGVydHkuY2FsbChvYmosIGtleSkpIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgfVxuICAgICAgb2JqID0gb2JqW2tleV07XG4gICAgfVxuICAgIHJldHVybiAhIWxlbmd0aDtcbiAgfTtcblxuICAvLyBVdGlsaXR5IEZ1bmN0aW9uc1xuICAvLyAtLS0tLS0tLS0tLS0tLS0tLVxuXG4gIC8vIFJ1biBVbmRlcnNjb3JlLmpzIGluICpub0NvbmZsaWN0KiBtb2RlLCByZXR1cm5pbmcgdGhlIGBfYCB2YXJpYWJsZSB0byBpdHNcbiAgLy8gcHJldmlvdXMgb3duZXIuIFJldHVybnMgYSByZWZlcmVuY2UgdG8gdGhlIFVuZGVyc2NvcmUgb2JqZWN0LlxuICBfLm5vQ29uZmxpY3QgPSBmdW5jdGlvbigpIHtcbiAgICByb290Ll8gPSBwcmV2aW91c1VuZGVyc2NvcmU7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH07XG5cbiAgLy8gS2VlcCB0aGUgaWRlbnRpdHkgZnVuY3Rpb24gYXJvdW5kIGZvciBkZWZhdWx0IGl0ZXJhdGVlcy5cbiAgXy5pZGVudGl0eSA9IGZ1bmN0aW9uKHZhbHVlKSB7XG4gICAgcmV0dXJuIHZhbHVlO1xuICB9O1xuXG4gIC8vIFByZWRpY2F0ZS1nZW5lcmF0aW5nIGZ1bmN0aW9ucy4gT2Z0ZW4gdXNlZnVsIG91dHNpZGUgb2YgVW5kZXJzY29yZS5cbiAgXy5jb25zdGFudCA9IGZ1bmN0aW9uKHZhbHVlKSB7XG4gICAgcmV0dXJuIGZ1bmN0aW9uKCkge1xuICAgICAgcmV0dXJuIHZhbHVlO1xuICAgIH07XG4gIH07XG5cbiAgXy5ub29wID0gZnVuY3Rpb24oKXt9O1xuXG4gIC8vIENyZWF0ZXMgYSBmdW5jdGlvbiB0aGF0LCB3aGVuIHBhc3NlZCBhbiBvYmplY3QsIHdpbGwgdHJhdmVyc2UgdGhhdCBvYmplY3TigJlzXG4gIC8vIHByb3BlcnRpZXMgZG93biB0aGUgZ2l2ZW4gYHBhdGhgLCBzcGVjaWZpZWQgYXMgYW4gYXJyYXkgb2Yga2V5cyBvciBpbmRleGVzLlxuICBfLnByb3BlcnR5ID0gZnVuY3Rpb24ocGF0aCkge1xuICAgIGlmICghXy5pc0FycmF5KHBhdGgpKSB7XG4gICAgICByZXR1cm4gc2hhbGxvd1Byb3BlcnR5KHBhdGgpO1xuICAgIH1cbiAgICByZXR1cm4gZnVuY3Rpb24ob2JqKSB7XG4gICAgICByZXR1cm4gZGVlcEdldChvYmosIHBhdGgpO1xuICAgIH07XG4gIH07XG5cbiAgLy8gR2VuZXJhdGVzIGEgZnVuY3Rpb24gZm9yIGEgZ2l2ZW4gb2JqZWN0IHRoYXQgcmV0dXJucyBhIGdpdmVuIHByb3BlcnR5LlxuICBfLnByb3BlcnR5T2YgPSBmdW5jdGlvbihvYmopIHtcbiAgICBpZiAob2JqID09IG51bGwpIHtcbiAgICAgIHJldHVybiBmdW5jdGlvbigpe307XG4gICAgfVxuICAgIHJldHVybiBmdW5jdGlvbihwYXRoKSB7XG4gICAgICByZXR1cm4gIV8uaXNBcnJheShwYXRoKSA/IG9ialtwYXRoXSA6IGRlZXBHZXQob2JqLCBwYXRoKTtcbiAgICB9O1xuICB9O1xuXG4gIC8vIFJldHVybnMgYSBwcmVkaWNhdGUgZm9yIGNoZWNraW5nIHdoZXRoZXIgYW4gb2JqZWN0IGhhcyBhIGdpdmVuIHNldCBvZlxuICAvLyBga2V5OnZhbHVlYCBwYWlycy5cbiAgXy5tYXRjaGVyID0gXy5tYXRjaGVzID0gZnVuY3Rpb24oYXR0cnMpIHtcbiAgICBhdHRycyA9IF8uZXh0ZW5kT3duKHt9LCBhdHRycyk7XG4gICAgcmV0dXJuIGZ1bmN0aW9uKG9iaikge1xuICAgICAgcmV0dXJuIF8uaXNNYXRjaChvYmosIGF0dHJzKTtcbiAgICB9O1xuICB9O1xuXG4gIC8vIFJ1biBhIGZ1bmN0aW9uICoqbioqIHRpbWVzLlxuICBfLnRpbWVzID0gZnVuY3Rpb24obiwgaXRlcmF0ZWUsIGNvbnRleHQpIHtcbiAgICB2YXIgYWNjdW0gPSBBcnJheShNYXRoLm1heCgwLCBuKSk7XG4gICAgaXRlcmF0ZWUgPSBvcHRpbWl6ZUNiKGl0ZXJhdGVlLCBjb250ZXh0LCAxKTtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IG47IGkrKykgYWNjdW1baV0gPSBpdGVyYXRlZShpKTtcbiAgICByZXR1cm4gYWNjdW07XG4gIH07XG5cbiAgLy8gUmV0dXJuIGEgcmFuZG9tIGludGVnZXIgYmV0d2VlbiBtaW4gYW5kIG1heCAoaW5jbHVzaXZlKS5cbiAgXy5yYW5kb20gPSBmdW5jdGlvbihtaW4sIG1heCkge1xuICAgIGlmIChtYXggPT0gbnVsbCkge1xuICAgICAgbWF4ID0gbWluO1xuICAgICAgbWluID0gMDtcbiAgICB9XG4gICAgcmV0dXJuIG1pbiArIE1hdGguZmxvb3IoTWF0aC5yYW5kb20oKSAqIChtYXggLSBtaW4gKyAxKSk7XG4gIH07XG5cbiAgLy8gQSAocG9zc2libHkgZmFzdGVyKSB3YXkgdG8gZ2V0IHRoZSBjdXJyZW50IHRpbWVzdGFtcCBhcyBhbiBpbnRlZ2VyLlxuICBfLm5vdyA9IERhdGUubm93IHx8IGZ1bmN0aW9uKCkge1xuICAgIHJldHVybiBuZXcgRGF0ZSgpLmdldFRpbWUoKTtcbiAgfTtcblxuICAvLyBMaXN0IG9mIEhUTUwgZW50aXRpZXMgZm9yIGVzY2FwaW5nLlxuICB2YXIgZXNjYXBlTWFwID0ge1xuICAgICcmJzogJyZhbXA7JyxcbiAgICAnPCc6ICcmbHQ7JyxcbiAgICAnPic6ICcmZ3Q7JyxcbiAgICAnXCInOiAnJnF1b3Q7JyxcbiAgICBcIidcIjogJyYjeDI3OycsXG4gICAgJ2AnOiAnJiN4NjA7J1xuICB9O1xuICB2YXIgdW5lc2NhcGVNYXAgPSBfLmludmVydChlc2NhcGVNYXApO1xuXG4gIC8vIEZ1bmN0aW9ucyBmb3IgZXNjYXBpbmcgYW5kIHVuZXNjYXBpbmcgc3RyaW5ncyB0by9mcm9tIEhUTUwgaW50ZXJwb2xhdGlvbi5cbiAgdmFyIGNyZWF0ZUVzY2FwZXIgPSBmdW5jdGlvbihtYXApIHtcbiAgICB2YXIgZXNjYXBlciA9IGZ1bmN0aW9uKG1hdGNoKSB7XG4gICAgICByZXR1cm4gbWFwW21hdGNoXTtcbiAgICB9O1xuICAgIC8vIFJlZ2V4ZXMgZm9yIGlkZW50aWZ5aW5nIGEga2V5IHRoYXQgbmVlZHMgdG8gYmUgZXNjYXBlZC5cbiAgICB2YXIgc291cmNlID0gJyg/OicgKyBfLmtleXMobWFwKS5qb2luKCd8JykgKyAnKSc7XG4gICAgdmFyIHRlc3RSZWdleHAgPSBSZWdFeHAoc291cmNlKTtcbiAgICB2YXIgcmVwbGFjZVJlZ2V4cCA9IFJlZ0V4cChzb3VyY2UsICdnJyk7XG4gICAgcmV0dXJuIGZ1bmN0aW9uKHN0cmluZykge1xuICAgICAgc3RyaW5nID0gc3RyaW5nID09IG51bGwgPyAnJyA6ICcnICsgc3RyaW5nO1xuICAgICAgcmV0dXJuIHRlc3RSZWdleHAudGVzdChzdHJpbmcpID8gc3RyaW5nLnJlcGxhY2UocmVwbGFjZVJlZ2V4cCwgZXNjYXBlcikgOiBzdHJpbmc7XG4gICAgfTtcbiAgfTtcbiAgXy5lc2NhcGUgPSBjcmVhdGVFc2NhcGVyKGVzY2FwZU1hcCk7XG4gIF8udW5lc2NhcGUgPSBjcmVhdGVFc2NhcGVyKHVuZXNjYXBlTWFwKTtcblxuICAvLyBUcmF2ZXJzZXMgdGhlIGNoaWxkcmVuIG9mIGBvYmpgIGFsb25nIGBwYXRoYC4gSWYgYSBjaGlsZCBpcyBhIGZ1bmN0aW9uLCBpdFxuICAvLyBpcyBpbnZva2VkIHdpdGggaXRzIHBhcmVudCBhcyBjb250ZXh0LiBSZXR1cm5zIHRoZSB2YWx1ZSBvZiB0aGUgZmluYWxcbiAgLy8gY2hpbGQsIG9yIGBmYWxsYmFja2AgaWYgYW55IGNoaWxkIGlzIHVuZGVmaW5lZC5cbiAgXy5yZXN1bHQgPSBmdW5jdGlvbihvYmosIHBhdGgsIGZhbGxiYWNrKSB7XG4gICAgaWYgKCFfLmlzQXJyYXkocGF0aCkpIHBhdGggPSBbcGF0aF07XG4gICAgdmFyIGxlbmd0aCA9IHBhdGgubGVuZ3RoO1xuICAgIGlmICghbGVuZ3RoKSB7XG4gICAgICByZXR1cm4gXy5pc0Z1bmN0aW9uKGZhbGxiYWNrKSA/IGZhbGxiYWNrLmNhbGwob2JqKSA6IGZhbGxiYWNrO1xuICAgIH1cbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGxlbmd0aDsgaSsrKSB7XG4gICAgICB2YXIgcHJvcCA9IG9iaiA9PSBudWxsID8gdm9pZCAwIDogb2JqW3BhdGhbaV1dO1xuICAgICAgaWYgKHByb3AgPT09IHZvaWQgMCkge1xuICAgICAgICBwcm9wID0gZmFsbGJhY2s7XG4gICAgICAgIGkgPSBsZW5ndGg7IC8vIEVuc3VyZSB3ZSBkb24ndCBjb250aW51ZSBpdGVyYXRpbmcuXG4gICAgICB9XG4gICAgICBvYmogPSBfLmlzRnVuY3Rpb24ocHJvcCkgPyBwcm9wLmNhbGwob2JqKSA6IHByb3A7XG4gICAgfVxuICAgIHJldHVybiBvYmo7XG4gIH07XG5cbiAgLy8gR2VuZXJhdGUgYSB1bmlxdWUgaW50ZWdlciBpZCAodW5pcXVlIHdpdGhpbiB0aGUgZW50aXJlIGNsaWVudCBzZXNzaW9uKS5cbiAgLy8gVXNlZnVsIGZvciB0ZW1wb3JhcnkgRE9NIGlkcy5cbiAgdmFyIGlkQ291bnRlciA9IDA7XG4gIF8udW5pcXVlSWQgPSBmdW5jdGlvbihwcmVmaXgpIHtcbiAgICB2YXIgaWQgPSArK2lkQ291bnRlciArICcnO1xuICAgIHJldHVybiBwcmVmaXggPyBwcmVmaXggKyBpZCA6IGlkO1xuICB9O1xuXG4gIC8vIEJ5IGRlZmF1bHQsIFVuZGVyc2NvcmUgdXNlcyBFUkItc3R5bGUgdGVtcGxhdGUgZGVsaW1pdGVycywgY2hhbmdlIHRoZVxuICAvLyBmb2xsb3dpbmcgdGVtcGxhdGUgc2V0dGluZ3MgdG8gdXNlIGFsdGVybmF0aXZlIGRlbGltaXRlcnMuXG4gIF8udGVtcGxhdGVTZXR0aW5ncyA9IHtcbiAgICBldmFsdWF0ZTogLzwlKFtcXHNcXFNdKz8pJT4vZyxcbiAgICBpbnRlcnBvbGF0ZTogLzwlPShbXFxzXFxTXSs/KSU+L2csXG4gICAgZXNjYXBlOiAvPCUtKFtcXHNcXFNdKz8pJT4vZ1xuICB9O1xuXG4gIC8vIFdoZW4gY3VzdG9taXppbmcgYHRlbXBsYXRlU2V0dGluZ3NgLCBpZiB5b3UgZG9uJ3Qgd2FudCB0byBkZWZpbmUgYW5cbiAgLy8gaW50ZXJwb2xhdGlvbiwgZXZhbHVhdGlvbiBvciBlc2NhcGluZyByZWdleCwgd2UgbmVlZCBvbmUgdGhhdCBpc1xuICAvLyBndWFyYW50ZWVkIG5vdCB0byBtYXRjaC5cbiAgdmFyIG5vTWF0Y2ggPSAvKC4pXi87XG5cbiAgLy8gQ2VydGFpbiBjaGFyYWN0ZXJzIG5lZWQgdG8gYmUgZXNjYXBlZCBzbyB0aGF0IHRoZXkgY2FuIGJlIHB1dCBpbnRvIGFcbiAgLy8gc3RyaW5nIGxpdGVyYWwuXG4gIHZhciBlc2NhcGVzID0ge1xuICAgIFwiJ1wiOiBcIidcIixcbiAgICAnXFxcXCc6ICdcXFxcJyxcbiAgICAnXFxyJzogJ3InLFxuICAgICdcXG4nOiAnbicsXG4gICAgJ1xcdTIwMjgnOiAndTIwMjgnLFxuICAgICdcXHUyMDI5JzogJ3UyMDI5J1xuICB9O1xuXG4gIHZhciBlc2NhcGVSZWdFeHAgPSAvXFxcXHwnfFxccnxcXG58XFx1MjAyOHxcXHUyMDI5L2c7XG5cbiAgdmFyIGVzY2FwZUNoYXIgPSBmdW5jdGlvbihtYXRjaCkge1xuICAgIHJldHVybiAnXFxcXCcgKyBlc2NhcGVzW21hdGNoXTtcbiAgfTtcblxuICAvLyBKYXZhU2NyaXB0IG1pY3JvLXRlbXBsYXRpbmcsIHNpbWlsYXIgdG8gSm9obiBSZXNpZydzIGltcGxlbWVudGF0aW9uLlxuICAvLyBVbmRlcnNjb3JlIHRlbXBsYXRpbmcgaGFuZGxlcyBhcmJpdHJhcnkgZGVsaW1pdGVycywgcHJlc2VydmVzIHdoaXRlc3BhY2UsXG4gIC8vIGFuZCBjb3JyZWN0bHkgZXNjYXBlcyBxdW90ZXMgd2l0aGluIGludGVycG9sYXRlZCBjb2RlLlxuICAvLyBOQjogYG9sZFNldHRpbmdzYCBvbmx5IGV4aXN0cyBmb3IgYmFja3dhcmRzIGNvbXBhdGliaWxpdHkuXG4gIF8udGVtcGxhdGUgPSBmdW5jdGlvbih0ZXh0LCBzZXR0aW5ncywgb2xkU2V0dGluZ3MpIHtcbiAgICBpZiAoIXNldHRpbmdzICYmIG9sZFNldHRpbmdzKSBzZXR0aW5ncyA9IG9sZFNldHRpbmdzO1xuICAgIHNldHRpbmdzID0gXy5kZWZhdWx0cyh7fSwgc2V0dGluZ3MsIF8udGVtcGxhdGVTZXR0aW5ncyk7XG5cbiAgICAvLyBDb21iaW5lIGRlbGltaXRlcnMgaW50byBvbmUgcmVndWxhciBleHByZXNzaW9uIHZpYSBhbHRlcm5hdGlvbi5cbiAgICB2YXIgbWF0Y2hlciA9IFJlZ0V4cChbXG4gICAgICAoc2V0dGluZ3MuZXNjYXBlIHx8IG5vTWF0Y2gpLnNvdXJjZSxcbiAgICAgIChzZXR0aW5ncy5pbnRlcnBvbGF0ZSB8fCBub01hdGNoKS5zb3VyY2UsXG4gICAgICAoc2V0dGluZ3MuZXZhbHVhdGUgfHwgbm9NYXRjaCkuc291cmNlXG4gICAgXS5qb2luKCd8JykgKyAnfCQnLCAnZycpO1xuXG4gICAgLy8gQ29tcGlsZSB0aGUgdGVtcGxhdGUgc291cmNlLCBlc2NhcGluZyBzdHJpbmcgbGl0ZXJhbHMgYXBwcm9wcmlhdGVseS5cbiAgICB2YXIgaW5kZXggPSAwO1xuICAgIHZhciBzb3VyY2UgPSBcIl9fcCs9J1wiO1xuICAgIHRleHQucmVwbGFjZShtYXRjaGVyLCBmdW5jdGlvbihtYXRjaCwgZXNjYXBlLCBpbnRlcnBvbGF0ZSwgZXZhbHVhdGUsIG9mZnNldCkge1xuICAgICAgc291cmNlICs9IHRleHQuc2xpY2UoaW5kZXgsIG9mZnNldCkucmVwbGFjZShlc2NhcGVSZWdFeHAsIGVzY2FwZUNoYXIpO1xuICAgICAgaW5kZXggPSBvZmZzZXQgKyBtYXRjaC5sZW5ndGg7XG5cbiAgICAgIGlmIChlc2NhcGUpIHtcbiAgICAgICAgc291cmNlICs9IFwiJytcXG4oKF9fdD0oXCIgKyBlc2NhcGUgKyBcIikpPT1udWxsPycnOl8uZXNjYXBlKF9fdCkpK1xcbidcIjtcbiAgICAgIH0gZWxzZSBpZiAoaW50ZXJwb2xhdGUpIHtcbiAgICAgICAgc291cmNlICs9IFwiJytcXG4oKF9fdD0oXCIgKyBpbnRlcnBvbGF0ZSArIFwiKSk9PW51bGw/Jyc6X190KStcXG4nXCI7XG4gICAgICB9IGVsc2UgaWYgKGV2YWx1YXRlKSB7XG4gICAgICAgIHNvdXJjZSArPSBcIic7XFxuXCIgKyBldmFsdWF0ZSArIFwiXFxuX19wKz0nXCI7XG4gICAgICB9XG5cbiAgICAgIC8vIEFkb2JlIFZNcyBuZWVkIHRoZSBtYXRjaCByZXR1cm5lZCB0byBwcm9kdWNlIHRoZSBjb3JyZWN0IG9mZnNldC5cbiAgICAgIHJldHVybiBtYXRjaDtcbiAgICB9KTtcbiAgICBzb3VyY2UgKz0gXCInO1xcblwiO1xuXG4gICAgLy8gSWYgYSB2YXJpYWJsZSBpcyBub3Qgc3BlY2lmaWVkLCBwbGFjZSBkYXRhIHZhbHVlcyBpbiBsb2NhbCBzY29wZS5cbiAgICBpZiAoIXNldHRpbmdzLnZhcmlhYmxlKSBzb3VyY2UgPSAnd2l0aChvYmp8fHt9KXtcXG4nICsgc291cmNlICsgJ31cXG4nO1xuXG4gICAgc291cmNlID0gXCJ2YXIgX190LF9fcD0nJyxfX2o9QXJyYXkucHJvdG90eXBlLmpvaW4sXCIgK1xuICAgICAgXCJwcmludD1mdW5jdGlvbigpe19fcCs9X19qLmNhbGwoYXJndW1lbnRzLCcnKTt9O1xcblwiICtcbiAgICAgIHNvdXJjZSArICdyZXR1cm4gX19wO1xcbic7XG5cbiAgICB2YXIgcmVuZGVyO1xuICAgIHRyeSB7XG4gICAgICByZW5kZXIgPSBuZXcgRnVuY3Rpb24oc2V0dGluZ3MudmFyaWFibGUgfHwgJ29iaicsICdfJywgc291cmNlKTtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICBlLnNvdXJjZSA9IHNvdXJjZTtcbiAgICAgIHRocm93IGU7XG4gICAgfVxuXG4gICAgdmFyIHRlbXBsYXRlID0gZnVuY3Rpb24oZGF0YSkge1xuICAgICAgcmV0dXJuIHJlbmRlci5jYWxsKHRoaXMsIGRhdGEsIF8pO1xuICAgIH07XG5cbiAgICAvLyBQcm92aWRlIHRoZSBjb21waWxlZCBzb3VyY2UgYXMgYSBjb252ZW5pZW5jZSBmb3IgcHJlY29tcGlsYXRpb24uXG4gICAgdmFyIGFyZ3VtZW50ID0gc2V0dGluZ3MudmFyaWFibGUgfHwgJ29iaic7XG4gICAgdGVtcGxhdGUuc291cmNlID0gJ2Z1bmN0aW9uKCcgKyBhcmd1bWVudCArICcpe1xcbicgKyBzb3VyY2UgKyAnfSc7XG5cbiAgICByZXR1cm4gdGVtcGxhdGU7XG4gIH07XG5cbiAgLy8gQWRkIGEgXCJjaGFpblwiIGZ1bmN0aW9uLiBTdGFydCBjaGFpbmluZyBhIHdyYXBwZWQgVW5kZXJzY29yZSBvYmplY3QuXG4gIF8uY2hhaW4gPSBmdW5jdGlvbihvYmopIHtcbiAgICB2YXIgaW5zdGFuY2UgPSBfKG9iaik7XG4gICAgaW5zdGFuY2UuX2NoYWluID0gdHJ1ZTtcbiAgICByZXR1cm4gaW5zdGFuY2U7XG4gIH07XG5cbiAgLy8gT09QXG4gIC8vIC0tLS0tLS0tLS0tLS0tLVxuICAvLyBJZiBVbmRlcnNjb3JlIGlzIGNhbGxlZCBhcyBhIGZ1bmN0aW9uLCBpdCByZXR1cm5zIGEgd3JhcHBlZCBvYmplY3QgdGhhdFxuICAvLyBjYW4gYmUgdXNlZCBPTy1zdHlsZS4gVGhpcyB3cmFwcGVyIGhvbGRzIGFsdGVyZWQgdmVyc2lvbnMgb2YgYWxsIHRoZVxuICAvLyB1bmRlcnNjb3JlIGZ1bmN0aW9ucy4gV3JhcHBlZCBvYmplY3RzIG1heSBiZSBjaGFpbmVkLlxuXG4gIC8vIEhlbHBlciBmdW5jdGlvbiB0byBjb250aW51ZSBjaGFpbmluZyBpbnRlcm1lZGlhdGUgcmVzdWx0cy5cbiAgdmFyIGNoYWluUmVzdWx0ID0gZnVuY3Rpb24oaW5zdGFuY2UsIG9iaikge1xuICAgIHJldHVybiBpbnN0YW5jZS5fY2hhaW4gPyBfKG9iaikuY2hhaW4oKSA6IG9iajtcbiAgfTtcblxuICAvLyBBZGQgeW91ciBvd24gY3VzdG9tIGZ1bmN0aW9ucyB0byB0aGUgVW5kZXJzY29yZSBvYmplY3QuXG4gIF8ubWl4aW4gPSBmdW5jdGlvbihvYmopIHtcbiAgICBfLmVhY2goXy5mdW5jdGlvbnMob2JqKSwgZnVuY3Rpb24obmFtZSkge1xuICAgICAgdmFyIGZ1bmMgPSBfW25hbWVdID0gb2JqW25hbWVdO1xuICAgICAgXy5wcm90b3R5cGVbbmFtZV0gPSBmdW5jdGlvbigpIHtcbiAgICAgICAgdmFyIGFyZ3MgPSBbdGhpcy5fd3JhcHBlZF07XG4gICAgICAgIHB1c2guYXBwbHkoYXJncywgYXJndW1lbnRzKTtcbiAgICAgICAgcmV0dXJuIGNoYWluUmVzdWx0KHRoaXMsIGZ1bmMuYXBwbHkoXywgYXJncykpO1xuICAgICAgfTtcbiAgICB9KTtcbiAgICByZXR1cm4gXztcbiAgfTtcblxuICAvLyBBZGQgYWxsIG9mIHRoZSBVbmRlcnNjb3JlIGZ1bmN0aW9ucyB0byB0aGUgd3JhcHBlciBvYmplY3QuXG4gIF8ubWl4aW4oXyk7XG5cbiAgLy8gQWRkIGFsbCBtdXRhdG9yIEFycmF5IGZ1bmN0aW9ucyB0byB0aGUgd3JhcHBlci5cbiAgXy5lYWNoKFsncG9wJywgJ3B1c2gnLCAncmV2ZXJzZScsICdzaGlmdCcsICdzb3J0JywgJ3NwbGljZScsICd1bnNoaWZ0J10sIGZ1bmN0aW9uKG5hbWUpIHtcbiAgICB2YXIgbWV0aG9kID0gQXJyYXlQcm90b1tuYW1lXTtcbiAgICBfLnByb3RvdHlwZVtuYW1lXSA9IGZ1bmN0aW9uKCkge1xuICAgICAgdmFyIG9iaiA9IHRoaXMuX3dyYXBwZWQ7XG4gICAgICBtZXRob2QuYXBwbHkob2JqLCBhcmd1bWVudHMpO1xuICAgICAgaWYgKChuYW1lID09PSAnc2hpZnQnIHx8IG5hbWUgPT09ICdzcGxpY2UnKSAmJiBvYmoubGVuZ3RoID09PSAwKSBkZWxldGUgb2JqWzBdO1xuICAgICAgcmV0dXJuIGNoYWluUmVzdWx0KHRoaXMsIG9iaik7XG4gICAgfTtcbiAgfSk7XG5cbiAgLy8gQWRkIGFsbCBhY2Nlc3NvciBBcnJheSBmdW5jdGlvbnMgdG8gdGhlIHdyYXBwZXIuXG4gIF8uZWFjaChbJ2NvbmNhdCcsICdqb2luJywgJ3NsaWNlJ10sIGZ1bmN0aW9uKG5hbWUpIHtcbiAgICB2YXIgbWV0aG9kID0gQXJyYXlQcm90b1tuYW1lXTtcbiAgICBfLnByb3RvdHlwZVtuYW1lXSA9IGZ1bmN0aW9uKCkge1xuICAgICAgcmV0dXJuIGNoYWluUmVzdWx0KHRoaXMsIG1ldGhvZC5hcHBseSh0aGlzLl93cmFwcGVkLCBhcmd1bWVudHMpKTtcbiAgICB9O1xuICB9KTtcblxuICAvLyBFeHRyYWN0cyB0aGUgcmVzdWx0IGZyb20gYSB3cmFwcGVkIGFuZCBjaGFpbmVkIG9iamVjdC5cbiAgXy5wcm90b3R5cGUudmFsdWUgPSBmdW5jdGlvbigpIHtcbiAgICByZXR1cm4gdGhpcy5fd3JhcHBlZDtcbiAgfTtcblxuICAvLyBQcm92aWRlIHVud3JhcHBpbmcgcHJveHkgZm9yIHNvbWUgbWV0aG9kcyB1c2VkIGluIGVuZ2luZSBvcGVyYXRpb25zXG4gIC8vIHN1Y2ggYXMgYXJpdGhtZXRpYyBhbmQgSlNPTiBzdHJpbmdpZmljYXRpb24uXG4gIF8ucHJvdG90eXBlLnZhbHVlT2YgPSBfLnByb3RvdHlwZS50b0pTT04gPSBfLnByb3RvdHlwZS52YWx1ZTtcblxuICBfLnByb3RvdHlwZS50b1N0cmluZyA9IGZ1bmN0aW9uKCkge1xuICAgIHJldHVybiBTdHJpbmcodGhpcy5fd3JhcHBlZCk7XG4gIH07XG5cbiAgLy8gQU1EIHJlZ2lzdHJhdGlvbiBoYXBwZW5zIGF0IHRoZSBlbmQgZm9yIGNvbXBhdGliaWxpdHkgd2l0aCBBTUQgbG9hZGVyc1xuICAvLyB0aGF0IG1heSBub3QgZW5mb3JjZSBuZXh0LXR1cm4gc2VtYW50aWNzIG9uIG1vZHVsZXMuIEV2ZW4gdGhvdWdoIGdlbmVyYWxcbiAgLy8gcHJhY3RpY2UgZm9yIEFNRCByZWdpc3RyYXRpb24gaXMgdG8gYmUgYW5vbnltb3VzLCB1bmRlcnNjb3JlIHJlZ2lzdGVyc1xuICAvLyBhcyBhIG5hbWVkIG1vZHVsZSBiZWNhdXNlLCBsaWtlIGpRdWVyeSwgaXQgaXMgYSBiYXNlIGxpYnJhcnkgdGhhdCBpc1xuICAvLyBwb3B1bGFyIGVub3VnaCB0byBiZSBidW5kbGVkIGluIGEgdGhpcmQgcGFydHkgbGliLCBidXQgbm90IGJlIHBhcnQgb2ZcbiAgLy8gYW4gQU1EIGxvYWQgcmVxdWVzdC4gVGhvc2UgY2FzZXMgY291bGQgZ2VuZXJhdGUgYW4gZXJyb3Igd2hlbiBhblxuICAvLyBhbm9ueW1vdXMgZGVmaW5lKCkgaXMgY2FsbGVkIG91dHNpZGUgb2YgYSBsb2FkZXIgcmVxdWVzdC5cbiAgaWYgKHR5cGVvZiBkZWZpbmUgPT0gJ2Z1bmN0aW9uJyAmJiBkZWZpbmUuYW1kKSB7XG4gICAgZGVmaW5lKCd1bmRlcnNjb3JlJywgW10sIGZ1bmN0aW9uKCkge1xuICAgICAgcmV0dXJuIF87XG4gICAgfSk7XG4gIH1cbn0oKSk7XG4iXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTs7QSIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///2\n")},function(module,exports){eval("module.exports = __WEBPACK_EXTERNAL_MODULE__3__;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovL0A5MWFwcC9uaW5leWkubGliLnNwYXJrY29yZS9leHRlcm5hbCB7XCJyb290XCI6XCJSZWFjdFJlZHV4STE4blwiLFwiYW1kXCI6XCJyZWFjdC1yZWR1eC1pMThuXCIsXCJjb21tb25qc1wiOlwicmVhY3QtcmVkdXgtaTE4blwiLFwiY29tbW9uanMyXCI6XCJyZWFjdC1yZWR1eC1pMThuXCIsXCJ1bWRcIjpcInJlYWN0LXJlZHV4LWkxOG5cIn0/ZGYxYSJdLCJzb3VyY2VzQ29udGVudCI6WyJtb2R1bGUuZXhwb3J0cyA9IF9fV0VCUEFDS19FWFRFUk5BTF9NT0RVTEVfXzNfXzsiXSwibWFwcGluZ3MiOiJBQUFBIiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///3\n")},function(module,exports,__webpack_require__){eval("var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;/*!\n  Copyright (c) 2018 Jed Watson.\n  Licensed under the MIT License (MIT), see\n  http://jedwatson.github.io/classnames\n*/\n/* global define */\n\n(function () {\n\t'use strict';\n\n\tvar hasOwn = {}.hasOwnProperty;\n\n\tfunction classNames() {\n\t\tvar classes = [];\n\n\t\tfor (var i = 0; i < arguments.length; i++) {\n\t\t\tvar arg = arguments[i];\n\t\t\tif (!arg) continue;\n\n\t\t\tvar argType = typeof arg;\n\n\t\t\tif (argType === 'string' || argType === 'number') {\n\t\t\t\tclasses.push(arg);\n\t\t\t} else if (Array.isArray(arg)) {\n\t\t\t\tif (arg.length) {\n\t\t\t\t\tvar inner = classNames.apply(null, arg);\n\t\t\t\t\tif (inner) {\n\t\t\t\t\t\tclasses.push(inner);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else if (argType === 'object') {\n\t\t\t\tif (arg.toString === Object.prototype.toString) {\n\t\t\t\t\tfor (var key in arg) {\n\t\t\t\t\t\tif (hasOwn.call(arg, key) && arg[key]) {\n\t\t\t\t\t\t\tclasses.push(key);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tclasses.push(arg.toString());\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn classes.join(' ');\n\t}\n\n\tif ( true && module.exports) {\n\t\tclassNames.default = classNames;\n\t\tmodule.exports = classNames;\n\t} else if (true) {\n\t\t// register as 'classnames', consistent with npm package name\n\t\t!(__WEBPACK_AMD_DEFINE_ARRAY__ = [], __WEBPACK_AMD_DEFINE_RESULT__ = (function () {\n\t\t\treturn classNames;\n\t\t}).apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n\t} else {}\n}());\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNC5qcyIsInNvdXJjZXMiOlsid2VicGFjazovL0A5MWFwcC9uaW5leWkubGliLnNwYXJrY29yZS8uL25vZGVfbW9kdWxlcy9jbGFzc25hbWVzL2luZGV4LmpzPzRkMjYiXSwic291cmNlc0NvbnRlbnQiOlsiLyohXG4gIENvcHlyaWdodCAoYykgMjAxOCBKZWQgV2F0c29uLlxuICBMaWNlbnNlZCB1bmRlciB0aGUgTUlUIExpY2Vuc2UgKE1JVCksIHNlZVxuICBodHRwOi8vamVkd2F0c29uLmdpdGh1Yi5pby9jbGFzc25hbWVzXG4qL1xuLyogZ2xvYmFsIGRlZmluZSAqL1xuXG4oZnVuY3Rpb24gKCkge1xuXHQndXNlIHN0cmljdCc7XG5cblx0dmFyIGhhc093biA9IHt9Lmhhc093blByb3BlcnR5O1xuXG5cdGZ1bmN0aW9uIGNsYXNzTmFtZXMoKSB7XG5cdFx0dmFyIGNsYXNzZXMgPSBbXTtcblxuXHRcdGZvciAodmFyIGkgPSAwOyBpIDwgYXJndW1lbnRzLmxlbmd0aDsgaSsrKSB7XG5cdFx0XHR2YXIgYXJnID0gYXJndW1lbnRzW2ldO1xuXHRcdFx0aWYgKCFhcmcpIGNvbnRpbnVlO1xuXG5cdFx0XHR2YXIgYXJnVHlwZSA9IHR5cGVvZiBhcmc7XG5cblx0XHRcdGlmIChhcmdUeXBlID09PSAnc3RyaW5nJyB8fCBhcmdUeXBlID09PSAnbnVtYmVyJykge1xuXHRcdFx0XHRjbGFzc2VzLnB1c2goYXJnKTtcblx0XHRcdH0gZWxzZSBpZiAoQXJyYXkuaXNBcnJheShhcmcpKSB7XG5cdFx0XHRcdGlmIChhcmcubGVuZ3RoKSB7XG5cdFx0XHRcdFx0dmFyIGlubmVyID0gY2xhc3NOYW1lcy5hcHBseShudWxsLCBhcmcpO1xuXHRcdFx0XHRcdGlmIChpbm5lcikge1xuXHRcdFx0XHRcdFx0Y2xhc3Nlcy5wdXNoKGlubmVyKTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblx0XHRcdH0gZWxzZSBpZiAoYXJnVHlwZSA9PT0gJ29iamVjdCcpIHtcblx0XHRcdFx0aWYgKGFyZy50b1N0cmluZyA9PT0gT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZykge1xuXHRcdFx0XHRcdGZvciAodmFyIGtleSBpbiBhcmcpIHtcblx0XHRcdFx0XHRcdGlmIChoYXNPd24uY2FsbChhcmcsIGtleSkgJiYgYXJnW2tleV0pIHtcblx0XHRcdFx0XHRcdFx0Y2xhc3Nlcy5wdXNoKGtleSk7XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdGNsYXNzZXMucHVzaChhcmcudG9TdHJpbmcoKSk7XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHR9XG5cblx0XHRyZXR1cm4gY2xhc3Nlcy5qb2luKCcgJyk7XG5cdH1cblxuXHRpZiAodHlwZW9mIG1vZHVsZSAhPT0gJ3VuZGVmaW5lZCcgJiYgbW9kdWxlLmV4cG9ydHMpIHtcblx0XHRjbGFzc05hbWVzLmRlZmF1bHQgPSBjbGFzc05hbWVzO1xuXHRcdG1vZHVsZS5leHBvcnRzID0gY2xhc3NOYW1lcztcblx0fSBlbHNlIGlmICh0eXBlb2YgZGVmaW5lID09PSAnZnVuY3Rpb24nICYmIHR5cGVvZiBkZWZpbmUuYW1kID09PSAnb2JqZWN0JyAmJiBkZWZpbmUuYW1kKSB7XG5cdFx0Ly8gcmVnaXN0ZXIgYXMgJ2NsYXNzbmFtZXMnLCBjb25zaXN0ZW50IHdpdGggbnBtIHBhY2thZ2UgbmFtZVxuXHRcdGRlZmluZSgnY2xhc3NuYW1lcycsIFtdLCBmdW5jdGlvbiAoKSB7XG5cdFx0XHRyZXR1cm4gY2xhc3NOYW1lcztcblx0XHR9KTtcblx0fSBlbHNlIHtcblx0XHR3aW5kb3cuY2xhc3NOYW1lcyA9IGNsYXNzTmFtZXM7XG5cdH1cbn0oKSk7XG4iXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0EsVUFFQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///4\n")},function(module,exports,__webpack_require__){eval("/**\n * Root reference for iframes.\n */\n\nvar root;\nif (typeof window !== 'undefined') { // Browser window\n  root = window;\n} else if (typeof self !== 'undefined') { // Web Worker\n  root = self;\n} else { // Other environments\n  console.warn(\"Using browser-only version of superagent in non-browser environment\");\n  root = this;\n}\n\nvar Emitter = __webpack_require__(24);\nvar RequestBase = __webpack_require__(25);\nvar isObject = __webpack_require__(11);\nvar ResponseBase = __webpack_require__(26);\nvar Agent = __webpack_require__(28);\n\n/**\n * Noop.\n */\n\nfunction noop(){};\n\n/**\n * Expose `request`.\n */\n\nvar request = exports = module.exports = function(method, url) {\n  // callback\n  if ('function' == typeof url) {\n    return new exports.Request('GET', method).end(url);\n  }\n\n  // url first\n  if (1 == arguments.length) {\n    return new exports.Request('GET', method);\n  }\n\n  return new exports.Request(method, url);\n}\n\nexports.Request = Request;\n\n/**\n * Determine XHR.\n */\n\nrequest.getXHR = function () {\n  if (root.XMLHttpRequest\n      && (!root.location || 'file:' != root.location.protocol\n          || !root.ActiveXObject)) {\n    return new XMLHttpRequest;\n  } else {\n    try { return new ActiveXObject('Microsoft.XMLHTTP'); } catch(e) {}\n    try { return new ActiveXObject('Msxml2.XMLHTTP.6.0'); } catch(e) {}\n    try { return new ActiveXObject('Msxml2.XMLHTTP.3.0'); } catch(e) {}\n    try { return new ActiveXObject('Msxml2.XMLHTTP'); } catch(e) {}\n  }\n  throw Error(\"Browser-only version of superagent could not find XHR\");\n};\n\n/**\n * Removes leading and trailing whitespace, added to support IE.\n *\n * @param {String} s\n * @return {String}\n * @api private\n */\n\nvar trim = ''.trim\n  ? function(s) { return s.trim(); }\n  : function(s) { return s.replace(/(^\\s*|\\s*$)/g, ''); };\n\n/**\n * Serialize the given `obj`.\n *\n * @param {Object} obj\n * @return {String}\n * @api private\n */\n\nfunction serialize(obj) {\n  if (!isObject(obj)) return obj;\n  var pairs = [];\n  for (var key in obj) {\n    pushEncodedKeyValuePair(pairs, key, obj[key]);\n  }\n  return pairs.join('&');\n}\n\n/**\n * Helps 'serialize' with serializing arrays.\n * Mutates the pairs array.\n *\n * @param {Array} pairs\n * @param {String} key\n * @param {Mixed} val\n */\n\nfunction pushEncodedKeyValuePair(pairs, key, val) {\n  if (val != null) {\n    if (Array.isArray(val)) {\n      val.forEach(function(v) {\n        pushEncodedKeyValuePair(pairs, key, v);\n      });\n    } else if (isObject(val)) {\n      for(var subkey in val) {\n        pushEncodedKeyValuePair(pairs, key + '[' + subkey + ']', val[subkey]);\n      }\n    } else {\n      pairs.push(encodeURIComponent(key)\n        + '=' + encodeURIComponent(val));\n    }\n  } else if (val === null) {\n    pairs.push(encodeURIComponent(key));\n  }\n}\n\n/**\n * Expose serialization method.\n */\n\nrequest.serializeObject = serialize;\n\n/**\n  * Parse the given x-www-form-urlencoded `str`.\n  *\n  * @param {String} str\n  * @return {Object}\n  * @api private\n  */\n\nfunction parseString(str) {\n  var obj = {};\n  var pairs = str.split('&');\n  var pair;\n  var pos;\n\n  for (var i = 0, len = pairs.length; i < len; ++i) {\n    pair = pairs[i];\n    pos = pair.indexOf('=');\n    if (pos == -1) {\n      obj[decodeURIComponent(pair)] = '';\n    } else {\n      obj[decodeURIComponent(pair.slice(0, pos))] =\n        decodeURIComponent(pair.slice(pos + 1));\n    }\n  }\n\n  return obj;\n}\n\n/**\n * Expose parser.\n */\n\nrequest.parseString = parseString;\n\n/**\n * Default MIME type map.\n *\n *     superagent.types.xml = 'application/xml';\n *\n */\n\nrequest.types = {\n  html: 'text/html',\n  json: 'application/json',\n  xml: 'text/xml',\n  urlencoded: 'application/x-www-form-urlencoded',\n  'form': 'application/x-www-form-urlencoded',\n  'form-data': 'application/x-www-form-urlencoded'\n};\n\n/**\n * Default serialization map.\n *\n *     superagent.serialize['application/xml'] = function(obj){\n *       return 'generated xml here';\n *     };\n *\n */\n\nrequest.serialize = {\n  'application/x-www-form-urlencoded': serialize,\n  'application/json': JSON.stringify\n};\n\n/**\n  * Default parsers.\n  *\n  *     superagent.parse['application/xml'] = function(str){\n  *       return { object parsed from str };\n  *     };\n  *\n  */\n\nrequest.parse = {\n  'application/x-www-form-urlencoded': parseString,\n  'application/json': JSON.parse\n};\n\n/**\n * Parse the given header `str` into\n * an object containing the mapped fields.\n *\n * @param {String} str\n * @return {Object}\n * @api private\n */\n\nfunction parseHeader(str) {\n  var lines = str.split(/\\r?\\n/);\n  var fields = {};\n  var index;\n  var line;\n  var field;\n  var val;\n\n  for (var i = 0, len = lines.length; i < len; ++i) {\n    line = lines[i];\n    index = line.indexOf(':');\n    if (index === -1) { // could be empty line, just skip it\n      continue;\n    }\n    field = line.slice(0, index).toLowerCase();\n    val = trim(line.slice(index + 1));\n    fields[field] = val;\n  }\n\n  return fields;\n}\n\n/**\n * Check if `mime` is json or has +json structured syntax suffix.\n *\n * @param {String} mime\n * @return {Boolean}\n * @api private\n */\n\nfunction isJSON(mime) {\n  // should match /json or +json\n  // but not /json-seq\n  return /[\\/+]json($|[^-\\w])/.test(mime);\n}\n\n/**\n * Initialize a new `Response` with the given `xhr`.\n *\n *  - set flags (.ok, .error, etc)\n *  - parse header\n *\n * Examples:\n *\n *  Aliasing `superagent` as `request` is nice:\n *\n *      request = superagent;\n *\n *  We can use the promise-like API, or pass callbacks:\n *\n *      request.get('/').end(function(res){});\n *      request.get('/', function(res){});\n *\n *  Sending data can be chained:\n *\n *      request\n *        .post('/user')\n *        .send({ name: 'tj' })\n *        .end(function(res){});\n *\n *  Or passed to `.send()`:\n *\n *      request\n *        .post('/user')\n *        .send({ name: 'tj' }, function(res){});\n *\n *  Or passed to `.post()`:\n *\n *      request\n *        .post('/user', { name: 'tj' })\n *        .end(function(res){});\n *\n * Or further reduced to a single call for simple cases:\n *\n *      request\n *        .post('/user', { name: 'tj' }, function(res){});\n *\n * @param {XMLHTTPRequest} xhr\n * @param {Object} options\n * @api private\n */\n\nfunction Response(req) {\n  this.req = req;\n  this.xhr = this.req.xhr;\n  // responseText is accessible only if responseType is '' or 'text' and on older browsers\n  this.text = ((this.req.method !='HEAD' && (this.xhr.responseType === '' || this.xhr.responseType === 'text')) || typeof this.xhr.responseType === 'undefined')\n     ? this.xhr.responseText\n     : null;\n  this.statusText = this.req.xhr.statusText;\n  var status = this.xhr.status;\n  // handle IE9 bug: http://stackoverflow.com/questions/10046972/msie-returns-status-code-of-1223-for-ajax-request\n  if (status === 1223) {\n    status = 204;\n  }\n  this._setStatusProperties(status);\n  this.header = this.headers = parseHeader(this.xhr.getAllResponseHeaders());\n  // getAllResponseHeaders sometimes falsely returns \"\" for CORS requests, but\n  // getResponseHeader still works. so we get content-type even if getting\n  // other headers fails.\n  this.header['content-type'] = this.xhr.getResponseHeader('content-type');\n  this._setHeaderProperties(this.header);\n\n  if (null === this.text && req._responseType) {\n    this.body = this.xhr.response;\n  } else {\n    this.body = this.req.method != 'HEAD'\n      ? this._parseBody(this.text ? this.text : this.xhr.response)\n      : null;\n  }\n}\n\nResponseBase(Response.prototype);\n\n/**\n * Parse the given body `str`.\n *\n * Used for auto-parsing of bodies. Parsers\n * are defined on the `superagent.parse` object.\n *\n * @param {String} str\n * @return {Mixed}\n * @api private\n */\n\nResponse.prototype._parseBody = function(str) {\n  var parse = request.parse[this.type];\n  if (this.req._parser) {\n    return this.req._parser(this, str);\n  }\n  if (!parse && isJSON(this.type)) {\n    parse = request.parse['application/json'];\n  }\n  return parse && str && (str.length || str instanceof Object)\n    ? parse(str)\n    : null;\n};\n\n/**\n * Return an `Error` representative of this response.\n *\n * @return {Error}\n * @api public\n */\n\nResponse.prototype.toError = function(){\n  var req = this.req;\n  var method = req.method;\n  var url = req.url;\n\n  var msg = 'cannot ' + method + ' ' + url + ' (' + this.status + ')';\n  var err = new Error(msg);\n  err.status = this.status;\n  err.method = method;\n  err.url = url;\n\n  return err;\n};\n\n/**\n * Expose `Response`.\n */\n\nrequest.Response = Response;\n\n/**\n * Initialize a new `Request` with the given `method` and `url`.\n *\n * @param {String} method\n * @param {String} url\n * @api public\n */\n\nfunction Request(method, url) {\n  var self = this;\n  this._query = this._query || [];\n  this.method = method;\n  this.url = url;\n  this.header = {}; // preserves header name case\n  this._header = {}; // coerces header names to lowercase\n  this.on('end', function(){\n    var err = null;\n    var res = null;\n\n    try {\n      res = new Response(self);\n    } catch(e) {\n      err = new Error('Parser is unable to parse the response');\n      err.parse = true;\n      err.original = e;\n      // issue #675: return the raw response if the response parsing fails\n      if (self.xhr) {\n        // ie9 doesn't have 'response' property\n        err.rawResponse = typeof self.xhr.responseType == 'undefined' ? self.xhr.responseText : self.xhr.response;\n        // issue #876: return the http status code if the response parsing fails\n        err.status = self.xhr.status ? self.xhr.status : null;\n        err.statusCode = err.status; // backwards-compat only\n      } else {\n        err.rawResponse = null;\n        err.status = null;\n      }\n\n      return self.callback(err);\n    }\n\n    self.emit('response', res);\n\n    var new_err;\n    try {\n      if (!self._isResponseOK(res)) {\n        new_err = new Error(res.statusText || 'Unsuccessful HTTP response');\n      }\n    } catch(custom_err) {\n      new_err = custom_err; // ok() callback can throw\n    }\n\n    // #1000 don't catch errors from the callback to avoid double calling it\n    if (new_err) {\n      new_err.original = err;\n      new_err.response = res;\n      new_err.status = res.status;\n      self.callback(new_err, res);\n    } else {\n      self.callback(null, res);\n    }\n  });\n}\n\n/**\n * Mixin `Emitter` and `RequestBase`.\n */\n\nEmitter(Request.prototype);\nRequestBase(Request.prototype);\n\n/**\n * Set Content-Type to `type`, mapping values from `request.types`.\n *\n * Examples:\n *\n *      superagent.types.xml = 'application/xml';\n *\n *      request.post('/')\n *        .type('xml')\n *        .send(xmlstring)\n *        .end(callback);\n *\n *      request.post('/')\n *        .type('application/xml')\n *        .send(xmlstring)\n *        .end(callback);\n *\n * @param {String} type\n * @return {Request} for chaining\n * @api public\n */\n\nRequest.prototype.type = function(type){\n  this.set('Content-Type', request.types[type] || type);\n  return this;\n};\n\n/**\n * Set Accept to `type`, mapping values from `request.types`.\n *\n * Examples:\n *\n *      superagent.types.json = 'application/json';\n *\n *      request.get('/agent')\n *        .accept('json')\n *        .end(callback);\n *\n *      request.get('/agent')\n *        .accept('application/json')\n *        .end(callback);\n *\n * @param {String} accept\n * @return {Request} for chaining\n * @api public\n */\n\nRequest.prototype.accept = function(type){\n  this.set('Accept', request.types[type] || type);\n  return this;\n};\n\n/**\n * Set Authorization field value with `user` and `pass`.\n *\n * @param {String} user\n * @param {String} [pass] optional in case of using 'bearer' as type\n * @param {Object} options with 'type' property 'auto', 'basic' or 'bearer' (default 'basic')\n * @return {Request} for chaining\n * @api public\n */\n\nRequest.prototype.auth = function(user, pass, options){\n  if (1 === arguments.length) pass = '';\n  if (typeof pass === 'object' && pass !== null) { // pass is optional and can be replaced with options\n    options = pass;\n    pass = '';\n  }\n  if (!options) {\n    options = {\n      type: 'function' === typeof btoa ? 'basic' : 'auto',\n    };\n  }\n\n  var encoder = function(string) {\n    if ('function' === typeof btoa) {\n      return btoa(string);\n    }\n    throw new Error('Cannot use basic auth, btoa is not a function');\n  };\n\n  return this._auth(user, pass, options, encoder);\n};\n\n/**\n * Add query-string `val`.\n *\n * Examples:\n *\n *   request.get('/shoes')\n *     .query('size=10')\n *     .query({ color: 'blue' })\n *\n * @param {Object|String} val\n * @return {Request} for chaining\n * @api public\n */\n\nRequest.prototype.query = function(val){\n  if ('string' != typeof val) val = serialize(val);\n  if (val) this._query.push(val);\n  return this;\n};\n\n/**\n * Queue the given `file` as an attachment to the specified `field`,\n * with optional `options` (or filename).\n *\n * ``` js\n * request.post('/upload')\n *   .attach('content', new Blob(['<a id=\"a\"><b id=\"b\">hey!</b></a>'], { type: \"text/html\"}))\n *   .end(callback);\n * ```\n *\n * @param {String} field\n * @param {Blob|File} file\n * @param {String|Object} options\n * @return {Request} for chaining\n * @api public\n */\n\nRequest.prototype.attach = function(field, file, options){\n  if (file) {\n    if (this._data) {\n      throw Error(\"superagent can't mix .send() and .attach()\");\n    }\n\n    this._getFormData().append(field, file, options || file.name);\n  }\n  return this;\n};\n\nRequest.prototype._getFormData = function(){\n  if (!this._formData) {\n    this._formData = new root.FormData();\n  }\n  return this._formData;\n};\n\n/**\n * Invoke the callback with `err` and `res`\n * and handle arity check.\n *\n * @param {Error} err\n * @param {Response} res\n * @api private\n */\n\nRequest.prototype.callback = function(err, res){\n  if (this._shouldRetry(err, res)) {\n    return this._retry();\n  }\n\n  var fn = this._callback;\n  this.clearTimeout();\n\n  if (err) {\n    if (this._maxRetries) err.retries = this._retries - 1;\n    this.emit('error', err);\n  }\n\n  fn(err, res);\n};\n\n/**\n * Invoke callback with x-domain error.\n *\n * @api private\n */\n\nRequest.prototype.crossDomainError = function(){\n  var err = new Error('Request has been terminated\\nPossible causes: the network is offline, Origin is not allowed by Access-Control-Allow-Origin, the page is being unloaded, etc.');\n  err.crossDomain = true;\n\n  err.status = this.status;\n  err.method = this.method;\n  err.url = this.url;\n\n  this.callback(err);\n};\n\n// This only warns, because the request is still likely to work\nRequest.prototype.buffer = Request.prototype.ca = Request.prototype.agent = function(){\n  console.warn(\"This is not supported in browser version of superagent\");\n  return this;\n};\n\n// This throws, because it can't send/receive data as expected\nRequest.prototype.pipe = Request.prototype.write = function(){\n  throw Error(\"Streaming is not supported in browser version of superagent\");\n};\n\n/**\n * Check if `obj` is a host object,\n * we don't want to serialize these :)\n *\n * @param {Object} obj\n * @return {Boolean}\n * @api private\n */\nRequest.prototype._isHost = function _isHost(obj) {\n  // Native objects stringify to [object File], [object Blob], [object FormData], etc.\n  return obj && 'object' === typeof obj && !Array.isArray(obj) && Object.prototype.toString.call(obj) !== '[object Object]';\n}\n\n/**\n * Initiate request, invoking callback `fn(res)`\n * with an instanceof `Response`.\n *\n * @param {Function} fn\n * @return {Request} for chaining\n * @api public\n */\n\nRequest.prototype.end = function(fn){\n  if (this._endCalled) {\n    console.warn(\"Warning: .end() was called twice. This is not supported in superagent\");\n  }\n  this._endCalled = true;\n\n  // store callback\n  this._callback = fn || noop;\n\n  // querystring\n  this._finalizeQueryString();\n\n  return this._end();\n};\n\nRequest.prototype._end = function() {\n  var self = this;\n  var xhr = (this.xhr = request.getXHR());\n  var data = this._formData || this._data;\n\n  this._setTimeouts();\n\n  // state change\n  xhr.onreadystatechange = function(){\n    var readyState = xhr.readyState;\n    if (readyState >= 2 && self._responseTimeoutTimer) {\n      clearTimeout(self._responseTimeoutTimer);\n    }\n    if (4 != readyState) {\n      return;\n    }\n\n    // In IE9, reads to any property (e.g. status) off of an aborted XHR will\n    // result in the error \"Could not complete the operation due to error c00c023f\"\n    var status;\n    try { status = xhr.status } catch(e) { status = 0; }\n\n    if (!status) {\n      if (self.timedout || self._aborted) return;\n      return self.crossDomainError();\n    }\n    self.emit('end');\n  };\n\n  // progress\n  var handleProgress = function(direction, e) {\n    if (e.total > 0) {\n      e.percent = e.loaded / e.total * 100;\n    }\n    e.direction = direction;\n    self.emit('progress', e);\n  };\n  if (this.hasListeners('progress')) {\n    try {\n      xhr.onprogress = handleProgress.bind(null, 'download');\n      if (xhr.upload) {\n        xhr.upload.onprogress = handleProgress.bind(null, 'upload');\n      }\n    } catch(e) {\n      // Accessing xhr.upload fails in IE from a web worker, so just pretend it doesn't exist.\n      // Reported here:\n      // https://connect.microsoft.com/IE/feedback/details/837245/xmlhttprequest-upload-throws-invalid-argument-when-used-from-web-worker-context\n    }\n  }\n\n  // initiate request\n  try {\n    if (this.username && this.password) {\n      xhr.open(this.method, this.url, true, this.username, this.password);\n    } else {\n      xhr.open(this.method, this.url, true);\n    }\n  } catch (err) {\n    // see #1149\n    return this.callback(err);\n  }\n\n  // CORS\n  if (this._withCredentials) xhr.withCredentials = true;\n\n  // body\n  if (!this._formData && 'GET' != this.method && 'HEAD' != this.method && 'string' != typeof data && !this._isHost(data)) {\n    // serialize stuff\n    var contentType = this._header['content-type'];\n    var serialize = this._serializer || request.serialize[contentType ? contentType.split(';')[0] : ''];\n    if (!serialize && isJSON(contentType)) {\n      serialize = request.serialize['application/json'];\n    }\n    if (serialize) data = serialize(data);\n  }\n\n  // set header fields\n  for (var field in this.header) {\n    if (null == this.header[field]) continue;\n\n    if (this.header.hasOwnProperty(field))\n      xhr.setRequestHeader(field, this.header[field]);\n  }\n\n  if (this._responseType) {\n    xhr.responseType = this._responseType;\n  }\n\n  // send stuff\n  this.emit('request', this);\n\n  // IE11 xhr.send(undefined) sends 'undefined' string as POST payload (instead of nothing)\n  // We need null here if data is undefined\n  xhr.send(typeof data !== 'undefined' ? data : null);\n  return this;\n};\n\nrequest.agent = function() {\n  return new Agent();\n};\n\n[\"GET\", \"POST\", \"OPTIONS\", \"PATCH\", \"PUT\", \"DELETE\"].forEach(function(method) {\n  Agent.prototype[method.toLowerCase()] = function(url, fn) {\n    var req = new request.Request(method, url);\n    this._setDefaults(req);\n    if (fn) {\n      req.end(fn);\n    }\n    return req;\n  };\n});\n\nAgent.prototype.del = Agent.prototype['delete'];\n\n/**\n * GET `url` with optional callback `fn(res)`.\n *\n * @param {String} url\n * @param {Mixed|Function} [data] or fn\n * @param {Function} [fn]\n * @return {Request}\n * @api public\n */\n\nrequest.get = function(url, data, fn) {\n  var req = request('GET', url);\n  if ('function' == typeof data) (fn = data), (data = null);\n  if (data) req.query(data);\n  if (fn) req.end(fn);\n  return req;\n};\n\n/**\n * HEAD `url` with optional callback `fn(res)`.\n *\n * @param {String} url\n * @param {Mixed|Function} [data] or fn\n * @param {Function} [fn]\n * @return {Request}\n * @api public\n */\n\nrequest.head = function(url, data, fn) {\n  var req = request('HEAD', url);\n  if ('function' == typeof data) (fn = data), (data = null);\n  if (data) req.query(data);\n  if (fn) req.end(fn);\n  return req;\n};\n\n/**\n * OPTIONS query to `url` with optional callback `fn(res)`.\n *\n * @param {String} url\n * @param {Mixed|Function} [data] or fn\n * @param {Function} [fn]\n * @return {Request}\n * @api public\n */\n\nrequest.options = function(url, data, fn) {\n  var req = request('OPTIONS', url);\n  if ('function' == typeof data) (fn = data), (data = null);\n  if (data) req.send(data);\n  if (fn) req.end(fn);\n  return req;\n};\n\n/**\n * DELETE `url` with optional `data` and callback `fn(res)`.\n *\n * @param {String} url\n * @param {Mixed} [data]\n * @param {Function} [fn]\n * @return {Request}\n * @api public\n */\n\nfunction del(url, data, fn) {\n  var req = request('DELETE', url);\n  if ('function' == typeof data) (fn = data), (data = null);\n  if (data) req.send(data);\n  if (fn) req.end(fn);\n  return req;\n}\n\nrequest['del'] = del;\nrequest['delete'] = del;\n\n/**\n * PATCH `url` with optional `data` and callback `fn(res)`.\n *\n * @param {String} url\n * @param {Mixed} [data]\n * @param {Function} [fn]\n * @return {Request}\n * @api public\n */\n\nrequest.patch = function(url, data, fn) {\n  var req = request('PATCH', url);\n  if ('function' == typeof data) (fn = data), (data = null);\n  if (data) req.send(data);\n  if (fn) req.end(fn);\n  return req;\n};\n\n/**\n * POST `url` with optional `data` and callback `fn(res)`.\n *\n * @param {String} url\n * @param {Mixed} [data]\n * @param {Function} [fn]\n * @return {Request}\n * @api public\n */\n\nrequest.post = function(url, data, fn) {\n  var req = request('POST', url);\n  if ('function' == typeof data) (fn = data), (data = null);\n  if (data) req.send(data);\n  if (fn) req.end(fn);\n  return req;\n};\n\n/**\n * PUT `url` with optional `data` and callback `fn(res)`.\n *\n * @param {String} url\n * @param {Mixed|Function} [data] or fn\n * @param {Function} [fn]\n * @return {Request}\n * @api public\n */\n\nrequest.put = function(url, data, fn) {\n  var req = request('PUT', url);\n  if ('function' == typeof data) (fn = data), (data = null);\n  if (data) req.send(data);\n  if (fn) req.end(fn);\n  return req;\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNS5qcyIsInNvdXJjZXMiOlsid2VicGFjazovL0A5MWFwcC9uaW5leWkubGliLnNwYXJrY29yZS8uL25vZGVfbW9kdWxlcy9zdXBlcmFnZW50L2xpYi9jbGllbnQuanM/ZGI4MiJdLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIFJvb3QgcmVmZXJlbmNlIGZvciBpZnJhbWVzLlxuICovXG5cbnZhciByb290O1xuaWYgKHR5cGVvZiB3aW5kb3cgIT09ICd1bmRlZmluZWQnKSB7IC8vIEJyb3dzZXIgd2luZG93XG4gIHJvb3QgPSB3aW5kb3c7XG59IGVsc2UgaWYgKHR5cGVvZiBzZWxmICE9PSAndW5kZWZpbmVkJykgeyAvLyBXZWIgV29ya2VyXG4gIHJvb3QgPSBzZWxmO1xufSBlbHNlIHsgLy8gT3RoZXIgZW52aXJvbm1lbnRzXG4gIGNvbnNvbGUud2FybihcIlVzaW5nIGJyb3dzZXItb25seSB2ZXJzaW9uIG9mIHN1cGVyYWdlbnQgaW4gbm9uLWJyb3dzZXIgZW52aXJvbm1lbnRcIik7XG4gIHJvb3QgPSB0aGlzO1xufVxuXG52YXIgRW1pdHRlciA9IHJlcXVpcmUoJ2NvbXBvbmVudC1lbWl0dGVyJyk7XG52YXIgUmVxdWVzdEJhc2UgPSByZXF1aXJlKCcuL3JlcXVlc3QtYmFzZScpO1xudmFyIGlzT2JqZWN0ID0gcmVxdWlyZSgnLi9pcy1vYmplY3QnKTtcbnZhciBSZXNwb25zZUJhc2UgPSByZXF1aXJlKCcuL3Jlc3BvbnNlLWJhc2UnKTtcbnZhciBBZ2VudCA9IHJlcXVpcmUoJy4vYWdlbnQtYmFzZScpO1xuXG4vKipcbiAqIE5vb3AuXG4gKi9cblxuZnVuY3Rpb24gbm9vcCgpe307XG5cbi8qKlxuICogRXhwb3NlIGByZXF1ZXN0YC5cbiAqL1xuXG52YXIgcmVxdWVzdCA9IGV4cG9ydHMgPSBtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uKG1ldGhvZCwgdXJsKSB7XG4gIC8vIGNhbGxiYWNrXG4gIGlmICgnZnVuY3Rpb24nID09IHR5cGVvZiB1cmwpIHtcbiAgICByZXR1cm4gbmV3IGV4cG9ydHMuUmVxdWVzdCgnR0VUJywgbWV0aG9kKS5lbmQodXJsKTtcbiAgfVxuXG4gIC8vIHVybCBmaXJzdFxuICBpZiAoMSA9PSBhcmd1bWVudHMubGVuZ3RoKSB7XG4gICAgcmV0dXJuIG5ldyBleHBvcnRzLlJlcXVlc3QoJ0dFVCcsIG1ldGhvZCk7XG4gIH1cblxuICByZXR1cm4gbmV3IGV4cG9ydHMuUmVxdWVzdChtZXRob2QsIHVybCk7XG59XG5cbmV4cG9ydHMuUmVxdWVzdCA9IFJlcXVlc3Q7XG5cbi8qKlxuICogRGV0ZXJtaW5lIFhIUi5cbiAqL1xuXG5yZXF1ZXN0LmdldFhIUiA9IGZ1bmN0aW9uICgpIHtcbiAgaWYgKHJvb3QuWE1MSHR0cFJlcXVlc3RcbiAgICAgICYmICghcm9vdC5sb2NhdGlvbiB8fCAnZmlsZTonICE9IHJvb3QubG9jYXRpb24ucHJvdG9jb2xcbiAgICAgICAgICB8fCAhcm9vdC5BY3RpdmVYT2JqZWN0KSkge1xuICAgIHJldHVybiBuZXcgWE1MSHR0cFJlcXVlc3Q7XG4gIH0gZWxzZSB7XG4gICAgdHJ5IHsgcmV0dXJuIG5ldyBBY3RpdmVYT2JqZWN0KCdNaWNyb3NvZnQuWE1MSFRUUCcpOyB9IGNhdGNoKGUpIHt9XG4gICAgdHJ5IHsgcmV0dXJuIG5ldyBBY3RpdmVYT2JqZWN0KCdNc3htbDIuWE1MSFRUUC42LjAnKTsgfSBjYXRjaChlKSB7fVxuICAgIHRyeSB7IHJldHVybiBuZXcgQWN0aXZlWE9iamVjdCgnTXN4bWwyLlhNTEhUVFAuMy4wJyk7IH0gY2F0Y2goZSkge31cbiAgICB0cnkgeyByZXR1cm4gbmV3IEFjdGl2ZVhPYmplY3QoJ01zeG1sMi5YTUxIVFRQJyk7IH0gY2F0Y2goZSkge31cbiAgfVxuICB0aHJvdyBFcnJvcihcIkJyb3dzZXItb25seSB2ZXJzaW9uIG9mIHN1cGVyYWdlbnQgY291bGQgbm90IGZpbmQgWEhSXCIpO1xufTtcblxuLyoqXG4gKiBSZW1vdmVzIGxlYWRpbmcgYW5kIHRyYWlsaW5nIHdoaXRlc3BhY2UsIGFkZGVkIHRvIHN1cHBvcnQgSUUuXG4gKlxuICogQHBhcmFtIHtTdHJpbmd9IHNcbiAqIEByZXR1cm4ge1N0cmluZ31cbiAqIEBhcGkgcHJpdmF0ZVxuICovXG5cbnZhciB0cmltID0gJycudHJpbVxuICA/IGZ1bmN0aW9uKHMpIHsgcmV0dXJuIHMudHJpbSgpOyB9XG4gIDogZnVuY3Rpb24ocykgeyByZXR1cm4gcy5yZXBsYWNlKC8oXlxccyp8XFxzKiQpL2csICcnKTsgfTtcblxuLyoqXG4gKiBTZXJpYWxpemUgdGhlIGdpdmVuIGBvYmpgLlxuICpcbiAqIEBwYXJhbSB7T2JqZWN0fSBvYmpcbiAqIEByZXR1cm4ge1N0cmluZ31cbiAqIEBhcGkgcHJpdmF0ZVxuICovXG5cbmZ1bmN0aW9uIHNlcmlhbGl6ZShvYmopIHtcbiAgaWYgKCFpc09iamVjdChvYmopKSByZXR1cm4gb2JqO1xuICB2YXIgcGFpcnMgPSBbXTtcbiAgZm9yICh2YXIga2V5IGluIG9iaikge1xuICAgIHB1c2hFbmNvZGVkS2V5VmFsdWVQYWlyKHBhaXJzLCBrZXksIG9ialtrZXldKTtcbiAgfVxuICByZXR1cm4gcGFpcnMuam9pbignJicpO1xufVxuXG4vKipcbiAqIEhlbHBzICdzZXJpYWxpemUnIHdpdGggc2VyaWFsaXppbmcgYXJyYXlzLlxuICogTXV0YXRlcyB0aGUgcGFpcnMgYXJyYXkuXG4gKlxuICogQHBhcmFtIHtBcnJheX0gcGFpcnNcbiAqIEBwYXJhbSB7U3RyaW5nfSBrZXlcbiAqIEBwYXJhbSB7TWl4ZWR9IHZhbFxuICovXG5cbmZ1bmN0aW9uIHB1c2hFbmNvZGVkS2V5VmFsdWVQYWlyKHBhaXJzLCBrZXksIHZhbCkge1xuICBpZiAodmFsICE9IG51bGwpIHtcbiAgICBpZiAoQXJyYXkuaXNBcnJheSh2YWwpKSB7XG4gICAgICB2YWwuZm9yRWFjaChmdW5jdGlvbih2KSB7XG4gICAgICAgIHB1c2hFbmNvZGVkS2V5VmFsdWVQYWlyKHBhaXJzLCBrZXksIHYpO1xuICAgICAgfSk7XG4gICAgfSBlbHNlIGlmIChpc09iamVjdCh2YWwpKSB7XG4gICAgICBmb3IodmFyIHN1YmtleSBpbiB2YWwpIHtcbiAgICAgICAgcHVzaEVuY29kZWRLZXlWYWx1ZVBhaXIocGFpcnMsIGtleSArICdbJyArIHN1YmtleSArICddJywgdmFsW3N1YmtleV0pO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBwYWlycy5wdXNoKGVuY29kZVVSSUNvbXBvbmVudChrZXkpXG4gICAgICAgICsgJz0nICsgZW5jb2RlVVJJQ29tcG9uZW50KHZhbCkpO1xuICAgIH1cbiAgfSBlbHNlIGlmICh2YWwgPT09IG51bGwpIHtcbiAgICBwYWlycy5wdXNoKGVuY29kZVVSSUNvbXBvbmVudChrZXkpKTtcbiAgfVxufVxuXG4vKipcbiAqIEV4cG9zZSBzZXJpYWxpemF0aW9uIG1ldGhvZC5cbiAqL1xuXG5yZXF1ZXN0LnNlcmlhbGl6ZU9iamVjdCA9IHNlcmlhbGl6ZTtcblxuLyoqXG4gICogUGFyc2UgdGhlIGdpdmVuIHgtd3d3LWZvcm0tdXJsZW5jb2RlZCBgc3RyYC5cbiAgKlxuICAqIEBwYXJhbSB7U3RyaW5nfSBzdHJcbiAgKiBAcmV0dXJuIHtPYmplY3R9XG4gICogQGFwaSBwcml2YXRlXG4gICovXG5cbmZ1bmN0aW9uIHBhcnNlU3RyaW5nKHN0cikge1xuICB2YXIgb2JqID0ge307XG4gIHZhciBwYWlycyA9IHN0ci5zcGxpdCgnJicpO1xuICB2YXIgcGFpcjtcbiAgdmFyIHBvcztcblxuICBmb3IgKHZhciBpID0gMCwgbGVuID0gcGFpcnMubGVuZ3RoOyBpIDwgbGVuOyArK2kpIHtcbiAgICBwYWlyID0gcGFpcnNbaV07XG4gICAgcG9zID0gcGFpci5pbmRleE9mKCc9Jyk7XG4gICAgaWYgKHBvcyA9PSAtMSkge1xuICAgICAgb2JqW2RlY29kZVVSSUNvbXBvbmVudChwYWlyKV0gPSAnJztcbiAgICB9IGVsc2Uge1xuICAgICAgb2JqW2RlY29kZVVSSUNvbXBvbmVudChwYWlyLnNsaWNlKDAsIHBvcykpXSA9XG4gICAgICAgIGRlY29kZVVSSUNvbXBvbmVudChwYWlyLnNsaWNlKHBvcyArIDEpKTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gb2JqO1xufVxuXG4vKipcbiAqIEV4cG9zZSBwYXJzZXIuXG4gKi9cblxucmVxdWVzdC5wYXJzZVN0cmluZyA9IHBhcnNlU3RyaW5nO1xuXG4vKipcbiAqIERlZmF1bHQgTUlNRSB0eXBlIG1hcC5cbiAqXG4gKiAgICAgc3VwZXJhZ2VudC50eXBlcy54bWwgPSAnYXBwbGljYXRpb24veG1sJztcbiAqXG4gKi9cblxucmVxdWVzdC50eXBlcyA9IHtcbiAgaHRtbDogJ3RleHQvaHRtbCcsXG4gIGpzb246ICdhcHBsaWNhdGlvbi9qc29uJyxcbiAgeG1sOiAndGV4dC94bWwnLFxuICB1cmxlbmNvZGVkOiAnYXBwbGljYXRpb24veC13d3ctZm9ybS11cmxlbmNvZGVkJyxcbiAgJ2Zvcm0nOiAnYXBwbGljYXRpb24veC13d3ctZm9ybS11cmxlbmNvZGVkJyxcbiAgJ2Zvcm0tZGF0YSc6ICdhcHBsaWNhdGlvbi94LXd3dy1mb3JtLXVybGVuY29kZWQnXG59O1xuXG4vKipcbiAqIERlZmF1bHQgc2VyaWFsaXphdGlvbiBtYXAuXG4gKlxuICogICAgIHN1cGVyYWdlbnQuc2VyaWFsaXplWydhcHBsaWNhdGlvbi94bWwnXSA9IGZ1bmN0aW9uKG9iail7XG4gKiAgICAgICByZXR1cm4gJ2dlbmVyYXRlZCB4bWwgaGVyZSc7XG4gKiAgICAgfTtcbiAqXG4gKi9cblxucmVxdWVzdC5zZXJpYWxpemUgPSB7XG4gICdhcHBsaWNhdGlvbi94LXd3dy1mb3JtLXVybGVuY29kZWQnOiBzZXJpYWxpemUsXG4gICdhcHBsaWNhdGlvbi9qc29uJzogSlNPTi5zdHJpbmdpZnlcbn07XG5cbi8qKlxuICAqIERlZmF1bHQgcGFyc2Vycy5cbiAgKlxuICAqICAgICBzdXBlcmFnZW50LnBhcnNlWydhcHBsaWNhdGlvbi94bWwnXSA9IGZ1bmN0aW9uKHN0cil7XG4gICogICAgICAgcmV0dXJuIHsgb2JqZWN0IHBhcnNlZCBmcm9tIHN0ciB9O1xuICAqICAgICB9O1xuICAqXG4gICovXG5cbnJlcXVlc3QucGFyc2UgPSB7XG4gICdhcHBsaWNhdGlvbi94LXd3dy1mb3JtLXVybGVuY29kZWQnOiBwYXJzZVN0cmluZyxcbiAgJ2FwcGxpY2F0aW9uL2pzb24nOiBKU09OLnBhcnNlXG59O1xuXG4vKipcbiAqIFBhcnNlIHRoZSBnaXZlbiBoZWFkZXIgYHN0cmAgaW50b1xuICogYW4gb2JqZWN0IGNvbnRhaW5pbmcgdGhlIG1hcHBlZCBmaWVsZHMuXG4gKlxuICogQHBhcmFtIHtTdHJpbmd9IHN0clxuICogQHJldHVybiB7T2JqZWN0fVxuICogQGFwaSBwcml2YXRlXG4gKi9cblxuZnVuY3Rpb24gcGFyc2VIZWFkZXIoc3RyKSB7XG4gIHZhciBsaW5lcyA9IHN0ci5zcGxpdCgvXFxyP1xcbi8pO1xuICB2YXIgZmllbGRzID0ge307XG4gIHZhciBpbmRleDtcbiAgdmFyIGxpbmU7XG4gIHZhciBmaWVsZDtcbiAgdmFyIHZhbDtcblxuICBmb3IgKHZhciBpID0gMCwgbGVuID0gbGluZXMubGVuZ3RoOyBpIDwgbGVuOyArK2kpIHtcbiAgICBsaW5lID0gbGluZXNbaV07XG4gICAgaW5kZXggPSBsaW5lLmluZGV4T2YoJzonKTtcbiAgICBpZiAoaW5kZXggPT09IC0xKSB7IC8vIGNvdWxkIGJlIGVtcHR5IGxpbmUsIGp1c3Qgc2tpcCBpdFxuICAgICAgY29udGludWU7XG4gICAgfVxuICAgIGZpZWxkID0gbGluZS5zbGljZSgwLCBpbmRleCkudG9Mb3dlckNhc2UoKTtcbiAgICB2YWwgPSB0cmltKGxpbmUuc2xpY2UoaW5kZXggKyAxKSk7XG4gICAgZmllbGRzW2ZpZWxkXSA9IHZhbDtcbiAgfVxuXG4gIHJldHVybiBmaWVsZHM7XG59XG5cbi8qKlxuICogQ2hlY2sgaWYgYG1pbWVgIGlzIGpzb24gb3IgaGFzICtqc29uIHN0cnVjdHVyZWQgc3ludGF4IHN1ZmZpeC5cbiAqXG4gKiBAcGFyYW0ge1N0cmluZ30gbWltZVxuICogQHJldHVybiB7Qm9vbGVhbn1cbiAqIEBhcGkgcHJpdmF0ZVxuICovXG5cbmZ1bmN0aW9uIGlzSlNPTihtaW1lKSB7XG4gIC8vIHNob3VsZCBtYXRjaCAvanNvbiBvciAranNvblxuICAvLyBidXQgbm90IC9qc29uLXNlcVxuICByZXR1cm4gL1tcXC8rXWpzb24oJHxbXi1cXHddKS8udGVzdChtaW1lKTtcbn1cblxuLyoqXG4gKiBJbml0aWFsaXplIGEgbmV3IGBSZXNwb25zZWAgd2l0aCB0aGUgZ2l2ZW4gYHhocmAuXG4gKlxuICogIC0gc2V0IGZsYWdzICgub2ssIC5lcnJvciwgZXRjKVxuICogIC0gcGFyc2UgaGVhZGVyXG4gKlxuICogRXhhbXBsZXM6XG4gKlxuICogIEFsaWFzaW5nIGBzdXBlcmFnZW50YCBhcyBgcmVxdWVzdGAgaXMgbmljZTpcbiAqXG4gKiAgICAgIHJlcXVlc3QgPSBzdXBlcmFnZW50O1xuICpcbiAqICBXZSBjYW4gdXNlIHRoZSBwcm9taXNlLWxpa2UgQVBJLCBvciBwYXNzIGNhbGxiYWNrczpcbiAqXG4gKiAgICAgIHJlcXVlc3QuZ2V0KCcvJykuZW5kKGZ1bmN0aW9uKHJlcyl7fSk7XG4gKiAgICAgIHJlcXVlc3QuZ2V0KCcvJywgZnVuY3Rpb24ocmVzKXt9KTtcbiAqXG4gKiAgU2VuZGluZyBkYXRhIGNhbiBiZSBjaGFpbmVkOlxuICpcbiAqICAgICAgcmVxdWVzdFxuICogICAgICAgIC5wb3N0KCcvdXNlcicpXG4gKiAgICAgICAgLnNlbmQoeyBuYW1lOiAndGonIH0pXG4gKiAgICAgICAgLmVuZChmdW5jdGlvbihyZXMpe30pO1xuICpcbiAqICBPciBwYXNzZWQgdG8gYC5zZW5kKClgOlxuICpcbiAqICAgICAgcmVxdWVzdFxuICogICAgICAgIC5wb3N0KCcvdXNlcicpXG4gKiAgICAgICAgLnNlbmQoeyBuYW1lOiAndGonIH0sIGZ1bmN0aW9uKHJlcyl7fSk7XG4gKlxuICogIE9yIHBhc3NlZCB0byBgLnBvc3QoKWA6XG4gKlxuICogICAgICByZXF1ZXN0XG4gKiAgICAgICAgLnBvc3QoJy91c2VyJywgeyBuYW1lOiAndGonIH0pXG4gKiAgICAgICAgLmVuZChmdW5jdGlvbihyZXMpe30pO1xuICpcbiAqIE9yIGZ1cnRoZXIgcmVkdWNlZCB0byBhIHNpbmdsZSBjYWxsIGZvciBzaW1wbGUgY2FzZXM6XG4gKlxuICogICAgICByZXF1ZXN0XG4gKiAgICAgICAgLnBvc3QoJy91c2VyJywgeyBuYW1lOiAndGonIH0sIGZ1bmN0aW9uKHJlcyl7fSk7XG4gKlxuICogQHBhcmFtIHtYTUxIVFRQUmVxdWVzdH0geGhyXG4gKiBAcGFyYW0ge09iamVjdH0gb3B0aW9uc1xuICogQGFwaSBwcml2YXRlXG4gKi9cblxuZnVuY3Rpb24gUmVzcG9uc2UocmVxKSB7XG4gIHRoaXMucmVxID0gcmVxO1xuICB0aGlzLnhociA9IHRoaXMucmVxLnhocjtcbiAgLy8gcmVzcG9uc2VUZXh0IGlzIGFjY2Vzc2libGUgb25seSBpZiByZXNwb25zZVR5cGUgaXMgJycgb3IgJ3RleHQnIGFuZCBvbiBvbGRlciBicm93c2Vyc1xuICB0aGlzLnRleHQgPSAoKHRoaXMucmVxLm1ldGhvZCAhPSdIRUFEJyAmJiAodGhpcy54aHIucmVzcG9uc2VUeXBlID09PSAnJyB8fCB0aGlzLnhoci5yZXNwb25zZVR5cGUgPT09ICd0ZXh0JykpIHx8IHR5cGVvZiB0aGlzLnhoci5yZXNwb25zZVR5cGUgPT09ICd1bmRlZmluZWQnKVxuICAgICA/IHRoaXMueGhyLnJlc3BvbnNlVGV4dFxuICAgICA6IG51bGw7XG4gIHRoaXMuc3RhdHVzVGV4dCA9IHRoaXMucmVxLnhoci5zdGF0dXNUZXh0O1xuICB2YXIgc3RhdHVzID0gdGhpcy54aHIuc3RhdHVzO1xuICAvLyBoYW5kbGUgSUU5IGJ1ZzogaHR0cDovL3N0YWNrb3ZlcmZsb3cuY29tL3F1ZXN0aW9ucy8xMDA0Njk3Mi9tc2llLXJldHVybnMtc3RhdHVzLWNvZGUtb2YtMTIyMy1mb3ItYWpheC1yZXF1ZXN0XG4gIGlmIChzdGF0dXMgPT09IDEyMjMpIHtcbiAgICBzdGF0dXMgPSAyMDQ7XG4gIH1cbiAgdGhpcy5fc2V0U3RhdHVzUHJvcGVydGllcyhzdGF0dXMpO1xuICB0aGlzLmhlYWRlciA9IHRoaXMuaGVhZGVycyA9IHBhcnNlSGVhZGVyKHRoaXMueGhyLmdldEFsbFJlc3BvbnNlSGVhZGVycygpKTtcbiAgLy8gZ2V0QWxsUmVzcG9uc2VIZWFkZXJzIHNvbWV0aW1lcyBmYWxzZWx5IHJldHVybnMgXCJcIiBmb3IgQ09SUyByZXF1ZXN0cywgYnV0XG4gIC8vIGdldFJlc3BvbnNlSGVhZGVyIHN0aWxsIHdvcmtzLiBzbyB3ZSBnZXQgY29udGVudC10eXBlIGV2ZW4gaWYgZ2V0dGluZ1xuICAvLyBvdGhlciBoZWFkZXJzIGZhaWxzLlxuICB0aGlzLmhlYWRlclsnY29udGVudC10eXBlJ10gPSB0aGlzLnhoci5nZXRSZXNwb25zZUhlYWRlcignY29udGVudC10eXBlJyk7XG4gIHRoaXMuX3NldEhlYWRlclByb3BlcnRpZXModGhpcy5oZWFkZXIpO1xuXG4gIGlmIChudWxsID09PSB0aGlzLnRleHQgJiYgcmVxLl9yZXNwb25zZVR5cGUpIHtcbiAgICB0aGlzLmJvZHkgPSB0aGlzLnhoci5yZXNwb25zZTtcbiAgfSBlbHNlIHtcbiAgICB0aGlzLmJvZHkgPSB0aGlzLnJlcS5tZXRob2QgIT0gJ0hFQUQnXG4gICAgICA/IHRoaXMuX3BhcnNlQm9keSh0aGlzLnRleHQgPyB0aGlzLnRleHQgOiB0aGlzLnhoci5yZXNwb25zZSlcbiAgICAgIDogbnVsbDtcbiAgfVxufVxuXG5SZXNwb25zZUJhc2UoUmVzcG9uc2UucHJvdG90eXBlKTtcblxuLyoqXG4gKiBQYXJzZSB0aGUgZ2l2ZW4gYm9keSBgc3RyYC5cbiAqXG4gKiBVc2VkIGZvciBhdXRvLXBhcnNpbmcgb2YgYm9kaWVzLiBQYXJzZXJzXG4gKiBhcmUgZGVmaW5lZCBvbiB0aGUgYHN1cGVyYWdlbnQucGFyc2VgIG9iamVjdC5cbiAqXG4gKiBAcGFyYW0ge1N0cmluZ30gc3RyXG4gKiBAcmV0dXJuIHtNaXhlZH1cbiAqIEBhcGkgcHJpdmF0ZVxuICovXG5cblJlc3BvbnNlLnByb3RvdHlwZS5fcGFyc2VCb2R5ID0gZnVuY3Rpb24oc3RyKSB7XG4gIHZhciBwYXJzZSA9IHJlcXVlc3QucGFyc2VbdGhpcy50eXBlXTtcbiAgaWYgKHRoaXMucmVxLl9wYXJzZXIpIHtcbiAgICByZXR1cm4gdGhpcy5yZXEuX3BhcnNlcih0aGlzLCBzdHIpO1xuICB9XG4gIGlmICghcGFyc2UgJiYgaXNKU09OKHRoaXMudHlwZSkpIHtcbiAgICBwYXJzZSA9IHJlcXVlc3QucGFyc2VbJ2FwcGxpY2F0aW9uL2pzb24nXTtcbiAgfVxuICByZXR1cm4gcGFyc2UgJiYgc3RyICYmIChzdHIubGVuZ3RoIHx8IHN0ciBpbnN0YW5jZW9mIE9iamVjdClcbiAgICA/IHBhcnNlKHN0cilcbiAgICA6IG51bGw7XG59O1xuXG4vKipcbiAqIFJldHVybiBhbiBgRXJyb3JgIHJlcHJlc2VudGF0aXZlIG9mIHRoaXMgcmVzcG9uc2UuXG4gKlxuICogQHJldHVybiB7RXJyb3J9XG4gKiBAYXBpIHB1YmxpY1xuICovXG5cblJlc3BvbnNlLnByb3RvdHlwZS50b0Vycm9yID0gZnVuY3Rpb24oKXtcbiAgdmFyIHJlcSA9IHRoaXMucmVxO1xuICB2YXIgbWV0aG9kID0gcmVxLm1ldGhvZDtcbiAgdmFyIHVybCA9IHJlcS51cmw7XG5cbiAgdmFyIG1zZyA9ICdjYW5ub3QgJyArIG1ldGhvZCArICcgJyArIHVybCArICcgKCcgKyB0aGlzLnN0YXR1cyArICcpJztcbiAgdmFyIGVyciA9IG5ldyBFcnJvcihtc2cpO1xuICBlcnIuc3RhdHVzID0gdGhpcy5zdGF0dXM7XG4gIGVyci5tZXRob2QgPSBtZXRob2Q7XG4gIGVyci51cmwgPSB1cmw7XG5cbiAgcmV0dXJuIGVycjtcbn07XG5cbi8qKlxuICogRXhwb3NlIGBSZXNwb25zZWAuXG4gKi9cblxucmVxdWVzdC5SZXNwb25zZSA9IFJlc3BvbnNlO1xuXG4vKipcbiAqIEluaXRpYWxpemUgYSBuZXcgYFJlcXVlc3RgIHdpdGggdGhlIGdpdmVuIGBtZXRob2RgIGFuZCBgdXJsYC5cbiAqXG4gKiBAcGFyYW0ge1N0cmluZ30gbWV0aG9kXG4gKiBAcGFyYW0ge1N0cmluZ30gdXJsXG4gKiBAYXBpIHB1YmxpY1xuICovXG5cbmZ1bmN0aW9uIFJlcXVlc3QobWV0aG9kLCB1cmwpIHtcbiAgdmFyIHNlbGYgPSB0aGlzO1xuICB0aGlzLl9xdWVyeSA9IHRoaXMuX3F1ZXJ5IHx8IFtdO1xuICB0aGlzLm1ldGhvZCA9IG1ldGhvZDtcbiAgdGhpcy51cmwgPSB1cmw7XG4gIHRoaXMuaGVhZGVyID0ge307IC8vIHByZXNlcnZlcyBoZWFkZXIgbmFtZSBjYXNlXG4gIHRoaXMuX2hlYWRlciA9IHt9OyAvLyBjb2VyY2VzIGhlYWRlciBuYW1lcyB0byBsb3dlcmNhc2VcbiAgdGhpcy5vbignZW5kJywgZnVuY3Rpb24oKXtcbiAgICB2YXIgZXJyID0gbnVsbDtcbiAgICB2YXIgcmVzID0gbnVsbDtcblxuICAgIHRyeSB7XG4gICAgICByZXMgPSBuZXcgUmVzcG9uc2Uoc2VsZik7XG4gICAgfSBjYXRjaChlKSB7XG4gICAgICBlcnIgPSBuZXcgRXJyb3IoJ1BhcnNlciBpcyB1bmFibGUgdG8gcGFyc2UgdGhlIHJlc3BvbnNlJyk7XG4gICAgICBlcnIucGFyc2UgPSB0cnVlO1xuICAgICAgZXJyLm9yaWdpbmFsID0gZTtcbiAgICAgIC8vIGlzc3VlICM2NzU6IHJldHVybiB0aGUgcmF3IHJlc3BvbnNlIGlmIHRoZSByZXNwb25zZSBwYXJzaW5nIGZhaWxzXG4gICAgICBpZiAoc2VsZi54aHIpIHtcbiAgICAgICAgLy8gaWU5IGRvZXNuJ3QgaGF2ZSAncmVzcG9uc2UnIHByb3BlcnR5XG4gICAgICAgIGVyci5yYXdSZXNwb25zZSA9IHR5cGVvZiBzZWxmLnhoci5yZXNwb25zZVR5cGUgPT0gJ3VuZGVmaW5lZCcgPyBzZWxmLnhoci5yZXNwb25zZVRleHQgOiBzZWxmLnhoci5yZXNwb25zZTtcbiAgICAgICAgLy8gaXNzdWUgIzg3NjogcmV0dXJuIHRoZSBodHRwIHN0YXR1cyBjb2RlIGlmIHRoZSByZXNwb25zZSBwYXJzaW5nIGZhaWxzXG4gICAgICAgIGVyci5zdGF0dXMgPSBzZWxmLnhoci5zdGF0dXMgPyBzZWxmLnhoci5zdGF0dXMgOiBudWxsO1xuICAgICAgICBlcnIuc3RhdHVzQ29kZSA9IGVyci5zdGF0dXM7IC8vIGJhY2t3YXJkcy1jb21wYXQgb25seVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgZXJyLnJhd1Jlc3BvbnNlID0gbnVsbDtcbiAgICAgICAgZXJyLnN0YXR1cyA9IG51bGw7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBzZWxmLmNhbGxiYWNrKGVycik7XG4gICAgfVxuXG4gICAgc2VsZi5lbWl0KCdyZXNwb25zZScsIHJlcyk7XG5cbiAgICB2YXIgbmV3X2VycjtcbiAgICB0cnkge1xuICAgICAgaWYgKCFzZWxmLl9pc1Jlc3BvbnNlT0socmVzKSkge1xuICAgICAgICBuZXdfZXJyID0gbmV3IEVycm9yKHJlcy5zdGF0dXNUZXh0IHx8ICdVbnN1Y2Nlc3NmdWwgSFRUUCByZXNwb25zZScpO1xuICAgICAgfVxuICAgIH0gY2F0Y2goY3VzdG9tX2Vycikge1xuICAgICAgbmV3X2VyciA9IGN1c3RvbV9lcnI7IC8vIG9rKCkgY2FsbGJhY2sgY2FuIHRocm93XG4gICAgfVxuXG4gICAgLy8gIzEwMDAgZG9uJ3QgY2F0Y2ggZXJyb3JzIGZyb20gdGhlIGNhbGxiYWNrIHRvIGF2b2lkIGRvdWJsZSBjYWxsaW5nIGl0XG4gICAgaWYgKG5ld19lcnIpIHtcbiAgICAgIG5ld19lcnIub3JpZ2luYWwgPSBlcnI7XG4gICAgICBuZXdfZXJyLnJlc3BvbnNlID0gcmVzO1xuICAgICAgbmV3X2Vyci5zdGF0dXMgPSByZXMuc3RhdHVzO1xuICAgICAgc2VsZi5jYWxsYmFjayhuZXdfZXJyLCByZXMpO1xuICAgIH0gZWxzZSB7XG4gICAgICBzZWxmLmNhbGxiYWNrKG51bGwsIHJlcyk7XG4gICAgfVxuICB9KTtcbn1cblxuLyoqXG4gKiBNaXhpbiBgRW1pdHRlcmAgYW5kIGBSZXF1ZXN0QmFzZWAuXG4gKi9cblxuRW1pdHRlcihSZXF1ZXN0LnByb3RvdHlwZSk7XG5SZXF1ZXN0QmFzZShSZXF1ZXN0LnByb3RvdHlwZSk7XG5cbi8qKlxuICogU2V0IENvbnRlbnQtVHlwZSB0byBgdHlwZWAsIG1hcHBpbmcgdmFsdWVzIGZyb20gYHJlcXVlc3QudHlwZXNgLlxuICpcbiAqIEV4YW1wbGVzOlxuICpcbiAqICAgICAgc3VwZXJhZ2VudC50eXBlcy54bWwgPSAnYXBwbGljYXRpb24veG1sJztcbiAqXG4gKiAgICAgIHJlcXVlc3QucG9zdCgnLycpXG4gKiAgICAgICAgLnR5cGUoJ3htbCcpXG4gKiAgICAgICAgLnNlbmQoeG1sc3RyaW5nKVxuICogICAgICAgIC5lbmQoY2FsbGJhY2spO1xuICpcbiAqICAgICAgcmVxdWVzdC5wb3N0KCcvJylcbiAqICAgICAgICAudHlwZSgnYXBwbGljYXRpb24veG1sJylcbiAqICAgICAgICAuc2VuZCh4bWxzdHJpbmcpXG4gKiAgICAgICAgLmVuZChjYWxsYmFjayk7XG4gKlxuICogQHBhcmFtIHtTdHJpbmd9IHR5cGVcbiAqIEByZXR1cm4ge1JlcXVlc3R9IGZvciBjaGFpbmluZ1xuICogQGFwaSBwdWJsaWNcbiAqL1xuXG5SZXF1ZXN0LnByb3RvdHlwZS50eXBlID0gZnVuY3Rpb24odHlwZSl7XG4gIHRoaXMuc2V0KCdDb250ZW50LVR5cGUnLCByZXF1ZXN0LnR5cGVzW3R5cGVdIHx8IHR5cGUpO1xuICByZXR1cm4gdGhpcztcbn07XG5cbi8qKlxuICogU2V0IEFjY2VwdCB0byBgdHlwZWAsIG1hcHBpbmcgdmFsdWVzIGZyb20gYHJlcXVlc3QudHlwZXNgLlxuICpcbiAqIEV4YW1wbGVzOlxuICpcbiAqICAgICAgc3VwZXJhZ2VudC50eXBlcy5qc29uID0gJ2FwcGxpY2F0aW9uL2pzb24nO1xuICpcbiAqICAgICAgcmVxdWVzdC5nZXQoJy9hZ2VudCcpXG4gKiAgICAgICAgLmFjY2VwdCgnanNvbicpXG4gKiAgICAgICAgLmVuZChjYWxsYmFjayk7XG4gKlxuICogICAgICByZXF1ZXN0LmdldCgnL2FnZW50JylcbiAqICAgICAgICAuYWNjZXB0KCdhcHBsaWNhdGlvbi9qc29uJylcbiAqICAgICAgICAuZW5kKGNhbGxiYWNrKTtcbiAqXG4gKiBAcGFyYW0ge1N0cmluZ30gYWNjZXB0XG4gKiBAcmV0dXJuIHtSZXF1ZXN0fSBmb3IgY2hhaW5pbmdcbiAqIEBhcGkgcHVibGljXG4gKi9cblxuUmVxdWVzdC5wcm90b3R5cGUuYWNjZXB0ID0gZnVuY3Rpb24odHlwZSl7XG4gIHRoaXMuc2V0KCdBY2NlcHQnLCByZXF1ZXN0LnR5cGVzW3R5cGVdIHx8IHR5cGUpO1xuICByZXR1cm4gdGhpcztcbn07XG5cbi8qKlxuICogU2V0IEF1dGhvcml6YXRpb24gZmllbGQgdmFsdWUgd2l0aCBgdXNlcmAgYW5kIGBwYXNzYC5cbiAqXG4gKiBAcGFyYW0ge1N0cmluZ30gdXNlclxuICogQHBhcmFtIHtTdHJpbmd9IFtwYXNzXSBvcHRpb25hbCBpbiBjYXNlIG9mIHVzaW5nICdiZWFyZXInIGFzIHR5cGVcbiAqIEBwYXJhbSB7T2JqZWN0fSBvcHRpb25zIHdpdGggJ3R5cGUnIHByb3BlcnR5ICdhdXRvJywgJ2Jhc2ljJyBvciAnYmVhcmVyJyAoZGVmYXVsdCAnYmFzaWMnKVxuICogQHJldHVybiB7UmVxdWVzdH0gZm9yIGNoYWluaW5nXG4gKiBAYXBpIHB1YmxpY1xuICovXG5cblJlcXVlc3QucHJvdG90eXBlLmF1dGggPSBmdW5jdGlvbih1c2VyLCBwYXNzLCBvcHRpb25zKXtcbiAgaWYgKDEgPT09IGFyZ3VtZW50cy5sZW5ndGgpIHBhc3MgPSAnJztcbiAgaWYgKHR5cGVvZiBwYXNzID09PSAnb2JqZWN0JyAmJiBwYXNzICE9PSBudWxsKSB7IC8vIHBhc3MgaXMgb3B0aW9uYWwgYW5kIGNhbiBiZSByZXBsYWNlZCB3aXRoIG9wdGlvbnNcbiAgICBvcHRpb25zID0gcGFzcztcbiAgICBwYXNzID0gJyc7XG4gIH1cbiAgaWYgKCFvcHRpb25zKSB7XG4gICAgb3B0aW9ucyA9IHtcbiAgICAgIHR5cGU6ICdmdW5jdGlvbicgPT09IHR5cGVvZiBidG9hID8gJ2Jhc2ljJyA6ICdhdXRvJyxcbiAgICB9O1xuICB9XG5cbiAgdmFyIGVuY29kZXIgPSBmdW5jdGlvbihzdHJpbmcpIHtcbiAgICBpZiAoJ2Z1bmN0aW9uJyA9PT0gdHlwZW9mIGJ0b2EpIHtcbiAgICAgIHJldHVybiBidG9hKHN0cmluZyk7XG4gICAgfVxuICAgIHRocm93IG5ldyBFcnJvcignQ2Fubm90IHVzZSBiYXNpYyBhdXRoLCBidG9hIGlzIG5vdCBhIGZ1bmN0aW9uJyk7XG4gIH07XG5cbiAgcmV0dXJuIHRoaXMuX2F1dGgodXNlciwgcGFzcywgb3B0aW9ucywgZW5jb2Rlcik7XG59O1xuXG4vKipcbiAqIEFkZCBxdWVyeS1zdHJpbmcgYHZhbGAuXG4gKlxuICogRXhhbXBsZXM6XG4gKlxuICogICByZXF1ZXN0LmdldCgnL3Nob2VzJylcbiAqICAgICAucXVlcnkoJ3NpemU9MTAnKVxuICogICAgIC5xdWVyeSh7IGNvbG9yOiAnYmx1ZScgfSlcbiAqXG4gKiBAcGFyYW0ge09iamVjdHxTdHJpbmd9IHZhbFxuICogQHJldHVybiB7UmVxdWVzdH0gZm9yIGNoYWluaW5nXG4gKiBAYXBpIHB1YmxpY1xuICovXG5cblJlcXVlc3QucHJvdG90eXBlLnF1ZXJ5ID0gZnVuY3Rpb24odmFsKXtcbiAgaWYgKCdzdHJpbmcnICE9IHR5cGVvZiB2YWwpIHZhbCA9IHNlcmlhbGl6ZSh2YWwpO1xuICBpZiAodmFsKSB0aGlzLl9xdWVyeS5wdXNoKHZhbCk7XG4gIHJldHVybiB0aGlzO1xufTtcblxuLyoqXG4gKiBRdWV1ZSB0aGUgZ2l2ZW4gYGZpbGVgIGFzIGFuIGF0dGFjaG1lbnQgdG8gdGhlIHNwZWNpZmllZCBgZmllbGRgLFxuICogd2l0aCBvcHRpb25hbCBgb3B0aW9uc2AgKG9yIGZpbGVuYW1lKS5cbiAqXG4gKiBgYGAganNcbiAqIHJlcXVlc3QucG9zdCgnL3VwbG9hZCcpXG4gKiAgIC5hdHRhY2goJ2NvbnRlbnQnLCBuZXcgQmxvYihbJzxhIGlkPVwiYVwiPjxiIGlkPVwiYlwiPmhleSE8L2I+PC9hPiddLCB7IHR5cGU6IFwidGV4dC9odG1sXCJ9KSlcbiAqICAgLmVuZChjYWxsYmFjayk7XG4gKiBgYGBcbiAqXG4gKiBAcGFyYW0ge1N0cmluZ30gZmllbGRcbiAqIEBwYXJhbSB7QmxvYnxGaWxlfSBmaWxlXG4gKiBAcGFyYW0ge1N0cmluZ3xPYmplY3R9IG9wdGlvbnNcbiAqIEByZXR1cm4ge1JlcXVlc3R9IGZvciBjaGFpbmluZ1xuICogQGFwaSBwdWJsaWNcbiAqL1xuXG5SZXF1ZXN0LnByb3RvdHlwZS5hdHRhY2ggPSBmdW5jdGlvbihmaWVsZCwgZmlsZSwgb3B0aW9ucyl7XG4gIGlmIChmaWxlKSB7XG4gICAgaWYgKHRoaXMuX2RhdGEpIHtcbiAgICAgIHRocm93IEVycm9yKFwic3VwZXJhZ2VudCBjYW4ndCBtaXggLnNlbmQoKSBhbmQgLmF0dGFjaCgpXCIpO1xuICAgIH1cblxuICAgIHRoaXMuX2dldEZvcm1EYXRhKCkuYXBwZW5kKGZpZWxkLCBmaWxlLCBvcHRpb25zIHx8IGZpbGUubmFtZSk7XG4gIH1cbiAgcmV0dXJuIHRoaXM7XG59O1xuXG5SZXF1ZXN0LnByb3RvdHlwZS5fZ2V0Rm9ybURhdGEgPSBmdW5jdGlvbigpe1xuICBpZiAoIXRoaXMuX2Zvcm1EYXRhKSB7XG4gICAgdGhpcy5fZm9ybURhdGEgPSBuZXcgcm9vdC5Gb3JtRGF0YSgpO1xuICB9XG4gIHJldHVybiB0aGlzLl9mb3JtRGF0YTtcbn07XG5cbi8qKlxuICogSW52b2tlIHRoZSBjYWxsYmFjayB3aXRoIGBlcnJgIGFuZCBgcmVzYFxuICogYW5kIGhhbmRsZSBhcml0eSBjaGVjay5cbiAqXG4gKiBAcGFyYW0ge0Vycm9yfSBlcnJcbiAqIEBwYXJhbSB7UmVzcG9uc2V9IHJlc1xuICogQGFwaSBwcml2YXRlXG4gKi9cblxuUmVxdWVzdC5wcm90b3R5cGUuY2FsbGJhY2sgPSBmdW5jdGlvbihlcnIsIHJlcyl7XG4gIGlmICh0aGlzLl9zaG91bGRSZXRyeShlcnIsIHJlcykpIHtcbiAgICByZXR1cm4gdGhpcy5fcmV0cnkoKTtcbiAgfVxuXG4gIHZhciBmbiA9IHRoaXMuX2NhbGxiYWNrO1xuICB0aGlzLmNsZWFyVGltZW91dCgpO1xuXG4gIGlmIChlcnIpIHtcbiAgICBpZiAodGhpcy5fbWF4UmV0cmllcykgZXJyLnJldHJpZXMgPSB0aGlzLl9yZXRyaWVzIC0gMTtcbiAgICB0aGlzLmVtaXQoJ2Vycm9yJywgZXJyKTtcbiAgfVxuXG4gIGZuKGVyciwgcmVzKTtcbn07XG5cbi8qKlxuICogSW52b2tlIGNhbGxiYWNrIHdpdGggeC1kb21haW4gZXJyb3IuXG4gKlxuICogQGFwaSBwcml2YXRlXG4gKi9cblxuUmVxdWVzdC5wcm90b3R5cGUuY3Jvc3NEb21haW5FcnJvciA9IGZ1bmN0aW9uKCl7XG4gIHZhciBlcnIgPSBuZXcgRXJyb3IoJ1JlcXVlc3QgaGFzIGJlZW4gdGVybWluYXRlZFxcblBvc3NpYmxlIGNhdXNlczogdGhlIG5ldHdvcmsgaXMgb2ZmbGluZSwgT3JpZ2luIGlzIG5vdCBhbGxvd2VkIGJ5IEFjY2Vzcy1Db250cm9sLUFsbG93LU9yaWdpbiwgdGhlIHBhZ2UgaXMgYmVpbmcgdW5sb2FkZWQsIGV0Yy4nKTtcbiAgZXJyLmNyb3NzRG9tYWluID0gdHJ1ZTtcblxuICBlcnIuc3RhdHVzID0gdGhpcy5zdGF0dXM7XG4gIGVyci5tZXRob2QgPSB0aGlzLm1ldGhvZDtcbiAgZXJyLnVybCA9IHRoaXMudXJsO1xuXG4gIHRoaXMuY2FsbGJhY2soZXJyKTtcbn07XG5cbi8vIFRoaXMgb25seSB3YXJucywgYmVjYXVzZSB0aGUgcmVxdWVzdCBpcyBzdGlsbCBsaWtlbHkgdG8gd29ya1xuUmVxdWVzdC5wcm90b3R5cGUuYnVmZmVyID0gUmVxdWVzdC5wcm90b3R5cGUuY2EgPSBSZXF1ZXN0LnByb3RvdHlwZS5hZ2VudCA9IGZ1bmN0aW9uKCl7XG4gIGNvbnNvbGUud2FybihcIlRoaXMgaXMgbm90IHN1cHBvcnRlZCBpbiBicm93c2VyIHZlcnNpb24gb2Ygc3VwZXJhZ2VudFwiKTtcbiAgcmV0dXJuIHRoaXM7XG59O1xuXG4vLyBUaGlzIHRocm93cywgYmVjYXVzZSBpdCBjYW4ndCBzZW5kL3JlY2VpdmUgZGF0YSBhcyBleHBlY3RlZFxuUmVxdWVzdC5wcm90b3R5cGUucGlwZSA9IFJlcXVlc3QucHJvdG90eXBlLndyaXRlID0gZnVuY3Rpb24oKXtcbiAgdGhyb3cgRXJyb3IoXCJTdHJlYW1pbmcgaXMgbm90IHN1cHBvcnRlZCBpbiBicm93c2VyIHZlcnNpb24gb2Ygc3VwZXJhZ2VudFwiKTtcbn07XG5cbi8qKlxuICogQ2hlY2sgaWYgYG9iamAgaXMgYSBob3N0IG9iamVjdCxcbiAqIHdlIGRvbid0IHdhbnQgdG8gc2VyaWFsaXplIHRoZXNlIDopXG4gKlxuICogQHBhcmFtIHtPYmplY3R9IG9ialxuICogQHJldHVybiB7Qm9vbGVhbn1cbiAqIEBhcGkgcHJpdmF0ZVxuICovXG5SZXF1ZXN0LnByb3RvdHlwZS5faXNIb3N0ID0gZnVuY3Rpb24gX2lzSG9zdChvYmopIHtcbiAgLy8gTmF0aXZlIG9iamVjdHMgc3RyaW5naWZ5IHRvIFtvYmplY3QgRmlsZV0sIFtvYmplY3QgQmxvYl0sIFtvYmplY3QgRm9ybURhdGFdLCBldGMuXG4gIHJldHVybiBvYmogJiYgJ29iamVjdCcgPT09IHR5cGVvZiBvYmogJiYgIUFycmF5LmlzQXJyYXkob2JqKSAmJiBPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwob2JqKSAhPT0gJ1tvYmplY3QgT2JqZWN0XSc7XG59XG5cbi8qKlxuICogSW5pdGlhdGUgcmVxdWVzdCwgaW52b2tpbmcgY2FsbGJhY2sgYGZuKHJlcylgXG4gKiB3aXRoIGFuIGluc3RhbmNlb2YgYFJlc3BvbnNlYC5cbiAqXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBmblxuICogQHJldHVybiB7UmVxdWVzdH0gZm9yIGNoYWluaW5nXG4gKiBAYXBpIHB1YmxpY1xuICovXG5cblJlcXVlc3QucHJvdG90eXBlLmVuZCA9IGZ1bmN0aW9uKGZuKXtcbiAgaWYgKHRoaXMuX2VuZENhbGxlZCkge1xuICAgIGNvbnNvbGUud2FybihcIldhcm5pbmc6IC5lbmQoKSB3YXMgY2FsbGVkIHR3aWNlLiBUaGlzIGlzIG5vdCBzdXBwb3J0ZWQgaW4gc3VwZXJhZ2VudFwiKTtcbiAgfVxuICB0aGlzLl9lbmRDYWxsZWQgPSB0cnVlO1xuXG4gIC8vIHN0b3JlIGNhbGxiYWNrXG4gIHRoaXMuX2NhbGxiYWNrID0gZm4gfHwgbm9vcDtcblxuICAvLyBxdWVyeXN0cmluZ1xuICB0aGlzLl9maW5hbGl6ZVF1ZXJ5U3RyaW5nKCk7XG5cbiAgcmV0dXJuIHRoaXMuX2VuZCgpO1xufTtcblxuUmVxdWVzdC5wcm90b3R5cGUuX2VuZCA9IGZ1bmN0aW9uKCkge1xuICB2YXIgc2VsZiA9IHRoaXM7XG4gIHZhciB4aHIgPSAodGhpcy54aHIgPSByZXF1ZXN0LmdldFhIUigpKTtcbiAgdmFyIGRhdGEgPSB0aGlzLl9mb3JtRGF0YSB8fCB0aGlzLl9kYXRhO1xuXG4gIHRoaXMuX3NldFRpbWVvdXRzKCk7XG5cbiAgLy8gc3RhdGUgY2hhbmdlXG4gIHhoci5vbnJlYWR5c3RhdGVjaGFuZ2UgPSBmdW5jdGlvbigpe1xuICAgIHZhciByZWFkeVN0YXRlID0geGhyLnJlYWR5U3RhdGU7XG4gICAgaWYgKHJlYWR5U3RhdGUgPj0gMiAmJiBzZWxmLl9yZXNwb25zZVRpbWVvdXRUaW1lcikge1xuICAgICAgY2xlYXJUaW1lb3V0KHNlbGYuX3Jlc3BvbnNlVGltZW91dFRpbWVyKTtcbiAgICB9XG4gICAgaWYgKDQgIT0gcmVhZHlTdGF0ZSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIC8vIEluIElFOSwgcmVhZHMgdG8gYW55IHByb3BlcnR5IChlLmcuIHN0YXR1cykgb2ZmIG9mIGFuIGFib3J0ZWQgWEhSIHdpbGxcbiAgICAvLyByZXN1bHQgaW4gdGhlIGVycm9yIFwiQ291bGQgbm90IGNvbXBsZXRlIHRoZSBvcGVyYXRpb24gZHVlIHRvIGVycm9yIGMwMGMwMjNmXCJcbiAgICB2YXIgc3RhdHVzO1xuICAgIHRyeSB7IHN0YXR1cyA9IHhoci5zdGF0dXMgfSBjYXRjaChlKSB7IHN0YXR1cyA9IDA7IH1cblxuICAgIGlmICghc3RhdHVzKSB7XG4gICAgICBpZiAoc2VsZi50aW1lZG91dCB8fCBzZWxmLl9hYm9ydGVkKSByZXR1cm47XG4gICAgICByZXR1cm4gc2VsZi5jcm9zc0RvbWFpbkVycm9yKCk7XG4gICAgfVxuICAgIHNlbGYuZW1pdCgnZW5kJyk7XG4gIH07XG5cbiAgLy8gcHJvZ3Jlc3NcbiAgdmFyIGhhbmRsZVByb2dyZXNzID0gZnVuY3Rpb24oZGlyZWN0aW9uLCBlKSB7XG4gICAgaWYgKGUudG90YWwgPiAwKSB7XG4gICAgICBlLnBlcmNlbnQgPSBlLmxvYWRlZCAvIGUudG90YWwgKiAxMDA7XG4gICAgfVxuICAgIGUuZGlyZWN0aW9uID0gZGlyZWN0aW9uO1xuICAgIHNlbGYuZW1pdCgncHJvZ3Jlc3MnLCBlKTtcbiAgfTtcbiAgaWYgKHRoaXMuaGFzTGlzdGVuZXJzKCdwcm9ncmVzcycpKSB7XG4gICAgdHJ5IHtcbiAgICAgIHhoci5vbnByb2dyZXNzID0gaGFuZGxlUHJvZ3Jlc3MuYmluZChudWxsLCAnZG93bmxvYWQnKTtcbiAgICAgIGlmICh4aHIudXBsb2FkKSB7XG4gICAgICAgIHhoci51cGxvYWQub25wcm9ncmVzcyA9IGhhbmRsZVByb2dyZXNzLmJpbmQobnVsbCwgJ3VwbG9hZCcpO1xuICAgICAgfVxuICAgIH0gY2F0Y2goZSkge1xuICAgICAgLy8gQWNjZXNzaW5nIHhoci51cGxvYWQgZmFpbHMgaW4gSUUgZnJvbSBhIHdlYiB3b3JrZXIsIHNvIGp1c3QgcHJldGVuZCBpdCBkb2Vzbid0IGV4aXN0LlxuICAgICAgLy8gUmVwb3J0ZWQgaGVyZTpcbiAgICAgIC8vIGh0dHBzOi8vY29ubmVjdC5taWNyb3NvZnQuY29tL0lFL2ZlZWRiYWNrL2RldGFpbHMvODM3MjQ1L3htbGh0dHByZXF1ZXN0LXVwbG9hZC10aHJvd3MtaW52YWxpZC1hcmd1bWVudC13aGVuLXVzZWQtZnJvbS13ZWItd29ya2VyLWNvbnRleHRcbiAgICB9XG4gIH1cblxuICAvLyBpbml0aWF0ZSByZXF1ZXN0XG4gIHRyeSB7XG4gICAgaWYgKHRoaXMudXNlcm5hbWUgJiYgdGhpcy5wYXNzd29yZCkge1xuICAgICAgeGhyLm9wZW4odGhpcy5tZXRob2QsIHRoaXMudXJsLCB0cnVlLCB0aGlzLnVzZXJuYW1lLCB0aGlzLnBhc3N3b3JkKTtcbiAgICB9IGVsc2Uge1xuICAgICAgeGhyLm9wZW4odGhpcy5tZXRob2QsIHRoaXMudXJsLCB0cnVlKTtcbiAgICB9XG4gIH0gY2F0Y2ggKGVycikge1xuICAgIC8vIHNlZSAjMTE0OVxuICAgIHJldHVybiB0aGlzLmNhbGxiYWNrKGVycik7XG4gIH1cblxuICAvLyBDT1JTXG4gIGlmICh0aGlzLl93aXRoQ3JlZGVudGlhbHMpIHhoci53aXRoQ3JlZGVudGlhbHMgPSB0cnVlO1xuXG4gIC8vIGJvZHlcbiAgaWYgKCF0aGlzLl9mb3JtRGF0YSAmJiAnR0VUJyAhPSB0aGlzLm1ldGhvZCAmJiAnSEVBRCcgIT0gdGhpcy5tZXRob2QgJiYgJ3N0cmluZycgIT0gdHlwZW9mIGRhdGEgJiYgIXRoaXMuX2lzSG9zdChkYXRhKSkge1xuICAgIC8vIHNlcmlhbGl6ZSBzdHVmZlxuICAgIHZhciBjb250ZW50VHlwZSA9IHRoaXMuX2hlYWRlclsnY29udGVudC10eXBlJ107XG4gICAgdmFyIHNlcmlhbGl6ZSA9IHRoaXMuX3NlcmlhbGl6ZXIgfHwgcmVxdWVzdC5zZXJpYWxpemVbY29udGVudFR5cGUgPyBjb250ZW50VHlwZS5zcGxpdCgnOycpWzBdIDogJyddO1xuICAgIGlmICghc2VyaWFsaXplICYmIGlzSlNPTihjb250ZW50VHlwZSkpIHtcbiAgICAgIHNlcmlhbGl6ZSA9IHJlcXVlc3Quc2VyaWFsaXplWydhcHBsaWNhdGlvbi9qc29uJ107XG4gICAgfVxuICAgIGlmIChzZXJpYWxpemUpIGRhdGEgPSBzZXJpYWxpemUoZGF0YSk7XG4gIH1cblxuICAvLyBzZXQgaGVhZGVyIGZpZWxkc1xuICBmb3IgKHZhciBmaWVsZCBpbiB0aGlzLmhlYWRlcikge1xuICAgIGlmIChudWxsID09IHRoaXMuaGVhZGVyW2ZpZWxkXSkgY29udGludWU7XG5cbiAgICBpZiAodGhpcy5oZWFkZXIuaGFzT3duUHJvcGVydHkoZmllbGQpKVxuICAgICAgeGhyLnNldFJlcXVlc3RIZWFkZXIoZmllbGQsIHRoaXMuaGVhZGVyW2ZpZWxkXSk7XG4gIH1cblxuICBpZiAodGhpcy5fcmVzcG9uc2VUeXBlKSB7XG4gICAgeGhyLnJlc3BvbnNlVHlwZSA9IHRoaXMuX3Jlc3BvbnNlVHlwZTtcbiAgfVxuXG4gIC8vIHNlbmQgc3R1ZmZcbiAgdGhpcy5lbWl0KCdyZXF1ZXN0JywgdGhpcyk7XG5cbiAgLy8gSUUxMSB4aHIuc2VuZCh1bmRlZmluZWQpIHNlbmRzICd1bmRlZmluZWQnIHN0cmluZyBhcyBQT1NUIHBheWxvYWQgKGluc3RlYWQgb2Ygbm90aGluZylcbiAgLy8gV2UgbmVlZCBudWxsIGhlcmUgaWYgZGF0YSBpcyB1bmRlZmluZWRcbiAgeGhyLnNlbmQodHlwZW9mIGRhdGEgIT09ICd1bmRlZmluZWQnID8gZGF0YSA6IG51bGwpO1xuICByZXR1cm4gdGhpcztcbn07XG5cbnJlcXVlc3QuYWdlbnQgPSBmdW5jdGlvbigpIHtcbiAgcmV0dXJuIG5ldyBBZ2VudCgpO1xufTtcblxuW1wiR0VUXCIsIFwiUE9TVFwiLCBcIk9QVElPTlNcIiwgXCJQQVRDSFwiLCBcIlBVVFwiLCBcIkRFTEVURVwiXS5mb3JFYWNoKGZ1bmN0aW9uKG1ldGhvZCkge1xuICBBZ2VudC5wcm90b3R5cGVbbWV0aG9kLnRvTG93ZXJDYXNlKCldID0gZnVuY3Rpb24odXJsLCBmbikge1xuICAgIHZhciByZXEgPSBuZXcgcmVxdWVzdC5SZXF1ZXN0KG1ldGhvZCwgdXJsKTtcbiAgICB0aGlzLl9zZXREZWZhdWx0cyhyZXEpO1xuICAgIGlmIChmbikge1xuICAgICAgcmVxLmVuZChmbik7XG4gICAgfVxuICAgIHJldHVybiByZXE7XG4gIH07XG59KTtcblxuQWdlbnQucHJvdG90eXBlLmRlbCA9IEFnZW50LnByb3RvdHlwZVsnZGVsZXRlJ107XG5cbi8qKlxuICogR0VUIGB1cmxgIHdpdGggb3B0aW9uYWwgY2FsbGJhY2sgYGZuKHJlcylgLlxuICpcbiAqIEBwYXJhbSB7U3RyaW5nfSB1cmxcbiAqIEBwYXJhbSB7TWl4ZWR8RnVuY3Rpb259IFtkYXRhXSBvciBmblxuICogQHBhcmFtIHtGdW5jdGlvbn0gW2ZuXVxuICogQHJldHVybiB7UmVxdWVzdH1cbiAqIEBhcGkgcHVibGljXG4gKi9cblxucmVxdWVzdC5nZXQgPSBmdW5jdGlvbih1cmwsIGRhdGEsIGZuKSB7XG4gIHZhciByZXEgPSByZXF1ZXN0KCdHRVQnLCB1cmwpO1xuICBpZiAoJ2Z1bmN0aW9uJyA9PSB0eXBlb2YgZGF0YSkgKGZuID0gZGF0YSksIChkYXRhID0gbnVsbCk7XG4gIGlmIChkYXRhKSByZXEucXVlcnkoZGF0YSk7XG4gIGlmIChmbikgcmVxLmVuZChmbik7XG4gIHJldHVybiByZXE7XG59O1xuXG4vKipcbiAqIEhFQUQgYHVybGAgd2l0aCBvcHRpb25hbCBjYWxsYmFjayBgZm4ocmVzKWAuXG4gKlxuICogQHBhcmFtIHtTdHJpbmd9IHVybFxuICogQHBhcmFtIHtNaXhlZHxGdW5jdGlvbn0gW2RhdGFdIG9yIGZuXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBbZm5dXG4gKiBAcmV0dXJuIHtSZXF1ZXN0fVxuICogQGFwaSBwdWJsaWNcbiAqL1xuXG5yZXF1ZXN0LmhlYWQgPSBmdW5jdGlvbih1cmwsIGRhdGEsIGZuKSB7XG4gIHZhciByZXEgPSByZXF1ZXN0KCdIRUFEJywgdXJsKTtcbiAgaWYgKCdmdW5jdGlvbicgPT0gdHlwZW9mIGRhdGEpIChmbiA9IGRhdGEpLCAoZGF0YSA9IG51bGwpO1xuICBpZiAoZGF0YSkgcmVxLnF1ZXJ5KGRhdGEpO1xuICBpZiAoZm4pIHJlcS5lbmQoZm4pO1xuICByZXR1cm4gcmVxO1xufTtcblxuLyoqXG4gKiBPUFRJT05TIHF1ZXJ5IHRvIGB1cmxgIHdpdGggb3B0aW9uYWwgY2FsbGJhY2sgYGZuKHJlcylgLlxuICpcbiAqIEBwYXJhbSB7U3RyaW5nfSB1cmxcbiAqIEBwYXJhbSB7TWl4ZWR8RnVuY3Rpb259IFtkYXRhXSBvciBmblxuICogQHBhcmFtIHtGdW5jdGlvbn0gW2ZuXVxuICogQHJldHVybiB7UmVxdWVzdH1cbiAqIEBhcGkgcHVibGljXG4gKi9cblxucmVxdWVzdC5vcHRpb25zID0gZnVuY3Rpb24odXJsLCBkYXRhLCBmbikge1xuICB2YXIgcmVxID0gcmVxdWVzdCgnT1BUSU9OUycsIHVybCk7XG4gIGlmICgnZnVuY3Rpb24nID09IHR5cGVvZiBkYXRhKSAoZm4gPSBkYXRhKSwgKGRhdGEgPSBudWxsKTtcbiAgaWYgKGRhdGEpIHJlcS5zZW5kKGRhdGEpO1xuICBpZiAoZm4pIHJlcS5lbmQoZm4pO1xuICByZXR1cm4gcmVxO1xufTtcblxuLyoqXG4gKiBERUxFVEUgYHVybGAgd2l0aCBvcHRpb25hbCBgZGF0YWAgYW5kIGNhbGxiYWNrIGBmbihyZXMpYC5cbiAqXG4gKiBAcGFyYW0ge1N0cmluZ30gdXJsXG4gKiBAcGFyYW0ge01peGVkfSBbZGF0YV1cbiAqIEBwYXJhbSB7RnVuY3Rpb259IFtmbl1cbiAqIEByZXR1cm4ge1JlcXVlc3R9XG4gKiBAYXBpIHB1YmxpY1xuICovXG5cbmZ1bmN0aW9uIGRlbCh1cmwsIGRhdGEsIGZuKSB7XG4gIHZhciByZXEgPSByZXF1ZXN0KCdERUxFVEUnLCB1cmwpO1xuICBpZiAoJ2Z1bmN0aW9uJyA9PSB0eXBlb2YgZGF0YSkgKGZuID0gZGF0YSksIChkYXRhID0gbnVsbCk7XG4gIGlmIChkYXRhKSByZXEuc2VuZChkYXRhKTtcbiAgaWYgKGZuKSByZXEuZW5kKGZuKTtcbiAgcmV0dXJuIHJlcTtcbn1cblxucmVxdWVzdFsnZGVsJ10gPSBkZWw7XG5yZXF1ZXN0WydkZWxldGUnXSA9IGRlbDtcblxuLyoqXG4gKiBQQVRDSCBgdXJsYCB3aXRoIG9wdGlvbmFsIGBkYXRhYCBhbmQgY2FsbGJhY2sgYGZuKHJlcylgLlxuICpcbiAqIEBwYXJhbSB7U3RyaW5nfSB1cmxcbiAqIEBwYXJhbSB7TWl4ZWR9IFtkYXRhXVxuICogQHBhcmFtIHtGdW5jdGlvbn0gW2ZuXVxuICogQHJldHVybiB7UmVxdWVzdH1cbiAqIEBhcGkgcHVibGljXG4gKi9cblxucmVxdWVzdC5wYXRjaCA9IGZ1bmN0aW9uKHVybCwgZGF0YSwgZm4pIHtcbiAgdmFyIHJlcSA9IHJlcXVlc3QoJ1BBVENIJywgdXJsKTtcbiAgaWYgKCdmdW5jdGlvbicgPT0gdHlwZW9mIGRhdGEpIChmbiA9IGRhdGEpLCAoZGF0YSA9IG51bGwpO1xuICBpZiAoZGF0YSkgcmVxLnNlbmQoZGF0YSk7XG4gIGlmIChmbikgcmVxLmVuZChmbik7XG4gIHJldHVybiByZXE7XG59O1xuXG4vKipcbiAqIFBPU1QgYHVybGAgd2l0aCBvcHRpb25hbCBgZGF0YWAgYW5kIGNhbGxiYWNrIGBmbihyZXMpYC5cbiAqXG4gKiBAcGFyYW0ge1N0cmluZ30gdXJsXG4gKiBAcGFyYW0ge01peGVkfSBbZGF0YV1cbiAqIEBwYXJhbSB7RnVuY3Rpb259IFtmbl1cbiAqIEByZXR1cm4ge1JlcXVlc3R9XG4gKiBAYXBpIHB1YmxpY1xuICovXG5cbnJlcXVlc3QucG9zdCA9IGZ1bmN0aW9uKHVybCwgZGF0YSwgZm4pIHtcbiAgdmFyIHJlcSA9IHJlcXVlc3QoJ1BPU1QnLCB1cmwpO1xuICBpZiAoJ2Z1bmN0aW9uJyA9PSB0eXBlb2YgZGF0YSkgKGZuID0gZGF0YSksIChkYXRhID0gbnVsbCk7XG4gIGlmIChkYXRhKSByZXEuc2VuZChkYXRhKTtcbiAgaWYgKGZuKSByZXEuZW5kKGZuKTtcbiAgcmV0dXJuIHJlcTtcbn07XG5cbi8qKlxuICogUFVUIGB1cmxgIHdpdGggb3B0aW9uYWwgYGRhdGFgIGFuZCBjYWxsYmFjayBgZm4ocmVzKWAuXG4gKlxuICogQHBhcmFtIHtTdHJpbmd9IHVybFxuICogQHBhcmFtIHtNaXhlZHxGdW5jdGlvbn0gW2RhdGFdIG9yIGZuXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBbZm5dXG4gKiBAcmV0dXJuIHtSZXF1ZXN0fVxuICogQGFwaSBwdWJsaWNcbiAqL1xuXG5yZXF1ZXN0LnB1dCA9IGZ1bmN0aW9uKHVybCwgZGF0YSwgZm4pIHtcbiAgdmFyIHJlcSA9IHJlcXVlc3QoJ1BVVCcsIHVybCk7XG4gIGlmICgnZnVuY3Rpb24nID09IHR5cGVvZiBkYXRhKSAoZm4gPSBkYXRhKSwgKGRhdGEgPSBudWxsKTtcbiAgaWYgKGRhdGEpIHJlcS5zZW5kKGRhdGEpO1xuICBpZiAoZm4pIHJlcS5lbmQoZm4pO1xuICByZXR1cm4gcmVxO1xufTtcbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///5\n")},function(module,exports,__webpack_require__){"use strict";eval("\n\nif (true) {\n  module.exports = __webpack_require__(22);\n} else {}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNi5qcyIsInNvdXJjZXMiOlsid2VicGFjazovL0A5MWFwcC9uaW5leWkubGliLnNwYXJrY29yZS8uL25vZGVfbW9kdWxlcy9yZWFjdC1pcy9pbmRleC5qcz80Y2VjIl0sInNvdXJjZXNDb250ZW50IjpbIid1c2Ugc3RyaWN0JztcblxuaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WID09PSAncHJvZHVjdGlvbicpIHtcbiAgbW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKCcuL2Nqcy9yZWFjdC1pcy5wcm9kdWN0aW9uLm1pbi5qcycpO1xufSBlbHNlIHtcbiAgbW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKCcuL2Nqcy9yZWFjdC1pcy5kZXZlbG9wbWVudC5qcycpO1xufVxuIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBRUE7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///6\n")},function(module,exports,__webpack_require__){"use strict";eval("\n\nvar reactIs = __webpack_require__(6);\n\n/**\n * Copyright 2015, Yahoo! Inc.\n * Copyrights licensed under the New BSD License. See the accompanying LICENSE file for terms.\n */\nvar REACT_STATICS = {\n  childContextTypes: true,\n  contextType: true,\n  contextTypes: true,\n  defaultProps: true,\n  displayName: true,\n  getDefaultProps: true,\n  getDerivedStateFromError: true,\n  getDerivedStateFromProps: true,\n  mixins: true,\n  propTypes: true,\n  type: true\n};\nvar KNOWN_STATICS = {\n  name: true,\n  length: true,\n  prototype: true,\n  caller: true,\n  callee: true,\n  arguments: true,\n  arity: true\n};\nvar FORWARD_REF_STATICS = {\n  '$$typeof': true,\n  render: true,\n  defaultProps: true,\n  displayName: true,\n  propTypes: true\n};\nvar MEMO_STATICS = {\n  '$$typeof': true,\n  compare: true,\n  defaultProps: true,\n  displayName: true,\n  propTypes: true,\n  type: true\n};\nvar TYPE_STATICS = {};\nTYPE_STATICS[reactIs.ForwardRef] = FORWARD_REF_STATICS;\nTYPE_STATICS[reactIs.Memo] = MEMO_STATICS;\n\nfunction getStatics(component) {\n  // React v16.11 and below\n  if (reactIs.isMemo(component)) {\n    return MEMO_STATICS;\n  } // React v16.12 and above\n\n\n  return TYPE_STATICS[component['$$typeof']] || REACT_STATICS;\n}\n\nvar defineProperty = Object.defineProperty;\nvar getOwnPropertyNames = Object.getOwnPropertyNames;\nvar getOwnPropertySymbols = Object.getOwnPropertySymbols;\nvar getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\nvar getPrototypeOf = Object.getPrototypeOf;\nvar objectPrototype = Object.prototype;\nfunction hoistNonReactStatics(targetComponent, sourceComponent, blacklist) {\n  if (typeof sourceComponent !== 'string') {\n    // don't hoist over string (html) components\n    if (objectPrototype) {\n      var inheritedComponent = getPrototypeOf(sourceComponent);\n\n      if (inheritedComponent && inheritedComponent !== objectPrototype) {\n        hoistNonReactStatics(targetComponent, inheritedComponent, blacklist);\n      }\n    }\n\n    var keys = getOwnPropertyNames(sourceComponent);\n\n    if (getOwnPropertySymbols) {\n      keys = keys.concat(getOwnPropertySymbols(sourceComponent));\n    }\n\n    var targetStatics = getStatics(targetComponent);\n    var sourceStatics = getStatics(sourceComponent);\n\n    for (var i = 0; i < keys.length; ++i) {\n      var key = keys[i];\n\n      if (!KNOWN_STATICS[key] && !(blacklist && blacklist[key]) && !(sourceStatics && sourceStatics[key]) && !(targetStatics && targetStatics[key])) {\n        var descriptor = getOwnPropertyDescriptor(sourceComponent, key);\n\n        try {\n          // Avoid failures from read-only properties\n          defineProperty(targetComponent, key, descriptor);\n        } catch (e) {}\n      }\n    }\n  }\n\n  return targetComponent;\n}\n\nmodule.exports = hoistNonReactStatics;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovL0A5MWFwcC9uaW5leWkubGliLnNwYXJrY29yZS8uL25vZGVfbW9kdWxlcy9ob2lzdC1ub24tcmVhY3Qtc3RhdGljcy9kaXN0L2hvaXN0LW5vbi1yZWFjdC1zdGF0aWNzLmNqcy5qcz9kYTZhIl0sInNvdXJjZXNDb250ZW50IjpbIid1c2Ugc3RyaWN0JztcblxudmFyIHJlYWN0SXMgPSByZXF1aXJlKCdyZWFjdC1pcycpO1xuXG4vKipcbiAqIENvcHlyaWdodCAyMDE1LCBZYWhvbyEgSW5jLlxuICogQ29weXJpZ2h0cyBsaWNlbnNlZCB1bmRlciB0aGUgTmV3IEJTRCBMaWNlbnNlLiBTZWUgdGhlIGFjY29tcGFueWluZyBMSUNFTlNFIGZpbGUgZm9yIHRlcm1zLlxuICovXG52YXIgUkVBQ1RfU1RBVElDUyA9IHtcbiAgY2hpbGRDb250ZXh0VHlwZXM6IHRydWUsXG4gIGNvbnRleHRUeXBlOiB0cnVlLFxuICBjb250ZXh0VHlwZXM6IHRydWUsXG4gIGRlZmF1bHRQcm9wczogdHJ1ZSxcbiAgZGlzcGxheU5hbWU6IHRydWUsXG4gIGdldERlZmF1bHRQcm9wczogdHJ1ZSxcbiAgZ2V0RGVyaXZlZFN0YXRlRnJvbUVycm9yOiB0cnVlLFxuICBnZXREZXJpdmVkU3RhdGVGcm9tUHJvcHM6IHRydWUsXG4gIG1peGluczogdHJ1ZSxcbiAgcHJvcFR5cGVzOiB0cnVlLFxuICB0eXBlOiB0cnVlXG59O1xudmFyIEtOT1dOX1NUQVRJQ1MgPSB7XG4gIG5hbWU6IHRydWUsXG4gIGxlbmd0aDogdHJ1ZSxcbiAgcHJvdG90eXBlOiB0cnVlLFxuICBjYWxsZXI6IHRydWUsXG4gIGNhbGxlZTogdHJ1ZSxcbiAgYXJndW1lbnRzOiB0cnVlLFxuICBhcml0eTogdHJ1ZVxufTtcbnZhciBGT1JXQVJEX1JFRl9TVEFUSUNTID0ge1xuICAnJCR0eXBlb2YnOiB0cnVlLFxuICByZW5kZXI6IHRydWUsXG4gIGRlZmF1bHRQcm9wczogdHJ1ZSxcbiAgZGlzcGxheU5hbWU6IHRydWUsXG4gIHByb3BUeXBlczogdHJ1ZVxufTtcbnZhciBNRU1PX1NUQVRJQ1MgPSB7XG4gICckJHR5cGVvZic6IHRydWUsXG4gIGNvbXBhcmU6IHRydWUsXG4gIGRlZmF1bHRQcm9wczogdHJ1ZSxcbiAgZGlzcGxheU5hbWU6IHRydWUsXG4gIHByb3BUeXBlczogdHJ1ZSxcbiAgdHlwZTogdHJ1ZVxufTtcbnZhciBUWVBFX1NUQVRJQ1MgPSB7fTtcblRZUEVfU1RBVElDU1tyZWFjdElzLkZvcndhcmRSZWZdID0gRk9SV0FSRF9SRUZfU1RBVElDUztcblRZUEVfU1RBVElDU1tyZWFjdElzLk1lbW9dID0gTUVNT19TVEFUSUNTO1xuXG5mdW5jdGlvbiBnZXRTdGF0aWNzKGNvbXBvbmVudCkge1xuICAvLyBSZWFjdCB2MTYuMTEgYW5kIGJlbG93XG4gIGlmIChyZWFjdElzLmlzTWVtbyhjb21wb25lbnQpKSB7XG4gICAgcmV0dXJuIE1FTU9fU1RBVElDUztcbiAgfSAvLyBSZWFjdCB2MTYuMTIgYW5kIGFib3ZlXG5cblxuICByZXR1cm4gVFlQRV9TVEFUSUNTW2NvbXBvbmVudFsnJCR0eXBlb2YnXV0gfHwgUkVBQ1RfU1RBVElDUztcbn1cblxudmFyIGRlZmluZVByb3BlcnR5ID0gT2JqZWN0LmRlZmluZVByb3BlcnR5O1xudmFyIGdldE93blByb3BlcnR5TmFtZXMgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcztcbnZhciBnZXRPd25Qcm9wZXJ0eVN5bWJvbHMgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzO1xudmFyIGdldE93blByb3BlcnR5RGVzY3JpcHRvciA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3I7XG52YXIgZ2V0UHJvdG90eXBlT2YgPSBPYmplY3QuZ2V0UHJvdG90eXBlT2Y7XG52YXIgb2JqZWN0UHJvdG90eXBlID0gT2JqZWN0LnByb3RvdHlwZTtcbmZ1bmN0aW9uIGhvaXN0Tm9uUmVhY3RTdGF0aWNzKHRhcmdldENvbXBvbmVudCwgc291cmNlQ29tcG9uZW50LCBibGFja2xpc3QpIHtcbiAgaWYgKHR5cGVvZiBzb3VyY2VDb21wb25lbnQgIT09ICdzdHJpbmcnKSB7XG4gICAgLy8gZG9uJ3QgaG9pc3Qgb3ZlciBzdHJpbmcgKGh0bWwpIGNvbXBvbmVudHNcbiAgICBpZiAob2JqZWN0UHJvdG90eXBlKSB7XG4gICAgICB2YXIgaW5oZXJpdGVkQ29tcG9uZW50ID0gZ2V0UHJvdG90eXBlT2Yoc291cmNlQ29tcG9uZW50KTtcblxuICAgICAgaWYgKGluaGVyaXRlZENvbXBvbmVudCAmJiBpbmhlcml0ZWRDb21wb25lbnQgIT09IG9iamVjdFByb3RvdHlwZSkge1xuICAgICAgICBob2lzdE5vblJlYWN0U3RhdGljcyh0YXJnZXRDb21wb25lbnQsIGluaGVyaXRlZENvbXBvbmVudCwgYmxhY2tsaXN0KTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICB2YXIga2V5cyA9IGdldE93blByb3BlcnR5TmFtZXMoc291cmNlQ29tcG9uZW50KTtcblxuICAgIGlmIChnZXRPd25Qcm9wZXJ0eVN5bWJvbHMpIHtcbiAgICAgIGtleXMgPSBrZXlzLmNvbmNhdChnZXRPd25Qcm9wZXJ0eVN5bWJvbHMoc291cmNlQ29tcG9uZW50KSk7XG4gICAgfVxuXG4gICAgdmFyIHRhcmdldFN0YXRpY3MgPSBnZXRTdGF0aWNzKHRhcmdldENvbXBvbmVudCk7XG4gICAgdmFyIHNvdXJjZVN0YXRpY3MgPSBnZXRTdGF0aWNzKHNvdXJjZUNvbXBvbmVudCk7XG5cbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGtleXMubGVuZ3RoOyArK2kpIHtcbiAgICAgIHZhciBrZXkgPSBrZXlzW2ldO1xuXG4gICAgICBpZiAoIUtOT1dOX1NUQVRJQ1Nba2V5XSAmJiAhKGJsYWNrbGlzdCAmJiBibGFja2xpc3Rba2V5XSkgJiYgIShzb3VyY2VTdGF0aWNzICYmIHNvdXJjZVN0YXRpY3Nba2V5XSkgJiYgISh0YXJnZXRTdGF0aWNzICYmIHRhcmdldFN0YXRpY3Nba2V5XSkpIHtcbiAgICAgICAgdmFyIGRlc2NyaXB0b3IgPSBnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Ioc291cmNlQ29tcG9uZW50LCBrZXkpO1xuXG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgLy8gQXZvaWQgZmFpbHVyZXMgZnJvbSByZWFkLW9ubHkgcHJvcGVydGllc1xuICAgICAgICAgIGRlZmluZVByb3BlcnR5KHRhcmdldENvbXBvbmVudCwga2V5LCBkZXNjcmlwdG9yKTtcbiAgICAgICAgfSBjYXRjaCAoZSkge31cbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICByZXR1cm4gdGFyZ2V0Q29tcG9uZW50O1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGhvaXN0Tm9uUmVhY3RTdGF0aWNzO1xuIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///7\n")},function(module,exports,__webpack_require__){"use strict";eval("/*!\n * statuses\n * Copyright(c) 2014 Jonathan Ong\n * Copyright(c) 2016 Douglas Christopher Wilson\n * MIT Licensed\n */\n\n\n\n/**\n * Module dependencies.\n * @private\n */\n\nvar codes = __webpack_require__(23)\n\n/**\n * Module exports.\n * @public\n */\n\nmodule.exports = status\n\n// status code to message map\nstatus.STATUS_CODES = codes\n\n// array of status codes\nstatus.codes = populateStatusesMap(status, codes)\n\n// status codes for redirects\nstatus.redirect = {\n  300: true,\n  301: true,\n  302: true,\n  303: true,\n  305: true,\n  307: true,\n  308: true\n}\n\n// status codes for empty bodies\nstatus.empty = {\n  204: true,\n  205: true,\n  304: true\n}\n\n// status codes for when you should retry the request\nstatus.retry = {\n  502: true,\n  503: true,\n  504: true\n}\n\n/**\n * Populate the statuses map for given codes.\n * @private\n */\n\nfunction populateStatusesMap (statuses, codes) {\n  var arr = []\n\n  Object.keys(codes).forEach(function forEachCode (code) {\n    var message = codes[code]\n    var status = Number(code)\n\n    // Populate properties\n    statuses[status] = message\n    statuses[message] = status\n    statuses[message.toLowerCase()] = status\n\n    // Add to array\n    arr.push(status)\n  })\n\n  return arr\n}\n\n/**\n * Get the status code.\n *\n * Given a number, this will throw if it is not a known status\n * code, otherwise the code will be returned. Given a string,\n * the string will be parsed for a number and return the code\n * if valid, otherwise will lookup the code assuming this is\n * the status message.\n *\n * @param {string|number} code\n * @returns {number}\n * @public\n */\n\nfunction status (code) {\n  if (typeof code === 'number') {\n    if (!status[code]) throw new Error('invalid status code: ' + code)\n    return code\n  }\n\n  if (typeof code !== 'string') {\n    throw new TypeError('code must be a number or string')\n  }\n\n  // '403'\n  var n = parseInt(code, 10)\n  if (!isNaN(n)) {\n    if (!status[n]) throw new Error('invalid status code: ' + n)\n    return n\n  }\n\n  n = status[code.toLowerCase()]\n  if (!n) throw new Error('invalid status message: \"' + code + '\"')\n  return n\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiOC5qcyIsInNvdXJjZXMiOlsid2VicGFjazovL0A5MWFwcC9uaW5leWkubGliLnNwYXJrY29yZS8uL25vZGVfbW9kdWxlcy9zdGF0dXNlcy9pbmRleC5qcz80ZjUyIl0sInNvdXJjZXNDb250ZW50IjpbIi8qIVxuICogc3RhdHVzZXNcbiAqIENvcHlyaWdodChjKSAyMDE0IEpvbmF0aGFuIE9uZ1xuICogQ29weXJpZ2h0KGMpIDIwMTYgRG91Z2xhcyBDaHJpc3RvcGhlciBXaWxzb25cbiAqIE1JVCBMaWNlbnNlZFxuICovXG5cbid1c2Ugc3RyaWN0J1xuXG4vKipcbiAqIE1vZHVsZSBkZXBlbmRlbmNpZXMuXG4gKiBAcHJpdmF0ZVxuICovXG5cbnZhciBjb2RlcyA9IHJlcXVpcmUoJy4vY29kZXMuanNvbicpXG5cbi8qKlxuICogTW9kdWxlIGV4cG9ydHMuXG4gKiBAcHVibGljXG4gKi9cblxubW9kdWxlLmV4cG9ydHMgPSBzdGF0dXNcblxuLy8gc3RhdHVzIGNvZGUgdG8gbWVzc2FnZSBtYXBcbnN0YXR1cy5TVEFUVVNfQ09ERVMgPSBjb2Rlc1xuXG4vLyBhcnJheSBvZiBzdGF0dXMgY29kZXNcbnN0YXR1cy5jb2RlcyA9IHBvcHVsYXRlU3RhdHVzZXNNYXAoc3RhdHVzLCBjb2RlcylcblxuLy8gc3RhdHVzIGNvZGVzIGZvciByZWRpcmVjdHNcbnN0YXR1cy5yZWRpcmVjdCA9IHtcbiAgMzAwOiB0cnVlLFxuICAzMDE6IHRydWUsXG4gIDMwMjogdHJ1ZSxcbiAgMzAzOiB0cnVlLFxuICAzMDU6IHRydWUsXG4gIDMwNzogdHJ1ZSxcbiAgMzA4OiB0cnVlXG59XG5cbi8vIHN0YXR1cyBjb2RlcyBmb3IgZW1wdHkgYm9kaWVzXG5zdGF0dXMuZW1wdHkgPSB7XG4gIDIwNDogdHJ1ZSxcbiAgMjA1OiB0cnVlLFxuICAzMDQ6IHRydWVcbn1cblxuLy8gc3RhdHVzIGNvZGVzIGZvciB3aGVuIHlvdSBzaG91bGQgcmV0cnkgdGhlIHJlcXVlc3RcbnN0YXR1cy5yZXRyeSA9IHtcbiAgNTAyOiB0cnVlLFxuICA1MDM6IHRydWUsXG4gIDUwNDogdHJ1ZVxufVxuXG4vKipcbiAqIFBvcHVsYXRlIHRoZSBzdGF0dXNlcyBtYXAgZm9yIGdpdmVuIGNvZGVzLlxuICogQHByaXZhdGVcbiAqL1xuXG5mdW5jdGlvbiBwb3B1bGF0ZVN0YXR1c2VzTWFwIChzdGF0dXNlcywgY29kZXMpIHtcbiAgdmFyIGFyciA9IFtdXG5cbiAgT2JqZWN0LmtleXMoY29kZXMpLmZvckVhY2goZnVuY3Rpb24gZm9yRWFjaENvZGUgKGNvZGUpIHtcbiAgICB2YXIgbWVzc2FnZSA9IGNvZGVzW2NvZGVdXG4gICAgdmFyIHN0YXR1cyA9IE51bWJlcihjb2RlKVxuXG4gICAgLy8gUG9wdWxhdGUgcHJvcGVydGllc1xuICAgIHN0YXR1c2VzW3N0YXR1c10gPSBtZXNzYWdlXG4gICAgc3RhdHVzZXNbbWVzc2FnZV0gPSBzdGF0dXNcbiAgICBzdGF0dXNlc1ttZXNzYWdlLnRvTG93ZXJDYXNlKCldID0gc3RhdHVzXG5cbiAgICAvLyBBZGQgdG8gYXJyYXlcbiAgICBhcnIucHVzaChzdGF0dXMpXG4gIH0pXG5cbiAgcmV0dXJuIGFyclxufVxuXG4vKipcbiAqIEdldCB0aGUgc3RhdHVzIGNvZGUuXG4gKlxuICogR2l2ZW4gYSBudW1iZXIsIHRoaXMgd2lsbCB0aHJvdyBpZiBpdCBpcyBub3QgYSBrbm93biBzdGF0dXNcbiAqIGNvZGUsIG90aGVyd2lzZSB0aGUgY29kZSB3aWxsIGJlIHJldHVybmVkLiBHaXZlbiBhIHN0cmluZyxcbiAqIHRoZSBzdHJpbmcgd2lsbCBiZSBwYXJzZWQgZm9yIGEgbnVtYmVyIGFuZCByZXR1cm4gdGhlIGNvZGVcbiAqIGlmIHZhbGlkLCBvdGhlcndpc2Ugd2lsbCBsb29rdXAgdGhlIGNvZGUgYXNzdW1pbmcgdGhpcyBpc1xuICogdGhlIHN0YXR1cyBtZXNzYWdlLlxuICpcbiAqIEBwYXJhbSB7c3RyaW5nfG51bWJlcn0gY29kZVxuICogQHJldHVybnMge251bWJlcn1cbiAqIEBwdWJsaWNcbiAqL1xuXG5mdW5jdGlvbiBzdGF0dXMgKGNvZGUpIHtcbiAgaWYgKHR5cGVvZiBjb2RlID09PSAnbnVtYmVyJykge1xuICAgIGlmICghc3RhdHVzW2NvZGVdKSB0aHJvdyBuZXcgRXJyb3IoJ2ludmFsaWQgc3RhdHVzIGNvZGU6ICcgKyBjb2RlKVxuICAgIHJldHVybiBjb2RlXG4gIH1cblxuICBpZiAodHlwZW9mIGNvZGUgIT09ICdzdHJpbmcnKSB7XG4gICAgdGhyb3cgbmV3IFR5cGVFcnJvcignY29kZSBtdXN0IGJlIGEgbnVtYmVyIG9yIHN0cmluZycpXG4gIH1cblxuICAvLyAnNDAzJ1xuICB2YXIgbiA9IHBhcnNlSW50KGNvZGUsIDEwKVxuICBpZiAoIWlzTmFOKG4pKSB7XG4gICAgaWYgKCFzdGF0dXNbbl0pIHRocm93IG5ldyBFcnJvcignaW52YWxpZCBzdGF0dXMgY29kZTogJyArIG4pXG4gICAgcmV0dXJuIG5cbiAgfVxuXG4gIG4gPSBzdGF0dXNbY29kZS50b0xvd2VyQ2FzZSgpXVxuICBpZiAoIW4pIHRocm93IG5ldyBFcnJvcignaW52YWxpZCBzdGF0dXMgbWVzc2FnZTogXCInICsgY29kZSArICdcIicpXG4gIHJldHVybiBuXG59XG4iXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///8\n")},function(module,__webpack_exports__,__webpack_require__){"use strict";eval('\n// CONCATENATED MODULE: ./node_modules/@emotion/memoize/dist/memoize.browser.esm.js\nfunction memoize(fn) {\n  var cache = {};\n  return function (arg) {\n    if (cache[arg] === undefined) cache[arg] = fn(arg);\n    return cache[arg];\n  };\n}\n\n/* harmony default export */ var memoize_browser_esm = (memoize);\n\n// CONCATENATED MODULE: ./node_modules/@emotion/is-prop-valid/dist/is-prop-valid.browser.esm.js\n\n\nvar reactPropsRegex = /^((children|dangerouslySetInnerHTML|key|ref|autoFocus|defaultValue|defaultChecked|innerHTML|suppressContentEditableWarning|suppressHydrationWarning|valueLink|accept|acceptCharset|accessKey|action|allow|allowUserMedia|allowPaymentRequest|allowFullScreen|allowTransparency|alt|async|autoComplete|autoPlay|capture|cellPadding|cellSpacing|challenge|charSet|checked|cite|classID|className|cols|colSpan|content|contentEditable|contextMenu|controls|controlsList|coords|crossOrigin|data|dateTime|decoding|default|defer|dir|disabled|disablePictureInPicture|download|draggable|encType|form|formAction|formEncType|formMethod|formNoValidate|formTarget|frameBorder|headers|height|hidden|high|href|hrefLang|htmlFor|httpEquiv|id|inputMode|integrity|is|keyParams|keyType|kind|label|lang|list|loading|loop|low|marginHeight|marginWidth|max|maxLength|media|mediaGroup|method|min|minLength|multiple|muted|name|nonce|noValidate|open|optimum|pattern|placeholder|playsInline|poster|preload|profile|radioGroup|readOnly|referrerPolicy|rel|required|reversed|role|rows|rowSpan|sandbox|scope|scoped|scrolling|seamless|selected|shape|size|sizes|slot|span|spellCheck|src|srcDoc|srcLang|srcSet|start|step|style|summary|tabIndex|target|title|type|useMap|value|width|wmode|wrap|about|datatype|inlist|prefix|property|resource|typeof|vocab|autoCapitalize|autoCorrect|autoSave|color|inert|itemProp|itemScope|itemType|itemID|itemRef|on|results|security|unselectable|accentHeight|accumulate|additive|alignmentBaseline|allowReorder|alphabetic|amplitude|arabicForm|ascent|attributeName|attributeType|autoReverse|azimuth|baseFrequency|baselineShift|baseProfile|bbox|begin|bias|by|calcMode|capHeight|clip|clipPathUnits|clipPath|clipRule|colorInterpolation|colorInterpolationFilters|colorProfile|colorRendering|contentScriptType|contentStyleType|cursor|cx|cy|d|decelerate|descent|diffuseConstant|direction|display|divisor|dominantBaseline|dur|dx|dy|edgeMode|elevation|enableBackground|end|exponent|externalResourcesRequired|fill|fillOpacity|fillRule|filter|filterRes|filterUnits|floodColor|floodOpacity|focusable|fontFamily|fontSize|fontSizeAdjust|fontStretch|fontStyle|fontVariant|fontWeight|format|from|fr|fx|fy|g1|g2|glyphName|glyphOrientationHorizontal|glyphOrientationVertical|glyphRef|gradientTransform|gradientUnits|hanging|horizAdvX|horizOriginX|ideographic|imageRendering|in|in2|intercept|k|k1|k2|k3|k4|kernelMatrix|kernelUnitLength|kerning|keyPoints|keySplines|keyTimes|lengthAdjust|letterSpacing|lightingColor|limitingConeAngle|local|markerEnd|markerMid|markerStart|markerHeight|markerUnits|markerWidth|mask|maskContentUnits|maskUnits|mathematical|mode|numOctaves|offset|opacity|operator|order|orient|orientation|origin|overflow|overlinePosition|overlineThickness|panose1|paintOrder|pathLength|patternContentUnits|patternTransform|patternUnits|pointerEvents|points|pointsAtX|pointsAtY|pointsAtZ|preserveAlpha|preserveAspectRatio|primitiveUnits|r|radius|refX|refY|renderingIntent|repeatCount|repeatDur|requiredExtensions|requiredFeatures|restart|result|rotate|rx|ry|scale|seed|shapeRendering|slope|spacing|specularConstant|specularExponent|speed|spreadMethod|startOffset|stdDeviation|stemh|stemv|stitchTiles|stopColor|stopOpacity|strikethroughPosition|strikethroughThickness|string|stroke|strokeDasharray|strokeDashoffset|strokeLinecap|strokeLinejoin|strokeMiterlimit|strokeOpacity|strokeWidth|surfaceScale|systemLanguage|tableValues|targetX|targetY|textAnchor|textDecoration|textRendering|textLength|to|transform|u1|u2|underlinePosition|underlineThickness|unicode|unicodeBidi|unicodeRange|unitsPerEm|vAlphabetic|vHanging|vIdeographic|vMathematical|values|vectorEffect|version|vertAdvY|vertOriginX|vertOriginY|viewBox|viewTarget|visibility|widths|wordSpacing|writingMode|x|xHeight|x1|x2|xChannelSelector|xlinkActuate|xlinkArcrole|xlinkHref|xlinkRole|xlinkShow|xlinkTitle|xlinkType|xmlBase|xmlns|xmlnsXlink|xmlLang|xmlSpace|y|y1|y2|yChannelSelector|z|zoomAndPan|for|class|autofocus)|(([Dd][Aa][Tt][Aa]|[Aa][Rr][Ii][Aa]|x)-.*))$/; // https://esbench.com/bench/5bfee68a4cd7e6009ef61d23\n\nvar index = memoize_browser_esm(function (prop) {\n  return reactPropsRegex.test(prop) || prop.charCodeAt(0) === 111\n  /* o */\n  && prop.charCodeAt(1) === 110\n  /* n */\n  && prop.charCodeAt(2) < 91;\n}\n/* Z+1 */\n);\n\n/* harmony default export */ var is_prop_valid_browser_esm = __webpack_exports__["a"] = (index);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiOS5qcyIsInNvdXJjZXMiOlsid2VicGFjazovL0A5MWFwcC9uaW5leWkubGliLnNwYXJrY29yZS8uL25vZGVfbW9kdWxlcy9AZW1vdGlvbi9tZW1vaXplL2Rpc3QvbWVtb2l6ZS5icm93c2VyLmVzbS5qcz9lMmE0Iiwid2VicGFjazovL0A5MWFwcC9uaW5leWkubGliLnNwYXJrY29yZS8uL25vZGVfbW9kdWxlcy9AZW1vdGlvbi9pcy1wcm9wLXZhbGlkL2Rpc3QvaXMtcHJvcC12YWxpZC5icm93c2VyLmVzbS5qcz9mNmU4Il0sInNvdXJjZXNDb250ZW50IjpbImZ1bmN0aW9uIG1lbW9pemUoZm4pIHtcbiAgdmFyIGNhY2hlID0ge307XG4gIHJldHVybiBmdW5jdGlvbiAoYXJnKSB7XG4gICAgaWYgKGNhY2hlW2FyZ10gPT09IHVuZGVmaW5lZCkgY2FjaGVbYXJnXSA9IGZuKGFyZyk7XG4gICAgcmV0dXJuIGNhY2hlW2FyZ107XG4gIH07XG59XG5cbmV4cG9ydCBkZWZhdWx0IG1lbW9pemU7XG4iLCJpbXBvcnQgbWVtb2l6ZSBmcm9tICdAZW1vdGlvbi9tZW1vaXplJztcblxudmFyIHJlYWN0UHJvcHNSZWdleCA9IC9eKChjaGlsZHJlbnxkYW5nZXJvdXNseVNldElubmVySFRNTHxrZXl8cmVmfGF1dG9Gb2N1c3xkZWZhdWx0VmFsdWV8ZGVmYXVsdENoZWNrZWR8aW5uZXJIVE1MfHN1cHByZXNzQ29udGVudEVkaXRhYmxlV2FybmluZ3xzdXBwcmVzc0h5ZHJhdGlvbldhcm5pbmd8dmFsdWVMaW5rfGFjY2VwdHxhY2NlcHRDaGFyc2V0fGFjY2Vzc0tleXxhY3Rpb258YWxsb3d8YWxsb3dVc2VyTWVkaWF8YWxsb3dQYXltZW50UmVxdWVzdHxhbGxvd0Z1bGxTY3JlZW58YWxsb3dUcmFuc3BhcmVuY3l8YWx0fGFzeW5jfGF1dG9Db21wbGV0ZXxhdXRvUGxheXxjYXB0dXJlfGNlbGxQYWRkaW5nfGNlbGxTcGFjaW5nfGNoYWxsZW5nZXxjaGFyU2V0fGNoZWNrZWR8Y2l0ZXxjbGFzc0lEfGNsYXNzTmFtZXxjb2xzfGNvbFNwYW58Y29udGVudHxjb250ZW50RWRpdGFibGV8Y29udGV4dE1lbnV8Y29udHJvbHN8Y29udHJvbHNMaXN0fGNvb3Jkc3xjcm9zc09yaWdpbnxkYXRhfGRhdGVUaW1lfGRlY29kaW5nfGRlZmF1bHR8ZGVmZXJ8ZGlyfGRpc2FibGVkfGRpc2FibGVQaWN0dXJlSW5QaWN0dXJlfGRvd25sb2FkfGRyYWdnYWJsZXxlbmNUeXBlfGZvcm18Zm9ybUFjdGlvbnxmb3JtRW5jVHlwZXxmb3JtTWV0aG9kfGZvcm1Ob1ZhbGlkYXRlfGZvcm1UYXJnZXR8ZnJhbWVCb3JkZXJ8aGVhZGVyc3xoZWlnaHR8aGlkZGVufGhpZ2h8aHJlZnxocmVmTGFuZ3xodG1sRm9yfGh0dHBFcXVpdnxpZHxpbnB1dE1vZGV8aW50ZWdyaXR5fGlzfGtleVBhcmFtc3xrZXlUeXBlfGtpbmR8bGFiZWx8bGFuZ3xsaXN0fGxvYWRpbmd8bG9vcHxsb3d8bWFyZ2luSGVpZ2h0fG1hcmdpbldpZHRofG1heHxtYXhMZW5ndGh8bWVkaWF8bWVkaWFHcm91cHxtZXRob2R8bWlufG1pbkxlbmd0aHxtdWx0aXBsZXxtdXRlZHxuYW1lfG5vbmNlfG5vVmFsaWRhdGV8b3BlbnxvcHRpbXVtfHBhdHRlcm58cGxhY2Vob2xkZXJ8cGxheXNJbmxpbmV8cG9zdGVyfHByZWxvYWR8cHJvZmlsZXxyYWRpb0dyb3VwfHJlYWRPbmx5fHJlZmVycmVyUG9saWN5fHJlbHxyZXF1aXJlZHxyZXZlcnNlZHxyb2xlfHJvd3N8cm93U3BhbnxzYW5kYm94fHNjb3BlfHNjb3BlZHxzY3JvbGxpbmd8c2VhbWxlc3N8c2VsZWN0ZWR8c2hhcGV8c2l6ZXxzaXplc3xzbG90fHNwYW58c3BlbGxDaGVja3xzcmN8c3JjRG9jfHNyY0xhbmd8c3JjU2V0fHN0YXJ0fHN0ZXB8c3R5bGV8c3VtbWFyeXx0YWJJbmRleHx0YXJnZXR8dGl0bGV8dHlwZXx1c2VNYXB8dmFsdWV8d2lkdGh8d21vZGV8d3JhcHxhYm91dHxkYXRhdHlwZXxpbmxpc3R8cHJlZml4fHByb3BlcnR5fHJlc291cmNlfHR5cGVvZnx2b2NhYnxhdXRvQ2FwaXRhbGl6ZXxhdXRvQ29ycmVjdHxhdXRvU2F2ZXxjb2xvcnxpbmVydHxpdGVtUHJvcHxpdGVtU2NvcGV8aXRlbVR5cGV8aXRlbUlEfGl0ZW1SZWZ8b258cmVzdWx0c3xzZWN1cml0eXx1bnNlbGVjdGFibGV8YWNjZW50SGVpZ2h0fGFjY3VtdWxhdGV8YWRkaXRpdmV8YWxpZ25tZW50QmFzZWxpbmV8YWxsb3dSZW9yZGVyfGFscGhhYmV0aWN8YW1wbGl0dWRlfGFyYWJpY0Zvcm18YXNjZW50fGF0dHJpYnV0ZU5hbWV8YXR0cmlidXRlVHlwZXxhdXRvUmV2ZXJzZXxhemltdXRofGJhc2VGcmVxdWVuY3l8YmFzZWxpbmVTaGlmdHxiYXNlUHJvZmlsZXxiYm94fGJlZ2lufGJpYXN8Ynl8Y2FsY01vZGV8Y2FwSGVpZ2h0fGNsaXB8Y2xpcFBhdGhVbml0c3xjbGlwUGF0aHxjbGlwUnVsZXxjb2xvckludGVycG9sYXRpb258Y29sb3JJbnRlcnBvbGF0aW9uRmlsdGVyc3xjb2xvclByb2ZpbGV8Y29sb3JSZW5kZXJpbmd8Y29udGVudFNjcmlwdFR5cGV8Y29udGVudFN0eWxlVHlwZXxjdXJzb3J8Y3h8Y3l8ZHxkZWNlbGVyYXRlfGRlc2NlbnR8ZGlmZnVzZUNvbnN0YW50fGRpcmVjdGlvbnxkaXNwbGF5fGRpdmlzb3J8ZG9taW5hbnRCYXNlbGluZXxkdXJ8ZHh8ZHl8ZWRnZU1vZGV8ZWxldmF0aW9ufGVuYWJsZUJhY2tncm91bmR8ZW5kfGV4cG9uZW50fGV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWR8ZmlsbHxmaWxsT3BhY2l0eXxmaWxsUnVsZXxmaWx0ZXJ8ZmlsdGVyUmVzfGZpbHRlclVuaXRzfGZsb29kQ29sb3J8Zmxvb2RPcGFjaXR5fGZvY3VzYWJsZXxmb250RmFtaWx5fGZvbnRTaXplfGZvbnRTaXplQWRqdXN0fGZvbnRTdHJldGNofGZvbnRTdHlsZXxmb250VmFyaWFudHxmb250V2VpZ2h0fGZvcm1hdHxmcm9tfGZyfGZ4fGZ5fGcxfGcyfGdseXBoTmFtZXxnbHlwaE9yaWVudGF0aW9uSG9yaXpvbnRhbHxnbHlwaE9yaWVudGF0aW9uVmVydGljYWx8Z2x5cGhSZWZ8Z3JhZGllbnRUcmFuc2Zvcm18Z3JhZGllbnRVbml0c3xoYW5naW5nfGhvcml6QWR2WHxob3Jpek9yaWdpblh8aWRlb2dyYXBoaWN8aW1hZ2VSZW5kZXJpbmd8aW58aW4yfGludGVyY2VwdHxrfGsxfGsyfGszfGs0fGtlcm5lbE1hdHJpeHxrZXJuZWxVbml0TGVuZ3RofGtlcm5pbmd8a2V5UG9pbnRzfGtleVNwbGluZXN8a2V5VGltZXN8bGVuZ3RoQWRqdXN0fGxldHRlclNwYWNpbmd8bGlnaHRpbmdDb2xvcnxsaW1pdGluZ0NvbmVBbmdsZXxsb2NhbHxtYXJrZXJFbmR8bWFya2VyTWlkfG1hcmtlclN0YXJ0fG1hcmtlckhlaWdodHxtYXJrZXJVbml0c3xtYXJrZXJXaWR0aHxtYXNrfG1hc2tDb250ZW50VW5pdHN8bWFza1VuaXRzfG1hdGhlbWF0aWNhbHxtb2RlfG51bU9jdGF2ZXN8b2Zmc2V0fG9wYWNpdHl8b3BlcmF0b3J8b3JkZXJ8b3JpZW50fG9yaWVudGF0aW9ufG9yaWdpbnxvdmVyZmxvd3xvdmVybGluZVBvc2l0aW9ufG92ZXJsaW5lVGhpY2tuZXNzfHBhbm9zZTF8cGFpbnRPcmRlcnxwYXRoTGVuZ3RofHBhdHRlcm5Db250ZW50VW5pdHN8cGF0dGVyblRyYW5zZm9ybXxwYXR0ZXJuVW5pdHN8cG9pbnRlckV2ZW50c3xwb2ludHN8cG9pbnRzQXRYfHBvaW50c0F0WXxwb2ludHNBdFp8cHJlc2VydmVBbHBoYXxwcmVzZXJ2ZUFzcGVjdFJhdGlvfHByaW1pdGl2ZVVuaXRzfHJ8cmFkaXVzfHJlZlh8cmVmWXxyZW5kZXJpbmdJbnRlbnR8cmVwZWF0Q291bnR8cmVwZWF0RHVyfHJlcXVpcmVkRXh0ZW5zaW9uc3xyZXF1aXJlZEZlYXR1cmVzfHJlc3RhcnR8cmVzdWx0fHJvdGF0ZXxyeHxyeXxzY2FsZXxzZWVkfHNoYXBlUmVuZGVyaW5nfHNsb3BlfHNwYWNpbmd8c3BlY3VsYXJDb25zdGFudHxzcGVjdWxhckV4cG9uZW50fHNwZWVkfHNwcmVhZE1ldGhvZHxzdGFydE9mZnNldHxzdGREZXZpYXRpb258c3RlbWh8c3RlbXZ8c3RpdGNoVGlsZXN8c3RvcENvbG9yfHN0b3BPcGFjaXR5fHN0cmlrZXRocm91Z2hQb3NpdGlvbnxzdHJpa2V0aHJvdWdoVGhpY2tuZXNzfHN0cmluZ3xzdHJva2V8c3Ryb2tlRGFzaGFycmF5fHN0cm9rZURhc2hvZmZzZXR8c3Ryb2tlTGluZWNhcHxzdHJva2VMaW5lam9pbnxzdHJva2VNaXRlcmxpbWl0fHN0cm9rZU9wYWNpdHl8c3Ryb2tlV2lkdGh8c3VyZmFjZVNjYWxlfHN5c3RlbUxhbmd1YWdlfHRhYmxlVmFsdWVzfHRhcmdldFh8dGFyZ2V0WXx0ZXh0QW5jaG9yfHRleHREZWNvcmF0aW9ufHRleHRSZW5kZXJpbmd8dGV4dExlbmd0aHx0b3x0cmFuc2Zvcm18dTF8dTJ8dW5kZXJsaW5lUG9zaXRpb258dW5kZXJsaW5lVGhpY2tuZXNzfHVuaWNvZGV8dW5pY29kZUJpZGl8dW5pY29kZVJhbmdlfHVuaXRzUGVyRW18dkFscGhhYmV0aWN8dkhhbmdpbmd8dklkZW9ncmFwaGljfHZNYXRoZW1hdGljYWx8dmFsdWVzfHZlY3RvckVmZmVjdHx2ZXJzaW9ufHZlcnRBZHZZfHZlcnRPcmlnaW5YfHZlcnRPcmlnaW5ZfHZpZXdCb3h8dmlld1RhcmdldHx2aXNpYmlsaXR5fHdpZHRoc3x3b3JkU3BhY2luZ3x3cml0aW5nTW9kZXx4fHhIZWlnaHR8eDF8eDJ8eENoYW5uZWxTZWxlY3Rvcnx4bGlua0FjdHVhdGV8eGxpbmtBcmNyb2xlfHhsaW5rSHJlZnx4bGlua1JvbGV8eGxpbmtTaG93fHhsaW5rVGl0bGV8eGxpbmtUeXBlfHhtbEJhc2V8eG1sbnN8eG1sbnNYbGlua3x4bWxMYW5nfHhtbFNwYWNlfHl8eTF8eTJ8eUNoYW5uZWxTZWxlY3Rvcnx6fHpvb21BbmRQYW58Zm9yfGNsYXNzfGF1dG9mb2N1cyl8KChbRGRdW0FhXVtUdF1bQWFdfFtBYV1bUnJdW0lpXVtBYV18eCktLiopKSQvOyAvLyBodHRwczovL2VzYmVuY2guY29tL2JlbmNoLzViZmVlNjhhNGNkN2U2MDA5ZWY2MWQyM1xuXG52YXIgaW5kZXggPSBtZW1vaXplKGZ1bmN0aW9uIChwcm9wKSB7XG4gIHJldHVybiByZWFjdFByb3BzUmVnZXgudGVzdChwcm9wKSB8fCBwcm9wLmNoYXJDb2RlQXQoMCkgPT09IDExMVxuICAvKiBvICovXG4gICYmIHByb3AuY2hhckNvZGVBdCgxKSA9PT0gMTEwXG4gIC8qIG4gKi9cbiAgJiYgcHJvcC5jaGFyQ29kZUF0KDIpIDwgOTE7XG59XG4vKiBaKzEgKi9cbik7XG5cbmV4cG9ydCBkZWZhdWx0IGluZGV4O1xuIl0sIm1hcHBpbmdzIjoiOztBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FDUkE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///9\n')},function(module,exports,__webpack_require__){eval("// extracted by mini-css-extract-plugin//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMTAuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9AOTFhcHAvbmluZXlpLmxpYi5zcGFya2NvcmUvLi9zcmMvY29tcG9uZW50cy9tb2RhbC9tb2RhbC5zY3NzPzBkNWIiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gZXh0cmFjdGVkIGJ5IG1pbmktY3NzLWV4dHJhY3QtcGx1Z2luIl0sIm1hcHBpbmdzIjoiQUFBQSIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///10\n")},function(module,exports,__webpack_require__){"use strict";eval("\n\n/**\n * Check if `obj` is an object.\n *\n * @param {Object} obj\n * @return {Boolean}\n * @api private\n */\n\nfunction isObject(obj) {\n  return null !== obj && 'object' === typeof obj;\n}\n\nmodule.exports = isObject;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMTEuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9AOTFhcHAvbmluZXlpLmxpYi5zcGFya2NvcmUvLi9ub2RlX21vZHVsZXMvc3VwZXJhZ2VudC9saWIvaXMtb2JqZWN0LmpzP2YzMzgiXSwic291cmNlc0NvbnRlbnQiOlsiJ3VzZSBzdHJpY3QnO1xuXG4vKipcbiAqIENoZWNrIGlmIGBvYmpgIGlzIGFuIG9iamVjdC5cbiAqXG4gKiBAcGFyYW0ge09iamVjdH0gb2JqXG4gKiBAcmV0dXJuIHtCb29sZWFufVxuICogQGFwaSBwcml2YXRlXG4gKi9cblxuZnVuY3Rpb24gaXNPYmplY3Qob2JqKSB7XG4gIHJldHVybiBudWxsICE9PSBvYmogJiYgJ29iamVjdCcgPT09IHR5cGVvZiBvYmo7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gaXNPYmplY3Q7XG4iXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///11\n")},function(module,exports,__webpack_require__){eval('/*!\n * accounting.js v0.4.1\n * Copyright 2014 Open Exchange Rates\n *\n * Freely distributable under the MIT license.\n * Portions of accounting.js are inspired or borrowed from underscore.js\n *\n * Full details and documentation:\n * http://openexchangerates.github.io/accounting.js/\n */\n\n(function(root, undefined) {\n\n\t/* --- Setup --- */\n\n\t// Create the local library object, to be exported or referenced globally later\n\tvar lib = {};\n\n\t// Current version\n\tlib.version = \'0.4.1\';\n\n\n\t/* --- Exposed settings --- */\n\n\t// The library\'s settings configuration object. Contains default parameters for\n\t// currency and number formatting\n\tlib.settings = {\n\t\tcurrency: {\n\t\t\tsymbol : "$",\t\t// default currency symbol is \'$\'\n\t\t\tformat : "%s%v",\t// controls output: %s = symbol, %v = value (can be object, see docs)\n\t\t\tdecimal : ".",\t\t// decimal point separator\n\t\t\tthousand : ",",\t\t// thousands separator\n\t\t\tprecision : 2,\t\t// decimal places\n\t\t\tgrouping : 3\t\t// digit grouping (not implemented yet)\n\t\t},\n\t\tnumber: {\n\t\t\tprecision : 0,\t\t// default precision on numbers is 0\n\t\t\tgrouping : 3,\t\t// digit grouping (not implemented yet)\n\t\t\tthousand : ",",\n\t\t\tdecimal : "."\n\t\t}\n\t};\n\n\n\t/* --- Internal Helper Methods --- */\n\n\t// Store reference to possibly-available ECMAScript 5 methods for later\n\tvar nativeMap = Array.prototype.map,\n\t\tnativeIsArray = Array.isArray,\n\t\ttoString = Object.prototype.toString;\n\n\t/**\n\t * Tests whether supplied parameter is a string\n\t * from underscore.js\n\t */\n\tfunction isString(obj) {\n\t\treturn !!(obj === \'\' || (obj && obj.charCodeAt && obj.substr));\n\t}\n\n\t/**\n\t * Tests whether supplied parameter is a string\n\t * from underscore.js, delegates to ECMA5\'s native Array.isArray\n\t */\n\tfunction isArray(obj) {\n\t\treturn nativeIsArray ? nativeIsArray(obj) : toString.call(obj) === \'[object Array]\';\n\t}\n\n\t/**\n\t * Tests whether supplied parameter is a true object\n\t */\n\tfunction isObject(obj) {\n\t\treturn obj && toString.call(obj) === \'[object Object]\';\n\t}\n\n\t/**\n\t * Extends an object with a defaults object, similar to underscore\'s _.defaults\n\t *\n\t * Used for abstracting parameter handling from API methods\n\t */\n\tfunction defaults(object, defs) {\n\t\tvar key;\n\t\tobject = object || {};\n\t\tdefs = defs || {};\n\t\t// Iterate over object non-prototype properties:\n\t\tfor (key in defs) {\n\t\t\tif (defs.hasOwnProperty(key)) {\n\t\t\t\t// Replace values with defaults only if undefined (allow empty/zero values):\n\t\t\t\tif (object[key] == null) object[key] = defs[key];\n\t\t\t}\n\t\t}\n\t\treturn object;\n\t}\n\n\t/**\n\t * Implementation of `Array.map()` for iteration loops\n\t *\n\t * Returns a new Array as a result of calling `iterator` on each array value.\n\t * Defers to native Array.map if available\n\t */\n\tfunction map(obj, iterator, context) {\n\t\tvar results = [], i, j;\n\n\t\tif (!obj) return results;\n\n\t\t// Use native .map method if it exists:\n\t\tif (nativeMap && obj.map === nativeMap) return obj.map(iterator, context);\n\n\t\t// Fallback for native .map:\n\t\tfor (i = 0, j = obj.length; i < j; i++ ) {\n\t\t\tresults[i] = iterator.call(context, obj[i], i, obj);\n\t\t}\n\t\treturn results;\n\t}\n\n\t/**\n\t * Check and normalise the value of precision (must be positive integer)\n\t */\n\tfunction checkPrecision(val, base) {\n\t\tval = Math.round(Math.abs(val));\n\t\treturn isNaN(val)? base : val;\n\t}\n\n\n\t/**\n\t * Parses a format string or object and returns format obj for use in rendering\n\t *\n\t * `format` is either a string with the default (positive) format, or object\n\t * containing `pos` (required), `neg` and `zero` values (or a function returning\n\t * either a string or object)\n\t *\n\t * Either string or format.pos must contain "%v" (value) to be valid\n\t */\n\tfunction checkCurrencyFormat(format) {\n\t\tvar defaults = lib.settings.currency.format;\n\n\t\t// Allow function as format parameter (should return string or object):\n\t\tif ( typeof format === "function" ) format = format();\n\n\t\t// Format can be a string, in which case `value` ("%v") must be present:\n\t\tif ( isString( format ) && format.match("%v") ) {\n\n\t\t\t// Create and return positive, negative and zero formats:\n\t\t\treturn {\n\t\t\t\tpos : format,\n\t\t\t\tneg : format.replace("-", "").replace("%v", "-%v"),\n\t\t\t\tzero : format\n\t\t\t};\n\n\t\t// If no format, or object is missing valid positive value, use defaults:\n\t\t} else if ( !format || !format.pos || !format.pos.match("%v") ) {\n\n\t\t\t// If defaults is a string, casts it to an object for faster checking next time:\n\t\t\treturn ( !isString( defaults ) ) ? defaults : lib.settings.currency.format = {\n\t\t\t\tpos : defaults,\n\t\t\t\tneg : defaults.replace("%v", "-%v"),\n\t\t\t\tzero : defaults\n\t\t\t};\n\n\t\t}\n\t\t// Otherwise, assume format was fine:\n\t\treturn format;\n\t}\n\n\n\t/* --- API Methods --- */\n\n\t/**\n\t * Takes a string/array of strings, removes all formatting/cruft and returns the raw float value\n\t * Alias: `accounting.parse(string)`\n\t *\n\t * Decimal must be included in the regular expression to match floats (defaults to\n\t * accounting.settings.number.decimal), so if the number uses a non-standard decimal \n\t * separator, provide it as the second argument.\n\t *\n\t * Also matches bracketed negatives (eg. "$ (1.99)" => -1.99)\n\t *\n\t * Doesn\'t throw any errors (`NaN`s become 0) but this may change in future\n\t */\n\tvar unformat = lib.unformat = lib.parse = function(value, decimal) {\n\t\t// Recursively unformat arrays:\n\t\tif (isArray(value)) {\n\t\t\treturn map(value, function(val) {\n\t\t\t\treturn unformat(val, decimal);\n\t\t\t});\n\t\t}\n\n\t\t// Fails silently (need decent errors):\n\t\tvalue = value || 0;\n\n\t\t// Return the value as-is if it\'s already a number:\n\t\tif (typeof value === "number") return value;\n\n\t\t// Default decimal point comes from settings, but could be set to eg. "," in opts:\n\t\tdecimal = decimal || lib.settings.number.decimal;\n\n\t\t // Build regex to strip out everything except digits, decimal point and minus sign:\n\t\tvar regex = new RegExp("[^0-9-" + decimal + "]", ["g"]),\n\t\t\tunformatted = parseFloat(\n\t\t\t\t("" + value)\n\t\t\t\t.replace(/\\((.*)\\)/, "-$1") // replace bracketed values with negatives\n\t\t\t\t.replace(regex, \'\')         // strip out any cruft\n\t\t\t\t.replace(decimal, \'.\')      // make sure decimal point is standard\n\t\t\t);\n\n\t\t// This will fail silently which may cause trouble, let\'s wait and see:\n\t\treturn !isNaN(unformatted) ? unformatted : 0;\n\t};\n\n\n\t/**\n\t * Implementation of toFixed() that treats floats more like decimals\n\t *\n\t * Fixes binary rounding issues (eg. (0.615).toFixed(2) === "0.61") that present\n\t * problems for accounting- and finance-related software.\n\t */\n\tvar toFixed = lib.toFixed = function(value, precision) {\n\t\tprecision = checkPrecision(precision, lib.settings.number.precision);\n\t\tvar power = Math.pow(10, precision);\n\n\t\t// Multiply up by precision, round accurately, then divide and use native toFixed():\n\t\treturn (Math.round(lib.unformat(value) * power) / power).toFixed(precision);\n\t};\n\n\n\t/**\n\t * Format a number, with comma-separated thousands and custom precision/decimal places\n\t * Alias: `accounting.format()`\n\t *\n\t * Localise by overriding the precision and thousand / decimal separators\n\t * 2nd parameter `precision` can be an object matching `settings.number`\n\t */\n\tvar formatNumber = lib.formatNumber = lib.format = function(number, precision, thousand, decimal) {\n\t\t// Resursively format arrays:\n\t\tif (isArray(number)) {\n\t\t\treturn map(number, function(val) {\n\t\t\t\treturn formatNumber(val, precision, thousand, decimal);\n\t\t\t});\n\t\t}\n\n\t\t// Clean up number:\n\t\tnumber = unformat(number);\n\n\t\t// Build options object from second param (if object) or all params, extending defaults:\n\t\tvar opts = defaults(\n\t\t\t\t(isObject(precision) ? precision : {\n\t\t\t\t\tprecision : precision,\n\t\t\t\t\tthousand : thousand,\n\t\t\t\t\tdecimal : decimal\n\t\t\t\t}),\n\t\t\t\tlib.settings.number\n\t\t\t),\n\n\t\t\t// Clean up precision\n\t\t\tusePrecision = checkPrecision(opts.precision),\n\n\t\t\t// Do some calc:\n\t\t\tnegative = number < 0 ? "-" : "",\n\t\t\tbase = parseInt(toFixed(Math.abs(number || 0), usePrecision), 10) + "",\n\t\t\tmod = base.length > 3 ? base.length % 3 : 0;\n\n\t\t// Format the number:\n\t\treturn negative + (mod ? base.substr(0, mod) + opts.thousand : "") + base.substr(mod).replace(/(\\d{3})(?=\\d)/g, "$1" + opts.thousand) + (usePrecision ? opts.decimal + toFixed(Math.abs(number), usePrecision).split(\'.\')[1] : "");\n\t};\n\n\n\t/**\n\t * Format a number into currency\n\t *\n\t * Usage: accounting.formatMoney(number, symbol, precision, thousandsSep, decimalSep, format)\n\t * defaults: (0, "$", 2, ",", ".", "%s%v")\n\t *\n\t * Localise by overriding the symbol, precision, thousand / decimal separators and format\n\t * Second param can be an object matching `settings.currency` which is the easiest way.\n\t *\n\t * To do: tidy up the parameters\n\t */\n\tvar formatMoney = lib.formatMoney = function(number, symbol, precision, thousand, decimal, format) {\n\t\t// Resursively format arrays:\n\t\tif (isArray(number)) {\n\t\t\treturn map(number, function(val){\n\t\t\t\treturn formatMoney(val, symbol, precision, thousand, decimal, format);\n\t\t\t});\n\t\t}\n\n\t\t// Clean up number:\n\t\tnumber = unformat(number);\n\n\t\t// Build options object from second param (if object) or all params, extending defaults:\n\t\tvar opts = defaults(\n\t\t\t\t(isObject(symbol) ? symbol : {\n\t\t\t\t\tsymbol : symbol,\n\t\t\t\t\tprecision : precision,\n\t\t\t\t\tthousand : thousand,\n\t\t\t\t\tdecimal : decimal,\n\t\t\t\t\tformat : format\n\t\t\t\t}),\n\t\t\t\tlib.settings.currency\n\t\t\t),\n\n\t\t\t// Check format (returns object with pos, neg and zero):\n\t\t\tformats = checkCurrencyFormat(opts.format),\n\n\t\t\t// Choose which format to use for this value:\n\t\t\tuseFormat = number > 0 ? formats.pos : number < 0 ? formats.neg : formats.zero;\n\n\t\t// Return with currency symbol added:\n\t\treturn useFormat.replace(\'%s\', opts.symbol).replace(\'%v\', formatNumber(Math.abs(number), checkPrecision(opts.precision), opts.thousand, opts.decimal));\n\t};\n\n\n\t/**\n\t * Format a list of numbers into an accounting column, padding with whitespace\n\t * to line up currency symbols, thousand separators and decimals places\n\t *\n\t * List should be an array of numbers\n\t * Second parameter can be an object containing keys that match the params\n\t *\n\t * Returns array of accouting-formatted number strings of same length\n\t *\n\t * NB: `white-space:pre` CSS rule is required on the list container to prevent\n\t * browsers from collapsing the whitespace in the output strings.\n\t */\n\tlib.formatColumn = function(list, symbol, precision, thousand, decimal, format) {\n\t\tif (!list) return [];\n\n\t\t// Build options object from second param (if object) or all params, extending defaults:\n\t\tvar opts = defaults(\n\t\t\t\t(isObject(symbol) ? symbol : {\n\t\t\t\t\tsymbol : symbol,\n\t\t\t\t\tprecision : precision,\n\t\t\t\t\tthousand : thousand,\n\t\t\t\t\tdecimal : decimal,\n\t\t\t\t\tformat : format\n\t\t\t\t}),\n\t\t\t\tlib.settings.currency\n\t\t\t),\n\n\t\t\t// Check format (returns object with pos, neg and zero), only need pos for now:\n\t\t\tformats = checkCurrencyFormat(opts.format),\n\n\t\t\t// Whether to pad at start of string or after currency symbol:\n\t\t\tpadAfterSymbol = formats.pos.indexOf("%s") < formats.pos.indexOf("%v") ? true : false,\n\n\t\t\t// Store value for the length of the longest string in the column:\n\t\t\tmaxLength = 0,\n\n\t\t\t// Format the list according to options, store the length of the longest string:\n\t\t\tformatted = map(list, function(val, i) {\n\t\t\t\tif (isArray(val)) {\n\t\t\t\t\t// Recursively format columns if list is a multi-dimensional array:\n\t\t\t\t\treturn lib.formatColumn(val, opts);\n\t\t\t\t} else {\n\t\t\t\t\t// Clean up the value\n\t\t\t\t\tval = unformat(val);\n\n\t\t\t\t\t// Choose which format to use for this value (pos, neg or zero):\n\t\t\t\t\tvar useFormat = val > 0 ? formats.pos : val < 0 ? formats.neg : formats.zero,\n\n\t\t\t\t\t\t// Format this value, push into formatted list and save the length:\n\t\t\t\t\t\tfVal = useFormat.replace(\'%s\', opts.symbol).replace(\'%v\', formatNumber(Math.abs(val), checkPrecision(opts.precision), opts.thousand, opts.decimal));\n\n\t\t\t\t\tif (fVal.length > maxLength) maxLength = fVal.length;\n\t\t\t\t\treturn fVal;\n\t\t\t\t}\n\t\t\t});\n\n\t\t// Pad each number in the list and send back the column of numbers:\n\t\treturn map(formatted, function(val, i) {\n\t\t\t// Only if this is a string (not a nested array, which would have already been padded):\n\t\t\tif (isString(val) && val.length < maxLength) {\n\t\t\t\t// Depending on symbol position, pad after symbol or at index 0:\n\t\t\t\treturn padAfterSymbol ? val.replace(opts.symbol, opts.symbol+(new Array(maxLength - val.length + 1).join(" "))) : (new Array(maxLength - val.length + 1).join(" ")) + val;\n\t\t\t}\n\t\t\treturn val;\n\t\t});\n\t};\n\n\n\t/* --- Module Definition --- */\n\n\t// Export accounting for CommonJS. If being loaded as an AMD module, define it as such.\n\t// Otherwise, just add `accounting` to the global object\n\tif (true) {\n\t\tif ( true && module.exports) {\n\t\t\texports = module.exports = lib;\n\t\t}\n\t\texports.accounting = lib;\n\t} else {}\n\n\t// Root will be `window` in browser or `global` on the server:\n}(this));\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMTIuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9AOTFhcHAvbmluZXlpLmxpYi5zcGFya2NvcmUvLi9ub2RlX21vZHVsZXMvYWNjb3VudGluZy9hY2NvdW50aW5nLmpzP2Y1NDUiXSwic291cmNlc0NvbnRlbnQiOlsiLyohXG4gKiBhY2NvdW50aW5nLmpzIHYwLjQuMVxuICogQ29weXJpZ2h0IDIwMTQgT3BlbiBFeGNoYW5nZSBSYXRlc1xuICpcbiAqIEZyZWVseSBkaXN0cmlidXRhYmxlIHVuZGVyIHRoZSBNSVQgbGljZW5zZS5cbiAqIFBvcnRpb25zIG9mIGFjY291bnRpbmcuanMgYXJlIGluc3BpcmVkIG9yIGJvcnJvd2VkIGZyb20gdW5kZXJzY29yZS5qc1xuICpcbiAqIEZ1bGwgZGV0YWlscyBhbmQgZG9jdW1lbnRhdGlvbjpcbiAqIGh0dHA6Ly9vcGVuZXhjaGFuZ2VyYXRlcy5naXRodWIuaW8vYWNjb3VudGluZy5qcy9cbiAqL1xuXG4oZnVuY3Rpb24ocm9vdCwgdW5kZWZpbmVkKSB7XG5cblx0LyogLS0tIFNldHVwIC0tLSAqL1xuXG5cdC8vIENyZWF0ZSB0aGUgbG9jYWwgbGlicmFyeSBvYmplY3QsIHRvIGJlIGV4cG9ydGVkIG9yIHJlZmVyZW5jZWQgZ2xvYmFsbHkgbGF0ZXJcblx0dmFyIGxpYiA9IHt9O1xuXG5cdC8vIEN1cnJlbnQgdmVyc2lvblxuXHRsaWIudmVyc2lvbiA9ICcwLjQuMSc7XG5cblxuXHQvKiAtLS0gRXhwb3NlZCBzZXR0aW5ncyAtLS0gKi9cblxuXHQvLyBUaGUgbGlicmFyeSdzIHNldHRpbmdzIGNvbmZpZ3VyYXRpb24gb2JqZWN0LiBDb250YWlucyBkZWZhdWx0IHBhcmFtZXRlcnMgZm9yXG5cdC8vIGN1cnJlbmN5IGFuZCBudW1iZXIgZm9ybWF0dGluZ1xuXHRsaWIuc2V0dGluZ3MgPSB7XG5cdFx0Y3VycmVuY3k6IHtcblx0XHRcdHN5bWJvbCA6IFwiJFwiLFx0XHQvLyBkZWZhdWx0IGN1cnJlbmN5IHN5bWJvbCBpcyAnJCdcblx0XHRcdGZvcm1hdCA6IFwiJXMldlwiLFx0Ly8gY29udHJvbHMgb3V0cHV0OiAlcyA9IHN5bWJvbCwgJXYgPSB2YWx1ZSAoY2FuIGJlIG9iamVjdCwgc2VlIGRvY3MpXG5cdFx0XHRkZWNpbWFsIDogXCIuXCIsXHRcdC8vIGRlY2ltYWwgcG9pbnQgc2VwYXJhdG9yXG5cdFx0XHR0aG91c2FuZCA6IFwiLFwiLFx0XHQvLyB0aG91c2FuZHMgc2VwYXJhdG9yXG5cdFx0XHRwcmVjaXNpb24gOiAyLFx0XHQvLyBkZWNpbWFsIHBsYWNlc1xuXHRcdFx0Z3JvdXBpbmcgOiAzXHRcdC8vIGRpZ2l0IGdyb3VwaW5nIChub3QgaW1wbGVtZW50ZWQgeWV0KVxuXHRcdH0sXG5cdFx0bnVtYmVyOiB7XG5cdFx0XHRwcmVjaXNpb24gOiAwLFx0XHQvLyBkZWZhdWx0IHByZWNpc2lvbiBvbiBudW1iZXJzIGlzIDBcblx0XHRcdGdyb3VwaW5nIDogMyxcdFx0Ly8gZGlnaXQgZ3JvdXBpbmcgKG5vdCBpbXBsZW1lbnRlZCB5ZXQpXG5cdFx0XHR0aG91c2FuZCA6IFwiLFwiLFxuXHRcdFx0ZGVjaW1hbCA6IFwiLlwiXG5cdFx0fVxuXHR9O1xuXG5cblx0LyogLS0tIEludGVybmFsIEhlbHBlciBNZXRob2RzIC0tLSAqL1xuXG5cdC8vIFN0b3JlIHJlZmVyZW5jZSB0byBwb3NzaWJseS1hdmFpbGFibGUgRUNNQVNjcmlwdCA1IG1ldGhvZHMgZm9yIGxhdGVyXG5cdHZhciBuYXRpdmVNYXAgPSBBcnJheS5wcm90b3R5cGUubWFwLFxuXHRcdG5hdGl2ZUlzQXJyYXkgPSBBcnJheS5pc0FycmF5LFxuXHRcdHRvU3RyaW5nID0gT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZztcblxuXHQvKipcblx0ICogVGVzdHMgd2hldGhlciBzdXBwbGllZCBwYXJhbWV0ZXIgaXMgYSBzdHJpbmdcblx0ICogZnJvbSB1bmRlcnNjb3JlLmpzXG5cdCAqL1xuXHRmdW5jdGlvbiBpc1N0cmluZyhvYmopIHtcblx0XHRyZXR1cm4gISEob2JqID09PSAnJyB8fCAob2JqICYmIG9iai5jaGFyQ29kZUF0ICYmIG9iai5zdWJzdHIpKTtcblx0fVxuXG5cdC8qKlxuXHQgKiBUZXN0cyB3aGV0aGVyIHN1cHBsaWVkIHBhcmFtZXRlciBpcyBhIHN0cmluZ1xuXHQgKiBmcm9tIHVuZGVyc2NvcmUuanMsIGRlbGVnYXRlcyB0byBFQ01BNSdzIG5hdGl2ZSBBcnJheS5pc0FycmF5XG5cdCAqL1xuXHRmdW5jdGlvbiBpc0FycmF5KG9iaikge1xuXHRcdHJldHVybiBuYXRpdmVJc0FycmF5ID8gbmF0aXZlSXNBcnJheShvYmopIDogdG9TdHJpbmcuY2FsbChvYmopID09PSAnW29iamVjdCBBcnJheV0nO1xuXHR9XG5cblx0LyoqXG5cdCAqIFRlc3RzIHdoZXRoZXIgc3VwcGxpZWQgcGFyYW1ldGVyIGlzIGEgdHJ1ZSBvYmplY3Rcblx0ICovXG5cdGZ1bmN0aW9uIGlzT2JqZWN0KG9iaikge1xuXHRcdHJldHVybiBvYmogJiYgdG9TdHJpbmcuY2FsbChvYmopID09PSAnW29iamVjdCBPYmplY3RdJztcblx0fVxuXG5cdC8qKlxuXHQgKiBFeHRlbmRzIGFuIG9iamVjdCB3aXRoIGEgZGVmYXVsdHMgb2JqZWN0LCBzaW1pbGFyIHRvIHVuZGVyc2NvcmUncyBfLmRlZmF1bHRzXG5cdCAqXG5cdCAqIFVzZWQgZm9yIGFic3RyYWN0aW5nIHBhcmFtZXRlciBoYW5kbGluZyBmcm9tIEFQSSBtZXRob2RzXG5cdCAqL1xuXHRmdW5jdGlvbiBkZWZhdWx0cyhvYmplY3QsIGRlZnMpIHtcblx0XHR2YXIga2V5O1xuXHRcdG9iamVjdCA9IG9iamVjdCB8fCB7fTtcblx0XHRkZWZzID0gZGVmcyB8fCB7fTtcblx0XHQvLyBJdGVyYXRlIG92ZXIgb2JqZWN0IG5vbi1wcm90b3R5cGUgcHJvcGVydGllczpcblx0XHRmb3IgKGtleSBpbiBkZWZzKSB7XG5cdFx0XHRpZiAoZGVmcy5oYXNPd25Qcm9wZXJ0eShrZXkpKSB7XG5cdFx0XHRcdC8vIFJlcGxhY2UgdmFsdWVzIHdpdGggZGVmYXVsdHMgb25seSBpZiB1bmRlZmluZWQgKGFsbG93IGVtcHR5L3plcm8gdmFsdWVzKTpcblx0XHRcdFx0aWYgKG9iamVjdFtrZXldID09IG51bGwpIG9iamVjdFtrZXldID0gZGVmc1trZXldO1xuXHRcdFx0fVxuXHRcdH1cblx0XHRyZXR1cm4gb2JqZWN0O1xuXHR9XG5cblx0LyoqXG5cdCAqIEltcGxlbWVudGF0aW9uIG9mIGBBcnJheS5tYXAoKWAgZm9yIGl0ZXJhdGlvbiBsb29wc1xuXHQgKlxuXHQgKiBSZXR1cm5zIGEgbmV3IEFycmF5IGFzIGEgcmVzdWx0IG9mIGNhbGxpbmcgYGl0ZXJhdG9yYCBvbiBlYWNoIGFycmF5IHZhbHVlLlxuXHQgKiBEZWZlcnMgdG8gbmF0aXZlIEFycmF5Lm1hcCBpZiBhdmFpbGFibGVcblx0ICovXG5cdGZ1bmN0aW9uIG1hcChvYmosIGl0ZXJhdG9yLCBjb250ZXh0KSB7XG5cdFx0dmFyIHJlc3VsdHMgPSBbXSwgaSwgajtcblxuXHRcdGlmICghb2JqKSByZXR1cm4gcmVzdWx0cztcblxuXHRcdC8vIFVzZSBuYXRpdmUgLm1hcCBtZXRob2QgaWYgaXQgZXhpc3RzOlxuXHRcdGlmIChuYXRpdmVNYXAgJiYgb2JqLm1hcCA9PT0gbmF0aXZlTWFwKSByZXR1cm4gb2JqLm1hcChpdGVyYXRvciwgY29udGV4dCk7XG5cblx0XHQvLyBGYWxsYmFjayBmb3IgbmF0aXZlIC5tYXA6XG5cdFx0Zm9yIChpID0gMCwgaiA9IG9iai5sZW5ndGg7IGkgPCBqOyBpKysgKSB7XG5cdFx0XHRyZXN1bHRzW2ldID0gaXRlcmF0b3IuY2FsbChjb250ZXh0LCBvYmpbaV0sIGksIG9iaik7XG5cdFx0fVxuXHRcdHJldHVybiByZXN1bHRzO1xuXHR9XG5cblx0LyoqXG5cdCAqIENoZWNrIGFuZCBub3JtYWxpc2UgdGhlIHZhbHVlIG9mIHByZWNpc2lvbiAobXVzdCBiZSBwb3NpdGl2ZSBpbnRlZ2VyKVxuXHQgKi9cblx0ZnVuY3Rpb24gY2hlY2tQcmVjaXNpb24odmFsLCBiYXNlKSB7XG5cdFx0dmFsID0gTWF0aC5yb3VuZChNYXRoLmFicyh2YWwpKTtcblx0XHRyZXR1cm4gaXNOYU4odmFsKT8gYmFzZSA6IHZhbDtcblx0fVxuXG5cblx0LyoqXG5cdCAqIFBhcnNlcyBhIGZvcm1hdCBzdHJpbmcgb3Igb2JqZWN0IGFuZCByZXR1cm5zIGZvcm1hdCBvYmogZm9yIHVzZSBpbiByZW5kZXJpbmdcblx0ICpcblx0ICogYGZvcm1hdGAgaXMgZWl0aGVyIGEgc3RyaW5nIHdpdGggdGhlIGRlZmF1bHQgKHBvc2l0aXZlKSBmb3JtYXQsIG9yIG9iamVjdFxuXHQgKiBjb250YWluaW5nIGBwb3NgIChyZXF1aXJlZCksIGBuZWdgIGFuZCBgemVyb2AgdmFsdWVzIChvciBhIGZ1bmN0aW9uIHJldHVybmluZ1xuXHQgKiBlaXRoZXIgYSBzdHJpbmcgb3Igb2JqZWN0KVxuXHQgKlxuXHQgKiBFaXRoZXIgc3RyaW5nIG9yIGZvcm1hdC5wb3MgbXVzdCBjb250YWluIFwiJXZcIiAodmFsdWUpIHRvIGJlIHZhbGlkXG5cdCAqL1xuXHRmdW5jdGlvbiBjaGVja0N1cnJlbmN5Rm9ybWF0KGZvcm1hdCkge1xuXHRcdHZhciBkZWZhdWx0cyA9IGxpYi5zZXR0aW5ncy5jdXJyZW5jeS5mb3JtYXQ7XG5cblx0XHQvLyBBbGxvdyBmdW5jdGlvbiBhcyBmb3JtYXQgcGFyYW1ldGVyIChzaG91bGQgcmV0dXJuIHN0cmluZyBvciBvYmplY3QpOlxuXHRcdGlmICggdHlwZW9mIGZvcm1hdCA9PT0gXCJmdW5jdGlvblwiICkgZm9ybWF0ID0gZm9ybWF0KCk7XG5cblx0XHQvLyBGb3JtYXQgY2FuIGJlIGEgc3RyaW5nLCBpbiB3aGljaCBjYXNlIGB2YWx1ZWAgKFwiJXZcIikgbXVzdCBiZSBwcmVzZW50OlxuXHRcdGlmICggaXNTdHJpbmcoIGZvcm1hdCApICYmIGZvcm1hdC5tYXRjaChcIiV2XCIpICkge1xuXG5cdFx0XHQvLyBDcmVhdGUgYW5kIHJldHVybiBwb3NpdGl2ZSwgbmVnYXRpdmUgYW5kIHplcm8gZm9ybWF0czpcblx0XHRcdHJldHVybiB7XG5cdFx0XHRcdHBvcyA6IGZvcm1hdCxcblx0XHRcdFx0bmVnIDogZm9ybWF0LnJlcGxhY2UoXCItXCIsIFwiXCIpLnJlcGxhY2UoXCIldlwiLCBcIi0ldlwiKSxcblx0XHRcdFx0emVybyA6IGZvcm1hdFxuXHRcdFx0fTtcblxuXHRcdC8vIElmIG5vIGZvcm1hdCwgb3Igb2JqZWN0IGlzIG1pc3NpbmcgdmFsaWQgcG9zaXRpdmUgdmFsdWUsIHVzZSBkZWZhdWx0czpcblx0XHR9IGVsc2UgaWYgKCAhZm9ybWF0IHx8ICFmb3JtYXQucG9zIHx8ICFmb3JtYXQucG9zLm1hdGNoKFwiJXZcIikgKSB7XG5cblx0XHRcdC8vIElmIGRlZmF1bHRzIGlzIGEgc3RyaW5nLCBjYXN0cyBpdCB0byBhbiBvYmplY3QgZm9yIGZhc3RlciBjaGVja2luZyBuZXh0IHRpbWU6XG5cdFx0XHRyZXR1cm4gKCAhaXNTdHJpbmcoIGRlZmF1bHRzICkgKSA/IGRlZmF1bHRzIDogbGliLnNldHRpbmdzLmN1cnJlbmN5LmZvcm1hdCA9IHtcblx0XHRcdFx0cG9zIDogZGVmYXVsdHMsXG5cdFx0XHRcdG5lZyA6IGRlZmF1bHRzLnJlcGxhY2UoXCIldlwiLCBcIi0ldlwiKSxcblx0XHRcdFx0emVybyA6IGRlZmF1bHRzXG5cdFx0XHR9O1xuXG5cdFx0fVxuXHRcdC8vIE90aGVyd2lzZSwgYXNzdW1lIGZvcm1hdCB3YXMgZmluZTpcblx0XHRyZXR1cm4gZm9ybWF0O1xuXHR9XG5cblxuXHQvKiAtLS0gQVBJIE1ldGhvZHMgLS0tICovXG5cblx0LyoqXG5cdCAqIFRha2VzIGEgc3RyaW5nL2FycmF5IG9mIHN0cmluZ3MsIHJlbW92ZXMgYWxsIGZvcm1hdHRpbmcvY3J1ZnQgYW5kIHJldHVybnMgdGhlIHJhdyBmbG9hdCB2YWx1ZVxuXHQgKiBBbGlhczogYGFjY291bnRpbmcucGFyc2Uoc3RyaW5nKWBcblx0ICpcblx0ICogRGVjaW1hbCBtdXN0IGJlIGluY2x1ZGVkIGluIHRoZSByZWd1bGFyIGV4cHJlc3Npb24gdG8gbWF0Y2ggZmxvYXRzIChkZWZhdWx0cyB0b1xuXHQgKiBhY2NvdW50aW5nLnNldHRpbmdzLm51bWJlci5kZWNpbWFsKSwgc28gaWYgdGhlIG51bWJlciB1c2VzIGEgbm9uLXN0YW5kYXJkIGRlY2ltYWwgXG5cdCAqIHNlcGFyYXRvciwgcHJvdmlkZSBpdCBhcyB0aGUgc2Vjb25kIGFyZ3VtZW50LlxuXHQgKlxuXHQgKiBBbHNvIG1hdGNoZXMgYnJhY2tldGVkIG5lZ2F0aXZlcyAoZWcuIFwiJCAoMS45OSlcIiA9PiAtMS45OSlcblx0ICpcblx0ICogRG9lc24ndCB0aHJvdyBhbnkgZXJyb3JzIChgTmFOYHMgYmVjb21lIDApIGJ1dCB0aGlzIG1heSBjaGFuZ2UgaW4gZnV0dXJlXG5cdCAqL1xuXHR2YXIgdW5mb3JtYXQgPSBsaWIudW5mb3JtYXQgPSBsaWIucGFyc2UgPSBmdW5jdGlvbih2YWx1ZSwgZGVjaW1hbCkge1xuXHRcdC8vIFJlY3Vyc2l2ZWx5IHVuZm9ybWF0IGFycmF5czpcblx0XHRpZiAoaXNBcnJheSh2YWx1ZSkpIHtcblx0XHRcdHJldHVybiBtYXAodmFsdWUsIGZ1bmN0aW9uKHZhbCkge1xuXHRcdFx0XHRyZXR1cm4gdW5mb3JtYXQodmFsLCBkZWNpbWFsKTtcblx0XHRcdH0pO1xuXHRcdH1cblxuXHRcdC8vIEZhaWxzIHNpbGVudGx5IChuZWVkIGRlY2VudCBlcnJvcnMpOlxuXHRcdHZhbHVlID0gdmFsdWUgfHwgMDtcblxuXHRcdC8vIFJldHVybiB0aGUgdmFsdWUgYXMtaXMgaWYgaXQncyBhbHJlYWR5IGEgbnVtYmVyOlxuXHRcdGlmICh0eXBlb2YgdmFsdWUgPT09IFwibnVtYmVyXCIpIHJldHVybiB2YWx1ZTtcblxuXHRcdC8vIERlZmF1bHQgZGVjaW1hbCBwb2ludCBjb21lcyBmcm9tIHNldHRpbmdzLCBidXQgY291bGQgYmUgc2V0IHRvIGVnLiBcIixcIiBpbiBvcHRzOlxuXHRcdGRlY2ltYWwgPSBkZWNpbWFsIHx8IGxpYi5zZXR0aW5ncy5udW1iZXIuZGVjaW1hbDtcblxuXHRcdCAvLyBCdWlsZCByZWdleCB0byBzdHJpcCBvdXQgZXZlcnl0aGluZyBleGNlcHQgZGlnaXRzLCBkZWNpbWFsIHBvaW50IGFuZCBtaW51cyBzaWduOlxuXHRcdHZhciByZWdleCA9IG5ldyBSZWdFeHAoXCJbXjAtOS1cIiArIGRlY2ltYWwgKyBcIl1cIiwgW1wiZ1wiXSksXG5cdFx0XHR1bmZvcm1hdHRlZCA9IHBhcnNlRmxvYXQoXG5cdFx0XHRcdChcIlwiICsgdmFsdWUpXG5cdFx0XHRcdC5yZXBsYWNlKC9cXCgoLiopXFwpLywgXCItJDFcIikgLy8gcmVwbGFjZSBicmFja2V0ZWQgdmFsdWVzIHdpdGggbmVnYXRpdmVzXG5cdFx0XHRcdC5yZXBsYWNlKHJlZ2V4LCAnJykgICAgICAgICAvLyBzdHJpcCBvdXQgYW55IGNydWZ0XG5cdFx0XHRcdC5yZXBsYWNlKGRlY2ltYWwsICcuJykgICAgICAvLyBtYWtlIHN1cmUgZGVjaW1hbCBwb2ludCBpcyBzdGFuZGFyZFxuXHRcdFx0KTtcblxuXHRcdC8vIFRoaXMgd2lsbCBmYWlsIHNpbGVudGx5IHdoaWNoIG1heSBjYXVzZSB0cm91YmxlLCBsZXQncyB3YWl0IGFuZCBzZWU6XG5cdFx0cmV0dXJuICFpc05hTih1bmZvcm1hdHRlZCkgPyB1bmZvcm1hdHRlZCA6IDA7XG5cdH07XG5cblxuXHQvKipcblx0ICogSW1wbGVtZW50YXRpb24gb2YgdG9GaXhlZCgpIHRoYXQgdHJlYXRzIGZsb2F0cyBtb3JlIGxpa2UgZGVjaW1hbHNcblx0ICpcblx0ICogRml4ZXMgYmluYXJ5IHJvdW5kaW5nIGlzc3VlcyAoZWcuICgwLjYxNSkudG9GaXhlZCgyKSA9PT0gXCIwLjYxXCIpIHRoYXQgcHJlc2VudFxuXHQgKiBwcm9ibGVtcyBmb3IgYWNjb3VudGluZy0gYW5kIGZpbmFuY2UtcmVsYXRlZCBzb2Z0d2FyZS5cblx0ICovXG5cdHZhciB0b0ZpeGVkID0gbGliLnRvRml4ZWQgPSBmdW5jdGlvbih2YWx1ZSwgcHJlY2lzaW9uKSB7XG5cdFx0cHJlY2lzaW9uID0gY2hlY2tQcmVjaXNpb24ocHJlY2lzaW9uLCBsaWIuc2V0dGluZ3MubnVtYmVyLnByZWNpc2lvbik7XG5cdFx0dmFyIHBvd2VyID0gTWF0aC5wb3coMTAsIHByZWNpc2lvbik7XG5cblx0XHQvLyBNdWx0aXBseSB1cCBieSBwcmVjaXNpb24sIHJvdW5kIGFjY3VyYXRlbHksIHRoZW4gZGl2aWRlIGFuZCB1c2UgbmF0aXZlIHRvRml4ZWQoKTpcblx0XHRyZXR1cm4gKE1hdGgucm91bmQobGliLnVuZm9ybWF0KHZhbHVlKSAqIHBvd2VyKSAvIHBvd2VyKS50b0ZpeGVkKHByZWNpc2lvbik7XG5cdH07XG5cblxuXHQvKipcblx0ICogRm9ybWF0IGEgbnVtYmVyLCB3aXRoIGNvbW1hLXNlcGFyYXRlZCB0aG91c2FuZHMgYW5kIGN1c3RvbSBwcmVjaXNpb24vZGVjaW1hbCBwbGFjZXNcblx0ICogQWxpYXM6IGBhY2NvdW50aW5nLmZvcm1hdCgpYFxuXHQgKlxuXHQgKiBMb2NhbGlzZSBieSBvdmVycmlkaW5nIHRoZSBwcmVjaXNpb24gYW5kIHRob3VzYW5kIC8gZGVjaW1hbCBzZXBhcmF0b3JzXG5cdCAqIDJuZCBwYXJhbWV0ZXIgYHByZWNpc2lvbmAgY2FuIGJlIGFuIG9iamVjdCBtYXRjaGluZyBgc2V0dGluZ3MubnVtYmVyYFxuXHQgKi9cblx0dmFyIGZvcm1hdE51bWJlciA9IGxpYi5mb3JtYXROdW1iZXIgPSBsaWIuZm9ybWF0ID0gZnVuY3Rpb24obnVtYmVyLCBwcmVjaXNpb24sIHRob3VzYW5kLCBkZWNpbWFsKSB7XG5cdFx0Ly8gUmVzdXJzaXZlbHkgZm9ybWF0IGFycmF5czpcblx0XHRpZiAoaXNBcnJheShudW1iZXIpKSB7XG5cdFx0XHRyZXR1cm4gbWFwKG51bWJlciwgZnVuY3Rpb24odmFsKSB7XG5cdFx0XHRcdHJldHVybiBmb3JtYXROdW1iZXIodmFsLCBwcmVjaXNpb24sIHRob3VzYW5kLCBkZWNpbWFsKTtcblx0XHRcdH0pO1xuXHRcdH1cblxuXHRcdC8vIENsZWFuIHVwIG51bWJlcjpcblx0XHRudW1iZXIgPSB1bmZvcm1hdChudW1iZXIpO1xuXG5cdFx0Ly8gQnVpbGQgb3B0aW9ucyBvYmplY3QgZnJvbSBzZWNvbmQgcGFyYW0gKGlmIG9iamVjdCkgb3IgYWxsIHBhcmFtcywgZXh0ZW5kaW5nIGRlZmF1bHRzOlxuXHRcdHZhciBvcHRzID0gZGVmYXVsdHMoXG5cdFx0XHRcdChpc09iamVjdChwcmVjaXNpb24pID8gcHJlY2lzaW9uIDoge1xuXHRcdFx0XHRcdHByZWNpc2lvbiA6IHByZWNpc2lvbixcblx0XHRcdFx0XHR0aG91c2FuZCA6IHRob3VzYW5kLFxuXHRcdFx0XHRcdGRlY2ltYWwgOiBkZWNpbWFsXG5cdFx0XHRcdH0pLFxuXHRcdFx0XHRsaWIuc2V0dGluZ3MubnVtYmVyXG5cdFx0XHQpLFxuXG5cdFx0XHQvLyBDbGVhbiB1cCBwcmVjaXNpb25cblx0XHRcdHVzZVByZWNpc2lvbiA9IGNoZWNrUHJlY2lzaW9uKG9wdHMucHJlY2lzaW9uKSxcblxuXHRcdFx0Ly8gRG8gc29tZSBjYWxjOlxuXHRcdFx0bmVnYXRpdmUgPSBudW1iZXIgPCAwID8gXCItXCIgOiBcIlwiLFxuXHRcdFx0YmFzZSA9IHBhcnNlSW50KHRvRml4ZWQoTWF0aC5hYnMobnVtYmVyIHx8IDApLCB1c2VQcmVjaXNpb24pLCAxMCkgKyBcIlwiLFxuXHRcdFx0bW9kID0gYmFzZS5sZW5ndGggPiAzID8gYmFzZS5sZW5ndGggJSAzIDogMDtcblxuXHRcdC8vIEZvcm1hdCB0aGUgbnVtYmVyOlxuXHRcdHJldHVybiBuZWdhdGl2ZSArIChtb2QgPyBiYXNlLnN1YnN0cigwLCBtb2QpICsgb3B0cy50aG91c2FuZCA6IFwiXCIpICsgYmFzZS5zdWJzdHIobW9kKS5yZXBsYWNlKC8oXFxkezN9KSg/PVxcZCkvZywgXCIkMVwiICsgb3B0cy50aG91c2FuZCkgKyAodXNlUHJlY2lzaW9uID8gb3B0cy5kZWNpbWFsICsgdG9GaXhlZChNYXRoLmFicyhudW1iZXIpLCB1c2VQcmVjaXNpb24pLnNwbGl0KCcuJylbMV0gOiBcIlwiKTtcblx0fTtcblxuXG5cdC8qKlxuXHQgKiBGb3JtYXQgYSBudW1iZXIgaW50byBjdXJyZW5jeVxuXHQgKlxuXHQgKiBVc2FnZTogYWNjb3VudGluZy5mb3JtYXRNb25leShudW1iZXIsIHN5bWJvbCwgcHJlY2lzaW9uLCB0aG91c2FuZHNTZXAsIGRlY2ltYWxTZXAsIGZvcm1hdClcblx0ICogZGVmYXVsdHM6ICgwLCBcIiRcIiwgMiwgXCIsXCIsIFwiLlwiLCBcIiVzJXZcIilcblx0ICpcblx0ICogTG9jYWxpc2UgYnkgb3ZlcnJpZGluZyB0aGUgc3ltYm9sLCBwcmVjaXNpb24sIHRob3VzYW5kIC8gZGVjaW1hbCBzZXBhcmF0b3JzIGFuZCBmb3JtYXRcblx0ICogU2Vjb25kIHBhcmFtIGNhbiBiZSBhbiBvYmplY3QgbWF0Y2hpbmcgYHNldHRpbmdzLmN1cnJlbmN5YCB3aGljaCBpcyB0aGUgZWFzaWVzdCB3YXkuXG5cdCAqXG5cdCAqIFRvIGRvOiB0aWR5IHVwIHRoZSBwYXJhbWV0ZXJzXG5cdCAqL1xuXHR2YXIgZm9ybWF0TW9uZXkgPSBsaWIuZm9ybWF0TW9uZXkgPSBmdW5jdGlvbihudW1iZXIsIHN5bWJvbCwgcHJlY2lzaW9uLCB0aG91c2FuZCwgZGVjaW1hbCwgZm9ybWF0KSB7XG5cdFx0Ly8gUmVzdXJzaXZlbHkgZm9ybWF0IGFycmF5czpcblx0XHRpZiAoaXNBcnJheShudW1iZXIpKSB7XG5cdFx0XHRyZXR1cm4gbWFwKG51bWJlciwgZnVuY3Rpb24odmFsKXtcblx0XHRcdFx0cmV0dXJuIGZvcm1hdE1vbmV5KHZhbCwgc3ltYm9sLCBwcmVjaXNpb24sIHRob3VzYW5kLCBkZWNpbWFsLCBmb3JtYXQpO1xuXHRcdFx0fSk7XG5cdFx0fVxuXG5cdFx0Ly8gQ2xlYW4gdXAgbnVtYmVyOlxuXHRcdG51bWJlciA9IHVuZm9ybWF0KG51bWJlcik7XG5cblx0XHQvLyBCdWlsZCBvcHRpb25zIG9iamVjdCBmcm9tIHNlY29uZCBwYXJhbSAoaWYgb2JqZWN0KSBvciBhbGwgcGFyYW1zLCBleHRlbmRpbmcgZGVmYXVsdHM6XG5cdFx0dmFyIG9wdHMgPSBkZWZhdWx0cyhcblx0XHRcdFx0KGlzT2JqZWN0KHN5bWJvbCkgPyBzeW1ib2wgOiB7XG5cdFx0XHRcdFx0c3ltYm9sIDogc3ltYm9sLFxuXHRcdFx0XHRcdHByZWNpc2lvbiA6IHByZWNpc2lvbixcblx0XHRcdFx0XHR0aG91c2FuZCA6IHRob3VzYW5kLFxuXHRcdFx0XHRcdGRlY2ltYWwgOiBkZWNpbWFsLFxuXHRcdFx0XHRcdGZvcm1hdCA6IGZvcm1hdFxuXHRcdFx0XHR9KSxcblx0XHRcdFx0bGliLnNldHRpbmdzLmN1cnJlbmN5XG5cdFx0XHQpLFxuXG5cdFx0XHQvLyBDaGVjayBmb3JtYXQgKHJldHVybnMgb2JqZWN0IHdpdGggcG9zLCBuZWcgYW5kIHplcm8pOlxuXHRcdFx0Zm9ybWF0cyA9IGNoZWNrQ3VycmVuY3lGb3JtYXQob3B0cy5mb3JtYXQpLFxuXG5cdFx0XHQvLyBDaG9vc2Ugd2hpY2ggZm9ybWF0IHRvIHVzZSBmb3IgdGhpcyB2YWx1ZTpcblx0XHRcdHVzZUZvcm1hdCA9IG51bWJlciA+IDAgPyBmb3JtYXRzLnBvcyA6IG51bWJlciA8IDAgPyBmb3JtYXRzLm5lZyA6IGZvcm1hdHMuemVybztcblxuXHRcdC8vIFJldHVybiB3aXRoIGN1cnJlbmN5IHN5bWJvbCBhZGRlZDpcblx0XHRyZXR1cm4gdXNlRm9ybWF0LnJlcGxhY2UoJyVzJywgb3B0cy5zeW1ib2wpLnJlcGxhY2UoJyV2JywgZm9ybWF0TnVtYmVyKE1hdGguYWJzKG51bWJlciksIGNoZWNrUHJlY2lzaW9uKG9wdHMucHJlY2lzaW9uKSwgb3B0cy50aG91c2FuZCwgb3B0cy5kZWNpbWFsKSk7XG5cdH07XG5cblxuXHQvKipcblx0ICogRm9ybWF0IGEgbGlzdCBvZiBudW1iZXJzIGludG8gYW4gYWNjb3VudGluZyBjb2x1bW4sIHBhZGRpbmcgd2l0aCB3aGl0ZXNwYWNlXG5cdCAqIHRvIGxpbmUgdXAgY3VycmVuY3kgc3ltYm9scywgdGhvdXNhbmQgc2VwYXJhdG9ycyBhbmQgZGVjaW1hbHMgcGxhY2VzXG5cdCAqXG5cdCAqIExpc3Qgc2hvdWxkIGJlIGFuIGFycmF5IG9mIG51bWJlcnNcblx0ICogU2Vjb25kIHBhcmFtZXRlciBjYW4gYmUgYW4gb2JqZWN0IGNvbnRhaW5pbmcga2V5cyB0aGF0IG1hdGNoIHRoZSBwYXJhbXNcblx0ICpcblx0ICogUmV0dXJucyBhcnJheSBvZiBhY2NvdXRpbmctZm9ybWF0dGVkIG51bWJlciBzdHJpbmdzIG9mIHNhbWUgbGVuZ3RoXG5cdCAqXG5cdCAqIE5COiBgd2hpdGUtc3BhY2U6cHJlYCBDU1MgcnVsZSBpcyByZXF1aXJlZCBvbiB0aGUgbGlzdCBjb250YWluZXIgdG8gcHJldmVudFxuXHQgKiBicm93c2VycyBmcm9tIGNvbGxhcHNpbmcgdGhlIHdoaXRlc3BhY2UgaW4gdGhlIG91dHB1dCBzdHJpbmdzLlxuXHQgKi9cblx0bGliLmZvcm1hdENvbHVtbiA9IGZ1bmN0aW9uKGxpc3QsIHN5bWJvbCwgcHJlY2lzaW9uLCB0aG91c2FuZCwgZGVjaW1hbCwgZm9ybWF0KSB7XG5cdFx0aWYgKCFsaXN0KSByZXR1cm4gW107XG5cblx0XHQvLyBCdWlsZCBvcHRpb25zIG9iamVjdCBmcm9tIHNlY29uZCBwYXJhbSAoaWYgb2JqZWN0KSBvciBhbGwgcGFyYW1zLCBleHRlbmRpbmcgZGVmYXVsdHM6XG5cdFx0dmFyIG9wdHMgPSBkZWZhdWx0cyhcblx0XHRcdFx0KGlzT2JqZWN0KHN5bWJvbCkgPyBzeW1ib2wgOiB7XG5cdFx0XHRcdFx0c3ltYm9sIDogc3ltYm9sLFxuXHRcdFx0XHRcdHByZWNpc2lvbiA6IHByZWNpc2lvbixcblx0XHRcdFx0XHR0aG91c2FuZCA6IHRob3VzYW5kLFxuXHRcdFx0XHRcdGRlY2ltYWwgOiBkZWNpbWFsLFxuXHRcdFx0XHRcdGZvcm1hdCA6IGZvcm1hdFxuXHRcdFx0XHR9KSxcblx0XHRcdFx0bGliLnNldHRpbmdzLmN1cnJlbmN5XG5cdFx0XHQpLFxuXG5cdFx0XHQvLyBDaGVjayBmb3JtYXQgKHJldHVybnMgb2JqZWN0IHdpdGggcG9zLCBuZWcgYW5kIHplcm8pLCBvbmx5IG5lZWQgcG9zIGZvciBub3c6XG5cdFx0XHRmb3JtYXRzID0gY2hlY2tDdXJyZW5jeUZvcm1hdChvcHRzLmZvcm1hdCksXG5cblx0XHRcdC8vIFdoZXRoZXIgdG8gcGFkIGF0IHN0YXJ0IG9mIHN0cmluZyBvciBhZnRlciBjdXJyZW5jeSBzeW1ib2w6XG5cdFx0XHRwYWRBZnRlclN5bWJvbCA9IGZvcm1hdHMucG9zLmluZGV4T2YoXCIlc1wiKSA8IGZvcm1hdHMucG9zLmluZGV4T2YoXCIldlwiKSA/IHRydWUgOiBmYWxzZSxcblxuXHRcdFx0Ly8gU3RvcmUgdmFsdWUgZm9yIHRoZSBsZW5ndGggb2YgdGhlIGxvbmdlc3Qgc3RyaW5nIGluIHRoZSBjb2x1bW46XG5cdFx0XHRtYXhMZW5ndGggPSAwLFxuXG5cdFx0XHQvLyBGb3JtYXQgdGhlIGxpc3QgYWNjb3JkaW5nIHRvIG9wdGlvbnMsIHN0b3JlIHRoZSBsZW5ndGggb2YgdGhlIGxvbmdlc3Qgc3RyaW5nOlxuXHRcdFx0Zm9ybWF0dGVkID0gbWFwKGxpc3QsIGZ1bmN0aW9uKHZhbCwgaSkge1xuXHRcdFx0XHRpZiAoaXNBcnJheSh2YWwpKSB7XG5cdFx0XHRcdFx0Ly8gUmVjdXJzaXZlbHkgZm9ybWF0IGNvbHVtbnMgaWYgbGlzdCBpcyBhIG11bHRpLWRpbWVuc2lvbmFsIGFycmF5OlxuXHRcdFx0XHRcdHJldHVybiBsaWIuZm9ybWF0Q29sdW1uKHZhbCwgb3B0cyk7XG5cdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0Ly8gQ2xlYW4gdXAgdGhlIHZhbHVlXG5cdFx0XHRcdFx0dmFsID0gdW5mb3JtYXQodmFsKTtcblxuXHRcdFx0XHRcdC8vIENob29zZSB3aGljaCBmb3JtYXQgdG8gdXNlIGZvciB0aGlzIHZhbHVlIChwb3MsIG5lZyBvciB6ZXJvKTpcblx0XHRcdFx0XHR2YXIgdXNlRm9ybWF0ID0gdmFsID4gMCA/IGZvcm1hdHMucG9zIDogdmFsIDwgMCA/IGZvcm1hdHMubmVnIDogZm9ybWF0cy56ZXJvLFxuXG5cdFx0XHRcdFx0XHQvLyBGb3JtYXQgdGhpcyB2YWx1ZSwgcHVzaCBpbnRvIGZvcm1hdHRlZCBsaXN0IGFuZCBzYXZlIHRoZSBsZW5ndGg6XG5cdFx0XHRcdFx0XHRmVmFsID0gdXNlRm9ybWF0LnJlcGxhY2UoJyVzJywgb3B0cy5zeW1ib2wpLnJlcGxhY2UoJyV2JywgZm9ybWF0TnVtYmVyKE1hdGguYWJzKHZhbCksIGNoZWNrUHJlY2lzaW9uKG9wdHMucHJlY2lzaW9uKSwgb3B0cy50aG91c2FuZCwgb3B0cy5kZWNpbWFsKSk7XG5cblx0XHRcdFx0XHRpZiAoZlZhbC5sZW5ndGggPiBtYXhMZW5ndGgpIG1heExlbmd0aCA9IGZWYWwubGVuZ3RoO1xuXHRcdFx0XHRcdHJldHVybiBmVmFsO1xuXHRcdFx0XHR9XG5cdFx0XHR9KTtcblxuXHRcdC8vIFBhZCBlYWNoIG51bWJlciBpbiB0aGUgbGlzdCBhbmQgc2VuZCBiYWNrIHRoZSBjb2x1bW4gb2YgbnVtYmVyczpcblx0XHRyZXR1cm4gbWFwKGZvcm1hdHRlZCwgZnVuY3Rpb24odmFsLCBpKSB7XG5cdFx0XHQvLyBPbmx5IGlmIHRoaXMgaXMgYSBzdHJpbmcgKG5vdCBhIG5lc3RlZCBhcnJheSwgd2hpY2ggd291bGQgaGF2ZSBhbHJlYWR5IGJlZW4gcGFkZGVkKTpcblx0XHRcdGlmIChpc1N0cmluZyh2YWwpICYmIHZhbC5sZW5ndGggPCBtYXhMZW5ndGgpIHtcblx0XHRcdFx0Ly8gRGVwZW5kaW5nIG9uIHN5bWJvbCBwb3NpdGlvbiwgcGFkIGFmdGVyIHN5bWJvbCBvciBhdCBpbmRleCAwOlxuXHRcdFx0XHRyZXR1cm4gcGFkQWZ0ZXJTeW1ib2wgPyB2YWwucmVwbGFjZShvcHRzLnN5bWJvbCwgb3B0cy5zeW1ib2wrKG5ldyBBcnJheShtYXhMZW5ndGggLSB2YWwubGVuZ3RoICsgMSkuam9pbihcIiBcIikpKSA6IChuZXcgQXJyYXkobWF4TGVuZ3RoIC0gdmFsLmxlbmd0aCArIDEpLmpvaW4oXCIgXCIpKSArIHZhbDtcblx0XHRcdH1cblx0XHRcdHJldHVybiB2YWw7XG5cdFx0fSk7XG5cdH07XG5cblxuXHQvKiAtLS0gTW9kdWxlIERlZmluaXRpb24gLS0tICovXG5cblx0Ly8gRXhwb3J0IGFjY291bnRpbmcgZm9yIENvbW1vbkpTLiBJZiBiZWluZyBsb2FkZWQgYXMgYW4gQU1EIG1vZHVsZSwgZGVmaW5lIGl0IGFzIHN1Y2guXG5cdC8vIE90aGVyd2lzZSwganVzdCBhZGQgYGFjY291bnRpbmdgIHRvIHRoZSBnbG9iYWwgb2JqZWN0XG5cdGlmICh0eXBlb2YgZXhwb3J0cyAhPT0gJ3VuZGVmaW5lZCcpIHtcblx0XHRpZiAodHlwZW9mIG1vZHVsZSAhPT0gJ3VuZGVmaW5lZCcgJiYgbW9kdWxlLmV4cG9ydHMpIHtcblx0XHRcdGV4cG9ydHMgPSBtb2R1bGUuZXhwb3J0cyA9IGxpYjtcblx0XHR9XG5cdFx0ZXhwb3J0cy5hY2NvdW50aW5nID0gbGliO1xuXHR9IGVsc2UgaWYgKHR5cGVvZiBkZWZpbmUgPT09ICdmdW5jdGlvbicgJiYgZGVmaW5lLmFtZCkge1xuXHRcdC8vIFJldHVybiB0aGUgbGlicmFyeSBhcyBhbiBBTUQgbW9kdWxlOlxuXHRcdGRlZmluZShbXSwgZnVuY3Rpb24oKSB7XG5cdFx0XHRyZXR1cm4gbGliO1xuXHRcdH0pO1xuXHR9IGVsc2Uge1xuXHRcdC8vIFVzZSBhY2NvdW50aW5nLm5vQ29uZmxpY3QgdG8gcmVzdG9yZSBgYWNjb3VudGluZ2AgYmFjayB0byBpdHMgb3JpZ2luYWwgdmFsdWUuXG5cdFx0Ly8gUmV0dXJucyBhIHJlZmVyZW5jZSB0byB0aGUgbGlicmFyeSdzIGBhY2NvdW50aW5nYCBvYmplY3Q7XG5cdFx0Ly8gZS5nLiBgdmFyIG51bWJlcnMgPSBhY2NvdW50aW5nLm5vQ29uZmxpY3QoKTtgXG5cdFx0bGliLm5vQ29uZmxpY3QgPSAoZnVuY3Rpb24ob2xkQWNjb3VudGluZykge1xuXHRcdFx0cmV0dXJuIGZ1bmN0aW9uKCkge1xuXHRcdFx0XHQvLyBSZXNldCB0aGUgdmFsdWUgb2YgdGhlIHJvb3QncyBgYWNjb3VudGluZ2AgdmFyaWFibGU6XG5cdFx0XHRcdHJvb3QuYWNjb3VudGluZyA9IG9sZEFjY291bnRpbmc7XG5cdFx0XHRcdC8vIERlbGV0ZSB0aGUgbm9Db25mbGljdCBtZXRob2Q6XG5cdFx0XHRcdGxpYi5ub0NvbmZsaWN0ID0gdW5kZWZpbmVkO1xuXHRcdFx0XHQvLyBSZXR1cm4gcmVmZXJlbmNlIHRvIHRoZSBsaWJyYXJ5IHRvIHJlLWFzc2lnbiBpdDpcblx0XHRcdFx0cmV0dXJuIGxpYjtcblx0XHRcdH07XG5cdFx0fSkocm9vdC5hY2NvdW50aW5nKTtcblxuXHRcdC8vIERlY2xhcmUgYGZ4YCBvbiB0aGUgcm9vdCAoZ2xvYmFsL3dpbmRvdykgb2JqZWN0OlxuXHRcdHJvb3RbJ2FjY291bnRpbmcnXSA9IGxpYjtcblx0fVxuXG5cdC8vIFJvb3Qgd2lsbCBiZSBgd2luZG93YCBpbiBicm93c2VyIG9yIGBnbG9iYWxgIG9uIHRoZSBzZXJ2ZXI6XG59KHRoaXMpKTtcbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsVUFzQkE7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///12\n')},function(module,exports){eval('//\n\nmodule.exports = function shallowEqual(objA, objB, compare, compareContext) {\n  var ret = compare ? compare.call(compareContext, objA, objB) : void 0;\n\n  if (ret !== void 0) {\n    return !!ret;\n  }\n\n  if (objA === objB) {\n    return true;\n  }\n\n  if (typeof objA !== "object" || !objA || typeof objB !== "object" || !objB) {\n    return false;\n  }\n\n  var keysA = Object.keys(objA);\n  var keysB = Object.keys(objB);\n\n  if (keysA.length !== keysB.length) {\n    return false;\n  }\n\n  var bHasOwnProperty = Object.prototype.hasOwnProperty.bind(objB);\n\n  // Test for A\'s keys different from B.\n  for (var idx = 0; idx < keysA.length; idx++) {\n    var key = keysA[idx];\n\n    if (!bHasOwnProperty(key)) {\n      return false;\n    }\n\n    var valueA = objA[key];\n    var valueB = objB[key];\n\n    ret = compare ? compare.call(compareContext, valueA, valueB, key) : void 0;\n\n    if (ret === false || (ret === void 0 && valueA !== valueB)) {\n      return false;\n    }\n  }\n\n  return true;\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMTMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9AOTFhcHAvbmluZXlpLmxpYi5zcGFya2NvcmUvLi9ub2RlX21vZHVsZXMvc2hhbGxvd2VxdWFsL2luZGV4LmpzPzFiMmIiXSwic291cmNlc0NvbnRlbnQiOlsiLy9cblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiBzaGFsbG93RXF1YWwob2JqQSwgb2JqQiwgY29tcGFyZSwgY29tcGFyZUNvbnRleHQpIHtcbiAgdmFyIHJldCA9IGNvbXBhcmUgPyBjb21wYXJlLmNhbGwoY29tcGFyZUNvbnRleHQsIG9iakEsIG9iakIpIDogdm9pZCAwO1xuXG4gIGlmIChyZXQgIT09IHZvaWQgMCkge1xuICAgIHJldHVybiAhIXJldDtcbiAgfVxuXG4gIGlmIChvYmpBID09PSBvYmpCKSB7XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cblxuICBpZiAodHlwZW9mIG9iakEgIT09IFwib2JqZWN0XCIgfHwgIW9iakEgfHwgdHlwZW9mIG9iakIgIT09IFwib2JqZWN0XCIgfHwgIW9iakIpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICB2YXIga2V5c0EgPSBPYmplY3Qua2V5cyhvYmpBKTtcbiAgdmFyIGtleXNCID0gT2JqZWN0LmtleXMob2JqQik7XG5cbiAgaWYgKGtleXNBLmxlbmd0aCAhPT0ga2V5c0IubGVuZ3RoKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgdmFyIGJIYXNPd25Qcm9wZXJ0eSA9IE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuYmluZChvYmpCKTtcblxuICAvLyBUZXN0IGZvciBBJ3Mga2V5cyBkaWZmZXJlbnQgZnJvbSBCLlxuICBmb3IgKHZhciBpZHggPSAwOyBpZHggPCBrZXlzQS5sZW5ndGg7IGlkeCsrKSB7XG4gICAgdmFyIGtleSA9IGtleXNBW2lkeF07XG5cbiAgICBpZiAoIWJIYXNPd25Qcm9wZXJ0eShrZXkpKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgdmFyIHZhbHVlQSA9IG9iakFba2V5XTtcbiAgICB2YXIgdmFsdWVCID0gb2JqQltrZXldO1xuXG4gICAgcmV0ID0gY29tcGFyZSA/IGNvbXBhcmUuY2FsbChjb21wYXJlQ29udGV4dCwgdmFsdWVBLCB2YWx1ZUIsIGtleSkgOiB2b2lkIDA7XG5cbiAgICBpZiAocmV0ID09PSBmYWxzZSB8fCAocmV0ID09PSB2b2lkIDAgJiYgdmFsdWVBICE9PSB2YWx1ZUIpKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHRydWU7XG59O1xuIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///13\n')},function(module,__webpack_exports__,__webpack_require__){"use strict";eval("function stylis_min (W) {\n  function M(d, c, e, h, a) {\n    for (var m = 0, b = 0, v = 0, n = 0, q, g, x = 0, K = 0, k, u = k = q = 0, l = 0, r = 0, I = 0, t = 0, B = e.length, J = B - 1, y, f = '', p = '', F = '', G = '', C; l < B;) {\n      g = e.charCodeAt(l);\n      l === J && 0 !== b + n + v + m && (0 !== b && (g = 47 === b ? 10 : 47), n = v = m = 0, B++, J++);\n\n      if (0 === b + n + v + m) {\n        if (l === J && (0 < r && (f = f.replace(N, '')), 0 < f.trim().length)) {\n          switch (g) {\n            case 32:\n            case 9:\n            case 59:\n            case 13:\n            case 10:\n              break;\n\n            default:\n              f += e.charAt(l);\n          }\n\n          g = 59;\n        }\n\n        switch (g) {\n          case 123:\n            f = f.trim();\n            q = f.charCodeAt(0);\n            k = 1;\n\n            for (t = ++l; l < B;) {\n              switch (g = e.charCodeAt(l)) {\n                case 123:\n                  k++;\n                  break;\n\n                case 125:\n                  k--;\n                  break;\n\n                case 47:\n                  switch (g = e.charCodeAt(l + 1)) {\n                    case 42:\n                    case 47:\n                      a: {\n                        for (u = l + 1; u < J; ++u) {\n                          switch (e.charCodeAt(u)) {\n                            case 47:\n                              if (42 === g && 42 === e.charCodeAt(u - 1) && l + 2 !== u) {\n                                l = u + 1;\n                                break a;\n                              }\n\n                              break;\n\n                            case 10:\n                              if (47 === g) {\n                                l = u + 1;\n                                break a;\n                              }\n\n                          }\n                        }\n\n                        l = u;\n                      }\n\n                  }\n\n                  break;\n\n                case 91:\n                  g++;\n\n                case 40:\n                  g++;\n\n                case 34:\n                case 39:\n                  for (; l++ < J && e.charCodeAt(l) !== g;) {\n                  }\n\n              }\n\n              if (0 === k) break;\n              l++;\n            }\n\n            k = e.substring(t, l);\n            0 === q && (q = (f = f.replace(ca, '').trim()).charCodeAt(0));\n\n            switch (q) {\n              case 64:\n                0 < r && (f = f.replace(N, ''));\n                g = f.charCodeAt(1);\n\n                switch (g) {\n                  case 100:\n                  case 109:\n                  case 115:\n                  case 45:\n                    r = c;\n                    break;\n\n                  default:\n                    r = O;\n                }\n\n                k = M(c, r, k, g, a + 1);\n                t = k.length;\n                0 < A && (r = X(O, f, I), C = H(3, k, r, c, D, z, t, g, a, h), f = r.join(''), void 0 !== C && 0 === (t = (k = C.trim()).length) && (g = 0, k = ''));\n                if (0 < t) switch (g) {\n                  case 115:\n                    f = f.replace(da, ea);\n\n                  case 100:\n                  case 109:\n                  case 45:\n                    k = f + '{' + k + '}';\n                    break;\n\n                  case 107:\n                    f = f.replace(fa, '$1 $2');\n                    k = f + '{' + k + '}';\n                    k = 1 === w || 2 === w && L('@' + k, 3) ? '@-webkit-' + k + '@' + k : '@' + k;\n                    break;\n\n                  default:\n                    k = f + k, 112 === h && (k = (p += k, ''));\n                } else k = '';\n                break;\n\n              default:\n                k = M(c, X(c, f, I), k, h, a + 1);\n            }\n\n            F += k;\n            k = I = r = u = q = 0;\n            f = '';\n            g = e.charCodeAt(++l);\n            break;\n\n          case 125:\n          case 59:\n            f = (0 < r ? f.replace(N, '') : f).trim();\n            if (1 < (t = f.length)) switch (0 === u && (q = f.charCodeAt(0), 45 === q || 96 < q && 123 > q) && (t = (f = f.replace(' ', ':')).length), 0 < A && void 0 !== (C = H(1, f, c, d, D, z, p.length, h, a, h)) && 0 === (t = (f = C.trim()).length) && (f = '\\x00\\x00'), q = f.charCodeAt(0), g = f.charCodeAt(1), q) {\n              case 0:\n                break;\n\n              case 64:\n                if (105 === g || 99 === g) {\n                  G += f + e.charAt(l);\n                  break;\n                }\n\n              default:\n                58 !== f.charCodeAt(t - 1) && (p += P(f, q, g, f.charCodeAt(2)));\n            }\n            I = r = u = q = 0;\n            f = '';\n            g = e.charCodeAt(++l);\n        }\n      }\n\n      switch (g) {\n        case 13:\n        case 10:\n          47 === b ? b = 0 : 0 === 1 + q && 107 !== h && 0 < f.length && (r = 1, f += '\\x00');\n          0 < A * Y && H(0, f, c, d, D, z, p.length, h, a, h);\n          z = 1;\n          D++;\n          break;\n\n        case 59:\n        case 125:\n          if (0 === b + n + v + m) {\n            z++;\n            break;\n          }\n\n        default:\n          z++;\n          y = e.charAt(l);\n\n          switch (g) {\n            case 9:\n            case 32:\n              if (0 === n + m + b) switch (x) {\n                case 44:\n                case 58:\n                case 9:\n                case 32:\n                  y = '';\n                  break;\n\n                default:\n                  32 !== g && (y = ' ');\n              }\n              break;\n\n            case 0:\n              y = '\\\\0';\n              break;\n\n            case 12:\n              y = '\\\\f';\n              break;\n\n            case 11:\n              y = '\\\\v';\n              break;\n\n            case 38:\n              0 === n + b + m && (r = I = 1, y = '\\f' + y);\n              break;\n\n            case 108:\n              if (0 === n + b + m + E && 0 < u) switch (l - u) {\n                case 2:\n                  112 === x && 58 === e.charCodeAt(l - 3) && (E = x);\n\n                case 8:\n                  111 === K && (E = K);\n              }\n              break;\n\n            case 58:\n              0 === n + b + m && (u = l);\n              break;\n\n            case 44:\n              0 === b + v + n + m && (r = 1, y += '\\r');\n              break;\n\n            case 34:\n            case 39:\n              0 === b && (n = n === g ? 0 : 0 === n ? g : n);\n              break;\n\n            case 91:\n              0 === n + b + v && m++;\n              break;\n\n            case 93:\n              0 === n + b + v && m--;\n              break;\n\n            case 41:\n              0 === n + b + m && v--;\n              break;\n\n            case 40:\n              if (0 === n + b + m) {\n                if (0 === q) switch (2 * x + 3 * K) {\n                  case 533:\n                    break;\n\n                  default:\n                    q = 1;\n                }\n                v++;\n              }\n\n              break;\n\n            case 64:\n              0 === b + v + n + m + u + k && (k = 1);\n              break;\n\n            case 42:\n            case 47:\n              if (!(0 < n + m + v)) switch (b) {\n                case 0:\n                  switch (2 * g + 3 * e.charCodeAt(l + 1)) {\n                    case 235:\n                      b = 47;\n                      break;\n\n                    case 220:\n                      t = l, b = 42;\n                  }\n\n                  break;\n\n                case 42:\n                  47 === g && 42 === x && t + 2 !== l && (33 === e.charCodeAt(t + 2) && (p += e.substring(t, l + 1)), y = '', b = 0);\n              }\n          }\n\n          0 === b && (f += y);\n      }\n\n      K = x;\n      x = g;\n      l++;\n    }\n\n    t = p.length;\n\n    if (0 < t) {\n      r = c;\n      if (0 < A && (C = H(2, p, r, d, D, z, t, h, a, h), void 0 !== C && 0 === (p = C).length)) return G + p + F;\n      p = r.join(',') + '{' + p + '}';\n\n      if (0 !== w * E) {\n        2 !== w || L(p, 2) || (E = 0);\n\n        switch (E) {\n          case 111:\n            p = p.replace(ha, ':-moz-$1') + p;\n            break;\n\n          case 112:\n            p = p.replace(Q, '::-webkit-input-$1') + p.replace(Q, '::-moz-$1') + p.replace(Q, ':-ms-input-$1') + p;\n        }\n\n        E = 0;\n      }\n    }\n\n    return G + p + F;\n  }\n\n  function X(d, c, e) {\n    var h = c.trim().split(ia);\n    c = h;\n    var a = h.length,\n        m = d.length;\n\n    switch (m) {\n      case 0:\n      case 1:\n        var b = 0;\n\n        for (d = 0 === m ? '' : d[0] + ' '; b < a; ++b) {\n          c[b] = Z(d, c[b], e).trim();\n        }\n\n        break;\n\n      default:\n        var v = b = 0;\n\n        for (c = []; b < a; ++b) {\n          for (var n = 0; n < m; ++n) {\n            c[v++] = Z(d[n] + ' ', h[b], e).trim();\n          }\n        }\n\n    }\n\n    return c;\n  }\n\n  function Z(d, c, e) {\n    var h = c.charCodeAt(0);\n    33 > h && (h = (c = c.trim()).charCodeAt(0));\n\n    switch (h) {\n      case 38:\n        return c.replace(F, '$1' + d.trim());\n\n      case 58:\n        return d.trim() + c.replace(F, '$1' + d.trim());\n\n      default:\n        if (0 < 1 * e && 0 < c.indexOf('\\f')) return c.replace(F, (58 === d.charCodeAt(0) ? '' : '$1') + d.trim());\n    }\n\n    return d + c;\n  }\n\n  function P(d, c, e, h) {\n    var a = d + ';',\n        m = 2 * c + 3 * e + 4 * h;\n\n    if (944 === m) {\n      d = a.indexOf(':', 9) + 1;\n      var b = a.substring(d, a.length - 1).trim();\n      b = a.substring(0, d).trim() + b + ';';\n      return 1 === w || 2 === w && L(b, 1) ? '-webkit-' + b + b : b;\n    }\n\n    if (0 === w || 2 === w && !L(a, 1)) return a;\n\n    switch (m) {\n      case 1015:\n        return 97 === a.charCodeAt(10) ? '-webkit-' + a + a : a;\n\n      case 951:\n        return 116 === a.charCodeAt(3) ? '-webkit-' + a + a : a;\n\n      case 963:\n        return 110 === a.charCodeAt(5) ? '-webkit-' + a + a : a;\n\n      case 1009:\n        if (100 !== a.charCodeAt(4)) break;\n\n      case 969:\n      case 942:\n        return '-webkit-' + a + a;\n\n      case 978:\n        return '-webkit-' + a + '-moz-' + a + a;\n\n      case 1019:\n      case 983:\n        return '-webkit-' + a + '-moz-' + a + '-ms-' + a + a;\n\n      case 883:\n        if (45 === a.charCodeAt(8)) return '-webkit-' + a + a;\n        if (0 < a.indexOf('image-set(', 11)) return a.replace(ja, '$1-webkit-$2') + a;\n        break;\n\n      case 932:\n        if (45 === a.charCodeAt(4)) switch (a.charCodeAt(5)) {\n          case 103:\n            return '-webkit-box-' + a.replace('-grow', '') + '-webkit-' + a + '-ms-' + a.replace('grow', 'positive') + a;\n\n          case 115:\n            return '-webkit-' + a + '-ms-' + a.replace('shrink', 'negative') + a;\n\n          case 98:\n            return '-webkit-' + a + '-ms-' + a.replace('basis', 'preferred-size') + a;\n        }\n        return '-webkit-' + a + '-ms-' + a + a;\n\n      case 964:\n        return '-webkit-' + a + '-ms-flex-' + a + a;\n\n      case 1023:\n        if (99 !== a.charCodeAt(8)) break;\n        b = a.substring(a.indexOf(':', 15)).replace('flex-', '').replace('space-between', 'justify');\n        return '-webkit-box-pack' + b + '-webkit-' + a + '-ms-flex-pack' + b + a;\n\n      case 1005:\n        return ka.test(a) ? a.replace(aa, ':-webkit-') + a.replace(aa, ':-moz-') + a : a;\n\n      case 1e3:\n        b = a.substring(13).trim();\n        c = b.indexOf('-') + 1;\n\n        switch (b.charCodeAt(0) + b.charCodeAt(c)) {\n          case 226:\n            b = a.replace(G, 'tb');\n            break;\n\n          case 232:\n            b = a.replace(G, 'tb-rl');\n            break;\n\n          case 220:\n            b = a.replace(G, 'lr');\n            break;\n\n          default:\n            return a;\n        }\n\n        return '-webkit-' + a + '-ms-' + b + a;\n\n      case 1017:\n        if (-1 === a.indexOf('sticky', 9)) break;\n\n      case 975:\n        c = (a = d).length - 10;\n        b = (33 === a.charCodeAt(c) ? a.substring(0, c) : a).substring(d.indexOf(':', 7) + 1).trim();\n\n        switch (m = b.charCodeAt(0) + (b.charCodeAt(7) | 0)) {\n          case 203:\n            if (111 > b.charCodeAt(8)) break;\n\n          case 115:\n            a = a.replace(b, '-webkit-' + b) + ';' + a;\n            break;\n\n          case 207:\n          case 102:\n            a = a.replace(b, '-webkit-' + (102 < m ? 'inline-' : '') + 'box') + ';' + a.replace(b, '-webkit-' + b) + ';' + a.replace(b, '-ms-' + b + 'box') + ';' + a;\n        }\n\n        return a + ';';\n\n      case 938:\n        if (45 === a.charCodeAt(5)) switch (a.charCodeAt(6)) {\n          case 105:\n            return b = a.replace('-items', ''), '-webkit-' + a + '-webkit-box-' + b + '-ms-flex-' + b + a;\n\n          case 115:\n            return '-webkit-' + a + '-ms-flex-item-' + a.replace(ba, '') + a;\n\n          default:\n            return '-webkit-' + a + '-ms-flex-line-pack' + a.replace('align-content', '').replace(ba, '') + a;\n        }\n        break;\n\n      case 973:\n      case 989:\n        if (45 !== a.charCodeAt(3) || 122 === a.charCodeAt(4)) break;\n\n      case 931:\n      case 953:\n        if (!0 === la.test(d)) return 115 === (b = d.substring(d.indexOf(':') + 1)).charCodeAt(0) ? P(d.replace('stretch', 'fill-available'), c, e, h).replace(':fill-available', ':stretch') : a.replace(b, '-webkit-' + b) + a.replace(b, '-moz-' + b.replace('fill-', '')) + a;\n        break;\n\n      case 962:\n        if (a = '-webkit-' + a + (102 === a.charCodeAt(5) ? '-ms-' + a : '') + a, 211 === e + h && 105 === a.charCodeAt(13) && 0 < a.indexOf('transform', 10)) return a.substring(0, a.indexOf(';', 27) + 1).replace(ma, '$1-webkit-$2') + a;\n    }\n\n    return a;\n  }\n\n  function L(d, c) {\n    var e = d.indexOf(1 === c ? ':' : '{'),\n        h = d.substring(0, 3 !== c ? e : 10);\n    e = d.substring(e + 1, d.length - 1);\n    return R(2 !== c ? h : h.replace(na, '$1'), e, c);\n  }\n\n  function ea(d, c) {\n    var e = P(c, c.charCodeAt(0), c.charCodeAt(1), c.charCodeAt(2));\n    return e !== c + ';' ? e.replace(oa, ' or ($1)').substring(4) : '(' + c + ')';\n  }\n\n  function H(d, c, e, h, a, m, b, v, n, q) {\n    for (var g = 0, x = c, w; g < A; ++g) {\n      switch (w = S[g].call(B, d, x, e, h, a, m, b, v, n, q)) {\n        case void 0:\n        case !1:\n        case !0:\n        case null:\n          break;\n\n        default:\n          x = w;\n      }\n    }\n\n    if (x !== c) return x;\n  }\n\n  function T(d) {\n    switch (d) {\n      case void 0:\n      case null:\n        A = S.length = 0;\n        break;\n\n      default:\n        if ('function' === typeof d) S[A++] = d;else if ('object' === typeof d) for (var c = 0, e = d.length; c < e; ++c) {\n          T(d[c]);\n        } else Y = !!d | 0;\n    }\n\n    return T;\n  }\n\n  function U(d) {\n    d = d.prefix;\n    void 0 !== d && (R = null, d ? 'function' !== typeof d ? w = 1 : (w = 2, R = d) : w = 0);\n    return U;\n  }\n\n  function B(d, c) {\n    var e = d;\n    33 > e.charCodeAt(0) && (e = e.trim());\n    V = e;\n    e = [V];\n\n    if (0 < A) {\n      var h = H(-1, c, e, e, D, z, 0, 0, 0, 0);\n      void 0 !== h && 'string' === typeof h && (c = h);\n    }\n\n    var a = M(O, e, c, 0, 0);\n    0 < A && (h = H(-2, a, e, e, D, z, a.length, 0, 0, 0), void 0 !== h && (a = h));\n    V = '';\n    E = 0;\n    z = D = 1;\n    return a;\n  }\n\n  var ca = /^\\0+/g,\n      N = /[\\0\\r\\f]/g,\n      aa = /: */g,\n      ka = /zoo|gra/,\n      ma = /([,: ])(transform)/g,\n      ia = /,\\r+?/g,\n      F = /([\\t\\r\\n ])*\\f?&/g,\n      fa = /@(k\\w+)\\s*(\\S*)\\s*/,\n      Q = /::(place)/g,\n      ha = /:(read-only)/g,\n      G = /[svh]\\w+-[tblr]{2}/,\n      da = /\\(\\s*(.*)\\s*\\)/g,\n      oa = /([\\s\\S]*?);/g,\n      ba = /-self|flex-/g,\n      na = /[^]*?(:[rp][el]a[\\w-]+)[^]*/,\n      la = /stretch|:\\s*\\w+\\-(?:conte|avail)/,\n      ja = /([^-])(image-set\\()/,\n      z = 1,\n      D = 1,\n      E = 0,\n      w = 1,\n      O = [],\n      S = [],\n      A = 0,\n      R = null,\n      Y = 0,\n      V = '';\n  B.use = T;\n  B.set = U;\n  void 0 !== W && U(W);\n  return B;\n}\n\n/* harmony default export */ __webpack_exports__[\"a\"] = (stylis_min);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMTQuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9AOTFhcHAvbmluZXlpLmxpYi5zcGFya2NvcmUvLi9ub2RlX21vZHVsZXMvQGVtb3Rpb24vc3R5bGlzL2Rpc3Qvc3R5bGlzLmJyb3dzZXIuZXNtLmpzP2QzMWQiXSwic291cmNlc0NvbnRlbnQiOlsiZnVuY3Rpb24gc3R5bGlzX21pbiAoVykge1xuICBmdW5jdGlvbiBNKGQsIGMsIGUsIGgsIGEpIHtcbiAgICBmb3IgKHZhciBtID0gMCwgYiA9IDAsIHYgPSAwLCBuID0gMCwgcSwgZywgeCA9IDAsIEsgPSAwLCBrLCB1ID0gayA9IHEgPSAwLCBsID0gMCwgciA9IDAsIEkgPSAwLCB0ID0gMCwgQiA9IGUubGVuZ3RoLCBKID0gQiAtIDEsIHksIGYgPSAnJywgcCA9ICcnLCBGID0gJycsIEcgPSAnJywgQzsgbCA8IEI7KSB7XG4gICAgICBnID0gZS5jaGFyQ29kZUF0KGwpO1xuICAgICAgbCA9PT0gSiAmJiAwICE9PSBiICsgbiArIHYgKyBtICYmICgwICE9PSBiICYmIChnID0gNDcgPT09IGIgPyAxMCA6IDQ3KSwgbiA9IHYgPSBtID0gMCwgQisrLCBKKyspO1xuXG4gICAgICBpZiAoMCA9PT0gYiArIG4gKyB2ICsgbSkge1xuICAgICAgICBpZiAobCA9PT0gSiAmJiAoMCA8IHIgJiYgKGYgPSBmLnJlcGxhY2UoTiwgJycpKSwgMCA8IGYudHJpbSgpLmxlbmd0aCkpIHtcbiAgICAgICAgICBzd2l0Y2ggKGcpIHtcbiAgICAgICAgICAgIGNhc2UgMzI6XG4gICAgICAgICAgICBjYXNlIDk6XG4gICAgICAgICAgICBjYXNlIDU5OlxuICAgICAgICAgICAgY2FzZSAxMzpcbiAgICAgICAgICAgIGNhc2UgMTA6XG4gICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICBmICs9IGUuY2hhckF0KGwpO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGcgPSA1OTtcbiAgICAgICAgfVxuXG4gICAgICAgIHN3aXRjaCAoZykge1xuICAgICAgICAgIGNhc2UgMTIzOlxuICAgICAgICAgICAgZiA9IGYudHJpbSgpO1xuICAgICAgICAgICAgcSA9IGYuY2hhckNvZGVBdCgwKTtcbiAgICAgICAgICAgIGsgPSAxO1xuXG4gICAgICAgICAgICBmb3IgKHQgPSArK2w7IGwgPCBCOykge1xuICAgICAgICAgICAgICBzd2l0Y2ggKGcgPSBlLmNoYXJDb2RlQXQobCkpIHtcbiAgICAgICAgICAgICAgICBjYXNlIDEyMzpcbiAgICAgICAgICAgICAgICAgIGsrKztcbiAgICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICAgICAgY2FzZSAxMjU6XG4gICAgICAgICAgICAgICAgICBrLS07XG4gICAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgICAgIGNhc2UgNDc6XG4gICAgICAgICAgICAgICAgICBzd2l0Y2ggKGcgPSBlLmNoYXJDb2RlQXQobCArIDEpKSB7XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgNDI6XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgNDc6XG4gICAgICAgICAgICAgICAgICAgICAgYToge1xuICAgICAgICAgICAgICAgICAgICAgICAgZm9yICh1ID0gbCArIDE7IHUgPCBKOyArK3UpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgc3dpdGNoIChlLmNoYXJDb2RlQXQodSkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDQ3OlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKDQyID09PSBnICYmIDQyID09PSBlLmNoYXJDb2RlQXQodSAtIDEpICYmIGwgKyAyICE9PSB1KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGwgPSB1ICsgMTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgYTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDEwOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKDQ3ID09PSBnKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGwgPSB1ICsgMTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgYTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIGwgPSB1O1xuICAgICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgICAgIGNhc2UgOTE6XG4gICAgICAgICAgICAgICAgICBnKys7XG5cbiAgICAgICAgICAgICAgICBjYXNlIDQwOlxuICAgICAgICAgICAgICAgICAgZysrO1xuXG4gICAgICAgICAgICAgICAgY2FzZSAzNDpcbiAgICAgICAgICAgICAgICBjYXNlIDM5OlxuICAgICAgICAgICAgICAgICAgZm9yICg7IGwrKyA8IEogJiYgZS5jaGFyQ29kZUF0KGwpICE9PSBnOykge1xuICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICBpZiAoMCA9PT0gaykgYnJlYWs7XG4gICAgICAgICAgICAgIGwrKztcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgayA9IGUuc3Vic3RyaW5nKHQsIGwpO1xuICAgICAgICAgICAgMCA9PT0gcSAmJiAocSA9IChmID0gZi5yZXBsYWNlKGNhLCAnJykudHJpbSgpKS5jaGFyQ29kZUF0KDApKTtcblxuICAgICAgICAgICAgc3dpdGNoIChxKSB7XG4gICAgICAgICAgICAgIGNhc2UgNjQ6XG4gICAgICAgICAgICAgICAgMCA8IHIgJiYgKGYgPSBmLnJlcGxhY2UoTiwgJycpKTtcbiAgICAgICAgICAgICAgICBnID0gZi5jaGFyQ29kZUF0KDEpO1xuXG4gICAgICAgICAgICAgICAgc3dpdGNoIChnKSB7XG4gICAgICAgICAgICAgICAgICBjYXNlIDEwMDpcbiAgICAgICAgICAgICAgICAgIGNhc2UgMTA5OlxuICAgICAgICAgICAgICAgICAgY2FzZSAxMTU6XG4gICAgICAgICAgICAgICAgICBjYXNlIDQ1OlxuICAgICAgICAgICAgICAgICAgICByID0gYztcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgICAgIHIgPSBPO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGsgPSBNKGMsIHIsIGssIGcsIGEgKyAxKTtcbiAgICAgICAgICAgICAgICB0ID0gay5sZW5ndGg7XG4gICAgICAgICAgICAgICAgMCA8IEEgJiYgKHIgPSBYKE8sIGYsIEkpLCBDID0gSCgzLCBrLCByLCBjLCBELCB6LCB0LCBnLCBhLCBoKSwgZiA9IHIuam9pbignJyksIHZvaWQgMCAhPT0gQyAmJiAwID09PSAodCA9IChrID0gQy50cmltKCkpLmxlbmd0aCkgJiYgKGcgPSAwLCBrID0gJycpKTtcbiAgICAgICAgICAgICAgICBpZiAoMCA8IHQpIHN3aXRjaCAoZykge1xuICAgICAgICAgICAgICAgICAgY2FzZSAxMTU6XG4gICAgICAgICAgICAgICAgICAgIGYgPSBmLnJlcGxhY2UoZGEsIGVhKTtcblxuICAgICAgICAgICAgICAgICAgY2FzZSAxMDA6XG4gICAgICAgICAgICAgICAgICBjYXNlIDEwOTpcbiAgICAgICAgICAgICAgICAgIGNhc2UgNDU6XG4gICAgICAgICAgICAgICAgICAgIGsgPSBmICsgJ3snICsgayArICd9JztcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgICAgICAgIGNhc2UgMTA3OlxuICAgICAgICAgICAgICAgICAgICBmID0gZi5yZXBsYWNlKGZhLCAnJDEgJDInKTtcbiAgICAgICAgICAgICAgICAgICAgayA9IGYgKyAneycgKyBrICsgJ30nO1xuICAgICAgICAgICAgICAgICAgICBrID0gMSA9PT0gdyB8fCAyID09PSB3ICYmIEwoJ0AnICsgaywgMykgPyAnQC13ZWJraXQtJyArIGsgKyAnQCcgKyBrIDogJ0AnICsgaztcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgICAgIGsgPSBmICsgaywgMTEyID09PSBoICYmIChrID0gKHAgKz0gaywgJycpKTtcbiAgICAgICAgICAgICAgICB9IGVsc2UgayA9ICcnO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgayA9IE0oYywgWChjLCBmLCBJKSwgaywgaCwgYSArIDEpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBGICs9IGs7XG4gICAgICAgICAgICBrID0gSSA9IHIgPSB1ID0gcSA9IDA7XG4gICAgICAgICAgICBmID0gJyc7XG4gICAgICAgICAgICBnID0gZS5jaGFyQ29kZUF0KCsrbCk7XG4gICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgIGNhc2UgMTI1OlxuICAgICAgICAgIGNhc2UgNTk6XG4gICAgICAgICAgICBmID0gKDAgPCByID8gZi5yZXBsYWNlKE4sICcnKSA6IGYpLnRyaW0oKTtcbiAgICAgICAgICAgIGlmICgxIDwgKHQgPSBmLmxlbmd0aCkpIHN3aXRjaCAoMCA9PT0gdSAmJiAocSA9IGYuY2hhckNvZGVBdCgwKSwgNDUgPT09IHEgfHwgOTYgPCBxICYmIDEyMyA+IHEpICYmICh0ID0gKGYgPSBmLnJlcGxhY2UoJyAnLCAnOicpKS5sZW5ndGgpLCAwIDwgQSAmJiB2b2lkIDAgIT09IChDID0gSCgxLCBmLCBjLCBkLCBELCB6LCBwLmxlbmd0aCwgaCwgYSwgaCkpICYmIDAgPT09ICh0ID0gKGYgPSBDLnRyaW0oKSkubGVuZ3RoKSAmJiAoZiA9ICdcXHgwMFxceDAwJyksIHEgPSBmLmNoYXJDb2RlQXQoMCksIGcgPSBmLmNoYXJDb2RlQXQoMSksIHEpIHtcbiAgICAgICAgICAgICAgY2FzZSAwOlxuICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICAgIGNhc2UgNjQ6XG4gICAgICAgICAgICAgICAgaWYgKDEwNSA9PT0gZyB8fCA5OSA9PT0gZykge1xuICAgICAgICAgICAgICAgICAgRyArPSBmICsgZS5jaGFyQXQobCk7XG4gICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICA1OCAhPT0gZi5jaGFyQ29kZUF0KHQgLSAxKSAmJiAocCArPSBQKGYsIHEsIGcsIGYuY2hhckNvZGVBdCgyKSkpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgSSA9IHIgPSB1ID0gcSA9IDA7XG4gICAgICAgICAgICBmID0gJyc7XG4gICAgICAgICAgICBnID0gZS5jaGFyQ29kZUF0KCsrbCk7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgc3dpdGNoIChnKSB7XG4gICAgICAgIGNhc2UgMTM6XG4gICAgICAgIGNhc2UgMTA6XG4gICAgICAgICAgNDcgPT09IGIgPyBiID0gMCA6IDAgPT09IDEgKyBxICYmIDEwNyAhPT0gaCAmJiAwIDwgZi5sZW5ndGggJiYgKHIgPSAxLCBmICs9ICdcXHgwMCcpO1xuICAgICAgICAgIDAgPCBBICogWSAmJiBIKDAsIGYsIGMsIGQsIEQsIHosIHAubGVuZ3RoLCBoLCBhLCBoKTtcbiAgICAgICAgICB6ID0gMTtcbiAgICAgICAgICBEKys7XG4gICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgY2FzZSA1OTpcbiAgICAgICAgY2FzZSAxMjU6XG4gICAgICAgICAgaWYgKDAgPT09IGIgKyBuICsgdiArIG0pIHtcbiAgICAgICAgICAgIHorKztcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIH1cblxuICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgIHorKztcbiAgICAgICAgICB5ID0gZS5jaGFyQXQobCk7XG5cbiAgICAgICAgICBzd2l0Y2ggKGcpIHtcbiAgICAgICAgICAgIGNhc2UgOTpcbiAgICAgICAgICAgIGNhc2UgMzI6XG4gICAgICAgICAgICAgIGlmICgwID09PSBuICsgbSArIGIpIHN3aXRjaCAoeCkge1xuICAgICAgICAgICAgICAgIGNhc2UgNDQ6XG4gICAgICAgICAgICAgICAgY2FzZSA1ODpcbiAgICAgICAgICAgICAgICBjYXNlIDk6XG4gICAgICAgICAgICAgICAgY2FzZSAzMjpcbiAgICAgICAgICAgICAgICAgIHkgPSAnJztcbiAgICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICAgIDMyICE9PSBnICYmICh5ID0gJyAnKTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgY2FzZSAwOlxuICAgICAgICAgICAgICB5ID0gJ1xcXFwwJztcbiAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgIGNhc2UgMTI6XG4gICAgICAgICAgICAgIHkgPSAnXFxcXGYnO1xuICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgY2FzZSAxMTpcbiAgICAgICAgICAgICAgeSA9ICdcXFxcdic7XG4gICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICBjYXNlIDM4OlxuICAgICAgICAgICAgICAwID09PSBuICsgYiArIG0gJiYgKHIgPSBJID0gMSwgeSA9ICdcXGYnICsgeSk7XG4gICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICBjYXNlIDEwODpcbiAgICAgICAgICAgICAgaWYgKDAgPT09IG4gKyBiICsgbSArIEUgJiYgMCA8IHUpIHN3aXRjaCAobCAtIHUpIHtcbiAgICAgICAgICAgICAgICBjYXNlIDI6XG4gICAgICAgICAgICAgICAgICAxMTIgPT09IHggJiYgNTggPT09IGUuY2hhckNvZGVBdChsIC0gMykgJiYgKEUgPSB4KTtcblxuICAgICAgICAgICAgICAgIGNhc2UgODpcbiAgICAgICAgICAgICAgICAgIDExMSA9PT0gSyAmJiAoRSA9IEspO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICBjYXNlIDU4OlxuICAgICAgICAgICAgICAwID09PSBuICsgYiArIG0gJiYgKHUgPSBsKTtcbiAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgIGNhc2UgNDQ6XG4gICAgICAgICAgICAgIDAgPT09IGIgKyB2ICsgbiArIG0gJiYgKHIgPSAxLCB5ICs9ICdcXHInKTtcbiAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgIGNhc2UgMzQ6XG4gICAgICAgICAgICBjYXNlIDM5OlxuICAgICAgICAgICAgICAwID09PSBiICYmIChuID0gbiA9PT0gZyA/IDAgOiAwID09PSBuID8gZyA6IG4pO1xuICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgY2FzZSA5MTpcbiAgICAgICAgICAgICAgMCA9PT0gbiArIGIgKyB2ICYmIG0rKztcbiAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgIGNhc2UgOTM6XG4gICAgICAgICAgICAgIDAgPT09IG4gKyBiICsgdiAmJiBtLS07XG4gICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICBjYXNlIDQxOlxuICAgICAgICAgICAgICAwID09PSBuICsgYiArIG0gJiYgdi0tO1xuICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgY2FzZSA0MDpcbiAgICAgICAgICAgICAgaWYgKDAgPT09IG4gKyBiICsgbSkge1xuICAgICAgICAgICAgICAgIGlmICgwID09PSBxKSBzd2l0Y2ggKDIgKiB4ICsgMyAqIEspIHtcbiAgICAgICAgICAgICAgICAgIGNhc2UgNTMzOlxuICAgICAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICAgICAgcSA9IDE7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHYrKztcbiAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICBjYXNlIDY0OlxuICAgICAgICAgICAgICAwID09PSBiICsgdiArIG4gKyBtICsgdSArIGsgJiYgKGsgPSAxKTtcbiAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgIGNhc2UgNDI6XG4gICAgICAgICAgICBjYXNlIDQ3OlxuICAgICAgICAgICAgICBpZiAoISgwIDwgbiArIG0gKyB2KSkgc3dpdGNoIChiKSB7XG4gICAgICAgICAgICAgICAgY2FzZSAwOlxuICAgICAgICAgICAgICAgICAgc3dpdGNoICgyICogZyArIDMgKiBlLmNoYXJDb2RlQXQobCArIDEpKSB7XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgMjM1OlxuICAgICAgICAgICAgICAgICAgICAgIGIgPSA0NztcbiAgICAgICAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgICAgICAgICBjYXNlIDIyMDpcbiAgICAgICAgICAgICAgICAgICAgICB0ID0gbCwgYiA9IDQyO1xuICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgICAgIGNhc2UgNDI6XG4gICAgICAgICAgICAgICAgICA0NyA9PT0gZyAmJiA0MiA9PT0geCAmJiB0ICsgMiAhPT0gbCAmJiAoMzMgPT09IGUuY2hhckNvZGVBdCh0ICsgMikgJiYgKHAgKz0gZS5zdWJzdHJpbmcodCwgbCArIDEpKSwgeSA9ICcnLCBiID0gMCk7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG5cbiAgICAgICAgICAwID09PSBiICYmIChmICs9IHkpO1xuICAgICAgfVxuXG4gICAgICBLID0geDtcbiAgICAgIHggPSBnO1xuICAgICAgbCsrO1xuICAgIH1cblxuICAgIHQgPSBwLmxlbmd0aDtcblxuICAgIGlmICgwIDwgdCkge1xuICAgICAgciA9IGM7XG4gICAgICBpZiAoMCA8IEEgJiYgKEMgPSBIKDIsIHAsIHIsIGQsIEQsIHosIHQsIGgsIGEsIGgpLCB2b2lkIDAgIT09IEMgJiYgMCA9PT0gKHAgPSBDKS5sZW5ndGgpKSByZXR1cm4gRyArIHAgKyBGO1xuICAgICAgcCA9IHIuam9pbignLCcpICsgJ3snICsgcCArICd9JztcblxuICAgICAgaWYgKDAgIT09IHcgKiBFKSB7XG4gICAgICAgIDIgIT09IHcgfHwgTChwLCAyKSB8fCAoRSA9IDApO1xuXG4gICAgICAgIHN3aXRjaCAoRSkge1xuICAgICAgICAgIGNhc2UgMTExOlxuICAgICAgICAgICAgcCA9IHAucmVwbGFjZShoYSwgJzotbW96LSQxJykgKyBwO1xuICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICBjYXNlIDExMjpcbiAgICAgICAgICAgIHAgPSBwLnJlcGxhY2UoUSwgJzo6LXdlYmtpdC1pbnB1dC0kMScpICsgcC5yZXBsYWNlKFEsICc6Oi1tb3otJDEnKSArIHAucmVwbGFjZShRLCAnOi1tcy1pbnB1dC0kMScpICsgcDtcbiAgICAgICAgfVxuXG4gICAgICAgIEUgPSAwO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBHICsgcCArIEY7XG4gIH1cblxuICBmdW5jdGlvbiBYKGQsIGMsIGUpIHtcbiAgICB2YXIgaCA9IGMudHJpbSgpLnNwbGl0KGlhKTtcbiAgICBjID0gaDtcbiAgICB2YXIgYSA9IGgubGVuZ3RoLFxuICAgICAgICBtID0gZC5sZW5ndGg7XG5cbiAgICBzd2l0Y2ggKG0pIHtcbiAgICAgIGNhc2UgMDpcbiAgICAgIGNhc2UgMTpcbiAgICAgICAgdmFyIGIgPSAwO1xuXG4gICAgICAgIGZvciAoZCA9IDAgPT09IG0gPyAnJyA6IGRbMF0gKyAnICc7IGIgPCBhOyArK2IpIHtcbiAgICAgICAgICBjW2JdID0gWihkLCBjW2JdLCBlKS50cmltKCk7XG4gICAgICAgIH1cblxuICAgICAgICBicmVhaztcblxuICAgICAgZGVmYXVsdDpcbiAgICAgICAgdmFyIHYgPSBiID0gMDtcblxuICAgICAgICBmb3IgKGMgPSBbXTsgYiA8IGE7ICsrYikge1xuICAgICAgICAgIGZvciAodmFyIG4gPSAwOyBuIDwgbTsgKytuKSB7XG4gICAgICAgICAgICBjW3YrK10gPSBaKGRbbl0gKyAnICcsIGhbYl0sIGUpLnRyaW0oKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgIH1cblxuICAgIHJldHVybiBjO1xuICB9XG5cbiAgZnVuY3Rpb24gWihkLCBjLCBlKSB7XG4gICAgdmFyIGggPSBjLmNoYXJDb2RlQXQoMCk7XG4gICAgMzMgPiBoICYmIChoID0gKGMgPSBjLnRyaW0oKSkuY2hhckNvZGVBdCgwKSk7XG5cbiAgICBzd2l0Y2ggKGgpIHtcbiAgICAgIGNhc2UgMzg6XG4gICAgICAgIHJldHVybiBjLnJlcGxhY2UoRiwgJyQxJyArIGQudHJpbSgpKTtcblxuICAgICAgY2FzZSA1ODpcbiAgICAgICAgcmV0dXJuIGQudHJpbSgpICsgYy5yZXBsYWNlKEYsICckMScgKyBkLnRyaW0oKSk7XG5cbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIGlmICgwIDwgMSAqIGUgJiYgMCA8IGMuaW5kZXhPZignXFxmJykpIHJldHVybiBjLnJlcGxhY2UoRiwgKDU4ID09PSBkLmNoYXJDb2RlQXQoMCkgPyAnJyA6ICckMScpICsgZC50cmltKCkpO1xuICAgIH1cblxuICAgIHJldHVybiBkICsgYztcbiAgfVxuXG4gIGZ1bmN0aW9uIFAoZCwgYywgZSwgaCkge1xuICAgIHZhciBhID0gZCArICc7JyxcbiAgICAgICAgbSA9IDIgKiBjICsgMyAqIGUgKyA0ICogaDtcblxuICAgIGlmICg5NDQgPT09IG0pIHtcbiAgICAgIGQgPSBhLmluZGV4T2YoJzonLCA5KSArIDE7XG4gICAgICB2YXIgYiA9IGEuc3Vic3RyaW5nKGQsIGEubGVuZ3RoIC0gMSkudHJpbSgpO1xuICAgICAgYiA9IGEuc3Vic3RyaW5nKDAsIGQpLnRyaW0oKSArIGIgKyAnOyc7XG4gICAgICByZXR1cm4gMSA9PT0gdyB8fCAyID09PSB3ICYmIEwoYiwgMSkgPyAnLXdlYmtpdC0nICsgYiArIGIgOiBiO1xuICAgIH1cblxuICAgIGlmICgwID09PSB3IHx8IDIgPT09IHcgJiYgIUwoYSwgMSkpIHJldHVybiBhO1xuXG4gICAgc3dpdGNoIChtKSB7XG4gICAgICBjYXNlIDEwMTU6XG4gICAgICAgIHJldHVybiA5NyA9PT0gYS5jaGFyQ29kZUF0KDEwKSA/ICctd2Via2l0LScgKyBhICsgYSA6IGE7XG5cbiAgICAgIGNhc2UgOTUxOlxuICAgICAgICByZXR1cm4gMTE2ID09PSBhLmNoYXJDb2RlQXQoMykgPyAnLXdlYmtpdC0nICsgYSArIGEgOiBhO1xuXG4gICAgICBjYXNlIDk2MzpcbiAgICAgICAgcmV0dXJuIDExMCA9PT0gYS5jaGFyQ29kZUF0KDUpID8gJy13ZWJraXQtJyArIGEgKyBhIDogYTtcblxuICAgICAgY2FzZSAxMDA5OlxuICAgICAgICBpZiAoMTAwICE9PSBhLmNoYXJDb2RlQXQoNCkpIGJyZWFrO1xuXG4gICAgICBjYXNlIDk2OTpcbiAgICAgIGNhc2UgOTQyOlxuICAgICAgICByZXR1cm4gJy13ZWJraXQtJyArIGEgKyBhO1xuXG4gICAgICBjYXNlIDk3ODpcbiAgICAgICAgcmV0dXJuICctd2Via2l0LScgKyBhICsgJy1tb3otJyArIGEgKyBhO1xuXG4gICAgICBjYXNlIDEwMTk6XG4gICAgICBjYXNlIDk4MzpcbiAgICAgICAgcmV0dXJuICctd2Via2l0LScgKyBhICsgJy1tb3otJyArIGEgKyAnLW1zLScgKyBhICsgYTtcblxuICAgICAgY2FzZSA4ODM6XG4gICAgICAgIGlmICg0NSA9PT0gYS5jaGFyQ29kZUF0KDgpKSByZXR1cm4gJy13ZWJraXQtJyArIGEgKyBhO1xuICAgICAgICBpZiAoMCA8IGEuaW5kZXhPZignaW1hZ2Utc2V0KCcsIDExKSkgcmV0dXJuIGEucmVwbGFjZShqYSwgJyQxLXdlYmtpdC0kMicpICsgYTtcbiAgICAgICAgYnJlYWs7XG5cbiAgICAgIGNhc2UgOTMyOlxuICAgICAgICBpZiAoNDUgPT09IGEuY2hhckNvZGVBdCg0KSkgc3dpdGNoIChhLmNoYXJDb2RlQXQoNSkpIHtcbiAgICAgICAgICBjYXNlIDEwMzpcbiAgICAgICAgICAgIHJldHVybiAnLXdlYmtpdC1ib3gtJyArIGEucmVwbGFjZSgnLWdyb3cnLCAnJykgKyAnLXdlYmtpdC0nICsgYSArICctbXMtJyArIGEucmVwbGFjZSgnZ3JvdycsICdwb3NpdGl2ZScpICsgYTtcblxuICAgICAgICAgIGNhc2UgMTE1OlxuICAgICAgICAgICAgcmV0dXJuICctd2Via2l0LScgKyBhICsgJy1tcy0nICsgYS5yZXBsYWNlKCdzaHJpbmsnLCAnbmVnYXRpdmUnKSArIGE7XG5cbiAgICAgICAgICBjYXNlIDk4OlxuICAgICAgICAgICAgcmV0dXJuICctd2Via2l0LScgKyBhICsgJy1tcy0nICsgYS5yZXBsYWNlKCdiYXNpcycsICdwcmVmZXJyZWQtc2l6ZScpICsgYTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gJy13ZWJraXQtJyArIGEgKyAnLW1zLScgKyBhICsgYTtcblxuICAgICAgY2FzZSA5NjQ6XG4gICAgICAgIHJldHVybiAnLXdlYmtpdC0nICsgYSArICctbXMtZmxleC0nICsgYSArIGE7XG5cbiAgICAgIGNhc2UgMTAyMzpcbiAgICAgICAgaWYgKDk5ICE9PSBhLmNoYXJDb2RlQXQoOCkpIGJyZWFrO1xuICAgICAgICBiID0gYS5zdWJzdHJpbmcoYS5pbmRleE9mKCc6JywgMTUpKS5yZXBsYWNlKCdmbGV4LScsICcnKS5yZXBsYWNlKCdzcGFjZS1iZXR3ZWVuJywgJ2p1c3RpZnknKTtcbiAgICAgICAgcmV0dXJuICctd2Via2l0LWJveC1wYWNrJyArIGIgKyAnLXdlYmtpdC0nICsgYSArICctbXMtZmxleC1wYWNrJyArIGIgKyBhO1xuXG4gICAgICBjYXNlIDEwMDU6XG4gICAgICAgIHJldHVybiBrYS50ZXN0KGEpID8gYS5yZXBsYWNlKGFhLCAnOi13ZWJraXQtJykgKyBhLnJlcGxhY2UoYWEsICc6LW1vei0nKSArIGEgOiBhO1xuXG4gICAgICBjYXNlIDFlMzpcbiAgICAgICAgYiA9IGEuc3Vic3RyaW5nKDEzKS50cmltKCk7XG4gICAgICAgIGMgPSBiLmluZGV4T2YoJy0nKSArIDE7XG5cbiAgICAgICAgc3dpdGNoIChiLmNoYXJDb2RlQXQoMCkgKyBiLmNoYXJDb2RlQXQoYykpIHtcbiAgICAgICAgICBjYXNlIDIyNjpcbiAgICAgICAgICAgIGIgPSBhLnJlcGxhY2UoRywgJ3RiJyk7XG4gICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgIGNhc2UgMjMyOlxuICAgICAgICAgICAgYiA9IGEucmVwbGFjZShHLCAndGItcmwnKTtcbiAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgY2FzZSAyMjA6XG4gICAgICAgICAgICBiID0gYS5yZXBsYWNlKEcsICdscicpO1xuICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgcmV0dXJuIGE7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gJy13ZWJraXQtJyArIGEgKyAnLW1zLScgKyBiICsgYTtcblxuICAgICAgY2FzZSAxMDE3OlxuICAgICAgICBpZiAoLTEgPT09IGEuaW5kZXhPZignc3RpY2t5JywgOSkpIGJyZWFrO1xuXG4gICAgICBjYXNlIDk3NTpcbiAgICAgICAgYyA9IChhID0gZCkubGVuZ3RoIC0gMTA7XG4gICAgICAgIGIgPSAoMzMgPT09IGEuY2hhckNvZGVBdChjKSA/IGEuc3Vic3RyaW5nKDAsIGMpIDogYSkuc3Vic3RyaW5nKGQuaW5kZXhPZignOicsIDcpICsgMSkudHJpbSgpO1xuXG4gICAgICAgIHN3aXRjaCAobSA9IGIuY2hhckNvZGVBdCgwKSArIChiLmNoYXJDb2RlQXQoNykgfCAwKSkge1xuICAgICAgICAgIGNhc2UgMjAzOlxuICAgICAgICAgICAgaWYgKDExMSA+IGIuY2hhckNvZGVBdCg4KSkgYnJlYWs7XG5cbiAgICAgICAgICBjYXNlIDExNTpcbiAgICAgICAgICAgIGEgPSBhLnJlcGxhY2UoYiwgJy13ZWJraXQtJyArIGIpICsgJzsnICsgYTtcbiAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgY2FzZSAyMDc6XG4gICAgICAgICAgY2FzZSAxMDI6XG4gICAgICAgICAgICBhID0gYS5yZXBsYWNlKGIsICctd2Via2l0LScgKyAoMTAyIDwgbSA/ICdpbmxpbmUtJyA6ICcnKSArICdib3gnKSArICc7JyArIGEucmVwbGFjZShiLCAnLXdlYmtpdC0nICsgYikgKyAnOycgKyBhLnJlcGxhY2UoYiwgJy1tcy0nICsgYiArICdib3gnKSArICc7JyArIGE7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gYSArICc7JztcblxuICAgICAgY2FzZSA5Mzg6XG4gICAgICAgIGlmICg0NSA9PT0gYS5jaGFyQ29kZUF0KDUpKSBzd2l0Y2ggKGEuY2hhckNvZGVBdCg2KSkge1xuICAgICAgICAgIGNhc2UgMTA1OlxuICAgICAgICAgICAgcmV0dXJuIGIgPSBhLnJlcGxhY2UoJy1pdGVtcycsICcnKSwgJy13ZWJraXQtJyArIGEgKyAnLXdlYmtpdC1ib3gtJyArIGIgKyAnLW1zLWZsZXgtJyArIGIgKyBhO1xuXG4gICAgICAgICAgY2FzZSAxMTU6XG4gICAgICAgICAgICByZXR1cm4gJy13ZWJraXQtJyArIGEgKyAnLW1zLWZsZXgtaXRlbS0nICsgYS5yZXBsYWNlKGJhLCAnJykgKyBhO1xuXG4gICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgIHJldHVybiAnLXdlYmtpdC0nICsgYSArICctbXMtZmxleC1saW5lLXBhY2snICsgYS5yZXBsYWNlKCdhbGlnbi1jb250ZW50JywgJycpLnJlcGxhY2UoYmEsICcnKSArIGE7XG4gICAgICAgIH1cbiAgICAgICAgYnJlYWs7XG5cbiAgICAgIGNhc2UgOTczOlxuICAgICAgY2FzZSA5ODk6XG4gICAgICAgIGlmICg0NSAhPT0gYS5jaGFyQ29kZUF0KDMpIHx8IDEyMiA9PT0gYS5jaGFyQ29kZUF0KDQpKSBicmVhaztcblxuICAgICAgY2FzZSA5MzE6XG4gICAgICBjYXNlIDk1MzpcbiAgICAgICAgaWYgKCEwID09PSBsYS50ZXN0KGQpKSByZXR1cm4gMTE1ID09PSAoYiA9IGQuc3Vic3RyaW5nKGQuaW5kZXhPZignOicpICsgMSkpLmNoYXJDb2RlQXQoMCkgPyBQKGQucmVwbGFjZSgnc3RyZXRjaCcsICdmaWxsLWF2YWlsYWJsZScpLCBjLCBlLCBoKS5yZXBsYWNlKCc6ZmlsbC1hdmFpbGFibGUnLCAnOnN0cmV0Y2gnKSA6IGEucmVwbGFjZShiLCAnLXdlYmtpdC0nICsgYikgKyBhLnJlcGxhY2UoYiwgJy1tb3otJyArIGIucmVwbGFjZSgnZmlsbC0nLCAnJykpICsgYTtcbiAgICAgICAgYnJlYWs7XG5cbiAgICAgIGNhc2UgOTYyOlxuICAgICAgICBpZiAoYSA9ICctd2Via2l0LScgKyBhICsgKDEwMiA9PT0gYS5jaGFyQ29kZUF0KDUpID8gJy1tcy0nICsgYSA6ICcnKSArIGEsIDIxMSA9PT0gZSArIGggJiYgMTA1ID09PSBhLmNoYXJDb2RlQXQoMTMpICYmIDAgPCBhLmluZGV4T2YoJ3RyYW5zZm9ybScsIDEwKSkgcmV0dXJuIGEuc3Vic3RyaW5nKDAsIGEuaW5kZXhPZignOycsIDI3KSArIDEpLnJlcGxhY2UobWEsICckMS13ZWJraXQtJDInKSArIGE7XG4gICAgfVxuXG4gICAgcmV0dXJuIGE7XG4gIH1cblxuICBmdW5jdGlvbiBMKGQsIGMpIHtcbiAgICB2YXIgZSA9IGQuaW5kZXhPZigxID09PSBjID8gJzonIDogJ3snKSxcbiAgICAgICAgaCA9IGQuc3Vic3RyaW5nKDAsIDMgIT09IGMgPyBlIDogMTApO1xuICAgIGUgPSBkLnN1YnN0cmluZyhlICsgMSwgZC5sZW5ndGggLSAxKTtcbiAgICByZXR1cm4gUigyICE9PSBjID8gaCA6IGgucmVwbGFjZShuYSwgJyQxJyksIGUsIGMpO1xuICB9XG5cbiAgZnVuY3Rpb24gZWEoZCwgYykge1xuICAgIHZhciBlID0gUChjLCBjLmNoYXJDb2RlQXQoMCksIGMuY2hhckNvZGVBdCgxKSwgYy5jaGFyQ29kZUF0KDIpKTtcbiAgICByZXR1cm4gZSAhPT0gYyArICc7JyA/IGUucmVwbGFjZShvYSwgJyBvciAoJDEpJykuc3Vic3RyaW5nKDQpIDogJygnICsgYyArICcpJztcbiAgfVxuXG4gIGZ1bmN0aW9uIEgoZCwgYywgZSwgaCwgYSwgbSwgYiwgdiwgbiwgcSkge1xuICAgIGZvciAodmFyIGcgPSAwLCB4ID0gYywgdzsgZyA8IEE7ICsrZykge1xuICAgICAgc3dpdGNoICh3ID0gU1tnXS5jYWxsKEIsIGQsIHgsIGUsIGgsIGEsIG0sIGIsIHYsIG4sIHEpKSB7XG4gICAgICAgIGNhc2Ugdm9pZCAwOlxuICAgICAgICBjYXNlICExOlxuICAgICAgICBjYXNlICEwOlxuICAgICAgICBjYXNlIG51bGw6XG4gICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICB4ID0gdztcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAoeCAhPT0gYykgcmV0dXJuIHg7XG4gIH1cblxuICBmdW5jdGlvbiBUKGQpIHtcbiAgICBzd2l0Y2ggKGQpIHtcbiAgICAgIGNhc2Ugdm9pZCAwOlxuICAgICAgY2FzZSBudWxsOlxuICAgICAgICBBID0gUy5sZW5ndGggPSAwO1xuICAgICAgICBicmVhaztcblxuICAgICAgZGVmYXVsdDpcbiAgICAgICAgaWYgKCdmdW5jdGlvbicgPT09IHR5cGVvZiBkKSBTW0ErK10gPSBkO2Vsc2UgaWYgKCdvYmplY3QnID09PSB0eXBlb2YgZCkgZm9yICh2YXIgYyA9IDAsIGUgPSBkLmxlbmd0aDsgYyA8IGU7ICsrYykge1xuICAgICAgICAgIFQoZFtjXSk7XG4gICAgICAgIH0gZWxzZSBZID0gISFkIHwgMDtcbiAgICB9XG5cbiAgICByZXR1cm4gVDtcbiAgfVxuXG4gIGZ1bmN0aW9uIFUoZCkge1xuICAgIGQgPSBkLnByZWZpeDtcbiAgICB2b2lkIDAgIT09IGQgJiYgKFIgPSBudWxsLCBkID8gJ2Z1bmN0aW9uJyAhPT0gdHlwZW9mIGQgPyB3ID0gMSA6ICh3ID0gMiwgUiA9IGQpIDogdyA9IDApO1xuICAgIHJldHVybiBVO1xuICB9XG5cbiAgZnVuY3Rpb24gQihkLCBjKSB7XG4gICAgdmFyIGUgPSBkO1xuICAgIDMzID4gZS5jaGFyQ29kZUF0KDApICYmIChlID0gZS50cmltKCkpO1xuICAgIFYgPSBlO1xuICAgIGUgPSBbVl07XG5cbiAgICBpZiAoMCA8IEEpIHtcbiAgICAgIHZhciBoID0gSCgtMSwgYywgZSwgZSwgRCwgeiwgMCwgMCwgMCwgMCk7XG4gICAgICB2b2lkIDAgIT09IGggJiYgJ3N0cmluZycgPT09IHR5cGVvZiBoICYmIChjID0gaCk7XG4gICAgfVxuXG4gICAgdmFyIGEgPSBNKE8sIGUsIGMsIDAsIDApO1xuICAgIDAgPCBBICYmIChoID0gSCgtMiwgYSwgZSwgZSwgRCwgeiwgYS5sZW5ndGgsIDAsIDAsIDApLCB2b2lkIDAgIT09IGggJiYgKGEgPSBoKSk7XG4gICAgViA9ICcnO1xuICAgIEUgPSAwO1xuICAgIHogPSBEID0gMTtcbiAgICByZXR1cm4gYTtcbiAgfVxuXG4gIHZhciBjYSA9IC9eXFwwKy9nLFxuICAgICAgTiA9IC9bXFwwXFxyXFxmXS9nLFxuICAgICAgYWEgPSAvOiAqL2csXG4gICAgICBrYSA9IC96b298Z3JhLyxcbiAgICAgIG1hID0gLyhbLDogXSkodHJhbnNmb3JtKS9nLFxuICAgICAgaWEgPSAvLFxccis/L2csXG4gICAgICBGID0gLyhbXFx0XFxyXFxuIF0pKlxcZj8mL2csXG4gICAgICBmYSA9IC9AKGtcXHcrKVxccyooXFxTKilcXHMqLyxcbiAgICAgIFEgPSAvOjoocGxhY2UpL2csXG4gICAgICBoYSA9IC86KHJlYWQtb25seSkvZyxcbiAgICAgIEcgPSAvW3N2aF1cXHcrLVt0YmxyXXsyfS8sXG4gICAgICBkYSA9IC9cXChcXHMqKC4qKVxccypcXCkvZyxcbiAgICAgIG9hID0gLyhbXFxzXFxTXSo/KTsvZyxcbiAgICAgIGJhID0gLy1zZWxmfGZsZXgtL2csXG4gICAgICBuYSA9IC9bXl0qPyg6W3JwXVtlbF1hW1xcdy1dKylbXl0qLyxcbiAgICAgIGxhID0gL3N0cmV0Y2h8OlxccypcXHcrXFwtKD86Y29udGV8YXZhaWwpLyxcbiAgICAgIGphID0gLyhbXi1dKShpbWFnZS1zZXRcXCgpLyxcbiAgICAgIHogPSAxLFxuICAgICAgRCA9IDEsXG4gICAgICBFID0gMCxcbiAgICAgIHcgPSAxLFxuICAgICAgTyA9IFtdLFxuICAgICAgUyA9IFtdLFxuICAgICAgQSA9IDAsXG4gICAgICBSID0gbnVsbCxcbiAgICAgIFkgPSAwLFxuICAgICAgViA9ICcnO1xuICBCLnVzZSA9IFQ7XG4gIEIuc2V0ID0gVTtcbiAgdm9pZCAwICE9PSBXICYmIFUoVyk7XG4gIHJldHVybiBCO1xufVxuXG5leHBvcnQgZGVmYXVsdCBzdHlsaXNfbWluO1xuIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///14\n")},function(module,__webpack_exports__,__webpack_require__){"use strict";eval('var unitlessKeys = {\n  animationIterationCount: 1,\n  borderImageOutset: 1,\n  borderImageSlice: 1,\n  borderImageWidth: 1,\n  boxFlex: 1,\n  boxFlexGroup: 1,\n  boxOrdinalGroup: 1,\n  columnCount: 1,\n  columns: 1,\n  flex: 1,\n  flexGrow: 1,\n  flexPositive: 1,\n  flexShrink: 1,\n  flexNegative: 1,\n  flexOrder: 1,\n  gridRow: 1,\n  gridRowEnd: 1,\n  gridRowSpan: 1,\n  gridRowStart: 1,\n  gridColumn: 1,\n  gridColumnEnd: 1,\n  gridColumnSpan: 1,\n  gridColumnStart: 1,\n  msGridRow: 1,\n  msGridRowSpan: 1,\n  msGridColumn: 1,\n  msGridColumnSpan: 1,\n  fontWeight: 1,\n  lineHeight: 1,\n  opacity: 1,\n  order: 1,\n  orphans: 1,\n  tabSize: 1,\n  widows: 1,\n  zIndex: 1,\n  zoom: 1,\n  WebkitLineClamp: 1,\n  // SVG-related properties\n  fillOpacity: 1,\n  floodOpacity: 1,\n  stopOpacity: 1,\n  strokeDasharray: 1,\n  strokeDashoffset: 1,\n  strokeMiterlimit: 1,\n  strokeOpacity: 1,\n  strokeWidth: 1\n};\n\n/* harmony default export */ __webpack_exports__["a"] = (unitlessKeys);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMTUuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9AOTFhcHAvbmluZXlpLmxpYi5zcGFya2NvcmUvLi9ub2RlX21vZHVsZXMvQGVtb3Rpb24vdW5pdGxlc3MvZGlzdC91bml0bGVzcy5icm93c2VyLmVzbS5qcz8zMDRlIl0sInNvdXJjZXNDb250ZW50IjpbInZhciB1bml0bGVzc0tleXMgPSB7XG4gIGFuaW1hdGlvbkl0ZXJhdGlvbkNvdW50OiAxLFxuICBib3JkZXJJbWFnZU91dHNldDogMSxcbiAgYm9yZGVySW1hZ2VTbGljZTogMSxcbiAgYm9yZGVySW1hZ2VXaWR0aDogMSxcbiAgYm94RmxleDogMSxcbiAgYm94RmxleEdyb3VwOiAxLFxuICBib3hPcmRpbmFsR3JvdXA6IDEsXG4gIGNvbHVtbkNvdW50OiAxLFxuICBjb2x1bW5zOiAxLFxuICBmbGV4OiAxLFxuICBmbGV4R3JvdzogMSxcbiAgZmxleFBvc2l0aXZlOiAxLFxuICBmbGV4U2hyaW5rOiAxLFxuICBmbGV4TmVnYXRpdmU6IDEsXG4gIGZsZXhPcmRlcjogMSxcbiAgZ3JpZFJvdzogMSxcbiAgZ3JpZFJvd0VuZDogMSxcbiAgZ3JpZFJvd1NwYW46IDEsXG4gIGdyaWRSb3dTdGFydDogMSxcbiAgZ3JpZENvbHVtbjogMSxcbiAgZ3JpZENvbHVtbkVuZDogMSxcbiAgZ3JpZENvbHVtblNwYW46IDEsXG4gIGdyaWRDb2x1bW5TdGFydDogMSxcbiAgbXNHcmlkUm93OiAxLFxuICBtc0dyaWRSb3dTcGFuOiAxLFxuICBtc0dyaWRDb2x1bW46IDEsXG4gIG1zR3JpZENvbHVtblNwYW46IDEsXG4gIGZvbnRXZWlnaHQ6IDEsXG4gIGxpbmVIZWlnaHQ6IDEsXG4gIG9wYWNpdHk6IDEsXG4gIG9yZGVyOiAxLFxuICBvcnBoYW5zOiAxLFxuICB0YWJTaXplOiAxLFxuICB3aWRvd3M6IDEsXG4gIHpJbmRleDogMSxcbiAgem9vbTogMSxcbiAgV2Via2l0TGluZUNsYW1wOiAxLFxuICAvLyBTVkctcmVsYXRlZCBwcm9wZXJ0aWVzXG4gIGZpbGxPcGFjaXR5OiAxLFxuICBmbG9vZE9wYWNpdHk6IDEsXG4gIHN0b3BPcGFjaXR5OiAxLFxuICBzdHJva2VEYXNoYXJyYXk6IDEsXG4gIHN0cm9rZURhc2hvZmZzZXQ6IDEsXG4gIHN0cm9rZU1pdGVybGltaXQ6IDEsXG4gIHN0cm9rZU9wYWNpdHk6IDEsXG4gIHN0cm9rZVdpZHRoOiAxXG59O1xuXG5leHBvcnQgZGVmYXVsdCB1bml0bGVzc0tleXM7XG4iXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///15\n')},function(module,exports,__webpack_require__){eval("var rng = __webpack_require__(31);\nvar bytesToUuid = __webpack_require__(32);\n\nfunction v4(options, buf, offset) {\n  var i = buf && offset || 0;\n\n  if (typeof(options) == 'string') {\n    buf = options === 'binary' ? new Array(16) : null;\n    options = null;\n  }\n  options = options || {};\n\n  var rnds = options.random || (options.rng || rng)();\n\n  // Per 4.4, set bits for version and `clock_seq_hi_and_reserved`\n  rnds[6] = (rnds[6] & 0x0f) | 0x40;\n  rnds[8] = (rnds[8] & 0x3f) | 0x80;\n\n  // Copy bytes to buffer, if provided\n  if (buf) {\n    for (var ii = 0; ii < 16; ++ii) {\n      buf[i + ii] = rnds[ii];\n    }\n  }\n\n  return buf || bytesToUuid(rnds);\n}\n\nmodule.exports = v4;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMTYuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9AOTFhcHAvbmluZXlpLmxpYi5zcGFya2NvcmUvLi9ub2RlX21vZHVsZXMvdXVpZC92NC5qcz9jNjRlIl0sInNvdXJjZXNDb250ZW50IjpbInZhciBybmcgPSByZXF1aXJlKCcuL2xpYi9ybmcnKTtcbnZhciBieXRlc1RvVXVpZCA9IHJlcXVpcmUoJy4vbGliL2J5dGVzVG9VdWlkJyk7XG5cbmZ1bmN0aW9uIHY0KG9wdGlvbnMsIGJ1Ziwgb2Zmc2V0KSB7XG4gIHZhciBpID0gYnVmICYmIG9mZnNldCB8fCAwO1xuXG4gIGlmICh0eXBlb2Yob3B0aW9ucykgPT0gJ3N0cmluZycpIHtcbiAgICBidWYgPSBvcHRpb25zID09PSAnYmluYXJ5JyA/IG5ldyBBcnJheSgxNikgOiBudWxsO1xuICAgIG9wdGlvbnMgPSBudWxsO1xuICB9XG4gIG9wdGlvbnMgPSBvcHRpb25zIHx8IHt9O1xuXG4gIHZhciBybmRzID0gb3B0aW9ucy5yYW5kb20gfHwgKG9wdGlvbnMucm5nIHx8IHJuZykoKTtcblxuICAvLyBQZXIgNC40LCBzZXQgYml0cyBmb3IgdmVyc2lvbiBhbmQgYGNsb2NrX3NlcV9oaV9hbmRfcmVzZXJ2ZWRgXG4gIHJuZHNbNl0gPSAocm5kc1s2XSAmIDB4MGYpIHwgMHg0MDtcbiAgcm5kc1s4XSA9IChybmRzWzhdICYgMHgzZikgfCAweDgwO1xuXG4gIC8vIENvcHkgYnl0ZXMgdG8gYnVmZmVyLCBpZiBwcm92aWRlZFxuICBpZiAoYnVmKSB7XG4gICAgZm9yICh2YXIgaWkgPSAwOyBpaSA8IDE2OyArK2lpKSB7XG4gICAgICBidWZbaSArIGlpXSA9IHJuZHNbaWldO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiBidWYgfHwgYnl0ZXNUb1V1aWQocm5kcyk7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gdjQ7XG4iXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///16\n")},function(module,exports){eval('var g;\n\n// This works in non-strict mode\ng = (function() {\n\treturn this;\n})();\n\ntry {\n\t// This works if eval is allowed (see CSP)\n\tg = g || new Function("return this")();\n} catch (e) {\n\t// This works if the window reference is available\n\tif (typeof window === "object") g = window;\n}\n\n// g can still be undefined, but nothing to do about it...\n// We return undefined, instead of nothing here, so it\'s\n// easier to handle this case. if(!global) { ...}\n\nmodule.exports = g;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMTcuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9AOTFhcHAvbmluZXlpLmxpYi5zcGFya2NvcmUvKHdlYnBhY2spL2J1aWxkaW4vZ2xvYmFsLmpzP2NkMDAiXSwic291cmNlc0NvbnRlbnQiOlsidmFyIGc7XG5cbi8vIFRoaXMgd29ya3MgaW4gbm9uLXN0cmljdCBtb2RlXG5nID0gKGZ1bmN0aW9uKCkge1xuXHRyZXR1cm4gdGhpcztcbn0pKCk7XG5cbnRyeSB7XG5cdC8vIFRoaXMgd29ya3MgaWYgZXZhbCBpcyBhbGxvd2VkIChzZWUgQ1NQKVxuXHRnID0gZyB8fCBuZXcgRnVuY3Rpb24oXCJyZXR1cm4gdGhpc1wiKSgpO1xufSBjYXRjaCAoZSkge1xuXHQvLyBUaGlzIHdvcmtzIGlmIHRoZSB3aW5kb3cgcmVmZXJlbmNlIGlzIGF2YWlsYWJsZVxuXHRpZiAodHlwZW9mIHdpbmRvdyA9PT0gXCJvYmplY3RcIikgZyA9IHdpbmRvdztcbn1cblxuLy8gZyBjYW4gc3RpbGwgYmUgdW5kZWZpbmVkLCBidXQgbm90aGluZyB0byBkbyBhYm91dCBpdC4uLlxuLy8gV2UgcmV0dXJuIHVuZGVmaW5lZCwgaW5zdGVhZCBvZiBub3RoaW5nIGhlcmUsIHNvIGl0J3Ncbi8vIGVhc2llciB0byBoYW5kbGUgdGhpcyBjYXNlLiBpZighZ2xvYmFsKSB7IC4uLn1cblxubW9kdWxlLmV4cG9ydHMgPSBnO1xuIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///17\n')},function(module,exports){eval('module.exports = function(module) {\n\tif (!module.webpackPolyfill) {\n\t\tmodule.deprecate = function() {};\n\t\tmodule.paths = [];\n\t\t// module.parent = undefined by default\n\t\tif (!module.children) module.children = [];\n\t\tObject.defineProperty(module, "loaded", {\n\t\t\tenumerable: true,\n\t\t\tget: function() {\n\t\t\t\treturn module.l;\n\t\t\t}\n\t\t});\n\t\tObject.defineProperty(module, "id", {\n\t\t\tenumerable: true,\n\t\t\tget: function() {\n\t\t\t\treturn module.i;\n\t\t\t}\n\t\t});\n\t\tmodule.webpackPolyfill = 1;\n\t}\n\treturn module;\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMTguanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9AOTFhcHAvbmluZXlpLmxpYi5zcGFya2NvcmUvKHdlYnBhY2spL2J1aWxkaW4vbW9kdWxlLmpzP2NlZDIiXSwic291cmNlc0NvbnRlbnQiOlsibW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbihtb2R1bGUpIHtcblx0aWYgKCFtb2R1bGUud2VicGFja1BvbHlmaWxsKSB7XG5cdFx0bW9kdWxlLmRlcHJlY2F0ZSA9IGZ1bmN0aW9uKCkge307XG5cdFx0bW9kdWxlLnBhdGhzID0gW107XG5cdFx0Ly8gbW9kdWxlLnBhcmVudCA9IHVuZGVmaW5lZCBieSBkZWZhdWx0XG5cdFx0aWYgKCFtb2R1bGUuY2hpbGRyZW4pIG1vZHVsZS5jaGlsZHJlbiA9IFtdO1xuXHRcdE9iamVjdC5kZWZpbmVQcm9wZXJ0eShtb2R1bGUsIFwibG9hZGVkXCIsIHtcblx0XHRcdGVudW1lcmFibGU6IHRydWUsXG5cdFx0XHRnZXQ6IGZ1bmN0aW9uKCkge1xuXHRcdFx0XHRyZXR1cm4gbW9kdWxlLmw7XG5cdFx0XHR9XG5cdFx0fSk7XG5cdFx0T2JqZWN0LmRlZmluZVByb3BlcnR5KG1vZHVsZSwgXCJpZFwiLCB7XG5cdFx0XHRlbnVtZXJhYmxlOiB0cnVlLFxuXHRcdFx0Z2V0OiBmdW5jdGlvbigpIHtcblx0XHRcdFx0cmV0dXJuIG1vZHVsZS5pO1xuXHRcdFx0fVxuXHRcdH0pO1xuXHRcdG1vZHVsZS53ZWJwYWNrUG9seWZpbGwgPSAxO1xuXHR9XG5cdHJldHVybiBtb2R1bGU7XG59O1xuIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///18\n')},function(module,exports,__webpack_require__){eval("// extracted by mini-css-extract-plugin//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMTkuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9AOTFhcHAvbmluZXlpLmxpYi5zcGFya2NvcmUvLi9zcmMvY29tcG9uZW50cy9sb2FkaW5nL2xvYWRpbmcuc2Nzcz9mZmZmIl0sInNvdXJjZXNDb250ZW50IjpbIi8vIGV4dHJhY3RlZCBieSBtaW5pLWNzcy1leHRyYWN0LXBsdWdpbiJdLCJtYXBwaW5ncyI6IkFBQUEiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///19\n")},function(module,exports,__webpack_require__){eval("// extracted by mini-css-extract-plugin//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMjAuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9AOTFhcHAvbmluZXlpLmxpYi5zcGFya2NvcmUvLi9zcmMvY29tcG9uZW50cy90b2FzdC90b2FzdC5zY3NzPzA3ZjYiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gZXh0cmFjdGVkIGJ5IG1pbmktY3NzLWV4dHJhY3QtcGx1Z2luIl0sIm1hcHBpbmdzIjoiQUFBQSIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///20\n")},function(module,exports){eval("// shim for using process in browser\nvar process = module.exports = {};\n\n// cached from whatever global is present so that test runners that stub it\n// don't break things.  But we need to wrap it in a try catch in case it is\n// wrapped in strict mode code which doesn't define any globals.  It's inside a\n// function because try/catches deoptimize in certain engines.\n\nvar cachedSetTimeout;\nvar cachedClearTimeout;\n\nfunction defaultSetTimout() {\n    throw new Error('setTimeout has not been defined');\n}\nfunction defaultClearTimeout () {\n    throw new Error('clearTimeout has not been defined');\n}\n(function () {\n    try {\n        if (typeof setTimeout === 'function') {\n            cachedSetTimeout = setTimeout;\n        } else {\n            cachedSetTimeout = defaultSetTimout;\n        }\n    } catch (e) {\n        cachedSetTimeout = defaultSetTimout;\n    }\n    try {\n        if (typeof clearTimeout === 'function') {\n            cachedClearTimeout = clearTimeout;\n        } else {\n            cachedClearTimeout = defaultClearTimeout;\n        }\n    } catch (e) {\n        cachedClearTimeout = defaultClearTimeout;\n    }\n} ())\nfunction runTimeout(fun) {\n    if (cachedSetTimeout === setTimeout) {\n        //normal enviroments in sane situations\n        return setTimeout(fun, 0);\n    }\n    // if setTimeout wasn't available but was latter defined\n    if ((cachedSetTimeout === defaultSetTimout || !cachedSetTimeout) && setTimeout) {\n        cachedSetTimeout = setTimeout;\n        return setTimeout(fun, 0);\n    }\n    try {\n        // when when somebody has screwed with setTimeout but no I.E. maddness\n        return cachedSetTimeout(fun, 0);\n    } catch(e){\n        try {\n            // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally\n            return cachedSetTimeout.call(null, fun, 0);\n        } catch(e){\n            // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error\n            return cachedSetTimeout.call(this, fun, 0);\n        }\n    }\n\n\n}\nfunction runClearTimeout(marker) {\n    if (cachedClearTimeout === clearTimeout) {\n        //normal enviroments in sane situations\n        return clearTimeout(marker);\n    }\n    // if clearTimeout wasn't available but was latter defined\n    if ((cachedClearTimeout === defaultClearTimeout || !cachedClearTimeout) && clearTimeout) {\n        cachedClearTimeout = clearTimeout;\n        return clearTimeout(marker);\n    }\n    try {\n        // when when somebody has screwed with setTimeout but no I.E. maddness\n        return cachedClearTimeout(marker);\n    } catch (e){\n        try {\n            // When we are in I.E. but the script has been evaled so I.E. doesn't  trust the global object when called normally\n            return cachedClearTimeout.call(null, marker);\n        } catch (e){\n            // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error.\n            // Some versions of I.E. have different rules for clearTimeout vs setTimeout\n            return cachedClearTimeout.call(this, marker);\n        }\n    }\n\n\n\n}\nvar queue = [];\nvar draining = false;\nvar currentQueue;\nvar queueIndex = -1;\n\nfunction cleanUpNextTick() {\n    if (!draining || !currentQueue) {\n        return;\n    }\n    draining = false;\n    if (currentQueue.length) {\n        queue = currentQueue.concat(queue);\n    } else {\n        queueIndex = -1;\n    }\n    if (queue.length) {\n        drainQueue();\n    }\n}\n\nfunction drainQueue() {\n    if (draining) {\n        return;\n    }\n    var timeout = runTimeout(cleanUpNextTick);\n    draining = true;\n\n    var len = queue.length;\n    while(len) {\n        currentQueue = queue;\n        queue = [];\n        while (++queueIndex < len) {\n            if (currentQueue) {\n                currentQueue[queueIndex].run();\n            }\n        }\n        queueIndex = -1;\n        len = queue.length;\n    }\n    currentQueue = null;\n    draining = false;\n    runClearTimeout(timeout);\n}\n\nprocess.nextTick = function (fun) {\n    var args = new Array(arguments.length - 1);\n    if (arguments.length > 1) {\n        for (var i = 1; i < arguments.length; i++) {\n            args[i - 1] = arguments[i];\n        }\n    }\n    queue.push(new Item(fun, args));\n    if (queue.length === 1 && !draining) {\n        runTimeout(drainQueue);\n    }\n};\n\n// v8 likes predictible objects\nfunction Item(fun, array) {\n    this.fun = fun;\n    this.array = array;\n}\nItem.prototype.run = function () {\n    this.fun.apply(null, this.array);\n};\nprocess.title = 'browser';\nprocess.browser = true;\nprocess.env = {};\nprocess.argv = [];\nprocess.version = ''; // empty string to avoid regexp issues\nprocess.versions = {};\n\nfunction noop() {}\n\nprocess.on = noop;\nprocess.addListener = noop;\nprocess.once = noop;\nprocess.off = noop;\nprocess.removeListener = noop;\nprocess.removeAllListeners = noop;\nprocess.emit = noop;\nprocess.prependListener = noop;\nprocess.prependOnceListener = noop;\n\nprocess.listeners = function (name) { return [] }\n\nprocess.binding = function (name) {\n    throw new Error('process.binding is not supported');\n};\n\nprocess.cwd = function () { return '/' };\nprocess.chdir = function (dir) {\n    throw new Error('process.chdir is not supported');\n};\nprocess.umask = function() { return 0; };\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMjEuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9AOTFhcHAvbmluZXlpLmxpYi5zcGFya2NvcmUvLi9ub2RlX21vZHVsZXMvcHJvY2Vzcy9icm93c2VyLmpzP2YyOGMiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gc2hpbSBmb3IgdXNpbmcgcHJvY2VzcyBpbiBicm93c2VyXG52YXIgcHJvY2VzcyA9IG1vZHVsZS5leHBvcnRzID0ge307XG5cbi8vIGNhY2hlZCBmcm9tIHdoYXRldmVyIGdsb2JhbCBpcyBwcmVzZW50IHNvIHRoYXQgdGVzdCBydW5uZXJzIHRoYXQgc3R1YiBpdFxuLy8gZG9uJ3QgYnJlYWsgdGhpbmdzLiAgQnV0IHdlIG5lZWQgdG8gd3JhcCBpdCBpbiBhIHRyeSBjYXRjaCBpbiBjYXNlIGl0IGlzXG4vLyB3cmFwcGVkIGluIHN0cmljdCBtb2RlIGNvZGUgd2hpY2ggZG9lc24ndCBkZWZpbmUgYW55IGdsb2JhbHMuICBJdCdzIGluc2lkZSBhXG4vLyBmdW5jdGlvbiBiZWNhdXNlIHRyeS9jYXRjaGVzIGRlb3B0aW1pemUgaW4gY2VydGFpbiBlbmdpbmVzLlxuXG52YXIgY2FjaGVkU2V0VGltZW91dDtcbnZhciBjYWNoZWRDbGVhclRpbWVvdXQ7XG5cbmZ1bmN0aW9uIGRlZmF1bHRTZXRUaW1vdXQoKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdzZXRUaW1lb3V0IGhhcyBub3QgYmVlbiBkZWZpbmVkJyk7XG59XG5mdW5jdGlvbiBkZWZhdWx0Q2xlYXJUaW1lb3V0ICgpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ2NsZWFyVGltZW91dCBoYXMgbm90IGJlZW4gZGVmaW5lZCcpO1xufVxuKGZ1bmN0aW9uICgpIHtcbiAgICB0cnkge1xuICAgICAgICBpZiAodHlwZW9mIHNldFRpbWVvdXQgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgICAgIGNhY2hlZFNldFRpbWVvdXQgPSBzZXRUaW1lb3V0O1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgY2FjaGVkU2V0VGltZW91dCA9IGRlZmF1bHRTZXRUaW1vdXQ7XG4gICAgICAgIH1cbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgIGNhY2hlZFNldFRpbWVvdXQgPSBkZWZhdWx0U2V0VGltb3V0O1xuICAgIH1cbiAgICB0cnkge1xuICAgICAgICBpZiAodHlwZW9mIGNsZWFyVGltZW91dCA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICAgICAgY2FjaGVkQ2xlYXJUaW1lb3V0ID0gY2xlYXJUaW1lb3V0O1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgY2FjaGVkQ2xlYXJUaW1lb3V0ID0gZGVmYXVsdENsZWFyVGltZW91dDtcbiAgICAgICAgfVxuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgY2FjaGVkQ2xlYXJUaW1lb3V0ID0gZGVmYXVsdENsZWFyVGltZW91dDtcbiAgICB9XG59ICgpKVxuZnVuY3Rpb24gcnVuVGltZW91dChmdW4pIHtcbiAgICBpZiAoY2FjaGVkU2V0VGltZW91dCA9PT0gc2V0VGltZW91dCkge1xuICAgICAgICAvL25vcm1hbCBlbnZpcm9tZW50cyBpbiBzYW5lIHNpdHVhdGlvbnNcbiAgICAgICAgcmV0dXJuIHNldFRpbWVvdXQoZnVuLCAwKTtcbiAgICB9XG4gICAgLy8gaWYgc2V0VGltZW91dCB3YXNuJ3QgYXZhaWxhYmxlIGJ1dCB3YXMgbGF0dGVyIGRlZmluZWRcbiAgICBpZiAoKGNhY2hlZFNldFRpbWVvdXQgPT09IGRlZmF1bHRTZXRUaW1vdXQgfHwgIWNhY2hlZFNldFRpbWVvdXQpICYmIHNldFRpbWVvdXQpIHtcbiAgICAgICAgY2FjaGVkU2V0VGltZW91dCA9IHNldFRpbWVvdXQ7XG4gICAgICAgIHJldHVybiBzZXRUaW1lb3V0KGZ1biwgMCk7XG4gICAgfVxuICAgIHRyeSB7XG4gICAgICAgIC8vIHdoZW4gd2hlbiBzb21lYm9keSBoYXMgc2NyZXdlZCB3aXRoIHNldFRpbWVvdXQgYnV0IG5vIEkuRS4gbWFkZG5lc3NcbiAgICAgICAgcmV0dXJuIGNhY2hlZFNldFRpbWVvdXQoZnVuLCAwKTtcbiAgICB9IGNhdGNoKGUpe1xuICAgICAgICB0cnkge1xuICAgICAgICAgICAgLy8gV2hlbiB3ZSBhcmUgaW4gSS5FLiBidXQgdGhlIHNjcmlwdCBoYXMgYmVlbiBldmFsZWQgc28gSS5FLiBkb2Vzbid0IHRydXN0IHRoZSBnbG9iYWwgb2JqZWN0IHdoZW4gY2FsbGVkIG5vcm1hbGx5XG4gICAgICAgICAgICByZXR1cm4gY2FjaGVkU2V0VGltZW91dC5jYWxsKG51bGwsIGZ1biwgMCk7XG4gICAgICAgIH0gY2F0Y2goZSl7XG4gICAgICAgICAgICAvLyBzYW1lIGFzIGFib3ZlIGJ1dCB3aGVuIGl0J3MgYSB2ZXJzaW9uIG9mIEkuRS4gdGhhdCBtdXN0IGhhdmUgdGhlIGdsb2JhbCBvYmplY3QgZm9yICd0aGlzJywgaG9wZnVsbHkgb3VyIGNvbnRleHQgY29ycmVjdCBvdGhlcndpc2UgaXQgd2lsbCB0aHJvdyBhIGdsb2JhbCBlcnJvclxuICAgICAgICAgICAgcmV0dXJuIGNhY2hlZFNldFRpbWVvdXQuY2FsbCh0aGlzLCBmdW4sIDApO1xuICAgICAgICB9XG4gICAgfVxuXG5cbn1cbmZ1bmN0aW9uIHJ1bkNsZWFyVGltZW91dChtYXJrZXIpIHtcbiAgICBpZiAoY2FjaGVkQ2xlYXJUaW1lb3V0ID09PSBjbGVhclRpbWVvdXQpIHtcbiAgICAgICAgLy9ub3JtYWwgZW52aXJvbWVudHMgaW4gc2FuZSBzaXR1YXRpb25zXG4gICAgICAgIHJldHVybiBjbGVhclRpbWVvdXQobWFya2VyKTtcbiAgICB9XG4gICAgLy8gaWYgY2xlYXJUaW1lb3V0IHdhc24ndCBhdmFpbGFibGUgYnV0IHdhcyBsYXR0ZXIgZGVmaW5lZFxuICAgIGlmICgoY2FjaGVkQ2xlYXJUaW1lb3V0ID09PSBkZWZhdWx0Q2xlYXJUaW1lb3V0IHx8ICFjYWNoZWRDbGVhclRpbWVvdXQpICYmIGNsZWFyVGltZW91dCkge1xuICAgICAgICBjYWNoZWRDbGVhclRpbWVvdXQgPSBjbGVhclRpbWVvdXQ7XG4gICAgICAgIHJldHVybiBjbGVhclRpbWVvdXQobWFya2VyKTtcbiAgICB9XG4gICAgdHJ5IHtcbiAgICAgICAgLy8gd2hlbiB3aGVuIHNvbWVib2R5IGhhcyBzY3Jld2VkIHdpdGggc2V0VGltZW91dCBidXQgbm8gSS5FLiBtYWRkbmVzc1xuICAgICAgICByZXR1cm4gY2FjaGVkQ2xlYXJUaW1lb3V0KG1hcmtlcik7XG4gICAgfSBjYXRjaCAoZSl7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICAvLyBXaGVuIHdlIGFyZSBpbiBJLkUuIGJ1dCB0aGUgc2NyaXB0IGhhcyBiZWVuIGV2YWxlZCBzbyBJLkUuIGRvZXNuJ3QgIHRydXN0IHRoZSBnbG9iYWwgb2JqZWN0IHdoZW4gY2FsbGVkIG5vcm1hbGx5XG4gICAgICAgICAgICByZXR1cm4gY2FjaGVkQ2xlYXJUaW1lb3V0LmNhbGwobnVsbCwgbWFya2VyKTtcbiAgICAgICAgfSBjYXRjaCAoZSl7XG4gICAgICAgICAgICAvLyBzYW1lIGFzIGFib3ZlIGJ1dCB3aGVuIGl0J3MgYSB2ZXJzaW9uIG9mIEkuRS4gdGhhdCBtdXN0IGhhdmUgdGhlIGdsb2JhbCBvYmplY3QgZm9yICd0aGlzJywgaG9wZnVsbHkgb3VyIGNvbnRleHQgY29ycmVjdCBvdGhlcndpc2UgaXQgd2lsbCB0aHJvdyBhIGdsb2JhbCBlcnJvci5cbiAgICAgICAgICAgIC8vIFNvbWUgdmVyc2lvbnMgb2YgSS5FLiBoYXZlIGRpZmZlcmVudCBydWxlcyBmb3IgY2xlYXJUaW1lb3V0IHZzIHNldFRpbWVvdXRcbiAgICAgICAgICAgIHJldHVybiBjYWNoZWRDbGVhclRpbWVvdXQuY2FsbCh0aGlzLCBtYXJrZXIpO1xuICAgICAgICB9XG4gICAgfVxuXG5cblxufVxudmFyIHF1ZXVlID0gW107XG52YXIgZHJhaW5pbmcgPSBmYWxzZTtcbnZhciBjdXJyZW50UXVldWU7XG52YXIgcXVldWVJbmRleCA9IC0xO1xuXG5mdW5jdGlvbiBjbGVhblVwTmV4dFRpY2soKSB7XG4gICAgaWYgKCFkcmFpbmluZyB8fCAhY3VycmVudFF1ZXVlKSB7XG4gICAgICAgIHJldHVybjtcbiAgICB9XG4gICAgZHJhaW5pbmcgPSBmYWxzZTtcbiAgICBpZiAoY3VycmVudFF1ZXVlLmxlbmd0aCkge1xuICAgICAgICBxdWV1ZSA9IGN1cnJlbnRRdWV1ZS5jb25jYXQocXVldWUpO1xuICAgIH0gZWxzZSB7XG4gICAgICAgIHF1ZXVlSW5kZXggPSAtMTtcbiAgICB9XG4gICAgaWYgKHF1ZXVlLmxlbmd0aCkge1xuICAgICAgICBkcmFpblF1ZXVlKCk7XG4gICAgfVxufVxuXG5mdW5jdGlvbiBkcmFpblF1ZXVlKCkge1xuICAgIGlmIChkcmFpbmluZykge1xuICAgICAgICByZXR1cm47XG4gICAgfVxuICAgIHZhciB0aW1lb3V0ID0gcnVuVGltZW91dChjbGVhblVwTmV4dFRpY2spO1xuICAgIGRyYWluaW5nID0gdHJ1ZTtcblxuICAgIHZhciBsZW4gPSBxdWV1ZS5sZW5ndGg7XG4gICAgd2hpbGUobGVuKSB7XG4gICAgICAgIGN1cnJlbnRRdWV1ZSA9IHF1ZXVlO1xuICAgICAgICBxdWV1ZSA9IFtdO1xuICAgICAgICB3aGlsZSAoKytxdWV1ZUluZGV4IDwgbGVuKSB7XG4gICAgICAgICAgICBpZiAoY3VycmVudFF1ZXVlKSB7XG4gICAgICAgICAgICAgICAgY3VycmVudFF1ZXVlW3F1ZXVlSW5kZXhdLnJ1bigpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHF1ZXVlSW5kZXggPSAtMTtcbiAgICAgICAgbGVuID0gcXVldWUubGVuZ3RoO1xuICAgIH1cbiAgICBjdXJyZW50UXVldWUgPSBudWxsO1xuICAgIGRyYWluaW5nID0gZmFsc2U7XG4gICAgcnVuQ2xlYXJUaW1lb3V0KHRpbWVvdXQpO1xufVxuXG5wcm9jZXNzLm5leHRUaWNrID0gZnVuY3Rpb24gKGZ1bikge1xuICAgIHZhciBhcmdzID0gbmV3IEFycmF5KGFyZ3VtZW50cy5sZW5ndGggLSAxKTtcbiAgICBpZiAoYXJndW1lbnRzLmxlbmd0aCA+IDEpIHtcbiAgICAgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBhcmd1bWVudHMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgIGFyZ3NbaSAtIDFdID0gYXJndW1lbnRzW2ldO1xuICAgICAgICB9XG4gICAgfVxuICAgIHF1ZXVlLnB1c2gobmV3IEl0ZW0oZnVuLCBhcmdzKSk7XG4gICAgaWYgKHF1ZXVlLmxlbmd0aCA9PT0gMSAmJiAhZHJhaW5pbmcpIHtcbiAgICAgICAgcnVuVGltZW91dChkcmFpblF1ZXVlKTtcbiAgICB9XG59O1xuXG4vLyB2OCBsaWtlcyBwcmVkaWN0aWJsZSBvYmplY3RzXG5mdW5jdGlvbiBJdGVtKGZ1biwgYXJyYXkpIHtcbiAgICB0aGlzLmZ1biA9IGZ1bjtcbiAgICB0aGlzLmFycmF5ID0gYXJyYXk7XG59XG5JdGVtLnByb3RvdHlwZS5ydW4gPSBmdW5jdGlvbiAoKSB7XG4gICAgdGhpcy5mdW4uYXBwbHkobnVsbCwgdGhpcy5hcnJheSk7XG59O1xucHJvY2Vzcy50aXRsZSA9ICdicm93c2VyJztcbnByb2Nlc3MuYnJvd3NlciA9IHRydWU7XG5wcm9jZXNzLmVudiA9IHt9O1xucHJvY2Vzcy5hcmd2ID0gW107XG5wcm9jZXNzLnZlcnNpb24gPSAnJzsgLy8gZW1wdHkgc3RyaW5nIHRvIGF2b2lkIHJlZ2V4cCBpc3N1ZXNcbnByb2Nlc3MudmVyc2lvbnMgPSB7fTtcblxuZnVuY3Rpb24gbm9vcCgpIHt9XG5cbnByb2Nlc3Mub24gPSBub29wO1xucHJvY2Vzcy5hZGRMaXN0ZW5lciA9IG5vb3A7XG5wcm9jZXNzLm9uY2UgPSBub29wO1xucHJvY2Vzcy5vZmYgPSBub29wO1xucHJvY2Vzcy5yZW1vdmVMaXN0ZW5lciA9IG5vb3A7XG5wcm9jZXNzLnJlbW92ZUFsbExpc3RlbmVycyA9IG5vb3A7XG5wcm9jZXNzLmVtaXQgPSBub29wO1xucHJvY2Vzcy5wcmVwZW5kTGlzdGVuZXIgPSBub29wO1xucHJvY2Vzcy5wcmVwZW5kT25jZUxpc3RlbmVyID0gbm9vcDtcblxucHJvY2Vzcy5saXN0ZW5lcnMgPSBmdW5jdGlvbiAobmFtZSkgeyByZXR1cm4gW10gfVxuXG5wcm9jZXNzLmJpbmRpbmcgPSBmdW5jdGlvbiAobmFtZSkge1xuICAgIHRocm93IG5ldyBFcnJvcigncHJvY2Vzcy5iaW5kaW5nIGlzIG5vdCBzdXBwb3J0ZWQnKTtcbn07XG5cbnByb2Nlc3MuY3dkID0gZnVuY3Rpb24gKCkgeyByZXR1cm4gJy8nIH07XG5wcm9jZXNzLmNoZGlyID0gZnVuY3Rpb24gKGRpcikge1xuICAgIHRocm93IG5ldyBFcnJvcigncHJvY2Vzcy5jaGRpciBpcyBub3Qgc3VwcG9ydGVkJyk7XG59O1xucHJvY2Vzcy51bWFzayA9IGZ1bmN0aW9uKCkgeyByZXR1cm4gMDsgfTtcbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///21\n")},function(module,exports,__webpack_require__){"use strict";eval('/** @license React v16.13.1\n * react-is.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nvar b="function"===typeof Symbol&&Symbol.for,c=b?Symbol.for("react.element"):60103,d=b?Symbol.for("react.portal"):60106,e=b?Symbol.for("react.fragment"):60107,f=b?Symbol.for("react.strict_mode"):60108,g=b?Symbol.for("react.profiler"):60114,h=b?Symbol.for("react.provider"):60109,k=b?Symbol.for("react.context"):60110,l=b?Symbol.for("react.async_mode"):60111,m=b?Symbol.for("react.concurrent_mode"):60111,n=b?Symbol.for("react.forward_ref"):60112,p=b?Symbol.for("react.suspense"):60113,q=b?\nSymbol.for("react.suspense_list"):60120,r=b?Symbol.for("react.memo"):60115,t=b?Symbol.for("react.lazy"):60116,v=b?Symbol.for("react.block"):60121,w=b?Symbol.for("react.fundamental"):60117,x=b?Symbol.for("react.responder"):60118,y=b?Symbol.for("react.scope"):60119;\nfunction z(a){if("object"===typeof a&&null!==a){var u=a.$$typeof;switch(u){case c:switch(a=a.type,a){case l:case m:case e:case g:case f:case p:return a;default:switch(a=a&&a.$$typeof,a){case k:case n:case t:case r:case h:return a;default:return u}}case d:return u}}}function A(a){return z(a)===m}exports.AsyncMode=l;exports.ConcurrentMode=m;exports.ContextConsumer=k;exports.ContextProvider=h;exports.Element=c;exports.ForwardRef=n;exports.Fragment=e;exports.Lazy=t;exports.Memo=r;exports.Portal=d;\nexports.Profiler=g;exports.StrictMode=f;exports.Suspense=p;exports.isAsyncMode=function(a){return A(a)||z(a)===l};exports.isConcurrentMode=A;exports.isContextConsumer=function(a){return z(a)===k};exports.isContextProvider=function(a){return z(a)===h};exports.isElement=function(a){return"object"===typeof a&&null!==a&&a.$$typeof===c};exports.isForwardRef=function(a){return z(a)===n};exports.isFragment=function(a){return z(a)===e};exports.isLazy=function(a){return z(a)===t};\nexports.isMemo=function(a){return z(a)===r};exports.isPortal=function(a){return z(a)===d};exports.isProfiler=function(a){return z(a)===g};exports.isStrictMode=function(a){return z(a)===f};exports.isSuspense=function(a){return z(a)===p};\nexports.isValidElementType=function(a){return"string"===typeof a||"function"===typeof a||a===e||a===m||a===g||a===f||a===p||a===q||"object"===typeof a&&null!==a&&(a.$$typeof===t||a.$$typeof===r||a.$$typeof===h||a.$$typeof===k||a.$$typeof===n||a.$$typeof===w||a.$$typeof===x||a.$$typeof===y||a.$$typeof===v)};exports.typeOf=z;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMjIuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9AOTFhcHAvbmluZXlpLmxpYi5zcGFya2NvcmUvLi9ub2RlX21vZHVsZXMvcmVhY3QtaXMvY2pzL3JlYWN0LWlzLnByb2R1Y3Rpb24ubWluLmpzP2E5M2QiXSwic291cmNlc0NvbnRlbnQiOlsiLyoqIEBsaWNlbnNlIFJlYWN0IHYxNi4xMy4xXG4gKiByZWFjdC1pcy5wcm9kdWN0aW9uLm1pbi5qc1xuICpcbiAqIENvcHlyaWdodCAoYykgRmFjZWJvb2ssIEluYy4gYW5kIGl0cyBhZmZpbGlhdGVzLlxuICpcbiAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIE1JVCBsaWNlbnNlIGZvdW5kIGluIHRoZVxuICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLlxuICovXG5cbid1c2Ugc3RyaWN0Jzt2YXIgYj1cImZ1bmN0aW9uXCI9PT10eXBlb2YgU3ltYm9sJiZTeW1ib2wuZm9yLGM9Yj9TeW1ib2wuZm9yKFwicmVhY3QuZWxlbWVudFwiKTo2MDEwMyxkPWI/U3ltYm9sLmZvcihcInJlYWN0LnBvcnRhbFwiKTo2MDEwNixlPWI/U3ltYm9sLmZvcihcInJlYWN0LmZyYWdtZW50XCIpOjYwMTA3LGY9Yj9TeW1ib2wuZm9yKFwicmVhY3Quc3RyaWN0X21vZGVcIik6NjAxMDgsZz1iP1N5bWJvbC5mb3IoXCJyZWFjdC5wcm9maWxlclwiKTo2MDExNCxoPWI/U3ltYm9sLmZvcihcInJlYWN0LnByb3ZpZGVyXCIpOjYwMTA5LGs9Yj9TeW1ib2wuZm9yKFwicmVhY3QuY29udGV4dFwiKTo2MDExMCxsPWI/U3ltYm9sLmZvcihcInJlYWN0LmFzeW5jX21vZGVcIik6NjAxMTEsbT1iP1N5bWJvbC5mb3IoXCJyZWFjdC5jb25jdXJyZW50X21vZGVcIik6NjAxMTEsbj1iP1N5bWJvbC5mb3IoXCJyZWFjdC5mb3J3YXJkX3JlZlwiKTo2MDExMixwPWI/U3ltYm9sLmZvcihcInJlYWN0LnN1c3BlbnNlXCIpOjYwMTEzLHE9Yj9cblN5bWJvbC5mb3IoXCJyZWFjdC5zdXNwZW5zZV9saXN0XCIpOjYwMTIwLHI9Yj9TeW1ib2wuZm9yKFwicmVhY3QubWVtb1wiKTo2MDExNSx0PWI/U3ltYm9sLmZvcihcInJlYWN0LmxhenlcIik6NjAxMTYsdj1iP1N5bWJvbC5mb3IoXCJyZWFjdC5ibG9ja1wiKTo2MDEyMSx3PWI/U3ltYm9sLmZvcihcInJlYWN0LmZ1bmRhbWVudGFsXCIpOjYwMTE3LHg9Yj9TeW1ib2wuZm9yKFwicmVhY3QucmVzcG9uZGVyXCIpOjYwMTE4LHk9Yj9TeW1ib2wuZm9yKFwicmVhY3Quc2NvcGVcIik6NjAxMTk7XG5mdW5jdGlvbiB6KGEpe2lmKFwib2JqZWN0XCI9PT10eXBlb2YgYSYmbnVsbCE9PWEpe3ZhciB1PWEuJCR0eXBlb2Y7c3dpdGNoKHUpe2Nhc2UgYzpzd2l0Y2goYT1hLnR5cGUsYSl7Y2FzZSBsOmNhc2UgbTpjYXNlIGU6Y2FzZSBnOmNhc2UgZjpjYXNlIHA6cmV0dXJuIGE7ZGVmYXVsdDpzd2l0Y2goYT1hJiZhLiQkdHlwZW9mLGEpe2Nhc2UgazpjYXNlIG46Y2FzZSB0OmNhc2UgcjpjYXNlIGg6cmV0dXJuIGE7ZGVmYXVsdDpyZXR1cm4gdX19Y2FzZSBkOnJldHVybiB1fX19ZnVuY3Rpb24gQShhKXtyZXR1cm4geihhKT09PW19ZXhwb3J0cy5Bc3luY01vZGU9bDtleHBvcnRzLkNvbmN1cnJlbnRNb2RlPW07ZXhwb3J0cy5Db250ZXh0Q29uc3VtZXI9aztleHBvcnRzLkNvbnRleHRQcm92aWRlcj1oO2V4cG9ydHMuRWxlbWVudD1jO2V4cG9ydHMuRm9yd2FyZFJlZj1uO2V4cG9ydHMuRnJhZ21lbnQ9ZTtleHBvcnRzLkxhenk9dDtleHBvcnRzLk1lbW89cjtleHBvcnRzLlBvcnRhbD1kO1xuZXhwb3J0cy5Qcm9maWxlcj1nO2V4cG9ydHMuU3RyaWN0TW9kZT1mO2V4cG9ydHMuU3VzcGVuc2U9cDtleHBvcnRzLmlzQXN5bmNNb2RlPWZ1bmN0aW9uKGEpe3JldHVybiBBKGEpfHx6KGEpPT09bH07ZXhwb3J0cy5pc0NvbmN1cnJlbnRNb2RlPUE7ZXhwb3J0cy5pc0NvbnRleHRDb25zdW1lcj1mdW5jdGlvbihhKXtyZXR1cm4geihhKT09PWt9O2V4cG9ydHMuaXNDb250ZXh0UHJvdmlkZXI9ZnVuY3Rpb24oYSl7cmV0dXJuIHooYSk9PT1ofTtleHBvcnRzLmlzRWxlbWVudD1mdW5jdGlvbihhKXtyZXR1cm5cIm9iamVjdFwiPT09dHlwZW9mIGEmJm51bGwhPT1hJiZhLiQkdHlwZW9mPT09Y307ZXhwb3J0cy5pc0ZvcndhcmRSZWY9ZnVuY3Rpb24oYSl7cmV0dXJuIHooYSk9PT1ufTtleHBvcnRzLmlzRnJhZ21lbnQ9ZnVuY3Rpb24oYSl7cmV0dXJuIHooYSk9PT1lfTtleHBvcnRzLmlzTGF6eT1mdW5jdGlvbihhKXtyZXR1cm4geihhKT09PXR9O1xuZXhwb3J0cy5pc01lbW89ZnVuY3Rpb24oYSl7cmV0dXJuIHooYSk9PT1yfTtleHBvcnRzLmlzUG9ydGFsPWZ1bmN0aW9uKGEpe3JldHVybiB6KGEpPT09ZH07ZXhwb3J0cy5pc1Byb2ZpbGVyPWZ1bmN0aW9uKGEpe3JldHVybiB6KGEpPT09Z307ZXhwb3J0cy5pc1N0cmljdE1vZGU9ZnVuY3Rpb24oYSl7cmV0dXJuIHooYSk9PT1mfTtleHBvcnRzLmlzU3VzcGVuc2U9ZnVuY3Rpb24oYSl7cmV0dXJuIHooYSk9PT1wfTtcbmV4cG9ydHMuaXNWYWxpZEVsZW1lbnRUeXBlPWZ1bmN0aW9uKGEpe3JldHVyblwic3RyaW5nXCI9PT10eXBlb2YgYXx8XCJmdW5jdGlvblwiPT09dHlwZW9mIGF8fGE9PT1lfHxhPT09bXx8YT09PWd8fGE9PT1mfHxhPT09cHx8YT09PXF8fFwib2JqZWN0XCI9PT10eXBlb2YgYSYmbnVsbCE9PWEmJihhLiQkdHlwZW9mPT09dHx8YS4kJHR5cGVvZj09PXJ8fGEuJCR0eXBlb2Y9PT1ofHxhLiQkdHlwZW9mPT09a3x8YS4kJHR5cGVvZj09PW58fGEuJCR0eXBlb2Y9PT13fHxhLiQkdHlwZW9mPT09eHx8YS4kJHR5cGVvZj09PXl8fGEuJCR0eXBlb2Y9PT12KX07ZXhwb3J0cy50eXBlT2Y9ejtcbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///22\n')},function(module){eval('module.exports = JSON.parse("{\\"100\\":\\"Continue\\",\\"101\\":\\"Switching Protocols\\",\\"102\\":\\"Processing\\",\\"103\\":\\"Early Hints\\",\\"200\\":\\"OK\\",\\"201\\":\\"Created\\",\\"202\\":\\"Accepted\\",\\"203\\":\\"Non-Authoritative Information\\",\\"204\\":\\"No Content\\",\\"205\\":\\"Reset Content\\",\\"206\\":\\"Partial Content\\",\\"207\\":\\"Multi-Status\\",\\"208\\":\\"Already Reported\\",\\"226\\":\\"IM Used\\",\\"300\\":\\"Multiple Choices\\",\\"301\\":\\"Moved Permanently\\",\\"302\\":\\"Found\\",\\"303\\":\\"See Other\\",\\"304\\":\\"Not Modified\\",\\"305\\":\\"Use Proxy\\",\\"306\\":\\"(Unused)\\",\\"307\\":\\"Temporary Redirect\\",\\"308\\":\\"Permanent Redirect\\",\\"400\\":\\"Bad Request\\",\\"401\\":\\"Unauthorized\\",\\"402\\":\\"Payment Required\\",\\"403\\":\\"Forbidden\\",\\"404\\":\\"Not Found\\",\\"405\\":\\"Method Not Allowed\\",\\"406\\":\\"Not Acceptable\\",\\"407\\":\\"Proxy Authentication Required\\",\\"408\\":\\"Request Timeout\\",\\"409\\":\\"Conflict\\",\\"410\\":\\"Gone\\",\\"411\\":\\"Length Required\\",\\"412\\":\\"Precondition Failed\\",\\"413\\":\\"Payload Too Large\\",\\"414\\":\\"URI Too Long\\",\\"415\\":\\"Unsupported Media Type\\",\\"416\\":\\"Range Not Satisfiable\\",\\"417\\":\\"Expectation Failed\\",\\"418\\":\\"I\'m a teapot\\",\\"421\\":\\"Misdirected Request\\",\\"422\\":\\"Unprocessable Entity\\",\\"423\\":\\"Locked\\",\\"424\\":\\"Failed Dependency\\",\\"425\\":\\"Unordered Collection\\",\\"426\\":\\"Upgrade Required\\",\\"428\\":\\"Precondition Required\\",\\"429\\":\\"Too Many Requests\\",\\"431\\":\\"Request Header Fields Too Large\\",\\"451\\":\\"Unavailable For Legal Reasons\\",\\"500\\":\\"Internal Server Error\\",\\"501\\":\\"Not Implemented\\",\\"502\\":\\"Bad Gateway\\",\\"503\\":\\"Service Unavailable\\",\\"504\\":\\"Gateway Timeout\\",\\"505\\":\\"HTTP Version Not Supported\\",\\"506\\":\\"Variant Also Negotiates\\",\\"507\\":\\"Insufficient Storage\\",\\"508\\":\\"Loop Detected\\",\\"509\\":\\"Bandwidth Limit Exceeded\\",\\"510\\":\\"Not Extended\\",\\"511\\":\\"Network Authentication Required\\"}");//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMjMuanMiLCJzb3VyY2VzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///23\n')},function(module,exports,__webpack_require__){eval("\r\n/**\r\n * Expose `Emitter`.\r\n */\r\n\r\nif (true) {\r\n  module.exports = Emitter;\r\n}\r\n\r\n/**\r\n * Initialize a new `Emitter`.\r\n *\r\n * @api public\r\n */\r\n\r\nfunction Emitter(obj) {\r\n  if (obj) return mixin(obj);\r\n};\r\n\r\n/**\r\n * Mixin the emitter properties.\r\n *\r\n * @param {Object} obj\r\n * @return {Object}\r\n * @api private\r\n */\r\n\r\nfunction mixin(obj) {\r\n  for (var key in Emitter.prototype) {\r\n    obj[key] = Emitter.prototype[key];\r\n  }\r\n  return obj;\r\n}\r\n\r\n/**\r\n * Listen on the given `event` with `fn`.\r\n *\r\n * @param {String} event\r\n * @param {Function} fn\r\n * @return {Emitter}\r\n * @api public\r\n */\r\n\r\nEmitter.prototype.on =\r\nEmitter.prototype.addEventListener = function(event, fn){\r\n  this._callbacks = this._callbacks || {};\r\n  (this._callbacks['$' + event] = this._callbacks['$' + event] || [])\r\n    .push(fn);\r\n  return this;\r\n};\r\n\r\n/**\r\n * Adds an `event` listener that will be invoked a single\r\n * time then automatically removed.\r\n *\r\n * @param {String} event\r\n * @param {Function} fn\r\n * @return {Emitter}\r\n * @api public\r\n */\r\n\r\nEmitter.prototype.once = function(event, fn){\r\n  function on() {\r\n    this.off(event, on);\r\n    fn.apply(this, arguments);\r\n  }\r\n\r\n  on.fn = fn;\r\n  this.on(event, on);\r\n  return this;\r\n};\r\n\r\n/**\r\n * Remove the given callback for `event` or all\r\n * registered callbacks.\r\n *\r\n * @param {String} event\r\n * @param {Function} fn\r\n * @return {Emitter}\r\n * @api public\r\n */\r\n\r\nEmitter.prototype.off =\r\nEmitter.prototype.removeListener =\r\nEmitter.prototype.removeAllListeners =\r\nEmitter.prototype.removeEventListener = function(event, fn){\r\n  this._callbacks = this._callbacks || {};\r\n\r\n  // all\r\n  if (0 == arguments.length) {\r\n    this._callbacks = {};\r\n    return this;\r\n  }\r\n\r\n  // specific event\r\n  var callbacks = this._callbacks['$' + event];\r\n  if (!callbacks) return this;\r\n\r\n  // remove all handlers\r\n  if (1 == arguments.length) {\r\n    delete this._callbacks['$' + event];\r\n    return this;\r\n  }\r\n\r\n  // remove specific handler\r\n  var cb;\r\n  for (var i = 0; i < callbacks.length; i++) {\r\n    cb = callbacks[i];\r\n    if (cb === fn || cb.fn === fn) {\r\n      callbacks.splice(i, 1);\r\n      break;\r\n    }\r\n  }\r\n\r\n  // Remove event specific arrays for event types that no\r\n  // one is subscribed for to avoid memory leak.\r\n  if (callbacks.length === 0) {\r\n    delete this._callbacks['$' + event];\r\n  }\r\n\r\n  return this;\r\n};\r\n\r\n/**\r\n * Emit `event` with the given args.\r\n *\r\n * @param {String} event\r\n * @param {Mixed} ...\r\n * @return {Emitter}\r\n */\r\n\r\nEmitter.prototype.emit = function(event){\r\n  this._callbacks = this._callbacks || {};\r\n\r\n  var args = new Array(arguments.length - 1)\r\n    , callbacks = this._callbacks['$' + event];\r\n\r\n  for (var i = 1; i < arguments.length; i++) {\r\n    args[i - 1] = arguments[i];\r\n  }\r\n\r\n  if (callbacks) {\r\n    callbacks = callbacks.slice(0);\r\n    for (var i = 0, len = callbacks.length; i < len; ++i) {\r\n      callbacks[i].apply(this, args);\r\n    }\r\n  }\r\n\r\n  return this;\r\n};\r\n\r\n/**\r\n * Return array of callbacks for `event`.\r\n *\r\n * @param {String} event\r\n * @return {Array}\r\n * @api public\r\n */\r\n\r\nEmitter.prototype.listeners = function(event){\r\n  this._callbacks = this._callbacks || {};\r\n  return this._callbacks['$' + event] || [];\r\n};\r\n\r\n/**\r\n * Check if this emitter has `event` handlers.\r\n *\r\n * @param {String} event\r\n * @return {Boolean}\r\n * @api public\r\n */\r\n\r\nEmitter.prototype.hasListeners = function(event){\r\n  return !! this.listeners(event).length;\r\n};\r\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMjQuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9AOTFhcHAvbmluZXlpLmxpYi5zcGFya2NvcmUvLi9ub2RlX21vZHVsZXMvY29tcG9uZW50LWVtaXR0ZXIvaW5kZXguanM/NzI5NyJdLCJzb3VyY2VzQ29udGVudCI6WyJcclxuLyoqXHJcbiAqIEV4cG9zZSBgRW1pdHRlcmAuXHJcbiAqL1xyXG5cclxuaWYgKHR5cGVvZiBtb2R1bGUgIT09ICd1bmRlZmluZWQnKSB7XHJcbiAgbW9kdWxlLmV4cG9ydHMgPSBFbWl0dGVyO1xyXG59XHJcblxyXG4vKipcclxuICogSW5pdGlhbGl6ZSBhIG5ldyBgRW1pdHRlcmAuXHJcbiAqXHJcbiAqIEBhcGkgcHVibGljXHJcbiAqL1xyXG5cclxuZnVuY3Rpb24gRW1pdHRlcihvYmopIHtcclxuICBpZiAob2JqKSByZXR1cm4gbWl4aW4ob2JqKTtcclxufTtcclxuXHJcbi8qKlxyXG4gKiBNaXhpbiB0aGUgZW1pdHRlciBwcm9wZXJ0aWVzLlxyXG4gKlxyXG4gKiBAcGFyYW0ge09iamVjdH0gb2JqXHJcbiAqIEByZXR1cm4ge09iamVjdH1cclxuICogQGFwaSBwcml2YXRlXHJcbiAqL1xyXG5cclxuZnVuY3Rpb24gbWl4aW4ob2JqKSB7XHJcbiAgZm9yICh2YXIga2V5IGluIEVtaXR0ZXIucHJvdG90eXBlKSB7XHJcbiAgICBvYmpba2V5XSA9IEVtaXR0ZXIucHJvdG90eXBlW2tleV07XHJcbiAgfVxyXG4gIHJldHVybiBvYmo7XHJcbn1cclxuXHJcbi8qKlxyXG4gKiBMaXN0ZW4gb24gdGhlIGdpdmVuIGBldmVudGAgd2l0aCBgZm5gLlxyXG4gKlxyXG4gKiBAcGFyYW0ge1N0cmluZ30gZXZlbnRcclxuICogQHBhcmFtIHtGdW5jdGlvbn0gZm5cclxuICogQHJldHVybiB7RW1pdHRlcn1cclxuICogQGFwaSBwdWJsaWNcclxuICovXHJcblxyXG5FbWl0dGVyLnByb3RvdHlwZS5vbiA9XHJcbkVtaXR0ZXIucHJvdG90eXBlLmFkZEV2ZW50TGlzdGVuZXIgPSBmdW5jdGlvbihldmVudCwgZm4pe1xyXG4gIHRoaXMuX2NhbGxiYWNrcyA9IHRoaXMuX2NhbGxiYWNrcyB8fCB7fTtcclxuICAodGhpcy5fY2FsbGJhY2tzWyckJyArIGV2ZW50XSA9IHRoaXMuX2NhbGxiYWNrc1snJCcgKyBldmVudF0gfHwgW10pXHJcbiAgICAucHVzaChmbik7XHJcbiAgcmV0dXJuIHRoaXM7XHJcbn07XHJcblxyXG4vKipcclxuICogQWRkcyBhbiBgZXZlbnRgIGxpc3RlbmVyIHRoYXQgd2lsbCBiZSBpbnZva2VkIGEgc2luZ2xlXHJcbiAqIHRpbWUgdGhlbiBhdXRvbWF0aWNhbGx5IHJlbW92ZWQuXHJcbiAqXHJcbiAqIEBwYXJhbSB7U3RyaW5nfSBldmVudFxyXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBmblxyXG4gKiBAcmV0dXJuIHtFbWl0dGVyfVxyXG4gKiBAYXBpIHB1YmxpY1xyXG4gKi9cclxuXHJcbkVtaXR0ZXIucHJvdG90eXBlLm9uY2UgPSBmdW5jdGlvbihldmVudCwgZm4pe1xyXG4gIGZ1bmN0aW9uIG9uKCkge1xyXG4gICAgdGhpcy5vZmYoZXZlbnQsIG9uKTtcclxuICAgIGZuLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7XHJcbiAgfVxyXG5cclxuICBvbi5mbiA9IGZuO1xyXG4gIHRoaXMub24oZXZlbnQsIG9uKTtcclxuICByZXR1cm4gdGhpcztcclxufTtcclxuXHJcbi8qKlxyXG4gKiBSZW1vdmUgdGhlIGdpdmVuIGNhbGxiYWNrIGZvciBgZXZlbnRgIG9yIGFsbFxyXG4gKiByZWdpc3RlcmVkIGNhbGxiYWNrcy5cclxuICpcclxuICogQHBhcmFtIHtTdHJpbmd9IGV2ZW50XHJcbiAqIEBwYXJhbSB7RnVuY3Rpb259IGZuXHJcbiAqIEByZXR1cm4ge0VtaXR0ZXJ9XHJcbiAqIEBhcGkgcHVibGljXHJcbiAqL1xyXG5cclxuRW1pdHRlci5wcm90b3R5cGUub2ZmID1cclxuRW1pdHRlci5wcm90b3R5cGUucmVtb3ZlTGlzdGVuZXIgPVxyXG5FbWl0dGVyLnByb3RvdHlwZS5yZW1vdmVBbGxMaXN0ZW5lcnMgPVxyXG5FbWl0dGVyLnByb3RvdHlwZS5yZW1vdmVFdmVudExpc3RlbmVyID0gZnVuY3Rpb24oZXZlbnQsIGZuKXtcclxuICB0aGlzLl9jYWxsYmFja3MgPSB0aGlzLl9jYWxsYmFja3MgfHwge307XHJcblxyXG4gIC8vIGFsbFxyXG4gIGlmICgwID09IGFyZ3VtZW50cy5sZW5ndGgpIHtcclxuICAgIHRoaXMuX2NhbGxiYWNrcyA9IHt9O1xyXG4gICAgcmV0dXJuIHRoaXM7XHJcbiAgfVxyXG5cclxuICAvLyBzcGVjaWZpYyBldmVudFxyXG4gIHZhciBjYWxsYmFja3MgPSB0aGlzLl9jYWxsYmFja3NbJyQnICsgZXZlbnRdO1xyXG4gIGlmICghY2FsbGJhY2tzKSByZXR1cm4gdGhpcztcclxuXHJcbiAgLy8gcmVtb3ZlIGFsbCBoYW5kbGVyc1xyXG4gIGlmICgxID09IGFyZ3VtZW50cy5sZW5ndGgpIHtcclxuICAgIGRlbGV0ZSB0aGlzLl9jYWxsYmFja3NbJyQnICsgZXZlbnRdO1xyXG4gICAgcmV0dXJuIHRoaXM7XHJcbiAgfVxyXG5cclxuICAvLyByZW1vdmUgc3BlY2lmaWMgaGFuZGxlclxyXG4gIHZhciBjYjtcclxuICBmb3IgKHZhciBpID0gMDsgaSA8IGNhbGxiYWNrcy5sZW5ndGg7IGkrKykge1xyXG4gICAgY2IgPSBjYWxsYmFja3NbaV07XHJcbiAgICBpZiAoY2IgPT09IGZuIHx8IGNiLmZuID09PSBmbikge1xyXG4gICAgICBjYWxsYmFja3Muc3BsaWNlKGksIDEpO1xyXG4gICAgICBicmVhaztcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8vIFJlbW92ZSBldmVudCBzcGVjaWZpYyBhcnJheXMgZm9yIGV2ZW50IHR5cGVzIHRoYXQgbm9cclxuICAvLyBvbmUgaXMgc3Vic2NyaWJlZCBmb3IgdG8gYXZvaWQgbWVtb3J5IGxlYWsuXHJcbiAgaWYgKGNhbGxiYWNrcy5sZW5ndGggPT09IDApIHtcclxuICAgIGRlbGV0ZSB0aGlzLl9jYWxsYmFja3NbJyQnICsgZXZlbnRdO1xyXG4gIH1cclxuXHJcbiAgcmV0dXJuIHRoaXM7XHJcbn07XHJcblxyXG4vKipcclxuICogRW1pdCBgZXZlbnRgIHdpdGggdGhlIGdpdmVuIGFyZ3MuXHJcbiAqXHJcbiAqIEBwYXJhbSB7U3RyaW5nfSBldmVudFxyXG4gKiBAcGFyYW0ge01peGVkfSAuLi5cclxuICogQHJldHVybiB7RW1pdHRlcn1cclxuICovXHJcblxyXG5FbWl0dGVyLnByb3RvdHlwZS5lbWl0ID0gZnVuY3Rpb24oZXZlbnQpe1xyXG4gIHRoaXMuX2NhbGxiYWNrcyA9IHRoaXMuX2NhbGxiYWNrcyB8fCB7fTtcclxuXHJcbiAgdmFyIGFyZ3MgPSBuZXcgQXJyYXkoYXJndW1lbnRzLmxlbmd0aCAtIDEpXHJcbiAgICAsIGNhbGxiYWNrcyA9IHRoaXMuX2NhbGxiYWNrc1snJCcgKyBldmVudF07XHJcblxyXG4gIGZvciAodmFyIGkgPSAxOyBpIDwgYXJndW1lbnRzLmxlbmd0aDsgaSsrKSB7XHJcbiAgICBhcmdzW2kgLSAxXSA9IGFyZ3VtZW50c1tpXTtcclxuICB9XHJcblxyXG4gIGlmIChjYWxsYmFja3MpIHtcclxuICAgIGNhbGxiYWNrcyA9IGNhbGxiYWNrcy5zbGljZSgwKTtcclxuICAgIGZvciAodmFyIGkgPSAwLCBsZW4gPSBjYWxsYmFja3MubGVuZ3RoOyBpIDwgbGVuOyArK2kpIHtcclxuICAgICAgY2FsbGJhY2tzW2ldLmFwcGx5KHRoaXMsIGFyZ3MpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcmV0dXJuIHRoaXM7XHJcbn07XHJcblxyXG4vKipcclxuICogUmV0dXJuIGFycmF5IG9mIGNhbGxiYWNrcyBmb3IgYGV2ZW50YC5cclxuICpcclxuICogQHBhcmFtIHtTdHJpbmd9IGV2ZW50XHJcbiAqIEByZXR1cm4ge0FycmF5fVxyXG4gKiBAYXBpIHB1YmxpY1xyXG4gKi9cclxuXHJcbkVtaXR0ZXIucHJvdG90eXBlLmxpc3RlbmVycyA9IGZ1bmN0aW9uKGV2ZW50KXtcclxuICB0aGlzLl9jYWxsYmFja3MgPSB0aGlzLl9jYWxsYmFja3MgfHwge307XHJcbiAgcmV0dXJuIHRoaXMuX2NhbGxiYWNrc1snJCcgKyBldmVudF0gfHwgW107XHJcbn07XHJcblxyXG4vKipcclxuICogQ2hlY2sgaWYgdGhpcyBlbWl0dGVyIGhhcyBgZXZlbnRgIGhhbmRsZXJzLlxyXG4gKlxyXG4gKiBAcGFyYW0ge1N0cmluZ30gZXZlbnRcclxuICogQHJldHVybiB7Qm9vbGVhbn1cclxuICogQGFwaSBwdWJsaWNcclxuICovXHJcblxyXG5FbWl0dGVyLnByb3RvdHlwZS5oYXNMaXN0ZW5lcnMgPSBmdW5jdGlvbihldmVudCl7XHJcbiAgcmV0dXJuICEhIHRoaXMubGlzdGVuZXJzKGV2ZW50KS5sZW5ndGg7XHJcbn07XHJcbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///24\n")},function(module,exports,__webpack_require__){"use strict";eval("\n\n/**\n * Module of mixed-in functions shared between node and client code\n */\nvar isObject = __webpack_require__(11);\n\n/**\n * Expose `RequestBase`.\n */\n\nmodule.exports = RequestBase;\n\n/**\n * Initialize a new `RequestBase`.\n *\n * @api public\n */\n\nfunction RequestBase(obj) {\n  if (obj) return mixin(obj);\n}\n\n/**\n * Mixin the prototype properties.\n *\n * @param {Object} obj\n * @return {Object}\n * @api private\n */\n\nfunction mixin(obj) {\n  for (var key in RequestBase.prototype) {\n    obj[key] = RequestBase.prototype[key];\n  }\n  return obj;\n}\n\n/**\n * Clear previous timeout.\n *\n * @return {Request} for chaining\n * @api public\n */\n\nRequestBase.prototype.clearTimeout = function _clearTimeout(){\n  clearTimeout(this._timer);\n  clearTimeout(this._responseTimeoutTimer);\n  delete this._timer;\n  delete this._responseTimeoutTimer;\n  return this;\n};\n\n/**\n * Override default response body parser\n *\n * This function will be called to convert incoming data into request.body\n *\n * @param {Function}\n * @api public\n */\n\nRequestBase.prototype.parse = function parse(fn){\n  this._parser = fn;\n  return this;\n};\n\n/**\n * Set format of binary response body.\n * In browser valid formats are 'blob' and 'arraybuffer',\n * which return Blob and ArrayBuffer, respectively.\n *\n * In Node all values result in Buffer.\n *\n * Examples:\n *\n *      req.get('/')\n *        .responseType('blob')\n *        .end(callback);\n *\n * @param {String} val\n * @return {Request} for chaining\n * @api public\n */\n\nRequestBase.prototype.responseType = function(val){\n  this._responseType = val;\n  return this;\n};\n\n/**\n * Override default request body serializer\n *\n * This function will be called to convert data set via .send or .attach into payload to send\n *\n * @param {Function}\n * @api public\n */\n\nRequestBase.prototype.serialize = function serialize(fn){\n  this._serializer = fn;\n  return this;\n};\n\n/**\n * Set timeouts.\n *\n * - response timeout is time between sending request and receiving the first byte of the response. Includes DNS and connection time.\n * - deadline is the time from start of the request to receiving response body in full. If the deadline is too short large files may not load at all on slow connections.\n *\n * Value of 0 or false means no timeout.\n *\n * @param {Number|Object} ms or {response, deadline}\n * @return {Request} for chaining\n * @api public\n */\n\nRequestBase.prototype.timeout = function timeout(options){\n  if (!options || 'object' !== typeof options) {\n    this._timeout = options;\n    this._responseTimeout = 0;\n    return this;\n  }\n\n  for(var option in options) {\n    switch(option) {\n      case 'deadline':\n        this._timeout = options.deadline;\n        break;\n      case 'response':\n        this._responseTimeout = options.response;\n        break;\n      default:\n        console.warn(\"Unknown timeout option\", option);\n    }\n  }\n  return this;\n};\n\n/**\n * Set number of retry attempts on error.\n *\n * Failed requests will be retried 'count' times if timeout or err.code >= 500.\n *\n * @param {Number} count\n * @param {Function} [fn]\n * @return {Request} for chaining\n * @api public\n */\n\nRequestBase.prototype.retry = function retry(count, fn){\n  // Default to 1 if no count passed or true\n  if (arguments.length === 0 || count === true) count = 1;\n  if (count <= 0) count = 0;\n  this._maxRetries = count;\n  this._retries = 0;\n  this._retryCallback = fn;\n  return this;\n};\n\nvar ERROR_CODES = [\n  'ECONNRESET',\n  'ETIMEDOUT',\n  'EADDRINFO',\n  'ESOCKETTIMEDOUT'\n];\n\n/**\n * Determine if a request should be retried.\n * (Borrowed from segmentio/superagent-retry)\n *\n * @param {Error} err\n * @param {Response} [res]\n * @returns {Boolean}\n */\nRequestBase.prototype._shouldRetry = function(err, res) {\n  if (!this._maxRetries || this._retries++ >= this._maxRetries) {\n    return false;\n  }\n  if (this._retryCallback) {\n    try {\n      var override = this._retryCallback(err, res);\n      if (override === true) return true;\n      if (override === false) return false;\n      // undefined falls back to defaults\n    } catch(e) {\n      console.error(e);\n    }\n  }\n  if (res && res.status && res.status >= 500 && res.status != 501) return true;\n  if (err) {\n    if (err.code && ~ERROR_CODES.indexOf(err.code)) return true;\n    // Superagent timeout\n    if (err.timeout && err.code == 'ECONNABORTED') return true;\n    if (err.crossDomain) return true;\n  }\n  return false;\n};\n\n/**\n * Retry request\n *\n * @return {Request} for chaining\n * @api private\n */\n\nRequestBase.prototype._retry = function() {\n\n  this.clearTimeout();\n\n  // node\n  if (this.req) {\n    this.req = null;\n    this.req = this.request();\n  }\n\n  this._aborted = false;\n  this.timedout = false;\n\n  return this._end();\n};\n\n/**\n * Promise support\n *\n * @param {Function} resolve\n * @param {Function} [reject]\n * @return {Request}\n */\n\nRequestBase.prototype.then = function then(resolve, reject) {\n  if (!this._fullfilledPromise) {\n    var self = this;\n    if (this._endCalled) {\n      console.warn(\"Warning: superagent request was sent twice, because both .end() and .then() were called. Never call .end() if you use promises\");\n    }\n    this._fullfilledPromise = new Promise(function(innerResolve, innerReject) {\n      self.end(function(err, res) {\n        if (err) innerReject(err);\n        else innerResolve(res);\n      });\n    });\n  }\n  return this._fullfilledPromise.then(resolve, reject);\n};\n\nRequestBase.prototype['catch'] = function(cb) {\n  return this.then(undefined, cb);\n};\n\n/**\n * Allow for extension\n */\n\nRequestBase.prototype.use = function use(fn) {\n  fn(this);\n  return this;\n};\n\nRequestBase.prototype.ok = function(cb) {\n  if ('function' !== typeof cb) throw Error(\"Callback required\");\n  this._okCallback = cb;\n  return this;\n};\n\nRequestBase.prototype._isResponseOK = function(res) {\n  if (!res) {\n    return false;\n  }\n\n  if (this._okCallback) {\n    return this._okCallback(res);\n  }\n\n  return res.status >= 200 && res.status < 300;\n};\n\n/**\n * Get request header `field`.\n * Case-insensitive.\n *\n * @param {String} field\n * @return {String}\n * @api public\n */\n\nRequestBase.prototype.get = function(field){\n  return this._header[field.toLowerCase()];\n};\n\n/**\n * Get case-insensitive header `field` value.\n * This is a deprecated internal API. Use `.get(field)` instead.\n *\n * (getHeader is no longer used internally by the superagent code base)\n *\n * @param {String} field\n * @return {String}\n * @api private\n * @deprecated\n */\n\nRequestBase.prototype.getHeader = RequestBase.prototype.get;\n\n/**\n * Set header `field` to `val`, or multiple fields with one object.\n * Case-insensitive.\n *\n * Examples:\n *\n *      req.get('/')\n *        .set('Accept', 'application/json')\n *        .set('X-API-Key', 'foobar')\n *        .end(callback);\n *\n *      req.get('/')\n *        .set({ Accept: 'application/json', 'X-API-Key': 'foobar' })\n *        .end(callback);\n *\n * @param {String|Object} field\n * @param {String} val\n * @return {Request} for chaining\n * @api public\n */\n\nRequestBase.prototype.set = function(field, val){\n  if (isObject(field)) {\n    for (var key in field) {\n      this.set(key, field[key]);\n    }\n    return this;\n  }\n  this._header[field.toLowerCase()] = val;\n  this.header[field] = val;\n  return this;\n};\n\n/**\n * Remove header `field`.\n * Case-insensitive.\n *\n * Example:\n *\n *      req.get('/')\n *        .unset('User-Agent')\n *        .end(callback);\n *\n * @param {String} field\n */\nRequestBase.prototype.unset = function(field){\n  delete this._header[field.toLowerCase()];\n  delete this.header[field];\n  return this;\n};\n\n/**\n * Write the field `name` and `val`, or multiple fields with one object\n * for \"multipart/form-data\" request bodies.\n *\n * ``` js\n * request.post('/upload')\n *   .field('foo', 'bar')\n *   .end(callback);\n *\n * request.post('/upload')\n *   .field({ foo: 'bar', baz: 'qux' })\n *   .end(callback);\n * ```\n *\n * @param {String|Object} name\n * @param {String|Blob|File|Buffer|fs.ReadStream} val\n * @return {Request} for chaining\n * @api public\n */\nRequestBase.prototype.field = function(name, val) {\n  // name should be either a string or an object.\n  if (null === name || undefined === name) {\n    throw new Error('.field(name, val) name can not be empty');\n  }\n\n  if (this._data) {\n    console.error(\".field() can't be used if .send() is used. Please use only .send() or only .field() & .attach()\");\n  }\n\n  if (isObject(name)) {\n    for (var key in name) {\n      this.field(key, name[key]);\n    }\n    return this;\n  }\n\n  if (Array.isArray(val)) {\n    for (var i in val) {\n      this.field(name, val[i]);\n    }\n    return this;\n  }\n\n  // val should be defined now\n  if (null === val || undefined === val) {\n    throw new Error('.field(name, val) val can not be empty');\n  }\n  if ('boolean' === typeof val) {\n    val = '' + val;\n  }\n  this._getFormData().append(name, val);\n  return this;\n};\n\n/**\n * Abort the request, and clear potential timeout.\n *\n * @return {Request}\n * @api public\n */\nRequestBase.prototype.abort = function(){\n  if (this._aborted) {\n    return this;\n  }\n  this._aborted = true;\n  this.xhr && this.xhr.abort(); // browser\n  this.req && this.req.abort(); // node\n  this.clearTimeout();\n  this.emit('abort');\n  return this;\n};\n\nRequestBase.prototype._auth = function(user, pass, options, base64Encoder) {\n  switch (options.type) {\n    case 'basic':\n      this.set('Authorization', 'Basic ' + base64Encoder(user + ':' + pass));\n      break;\n\n    case 'auto':\n      this.username = user;\n      this.password = pass;\n      break;\n\n    case 'bearer': // usage would be .auth(accessToken, { type: 'bearer' })\n      this.set('Authorization', 'Bearer ' + user);\n      break;\n  }\n  return this;\n};\n\n/**\n * Enable transmission of cookies with x-domain requests.\n *\n * Note that for this to work the origin must not be\n * using \"Access-Control-Allow-Origin\" with a wildcard,\n * and also must set \"Access-Control-Allow-Credentials\"\n * to \"true\".\n *\n * @api public\n */\n\nRequestBase.prototype.withCredentials = function(on) {\n  // This is browser-only functionality. Node side is no-op.\n  if (on == undefined) on = true;\n  this._withCredentials = on;\n  return this;\n};\n\n/**\n * Set the max redirects to `n`. Does noting in browser XHR implementation.\n *\n * @param {Number} n\n * @return {Request} for chaining\n * @api public\n */\n\nRequestBase.prototype.redirects = function(n){\n  this._maxRedirects = n;\n  return this;\n};\n\n/**\n * Maximum size of buffered response body, in bytes. Counts uncompressed size.\n * Default 200MB.\n *\n * @param {Number} n\n * @return {Request} for chaining\n */\nRequestBase.prototype.maxResponseSize = function(n){\n  if ('number' !== typeof n) {\n    throw TypeError(\"Invalid argument\");\n  }\n  this._maxResponseSize = n;\n  return this;\n};\n\n/**\n * Convert to a plain javascript object (not JSON string) of scalar properties.\n * Note as this method is designed to return a useful non-this value,\n * it cannot be chained.\n *\n * @return {Object} describing method, url, and data of this request\n * @api public\n */\n\nRequestBase.prototype.toJSON = function() {\n  return {\n    method: this.method,\n    url: this.url,\n    data: this._data,\n    headers: this._header,\n  };\n};\n\n/**\n * Send `data` as the request body, defaulting the `.type()` to \"json\" when\n * an object is given.\n *\n * Examples:\n *\n *       // manual json\n *       request.post('/user')\n *         .type('json')\n *         .send('{\"name\":\"tj\"}')\n *         .end(callback)\n *\n *       // auto json\n *       request.post('/user')\n *         .send({ name: 'tj' })\n *         .end(callback)\n *\n *       // manual x-www-form-urlencoded\n *       request.post('/user')\n *         .type('form')\n *         .send('name=tj')\n *         .end(callback)\n *\n *       // auto x-www-form-urlencoded\n *       request.post('/user')\n *         .type('form')\n *         .send({ name: 'tj' })\n *         .end(callback)\n *\n *       // defaults to x-www-form-urlencoded\n *      request.post('/user')\n *        .send('name=tobi')\n *        .send('species=ferret')\n *        .end(callback)\n *\n * @param {String|Object} data\n * @return {Request} for chaining\n * @api public\n */\n\nRequestBase.prototype.send = function(data){\n  var isObj = isObject(data);\n  var type = this._header['content-type'];\n\n  if (this._formData) {\n    console.error(\".send() can't be used if .attach() or .field() is used. Please use only .send() or only .field() & .attach()\");\n  }\n\n  if (isObj && !this._data) {\n    if (Array.isArray(data)) {\n      this._data = [];\n    } else if (!this._isHost(data)) {\n      this._data = {};\n    }\n  } else if (data && this._data && this._isHost(this._data)) {\n    throw Error(\"Can't merge these send calls\");\n  }\n\n  // merge\n  if (isObj && isObject(this._data)) {\n    for (var key in data) {\n      this._data[key] = data[key];\n    }\n  } else if ('string' == typeof data) {\n    // default to x-www-form-urlencoded\n    if (!type) this.type('form');\n    type = this._header['content-type'];\n    if ('application/x-www-form-urlencoded' == type) {\n      this._data = this._data\n        ? this._data + '&' + data\n        : data;\n    } else {\n      this._data = (this._data || '') + data;\n    }\n  } else {\n    this._data = data;\n  }\n\n  if (!isObj || this._isHost(data)) {\n    return this;\n  }\n\n  // default to json\n  if (!type) this.type('json');\n  return this;\n};\n\n/**\n * Sort `querystring` by the sort function\n *\n *\n * Examples:\n *\n *       // default order\n *       request.get('/user')\n *         .query('name=Nick')\n *         .query('search=Manny')\n *         .sortQuery()\n *         .end(callback)\n *\n *       // customized sort function\n *       request.get('/user')\n *         .query('name=Nick')\n *         .query('search=Manny')\n *         .sortQuery(function(a, b){\n *           return a.length - b.length;\n *         })\n *         .end(callback)\n *\n *\n * @param {Function} sort\n * @return {Request} for chaining\n * @api public\n */\n\nRequestBase.prototype.sortQuery = function(sort) {\n  // _sort default to true but otherwise can be a function or boolean\n  this._sort = typeof sort === 'undefined' ? true : sort;\n  return this;\n};\n\n/**\n * Compose querystring to append to req.url\n *\n * @api private\n */\nRequestBase.prototype._finalizeQueryString = function(){\n  var query = this._query.join('&');\n  if (query) {\n    this.url += (this.url.indexOf('?') >= 0 ? '&' : '?') + query;\n  }\n  this._query.length = 0; // Makes the call idempotent\n\n  if (this._sort) {\n    var index = this.url.indexOf('?');\n    if (index >= 0) {\n      var queryArr = this.url.substring(index + 1).split('&');\n      if ('function' === typeof this._sort) {\n        queryArr.sort(this._sort);\n      } else {\n        queryArr.sort();\n      }\n      this.url = this.url.substring(0, index) + '?' + queryArr.join('&');\n    }\n  }\n};\n\n// For backwards compat only\nRequestBase.prototype._appendQueryString = function() {console.trace(\"Unsupported\");}\n\n/**\n * Invoke callback with timeout error.\n *\n * @api private\n */\n\nRequestBase.prototype._timeoutError = function(reason, timeout, errno){\n  if (this._aborted) {\n    return;\n  }\n  var err = new Error(reason + timeout + 'ms exceeded');\n  err.timeout = timeout;\n  err.code = 'ECONNABORTED';\n  err.errno = errno;\n  this.timedout = true;\n  this.abort();\n  this.callback(err);\n};\n\nRequestBase.prototype._setTimeouts = function() {\n  var self = this;\n\n  // deadline\n  if (this._timeout && !this._timer) {\n    this._timer = setTimeout(function(){\n      self._timeoutError('Timeout of ', self._timeout, 'ETIME');\n    }, this._timeout);\n  }\n  // response timeout\n  if (this._responseTimeout && !this._responseTimeoutTimer) {\n    this._responseTimeoutTimer = setTimeout(function(){\n      self._timeoutError('Response timeout of ', self._responseTimeout, 'ETIMEDOUT');\n    }, this._responseTimeout);\n  }\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMjUuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9AOTFhcHAvbmluZXlpLmxpYi5zcGFya2NvcmUvLi9ub2RlX21vZHVsZXMvc3VwZXJhZ2VudC9saWIvcmVxdWVzdC1iYXNlLmpzPzkwYzkiXSwic291cmNlc0NvbnRlbnQiOlsiJ3VzZSBzdHJpY3QnO1xuXG4vKipcbiAqIE1vZHVsZSBvZiBtaXhlZC1pbiBmdW5jdGlvbnMgc2hhcmVkIGJldHdlZW4gbm9kZSBhbmQgY2xpZW50IGNvZGVcbiAqL1xudmFyIGlzT2JqZWN0ID0gcmVxdWlyZSgnLi9pcy1vYmplY3QnKTtcblxuLyoqXG4gKiBFeHBvc2UgYFJlcXVlc3RCYXNlYC5cbiAqL1xuXG5tb2R1bGUuZXhwb3J0cyA9IFJlcXVlc3RCYXNlO1xuXG4vKipcbiAqIEluaXRpYWxpemUgYSBuZXcgYFJlcXVlc3RCYXNlYC5cbiAqXG4gKiBAYXBpIHB1YmxpY1xuICovXG5cbmZ1bmN0aW9uIFJlcXVlc3RCYXNlKG9iaikge1xuICBpZiAob2JqKSByZXR1cm4gbWl4aW4ob2JqKTtcbn1cblxuLyoqXG4gKiBNaXhpbiB0aGUgcHJvdG90eXBlIHByb3BlcnRpZXMuXG4gKlxuICogQHBhcmFtIHtPYmplY3R9IG9ialxuICogQHJldHVybiB7T2JqZWN0fVxuICogQGFwaSBwcml2YXRlXG4gKi9cblxuZnVuY3Rpb24gbWl4aW4ob2JqKSB7XG4gIGZvciAodmFyIGtleSBpbiBSZXF1ZXN0QmFzZS5wcm90b3R5cGUpIHtcbiAgICBvYmpba2V5XSA9IFJlcXVlc3RCYXNlLnByb3RvdHlwZVtrZXldO1xuICB9XG4gIHJldHVybiBvYmo7XG59XG5cbi8qKlxuICogQ2xlYXIgcHJldmlvdXMgdGltZW91dC5cbiAqXG4gKiBAcmV0dXJuIHtSZXF1ZXN0fSBmb3IgY2hhaW5pbmdcbiAqIEBhcGkgcHVibGljXG4gKi9cblxuUmVxdWVzdEJhc2UucHJvdG90eXBlLmNsZWFyVGltZW91dCA9IGZ1bmN0aW9uIF9jbGVhclRpbWVvdXQoKXtcbiAgY2xlYXJUaW1lb3V0KHRoaXMuX3RpbWVyKTtcbiAgY2xlYXJUaW1lb3V0KHRoaXMuX3Jlc3BvbnNlVGltZW91dFRpbWVyKTtcbiAgZGVsZXRlIHRoaXMuX3RpbWVyO1xuICBkZWxldGUgdGhpcy5fcmVzcG9uc2VUaW1lb3V0VGltZXI7XG4gIHJldHVybiB0aGlzO1xufTtcblxuLyoqXG4gKiBPdmVycmlkZSBkZWZhdWx0IHJlc3BvbnNlIGJvZHkgcGFyc2VyXG4gKlxuICogVGhpcyBmdW5jdGlvbiB3aWxsIGJlIGNhbGxlZCB0byBjb252ZXJ0IGluY29taW5nIGRhdGEgaW50byByZXF1ZXN0LmJvZHlcbiAqXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufVxuICogQGFwaSBwdWJsaWNcbiAqL1xuXG5SZXF1ZXN0QmFzZS5wcm90b3R5cGUucGFyc2UgPSBmdW5jdGlvbiBwYXJzZShmbil7XG4gIHRoaXMuX3BhcnNlciA9IGZuO1xuICByZXR1cm4gdGhpcztcbn07XG5cbi8qKlxuICogU2V0IGZvcm1hdCBvZiBiaW5hcnkgcmVzcG9uc2UgYm9keS5cbiAqIEluIGJyb3dzZXIgdmFsaWQgZm9ybWF0cyBhcmUgJ2Jsb2InIGFuZCAnYXJyYXlidWZmZXInLFxuICogd2hpY2ggcmV0dXJuIEJsb2IgYW5kIEFycmF5QnVmZmVyLCByZXNwZWN0aXZlbHkuXG4gKlxuICogSW4gTm9kZSBhbGwgdmFsdWVzIHJlc3VsdCBpbiBCdWZmZXIuXG4gKlxuICogRXhhbXBsZXM6XG4gKlxuICogICAgICByZXEuZ2V0KCcvJylcbiAqICAgICAgICAucmVzcG9uc2VUeXBlKCdibG9iJylcbiAqICAgICAgICAuZW5kKGNhbGxiYWNrKTtcbiAqXG4gKiBAcGFyYW0ge1N0cmluZ30gdmFsXG4gKiBAcmV0dXJuIHtSZXF1ZXN0fSBmb3IgY2hhaW5pbmdcbiAqIEBhcGkgcHVibGljXG4gKi9cblxuUmVxdWVzdEJhc2UucHJvdG90eXBlLnJlc3BvbnNlVHlwZSA9IGZ1bmN0aW9uKHZhbCl7XG4gIHRoaXMuX3Jlc3BvbnNlVHlwZSA9IHZhbDtcbiAgcmV0dXJuIHRoaXM7XG59O1xuXG4vKipcbiAqIE92ZXJyaWRlIGRlZmF1bHQgcmVxdWVzdCBib2R5IHNlcmlhbGl6ZXJcbiAqXG4gKiBUaGlzIGZ1bmN0aW9uIHdpbGwgYmUgY2FsbGVkIHRvIGNvbnZlcnQgZGF0YSBzZXQgdmlhIC5zZW5kIG9yIC5hdHRhY2ggaW50byBwYXlsb2FkIHRvIHNlbmRcbiAqXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufVxuICogQGFwaSBwdWJsaWNcbiAqL1xuXG5SZXF1ZXN0QmFzZS5wcm90b3R5cGUuc2VyaWFsaXplID0gZnVuY3Rpb24gc2VyaWFsaXplKGZuKXtcbiAgdGhpcy5fc2VyaWFsaXplciA9IGZuO1xuICByZXR1cm4gdGhpcztcbn07XG5cbi8qKlxuICogU2V0IHRpbWVvdXRzLlxuICpcbiAqIC0gcmVzcG9uc2UgdGltZW91dCBpcyB0aW1lIGJldHdlZW4gc2VuZGluZyByZXF1ZXN0IGFuZCByZWNlaXZpbmcgdGhlIGZpcnN0IGJ5dGUgb2YgdGhlIHJlc3BvbnNlLiBJbmNsdWRlcyBETlMgYW5kIGNvbm5lY3Rpb24gdGltZS5cbiAqIC0gZGVhZGxpbmUgaXMgdGhlIHRpbWUgZnJvbSBzdGFydCBvZiB0aGUgcmVxdWVzdCB0byByZWNlaXZpbmcgcmVzcG9uc2UgYm9keSBpbiBmdWxsLiBJZiB0aGUgZGVhZGxpbmUgaXMgdG9vIHNob3J0IGxhcmdlIGZpbGVzIG1heSBub3QgbG9hZCBhdCBhbGwgb24gc2xvdyBjb25uZWN0aW9ucy5cbiAqXG4gKiBWYWx1ZSBvZiAwIG9yIGZhbHNlIG1lYW5zIG5vIHRpbWVvdXQuXG4gKlxuICogQHBhcmFtIHtOdW1iZXJ8T2JqZWN0fSBtcyBvciB7cmVzcG9uc2UsIGRlYWRsaW5lfVxuICogQHJldHVybiB7UmVxdWVzdH0gZm9yIGNoYWluaW5nXG4gKiBAYXBpIHB1YmxpY1xuICovXG5cblJlcXVlc3RCYXNlLnByb3RvdHlwZS50aW1lb3V0ID0gZnVuY3Rpb24gdGltZW91dChvcHRpb25zKXtcbiAgaWYgKCFvcHRpb25zIHx8ICdvYmplY3QnICE9PSB0eXBlb2Ygb3B0aW9ucykge1xuICAgIHRoaXMuX3RpbWVvdXQgPSBvcHRpb25zO1xuICAgIHRoaXMuX3Jlc3BvbnNlVGltZW91dCA9IDA7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICBmb3IodmFyIG9wdGlvbiBpbiBvcHRpb25zKSB7XG4gICAgc3dpdGNoKG9wdGlvbikge1xuICAgICAgY2FzZSAnZGVhZGxpbmUnOlxuICAgICAgICB0aGlzLl90aW1lb3V0ID0gb3B0aW9ucy5kZWFkbGluZTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdyZXNwb25zZSc6XG4gICAgICAgIHRoaXMuX3Jlc3BvbnNlVGltZW91dCA9IG9wdGlvbnMucmVzcG9uc2U7XG4gICAgICAgIGJyZWFrO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgY29uc29sZS53YXJuKFwiVW5rbm93biB0aW1lb3V0IG9wdGlvblwiLCBvcHRpb24pO1xuICAgIH1cbiAgfVxuICByZXR1cm4gdGhpcztcbn07XG5cbi8qKlxuICogU2V0IG51bWJlciBvZiByZXRyeSBhdHRlbXB0cyBvbiBlcnJvci5cbiAqXG4gKiBGYWlsZWQgcmVxdWVzdHMgd2lsbCBiZSByZXRyaWVkICdjb3VudCcgdGltZXMgaWYgdGltZW91dCBvciBlcnIuY29kZSA+PSA1MDAuXG4gKlxuICogQHBhcmFtIHtOdW1iZXJ9IGNvdW50XG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBbZm5dXG4gKiBAcmV0dXJuIHtSZXF1ZXN0fSBmb3IgY2hhaW5pbmdcbiAqIEBhcGkgcHVibGljXG4gKi9cblxuUmVxdWVzdEJhc2UucHJvdG90eXBlLnJldHJ5ID0gZnVuY3Rpb24gcmV0cnkoY291bnQsIGZuKXtcbiAgLy8gRGVmYXVsdCB0byAxIGlmIG5vIGNvdW50IHBhc3NlZCBvciB0cnVlXG4gIGlmIChhcmd1bWVudHMubGVuZ3RoID09PSAwIHx8IGNvdW50ID09PSB0cnVlKSBjb3VudCA9IDE7XG4gIGlmIChjb3VudCA8PSAwKSBjb3VudCA9IDA7XG4gIHRoaXMuX21heFJldHJpZXMgPSBjb3VudDtcbiAgdGhpcy5fcmV0cmllcyA9IDA7XG4gIHRoaXMuX3JldHJ5Q2FsbGJhY2sgPSBmbjtcbiAgcmV0dXJuIHRoaXM7XG59O1xuXG52YXIgRVJST1JfQ09ERVMgPSBbXG4gICdFQ09OTlJFU0VUJyxcbiAgJ0VUSU1FRE9VVCcsXG4gICdFQUREUklORk8nLFxuICAnRVNPQ0tFVFRJTUVET1VUJ1xuXTtcblxuLyoqXG4gKiBEZXRlcm1pbmUgaWYgYSByZXF1ZXN0IHNob3VsZCBiZSByZXRyaWVkLlxuICogKEJvcnJvd2VkIGZyb20gc2VnbWVudGlvL3N1cGVyYWdlbnQtcmV0cnkpXG4gKlxuICogQHBhcmFtIHtFcnJvcn0gZXJyXG4gKiBAcGFyYW0ge1Jlc3BvbnNlfSBbcmVzXVxuICogQHJldHVybnMge0Jvb2xlYW59XG4gKi9cblJlcXVlc3RCYXNlLnByb3RvdHlwZS5fc2hvdWxkUmV0cnkgPSBmdW5jdGlvbihlcnIsIHJlcykge1xuICBpZiAoIXRoaXMuX21heFJldHJpZXMgfHwgdGhpcy5fcmV0cmllcysrID49IHRoaXMuX21heFJldHJpZXMpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbiAgaWYgKHRoaXMuX3JldHJ5Q2FsbGJhY2spIHtcbiAgICB0cnkge1xuICAgICAgdmFyIG92ZXJyaWRlID0gdGhpcy5fcmV0cnlDYWxsYmFjayhlcnIsIHJlcyk7XG4gICAgICBpZiAob3ZlcnJpZGUgPT09IHRydWUpIHJldHVybiB0cnVlO1xuICAgICAgaWYgKG92ZXJyaWRlID09PSBmYWxzZSkgcmV0dXJuIGZhbHNlO1xuICAgICAgLy8gdW5kZWZpbmVkIGZhbGxzIGJhY2sgdG8gZGVmYXVsdHNcbiAgICB9IGNhdGNoKGUpIHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoZSk7XG4gICAgfVxuICB9XG4gIGlmIChyZXMgJiYgcmVzLnN0YXR1cyAmJiByZXMuc3RhdHVzID49IDUwMCAmJiByZXMuc3RhdHVzICE9IDUwMSkgcmV0dXJuIHRydWU7XG4gIGlmIChlcnIpIHtcbiAgICBpZiAoZXJyLmNvZGUgJiYgfkVSUk9SX0NPREVTLmluZGV4T2YoZXJyLmNvZGUpKSByZXR1cm4gdHJ1ZTtcbiAgICAvLyBTdXBlcmFnZW50IHRpbWVvdXRcbiAgICBpZiAoZXJyLnRpbWVvdXQgJiYgZXJyLmNvZGUgPT0gJ0VDT05OQUJPUlRFRCcpIHJldHVybiB0cnVlO1xuICAgIGlmIChlcnIuY3Jvc3NEb21haW4pIHJldHVybiB0cnVlO1xuICB9XG4gIHJldHVybiBmYWxzZTtcbn07XG5cbi8qKlxuICogUmV0cnkgcmVxdWVzdFxuICpcbiAqIEByZXR1cm4ge1JlcXVlc3R9IGZvciBjaGFpbmluZ1xuICogQGFwaSBwcml2YXRlXG4gKi9cblxuUmVxdWVzdEJhc2UucHJvdG90eXBlLl9yZXRyeSA9IGZ1bmN0aW9uKCkge1xuXG4gIHRoaXMuY2xlYXJUaW1lb3V0KCk7XG5cbiAgLy8gbm9kZVxuICBpZiAodGhpcy5yZXEpIHtcbiAgICB0aGlzLnJlcSA9IG51bGw7XG4gICAgdGhpcy5yZXEgPSB0aGlzLnJlcXVlc3QoKTtcbiAgfVxuXG4gIHRoaXMuX2Fib3J0ZWQgPSBmYWxzZTtcbiAgdGhpcy50aW1lZG91dCA9IGZhbHNlO1xuXG4gIHJldHVybiB0aGlzLl9lbmQoKTtcbn07XG5cbi8qKlxuICogUHJvbWlzZSBzdXBwb3J0XG4gKlxuICogQHBhcmFtIHtGdW5jdGlvbn0gcmVzb2x2ZVxuICogQHBhcmFtIHtGdW5jdGlvbn0gW3JlamVjdF1cbiAqIEByZXR1cm4ge1JlcXVlc3R9XG4gKi9cblxuUmVxdWVzdEJhc2UucHJvdG90eXBlLnRoZW4gPSBmdW5jdGlvbiB0aGVuKHJlc29sdmUsIHJlamVjdCkge1xuICBpZiAoIXRoaXMuX2Z1bGxmaWxsZWRQcm9taXNlKSB7XG4gICAgdmFyIHNlbGYgPSB0aGlzO1xuICAgIGlmICh0aGlzLl9lbmRDYWxsZWQpIHtcbiAgICAgIGNvbnNvbGUud2FybihcIldhcm5pbmc6IHN1cGVyYWdlbnQgcmVxdWVzdCB3YXMgc2VudCB0d2ljZSwgYmVjYXVzZSBib3RoIC5lbmQoKSBhbmQgLnRoZW4oKSB3ZXJlIGNhbGxlZC4gTmV2ZXIgY2FsbCAuZW5kKCkgaWYgeW91IHVzZSBwcm9taXNlc1wiKTtcbiAgICB9XG4gICAgdGhpcy5fZnVsbGZpbGxlZFByb21pc2UgPSBuZXcgUHJvbWlzZShmdW5jdGlvbihpbm5lclJlc29sdmUsIGlubmVyUmVqZWN0KSB7XG4gICAgICBzZWxmLmVuZChmdW5jdGlvbihlcnIsIHJlcykge1xuICAgICAgICBpZiAoZXJyKSBpbm5lclJlamVjdChlcnIpO1xuICAgICAgICBlbHNlIGlubmVyUmVzb2x2ZShyZXMpO1xuICAgICAgfSk7XG4gICAgfSk7XG4gIH1cbiAgcmV0dXJuIHRoaXMuX2Z1bGxmaWxsZWRQcm9taXNlLnRoZW4ocmVzb2x2ZSwgcmVqZWN0KTtcbn07XG5cblJlcXVlc3RCYXNlLnByb3RvdHlwZVsnY2F0Y2gnXSA9IGZ1bmN0aW9uKGNiKSB7XG4gIHJldHVybiB0aGlzLnRoZW4odW5kZWZpbmVkLCBjYik7XG59O1xuXG4vKipcbiAqIEFsbG93IGZvciBleHRlbnNpb25cbiAqL1xuXG5SZXF1ZXN0QmFzZS5wcm90b3R5cGUudXNlID0gZnVuY3Rpb24gdXNlKGZuKSB7XG4gIGZuKHRoaXMpO1xuICByZXR1cm4gdGhpcztcbn07XG5cblJlcXVlc3RCYXNlLnByb3RvdHlwZS5vayA9IGZ1bmN0aW9uKGNiKSB7XG4gIGlmICgnZnVuY3Rpb24nICE9PSB0eXBlb2YgY2IpIHRocm93IEVycm9yKFwiQ2FsbGJhY2sgcmVxdWlyZWRcIik7XG4gIHRoaXMuX29rQ2FsbGJhY2sgPSBjYjtcbiAgcmV0dXJuIHRoaXM7XG59O1xuXG5SZXF1ZXN0QmFzZS5wcm90b3R5cGUuX2lzUmVzcG9uc2VPSyA9IGZ1bmN0aW9uKHJlcykge1xuICBpZiAoIXJlcykge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIGlmICh0aGlzLl9va0NhbGxiYWNrKSB7XG4gICAgcmV0dXJuIHRoaXMuX29rQ2FsbGJhY2socmVzKTtcbiAgfVxuXG4gIHJldHVybiByZXMuc3RhdHVzID49IDIwMCAmJiByZXMuc3RhdHVzIDwgMzAwO1xufTtcblxuLyoqXG4gKiBHZXQgcmVxdWVzdCBoZWFkZXIgYGZpZWxkYC5cbiAqIENhc2UtaW5zZW5zaXRpdmUuXG4gKlxuICogQHBhcmFtIHtTdHJpbmd9IGZpZWxkXG4gKiBAcmV0dXJuIHtTdHJpbmd9XG4gKiBAYXBpIHB1YmxpY1xuICovXG5cblJlcXVlc3RCYXNlLnByb3RvdHlwZS5nZXQgPSBmdW5jdGlvbihmaWVsZCl7XG4gIHJldHVybiB0aGlzLl9oZWFkZXJbZmllbGQudG9Mb3dlckNhc2UoKV07XG59O1xuXG4vKipcbiAqIEdldCBjYXNlLWluc2Vuc2l0aXZlIGhlYWRlciBgZmllbGRgIHZhbHVlLlxuICogVGhpcyBpcyBhIGRlcHJlY2F0ZWQgaW50ZXJuYWwgQVBJLiBVc2UgYC5nZXQoZmllbGQpYCBpbnN0ZWFkLlxuICpcbiAqIChnZXRIZWFkZXIgaXMgbm8gbG9uZ2VyIHVzZWQgaW50ZXJuYWxseSBieSB0aGUgc3VwZXJhZ2VudCBjb2RlIGJhc2UpXG4gKlxuICogQHBhcmFtIHtTdHJpbmd9IGZpZWxkXG4gKiBAcmV0dXJuIHtTdHJpbmd9XG4gKiBAYXBpIHByaXZhdGVcbiAqIEBkZXByZWNhdGVkXG4gKi9cblxuUmVxdWVzdEJhc2UucHJvdG90eXBlLmdldEhlYWRlciA9IFJlcXVlc3RCYXNlLnByb3RvdHlwZS5nZXQ7XG5cbi8qKlxuICogU2V0IGhlYWRlciBgZmllbGRgIHRvIGB2YWxgLCBvciBtdWx0aXBsZSBmaWVsZHMgd2l0aCBvbmUgb2JqZWN0LlxuICogQ2FzZS1pbnNlbnNpdGl2ZS5cbiAqXG4gKiBFeGFtcGxlczpcbiAqXG4gKiAgICAgIHJlcS5nZXQoJy8nKVxuICogICAgICAgIC5zZXQoJ0FjY2VwdCcsICdhcHBsaWNhdGlvbi9qc29uJylcbiAqICAgICAgICAuc2V0KCdYLUFQSS1LZXknLCAnZm9vYmFyJylcbiAqICAgICAgICAuZW5kKGNhbGxiYWNrKTtcbiAqXG4gKiAgICAgIHJlcS5nZXQoJy8nKVxuICogICAgICAgIC5zZXQoeyBBY2NlcHQ6ICdhcHBsaWNhdGlvbi9qc29uJywgJ1gtQVBJLUtleSc6ICdmb29iYXInIH0pXG4gKiAgICAgICAgLmVuZChjYWxsYmFjayk7XG4gKlxuICogQHBhcmFtIHtTdHJpbmd8T2JqZWN0fSBmaWVsZFxuICogQHBhcmFtIHtTdHJpbmd9IHZhbFxuICogQHJldHVybiB7UmVxdWVzdH0gZm9yIGNoYWluaW5nXG4gKiBAYXBpIHB1YmxpY1xuICovXG5cblJlcXVlc3RCYXNlLnByb3RvdHlwZS5zZXQgPSBmdW5jdGlvbihmaWVsZCwgdmFsKXtcbiAgaWYgKGlzT2JqZWN0KGZpZWxkKSkge1xuICAgIGZvciAodmFyIGtleSBpbiBmaWVsZCkge1xuICAgICAgdGhpcy5zZXQoa2V5LCBmaWVsZFtrZXldKTtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cbiAgdGhpcy5faGVhZGVyW2ZpZWxkLnRvTG93ZXJDYXNlKCldID0gdmFsO1xuICB0aGlzLmhlYWRlcltmaWVsZF0gPSB2YWw7XG4gIHJldHVybiB0aGlzO1xufTtcblxuLyoqXG4gKiBSZW1vdmUgaGVhZGVyIGBmaWVsZGAuXG4gKiBDYXNlLWluc2Vuc2l0aXZlLlxuICpcbiAqIEV4YW1wbGU6XG4gKlxuICogICAgICByZXEuZ2V0KCcvJylcbiAqICAgICAgICAudW5zZXQoJ1VzZXItQWdlbnQnKVxuICogICAgICAgIC5lbmQoY2FsbGJhY2spO1xuICpcbiAqIEBwYXJhbSB7U3RyaW5nfSBmaWVsZFxuICovXG5SZXF1ZXN0QmFzZS5wcm90b3R5cGUudW5zZXQgPSBmdW5jdGlvbihmaWVsZCl7XG4gIGRlbGV0ZSB0aGlzLl9oZWFkZXJbZmllbGQudG9Mb3dlckNhc2UoKV07XG4gIGRlbGV0ZSB0aGlzLmhlYWRlcltmaWVsZF07XG4gIHJldHVybiB0aGlzO1xufTtcblxuLyoqXG4gKiBXcml0ZSB0aGUgZmllbGQgYG5hbWVgIGFuZCBgdmFsYCwgb3IgbXVsdGlwbGUgZmllbGRzIHdpdGggb25lIG9iamVjdFxuICogZm9yIFwibXVsdGlwYXJ0L2Zvcm0tZGF0YVwiIHJlcXVlc3QgYm9kaWVzLlxuICpcbiAqIGBgYCBqc1xuICogcmVxdWVzdC5wb3N0KCcvdXBsb2FkJylcbiAqICAgLmZpZWxkKCdmb28nLCAnYmFyJylcbiAqICAgLmVuZChjYWxsYmFjayk7XG4gKlxuICogcmVxdWVzdC5wb3N0KCcvdXBsb2FkJylcbiAqICAgLmZpZWxkKHsgZm9vOiAnYmFyJywgYmF6OiAncXV4JyB9KVxuICogICAuZW5kKGNhbGxiYWNrKTtcbiAqIGBgYFxuICpcbiAqIEBwYXJhbSB7U3RyaW5nfE9iamVjdH0gbmFtZVxuICogQHBhcmFtIHtTdHJpbmd8QmxvYnxGaWxlfEJ1ZmZlcnxmcy5SZWFkU3RyZWFtfSB2YWxcbiAqIEByZXR1cm4ge1JlcXVlc3R9IGZvciBjaGFpbmluZ1xuICogQGFwaSBwdWJsaWNcbiAqL1xuUmVxdWVzdEJhc2UucHJvdG90eXBlLmZpZWxkID0gZnVuY3Rpb24obmFtZSwgdmFsKSB7XG4gIC8vIG5hbWUgc2hvdWxkIGJlIGVpdGhlciBhIHN0cmluZyBvciBhbiBvYmplY3QuXG4gIGlmIChudWxsID09PSBuYW1lIHx8IHVuZGVmaW5lZCA9PT0gbmFtZSkge1xuICAgIHRocm93IG5ldyBFcnJvcignLmZpZWxkKG5hbWUsIHZhbCkgbmFtZSBjYW4gbm90IGJlIGVtcHR5Jyk7XG4gIH1cblxuICBpZiAodGhpcy5fZGF0YSkge1xuICAgIGNvbnNvbGUuZXJyb3IoXCIuZmllbGQoKSBjYW4ndCBiZSB1c2VkIGlmIC5zZW5kKCkgaXMgdXNlZC4gUGxlYXNlIHVzZSBvbmx5IC5zZW5kKCkgb3Igb25seSAuZmllbGQoKSAmIC5hdHRhY2goKVwiKTtcbiAgfVxuXG4gIGlmIChpc09iamVjdChuYW1lKSkge1xuICAgIGZvciAodmFyIGtleSBpbiBuYW1lKSB7XG4gICAgICB0aGlzLmZpZWxkKGtleSwgbmFtZVtrZXldKTtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICBpZiAoQXJyYXkuaXNBcnJheSh2YWwpKSB7XG4gICAgZm9yICh2YXIgaSBpbiB2YWwpIHtcbiAgICAgIHRoaXMuZmllbGQobmFtZSwgdmFsW2ldKTtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICAvLyB2YWwgc2hvdWxkIGJlIGRlZmluZWQgbm93XG4gIGlmIChudWxsID09PSB2YWwgfHwgdW5kZWZpbmVkID09PSB2YWwpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJy5maWVsZChuYW1lLCB2YWwpIHZhbCBjYW4gbm90IGJlIGVtcHR5Jyk7XG4gIH1cbiAgaWYgKCdib29sZWFuJyA9PT0gdHlwZW9mIHZhbCkge1xuICAgIHZhbCA9ICcnICsgdmFsO1xuICB9XG4gIHRoaXMuX2dldEZvcm1EYXRhKCkuYXBwZW5kKG5hbWUsIHZhbCk7XG4gIHJldHVybiB0aGlzO1xufTtcblxuLyoqXG4gKiBBYm9ydCB0aGUgcmVxdWVzdCwgYW5kIGNsZWFyIHBvdGVudGlhbCB0aW1lb3V0LlxuICpcbiAqIEByZXR1cm4ge1JlcXVlc3R9XG4gKiBAYXBpIHB1YmxpY1xuICovXG5SZXF1ZXN0QmFzZS5wcm90b3R5cGUuYWJvcnQgPSBmdW5jdGlvbigpe1xuICBpZiAodGhpcy5fYWJvcnRlZCkge1xuICAgIHJldHVybiB0aGlzO1xuICB9XG4gIHRoaXMuX2Fib3J0ZWQgPSB0cnVlO1xuICB0aGlzLnhociAmJiB0aGlzLnhoci5hYm9ydCgpOyAvLyBicm93c2VyXG4gIHRoaXMucmVxICYmIHRoaXMucmVxLmFib3J0KCk7IC8vIG5vZGVcbiAgdGhpcy5jbGVhclRpbWVvdXQoKTtcbiAgdGhpcy5lbWl0KCdhYm9ydCcpO1xuICByZXR1cm4gdGhpcztcbn07XG5cblJlcXVlc3RCYXNlLnByb3RvdHlwZS5fYXV0aCA9IGZ1bmN0aW9uKHVzZXIsIHBhc3MsIG9wdGlvbnMsIGJhc2U2NEVuY29kZXIpIHtcbiAgc3dpdGNoIChvcHRpb25zLnR5cGUpIHtcbiAgICBjYXNlICdiYXNpYyc6XG4gICAgICB0aGlzLnNldCgnQXV0aG9yaXphdGlvbicsICdCYXNpYyAnICsgYmFzZTY0RW5jb2Rlcih1c2VyICsgJzonICsgcGFzcykpO1xuICAgICAgYnJlYWs7XG5cbiAgICBjYXNlICdhdXRvJzpcbiAgICAgIHRoaXMudXNlcm5hbWUgPSB1c2VyO1xuICAgICAgdGhpcy5wYXNzd29yZCA9IHBhc3M7XG4gICAgICBicmVhaztcblxuICAgIGNhc2UgJ2JlYXJlcic6IC8vIHVzYWdlIHdvdWxkIGJlIC5hdXRoKGFjY2Vzc1Rva2VuLCB7IHR5cGU6ICdiZWFyZXInIH0pXG4gICAgICB0aGlzLnNldCgnQXV0aG9yaXphdGlvbicsICdCZWFyZXIgJyArIHVzZXIpO1xuICAgICAgYnJlYWs7XG4gIH1cbiAgcmV0dXJuIHRoaXM7XG59O1xuXG4vKipcbiAqIEVuYWJsZSB0cmFuc21pc3Npb24gb2YgY29va2llcyB3aXRoIHgtZG9tYWluIHJlcXVlc3RzLlxuICpcbiAqIE5vdGUgdGhhdCBmb3IgdGhpcyB0byB3b3JrIHRoZSBvcmlnaW4gbXVzdCBub3QgYmVcbiAqIHVzaW5nIFwiQWNjZXNzLUNvbnRyb2wtQWxsb3ctT3JpZ2luXCIgd2l0aCBhIHdpbGRjYXJkLFxuICogYW5kIGFsc28gbXVzdCBzZXQgXCJBY2Nlc3MtQ29udHJvbC1BbGxvdy1DcmVkZW50aWFsc1wiXG4gKiB0byBcInRydWVcIi5cbiAqXG4gKiBAYXBpIHB1YmxpY1xuICovXG5cblJlcXVlc3RCYXNlLnByb3RvdHlwZS53aXRoQ3JlZGVudGlhbHMgPSBmdW5jdGlvbihvbikge1xuICAvLyBUaGlzIGlzIGJyb3dzZXItb25seSBmdW5jdGlvbmFsaXR5LiBOb2RlIHNpZGUgaXMgbm8tb3AuXG4gIGlmIChvbiA9PSB1bmRlZmluZWQpIG9uID0gdHJ1ZTtcbiAgdGhpcy5fd2l0aENyZWRlbnRpYWxzID0gb247XG4gIHJldHVybiB0aGlzO1xufTtcblxuLyoqXG4gKiBTZXQgdGhlIG1heCByZWRpcmVjdHMgdG8gYG5gLiBEb2VzIG5vdGluZyBpbiBicm93c2VyIFhIUiBpbXBsZW1lbnRhdGlvbi5cbiAqXG4gKiBAcGFyYW0ge051bWJlcn0gblxuICogQHJldHVybiB7UmVxdWVzdH0gZm9yIGNoYWluaW5nXG4gKiBAYXBpIHB1YmxpY1xuICovXG5cblJlcXVlc3RCYXNlLnByb3RvdHlwZS5yZWRpcmVjdHMgPSBmdW5jdGlvbihuKXtcbiAgdGhpcy5fbWF4UmVkaXJlY3RzID0gbjtcbiAgcmV0dXJuIHRoaXM7XG59O1xuXG4vKipcbiAqIE1heGltdW0gc2l6ZSBvZiBidWZmZXJlZCByZXNwb25zZSBib2R5LCBpbiBieXRlcy4gQ291bnRzIHVuY29tcHJlc3NlZCBzaXplLlxuICogRGVmYXVsdCAyMDBNQi5cbiAqXG4gKiBAcGFyYW0ge051bWJlcn0gblxuICogQHJldHVybiB7UmVxdWVzdH0gZm9yIGNoYWluaW5nXG4gKi9cblJlcXVlc3RCYXNlLnByb3RvdHlwZS5tYXhSZXNwb25zZVNpemUgPSBmdW5jdGlvbihuKXtcbiAgaWYgKCdudW1iZXInICE9PSB0eXBlb2Ygbikge1xuICAgIHRocm93IFR5cGVFcnJvcihcIkludmFsaWQgYXJndW1lbnRcIik7XG4gIH1cbiAgdGhpcy5fbWF4UmVzcG9uc2VTaXplID0gbjtcbiAgcmV0dXJuIHRoaXM7XG59O1xuXG4vKipcbiAqIENvbnZlcnQgdG8gYSBwbGFpbiBqYXZhc2NyaXB0IG9iamVjdCAobm90IEpTT04gc3RyaW5nKSBvZiBzY2FsYXIgcHJvcGVydGllcy5cbiAqIE5vdGUgYXMgdGhpcyBtZXRob2QgaXMgZGVzaWduZWQgdG8gcmV0dXJuIGEgdXNlZnVsIG5vbi10aGlzIHZhbHVlLFxuICogaXQgY2Fubm90IGJlIGNoYWluZWQuXG4gKlxuICogQHJldHVybiB7T2JqZWN0fSBkZXNjcmliaW5nIG1ldGhvZCwgdXJsLCBhbmQgZGF0YSBvZiB0aGlzIHJlcXVlc3RcbiAqIEBhcGkgcHVibGljXG4gKi9cblxuUmVxdWVzdEJhc2UucHJvdG90eXBlLnRvSlNPTiA9IGZ1bmN0aW9uKCkge1xuICByZXR1cm4ge1xuICAgIG1ldGhvZDogdGhpcy5tZXRob2QsXG4gICAgdXJsOiB0aGlzLnVybCxcbiAgICBkYXRhOiB0aGlzLl9kYXRhLFxuICAgIGhlYWRlcnM6IHRoaXMuX2hlYWRlcixcbiAgfTtcbn07XG5cbi8qKlxuICogU2VuZCBgZGF0YWAgYXMgdGhlIHJlcXVlc3QgYm9keSwgZGVmYXVsdGluZyB0aGUgYC50eXBlKClgIHRvIFwianNvblwiIHdoZW5cbiAqIGFuIG9iamVjdCBpcyBnaXZlbi5cbiAqXG4gKiBFeGFtcGxlczpcbiAqXG4gKiAgICAgICAvLyBtYW51YWwganNvblxuICogICAgICAgcmVxdWVzdC5wb3N0KCcvdXNlcicpXG4gKiAgICAgICAgIC50eXBlKCdqc29uJylcbiAqICAgICAgICAgLnNlbmQoJ3tcIm5hbWVcIjpcInRqXCJ9JylcbiAqICAgICAgICAgLmVuZChjYWxsYmFjaylcbiAqXG4gKiAgICAgICAvLyBhdXRvIGpzb25cbiAqICAgICAgIHJlcXVlc3QucG9zdCgnL3VzZXInKVxuICogICAgICAgICAuc2VuZCh7IG5hbWU6ICd0aicgfSlcbiAqICAgICAgICAgLmVuZChjYWxsYmFjaylcbiAqXG4gKiAgICAgICAvLyBtYW51YWwgeC13d3ctZm9ybS11cmxlbmNvZGVkXG4gKiAgICAgICByZXF1ZXN0LnBvc3QoJy91c2VyJylcbiAqICAgICAgICAgLnR5cGUoJ2Zvcm0nKVxuICogICAgICAgICAuc2VuZCgnbmFtZT10aicpXG4gKiAgICAgICAgIC5lbmQoY2FsbGJhY2spXG4gKlxuICogICAgICAgLy8gYXV0byB4LXd3dy1mb3JtLXVybGVuY29kZWRcbiAqICAgICAgIHJlcXVlc3QucG9zdCgnL3VzZXInKVxuICogICAgICAgICAudHlwZSgnZm9ybScpXG4gKiAgICAgICAgIC5zZW5kKHsgbmFtZTogJ3RqJyB9KVxuICogICAgICAgICAuZW5kKGNhbGxiYWNrKVxuICpcbiAqICAgICAgIC8vIGRlZmF1bHRzIHRvIHgtd3d3LWZvcm0tdXJsZW5jb2RlZFxuICogICAgICByZXF1ZXN0LnBvc3QoJy91c2VyJylcbiAqICAgICAgICAuc2VuZCgnbmFtZT10b2JpJylcbiAqICAgICAgICAuc2VuZCgnc3BlY2llcz1mZXJyZXQnKVxuICogICAgICAgIC5lbmQoY2FsbGJhY2spXG4gKlxuICogQHBhcmFtIHtTdHJpbmd8T2JqZWN0fSBkYXRhXG4gKiBAcmV0dXJuIHtSZXF1ZXN0fSBmb3IgY2hhaW5pbmdcbiAqIEBhcGkgcHVibGljXG4gKi9cblxuUmVxdWVzdEJhc2UucHJvdG90eXBlLnNlbmQgPSBmdW5jdGlvbihkYXRhKXtcbiAgdmFyIGlzT2JqID0gaXNPYmplY3QoZGF0YSk7XG4gIHZhciB0eXBlID0gdGhpcy5faGVhZGVyWydjb250ZW50LXR5cGUnXTtcblxuICBpZiAodGhpcy5fZm9ybURhdGEpIHtcbiAgICBjb25zb2xlLmVycm9yKFwiLnNlbmQoKSBjYW4ndCBiZSB1c2VkIGlmIC5hdHRhY2goKSBvciAuZmllbGQoKSBpcyB1c2VkLiBQbGVhc2UgdXNlIG9ubHkgLnNlbmQoKSBvciBvbmx5IC5maWVsZCgpICYgLmF0dGFjaCgpXCIpO1xuICB9XG5cbiAgaWYgKGlzT2JqICYmICF0aGlzLl9kYXRhKSB7XG4gICAgaWYgKEFycmF5LmlzQXJyYXkoZGF0YSkpIHtcbiAgICAgIHRoaXMuX2RhdGEgPSBbXTtcbiAgICB9IGVsc2UgaWYgKCF0aGlzLl9pc0hvc3QoZGF0YSkpIHtcbiAgICAgIHRoaXMuX2RhdGEgPSB7fTtcbiAgICB9XG4gIH0gZWxzZSBpZiAoZGF0YSAmJiB0aGlzLl9kYXRhICYmIHRoaXMuX2lzSG9zdCh0aGlzLl9kYXRhKSkge1xuICAgIHRocm93IEVycm9yKFwiQ2FuJ3QgbWVyZ2UgdGhlc2Ugc2VuZCBjYWxsc1wiKTtcbiAgfVxuXG4gIC8vIG1lcmdlXG4gIGlmIChpc09iaiAmJiBpc09iamVjdCh0aGlzLl9kYXRhKSkge1xuICAgIGZvciAodmFyIGtleSBpbiBkYXRhKSB7XG4gICAgICB0aGlzLl9kYXRhW2tleV0gPSBkYXRhW2tleV07XG4gICAgfVxuICB9IGVsc2UgaWYgKCdzdHJpbmcnID09IHR5cGVvZiBkYXRhKSB7XG4gICAgLy8gZGVmYXVsdCB0byB4LXd3dy1mb3JtLXVybGVuY29kZWRcbiAgICBpZiAoIXR5cGUpIHRoaXMudHlwZSgnZm9ybScpO1xuICAgIHR5cGUgPSB0aGlzLl9oZWFkZXJbJ2NvbnRlbnQtdHlwZSddO1xuICAgIGlmICgnYXBwbGljYXRpb24veC13d3ctZm9ybS11cmxlbmNvZGVkJyA9PSB0eXBlKSB7XG4gICAgICB0aGlzLl9kYXRhID0gdGhpcy5fZGF0YVxuICAgICAgICA/IHRoaXMuX2RhdGEgKyAnJicgKyBkYXRhXG4gICAgICAgIDogZGF0YTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5fZGF0YSA9ICh0aGlzLl9kYXRhIHx8ICcnKSArIGRhdGE7XG4gICAgfVxuICB9IGVsc2Uge1xuICAgIHRoaXMuX2RhdGEgPSBkYXRhO1xuICB9XG5cbiAgaWYgKCFpc09iaiB8fCB0aGlzLl9pc0hvc3QoZGF0YSkpIHtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIC8vIGRlZmF1bHQgdG8ganNvblxuICBpZiAoIXR5cGUpIHRoaXMudHlwZSgnanNvbicpO1xuICByZXR1cm4gdGhpcztcbn07XG5cbi8qKlxuICogU29ydCBgcXVlcnlzdHJpbmdgIGJ5IHRoZSBzb3J0IGZ1bmN0aW9uXG4gKlxuICpcbiAqIEV4YW1wbGVzOlxuICpcbiAqICAgICAgIC8vIGRlZmF1bHQgb3JkZXJcbiAqICAgICAgIHJlcXVlc3QuZ2V0KCcvdXNlcicpXG4gKiAgICAgICAgIC5xdWVyeSgnbmFtZT1OaWNrJylcbiAqICAgICAgICAgLnF1ZXJ5KCdzZWFyY2g9TWFubnknKVxuICogICAgICAgICAuc29ydFF1ZXJ5KClcbiAqICAgICAgICAgLmVuZChjYWxsYmFjaylcbiAqXG4gKiAgICAgICAvLyBjdXN0b21pemVkIHNvcnQgZnVuY3Rpb25cbiAqICAgICAgIHJlcXVlc3QuZ2V0KCcvdXNlcicpXG4gKiAgICAgICAgIC5xdWVyeSgnbmFtZT1OaWNrJylcbiAqICAgICAgICAgLnF1ZXJ5KCdzZWFyY2g9TWFubnknKVxuICogICAgICAgICAuc29ydFF1ZXJ5KGZ1bmN0aW9uKGEsIGIpe1xuICogICAgICAgICAgIHJldHVybiBhLmxlbmd0aCAtIGIubGVuZ3RoO1xuICogICAgICAgICB9KVxuICogICAgICAgICAuZW5kKGNhbGxiYWNrKVxuICpcbiAqXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBzb3J0XG4gKiBAcmV0dXJuIHtSZXF1ZXN0fSBmb3IgY2hhaW5pbmdcbiAqIEBhcGkgcHVibGljXG4gKi9cblxuUmVxdWVzdEJhc2UucHJvdG90eXBlLnNvcnRRdWVyeSA9IGZ1bmN0aW9uKHNvcnQpIHtcbiAgLy8gX3NvcnQgZGVmYXVsdCB0byB0cnVlIGJ1dCBvdGhlcndpc2UgY2FuIGJlIGEgZnVuY3Rpb24gb3IgYm9vbGVhblxuICB0aGlzLl9zb3J0ID0gdHlwZW9mIHNvcnQgPT09ICd1bmRlZmluZWQnID8gdHJ1ZSA6IHNvcnQ7XG4gIHJldHVybiB0aGlzO1xufTtcblxuLyoqXG4gKiBDb21wb3NlIHF1ZXJ5c3RyaW5nIHRvIGFwcGVuZCB0byByZXEudXJsXG4gKlxuICogQGFwaSBwcml2YXRlXG4gKi9cblJlcXVlc3RCYXNlLnByb3RvdHlwZS5fZmluYWxpemVRdWVyeVN0cmluZyA9IGZ1bmN0aW9uKCl7XG4gIHZhciBxdWVyeSA9IHRoaXMuX3F1ZXJ5LmpvaW4oJyYnKTtcbiAgaWYgKHF1ZXJ5KSB7XG4gICAgdGhpcy51cmwgKz0gKHRoaXMudXJsLmluZGV4T2YoJz8nKSA+PSAwID8gJyYnIDogJz8nKSArIHF1ZXJ5O1xuICB9XG4gIHRoaXMuX3F1ZXJ5Lmxlbmd0aCA9IDA7IC8vIE1ha2VzIHRoZSBjYWxsIGlkZW1wb3RlbnRcblxuICBpZiAodGhpcy5fc29ydCkge1xuICAgIHZhciBpbmRleCA9IHRoaXMudXJsLmluZGV4T2YoJz8nKTtcbiAgICBpZiAoaW5kZXggPj0gMCkge1xuICAgICAgdmFyIHF1ZXJ5QXJyID0gdGhpcy51cmwuc3Vic3RyaW5nKGluZGV4ICsgMSkuc3BsaXQoJyYnKTtcbiAgICAgIGlmICgnZnVuY3Rpb24nID09PSB0eXBlb2YgdGhpcy5fc29ydCkge1xuICAgICAgICBxdWVyeUFyci5zb3J0KHRoaXMuX3NvcnQpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcXVlcnlBcnIuc29ydCgpO1xuICAgICAgfVxuICAgICAgdGhpcy51cmwgPSB0aGlzLnVybC5zdWJzdHJpbmcoMCwgaW5kZXgpICsgJz8nICsgcXVlcnlBcnIuam9pbignJicpO1xuICAgIH1cbiAgfVxufTtcblxuLy8gRm9yIGJhY2t3YXJkcyBjb21wYXQgb25seVxuUmVxdWVzdEJhc2UucHJvdG90eXBlLl9hcHBlbmRRdWVyeVN0cmluZyA9IGZ1bmN0aW9uKCkge2NvbnNvbGUudHJhY2UoXCJVbnN1cHBvcnRlZFwiKTt9XG5cbi8qKlxuICogSW52b2tlIGNhbGxiYWNrIHdpdGggdGltZW91dCBlcnJvci5cbiAqXG4gKiBAYXBpIHByaXZhdGVcbiAqL1xuXG5SZXF1ZXN0QmFzZS5wcm90b3R5cGUuX3RpbWVvdXRFcnJvciA9IGZ1bmN0aW9uKHJlYXNvbiwgdGltZW91dCwgZXJybm8pe1xuICBpZiAodGhpcy5fYWJvcnRlZCkge1xuICAgIHJldHVybjtcbiAgfVxuICB2YXIgZXJyID0gbmV3IEVycm9yKHJlYXNvbiArIHRpbWVvdXQgKyAnbXMgZXhjZWVkZWQnKTtcbiAgZXJyLnRpbWVvdXQgPSB0aW1lb3V0O1xuICBlcnIuY29kZSA9ICdFQ09OTkFCT1JURUQnO1xuICBlcnIuZXJybm8gPSBlcnJubztcbiAgdGhpcy50aW1lZG91dCA9IHRydWU7XG4gIHRoaXMuYWJvcnQoKTtcbiAgdGhpcy5jYWxsYmFjayhlcnIpO1xufTtcblxuUmVxdWVzdEJhc2UucHJvdG90eXBlLl9zZXRUaW1lb3V0cyA9IGZ1bmN0aW9uKCkge1xuICB2YXIgc2VsZiA9IHRoaXM7XG5cbiAgLy8gZGVhZGxpbmVcbiAgaWYgKHRoaXMuX3RpbWVvdXQgJiYgIXRoaXMuX3RpbWVyKSB7XG4gICAgdGhpcy5fdGltZXIgPSBzZXRUaW1lb3V0KGZ1bmN0aW9uKCl7XG4gICAgICBzZWxmLl90aW1lb3V0RXJyb3IoJ1RpbWVvdXQgb2YgJywgc2VsZi5fdGltZW91dCwgJ0VUSU1FJyk7XG4gICAgfSwgdGhpcy5fdGltZW91dCk7XG4gIH1cbiAgLy8gcmVzcG9uc2UgdGltZW91dFxuICBpZiAodGhpcy5fcmVzcG9uc2VUaW1lb3V0ICYmICF0aGlzLl9yZXNwb25zZVRpbWVvdXRUaW1lcikge1xuICAgIHRoaXMuX3Jlc3BvbnNlVGltZW91dFRpbWVyID0gc2V0VGltZW91dChmdW5jdGlvbigpe1xuICAgICAgc2VsZi5fdGltZW91dEVycm9yKCdSZXNwb25zZSB0aW1lb3V0IG9mICcsIHNlbGYuX3Jlc3BvbnNlVGltZW91dCwgJ0VUSU1FRE9VVCcpO1xuICAgIH0sIHRoaXMuX3Jlc3BvbnNlVGltZW91dCk7XG4gIH1cbn07XG4iXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///25\n")},function(module,exports,__webpack_require__){"use strict";eval('\n\n/**\n * Module dependencies.\n */\n\nvar utils = __webpack_require__(27);\n\n/**\n * Expose `ResponseBase`.\n */\n\nmodule.exports = ResponseBase;\n\n/**\n * Initialize a new `ResponseBase`.\n *\n * @api public\n */\n\nfunction ResponseBase(obj) {\n  if (obj) return mixin(obj);\n}\n\n/**\n * Mixin the prototype properties.\n *\n * @param {Object} obj\n * @return {Object}\n * @api private\n */\n\nfunction mixin(obj) {\n  for (var key in ResponseBase.prototype) {\n    obj[key] = ResponseBase.prototype[key];\n  }\n  return obj;\n}\n\n/**\n * Get case-insensitive `field` value.\n *\n * @param {String} field\n * @return {String}\n * @api public\n */\n\nResponseBase.prototype.get = function(field) {\n  return this.header[field.toLowerCase()];\n};\n\n/**\n * Set header related properties:\n *\n *   - `.type` the content type without params\n *\n * A response of "Content-Type: text/plain; charset=utf-8"\n * will provide you with a `.type` of "text/plain".\n *\n * @param {Object} header\n * @api private\n */\n\nResponseBase.prototype._setHeaderProperties = function(header){\n    // TODO: moar!\n    // TODO: make this a util\n\n    // content-type\n    var ct = header[\'content-type\'] || \'\';\n    this.type = utils.type(ct);\n\n    // params\n    var params = utils.params(ct);\n    for (var key in params) this[key] = params[key];\n\n    this.links = {};\n\n    // links\n    try {\n        if (header.link) {\n            this.links = utils.parseLinks(header.link);\n        }\n    } catch (err) {\n        // ignore\n    }\n};\n\n/**\n * Set flags such as `.ok` based on `status`.\n *\n * For example a 2xx response will give you a `.ok` of __true__\n * whereas 5xx will be __false__ and `.error` will be __true__. The\n * `.clientError` and `.serverError` are also available to be more\n * specific, and `.statusType` is the class of error ranging from 1..5\n * sometimes useful for mapping respond colors etc.\n *\n * "sugar" properties are also defined for common cases. Currently providing:\n *\n *   - .noContent\n *   - .badRequest\n *   - .unauthorized\n *   - .notAcceptable\n *   - .notFound\n *\n * @param {Number} status\n * @api private\n */\n\nResponseBase.prototype._setStatusProperties = function(status){\n    var type = status / 100 | 0;\n\n    // status / class\n    this.status = this.statusCode = status;\n    this.statusType = type;\n\n    // basics\n    this.info = 1 == type;\n    this.ok = 2 == type;\n    this.redirect = 3 == type;\n    this.clientError = 4 == type;\n    this.serverError = 5 == type;\n    this.error = (4 == type || 5 == type)\n        ? this.toError()\n        : false;\n\n    // sugar\n    this.created = 201 == status;\n    this.accepted = 202 == status;\n    this.noContent = 204 == status;\n    this.badRequest = 400 == status;\n    this.unauthorized = 401 == status;\n    this.notAcceptable = 406 == status;\n    this.forbidden = 403 == status;\n    this.notFound = 404 == status;\n    this.unprocessableEntity = 422 == status;\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMjYuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9AOTFhcHAvbmluZXlpLmxpYi5zcGFya2NvcmUvLi9ub2RlX21vZHVsZXMvc3VwZXJhZ2VudC9saWIvcmVzcG9uc2UtYmFzZS5qcz9mZjIxIl0sInNvdXJjZXNDb250ZW50IjpbIid1c2Ugc3RyaWN0JztcblxuLyoqXG4gKiBNb2R1bGUgZGVwZW5kZW5jaWVzLlxuICovXG5cbnZhciB1dGlscyA9IHJlcXVpcmUoJy4vdXRpbHMnKTtcblxuLyoqXG4gKiBFeHBvc2UgYFJlc3BvbnNlQmFzZWAuXG4gKi9cblxubW9kdWxlLmV4cG9ydHMgPSBSZXNwb25zZUJhc2U7XG5cbi8qKlxuICogSW5pdGlhbGl6ZSBhIG5ldyBgUmVzcG9uc2VCYXNlYC5cbiAqXG4gKiBAYXBpIHB1YmxpY1xuICovXG5cbmZ1bmN0aW9uIFJlc3BvbnNlQmFzZShvYmopIHtcbiAgaWYgKG9iaikgcmV0dXJuIG1peGluKG9iaik7XG59XG5cbi8qKlxuICogTWl4aW4gdGhlIHByb3RvdHlwZSBwcm9wZXJ0aWVzLlxuICpcbiAqIEBwYXJhbSB7T2JqZWN0fSBvYmpcbiAqIEByZXR1cm4ge09iamVjdH1cbiAqIEBhcGkgcHJpdmF0ZVxuICovXG5cbmZ1bmN0aW9uIG1peGluKG9iaikge1xuICBmb3IgKHZhciBrZXkgaW4gUmVzcG9uc2VCYXNlLnByb3RvdHlwZSkge1xuICAgIG9ialtrZXldID0gUmVzcG9uc2VCYXNlLnByb3RvdHlwZVtrZXldO1xuICB9XG4gIHJldHVybiBvYmo7XG59XG5cbi8qKlxuICogR2V0IGNhc2UtaW5zZW5zaXRpdmUgYGZpZWxkYCB2YWx1ZS5cbiAqXG4gKiBAcGFyYW0ge1N0cmluZ30gZmllbGRcbiAqIEByZXR1cm4ge1N0cmluZ31cbiAqIEBhcGkgcHVibGljXG4gKi9cblxuUmVzcG9uc2VCYXNlLnByb3RvdHlwZS5nZXQgPSBmdW5jdGlvbihmaWVsZCkge1xuICByZXR1cm4gdGhpcy5oZWFkZXJbZmllbGQudG9Mb3dlckNhc2UoKV07XG59O1xuXG4vKipcbiAqIFNldCBoZWFkZXIgcmVsYXRlZCBwcm9wZXJ0aWVzOlxuICpcbiAqICAgLSBgLnR5cGVgIHRoZSBjb250ZW50IHR5cGUgd2l0aG91dCBwYXJhbXNcbiAqXG4gKiBBIHJlc3BvbnNlIG9mIFwiQ29udGVudC1UeXBlOiB0ZXh0L3BsYWluOyBjaGFyc2V0PXV0Zi04XCJcbiAqIHdpbGwgcHJvdmlkZSB5b3Ugd2l0aCBhIGAudHlwZWAgb2YgXCJ0ZXh0L3BsYWluXCIuXG4gKlxuICogQHBhcmFtIHtPYmplY3R9IGhlYWRlclxuICogQGFwaSBwcml2YXRlXG4gKi9cblxuUmVzcG9uc2VCYXNlLnByb3RvdHlwZS5fc2V0SGVhZGVyUHJvcGVydGllcyA9IGZ1bmN0aW9uKGhlYWRlcil7XG4gICAgLy8gVE9ETzogbW9hciFcbiAgICAvLyBUT0RPOiBtYWtlIHRoaXMgYSB1dGlsXG5cbiAgICAvLyBjb250ZW50LXR5cGVcbiAgICB2YXIgY3QgPSBoZWFkZXJbJ2NvbnRlbnQtdHlwZSddIHx8ICcnO1xuICAgIHRoaXMudHlwZSA9IHV0aWxzLnR5cGUoY3QpO1xuXG4gICAgLy8gcGFyYW1zXG4gICAgdmFyIHBhcmFtcyA9IHV0aWxzLnBhcmFtcyhjdCk7XG4gICAgZm9yICh2YXIga2V5IGluIHBhcmFtcykgdGhpc1trZXldID0gcGFyYW1zW2tleV07XG5cbiAgICB0aGlzLmxpbmtzID0ge307XG5cbiAgICAvLyBsaW5rc1xuICAgIHRyeSB7XG4gICAgICAgIGlmIChoZWFkZXIubGluaykge1xuICAgICAgICAgICAgdGhpcy5saW5rcyA9IHV0aWxzLnBhcnNlTGlua3MoaGVhZGVyLmxpbmspO1xuICAgICAgICB9XG4gICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICAgIC8vIGlnbm9yZVxuICAgIH1cbn07XG5cbi8qKlxuICogU2V0IGZsYWdzIHN1Y2ggYXMgYC5va2AgYmFzZWQgb24gYHN0YXR1c2AuXG4gKlxuICogRm9yIGV4YW1wbGUgYSAyeHggcmVzcG9uc2Ugd2lsbCBnaXZlIHlvdSBhIGAub2tgIG9mIF9fdHJ1ZV9fXG4gKiB3aGVyZWFzIDV4eCB3aWxsIGJlIF9fZmFsc2VfXyBhbmQgYC5lcnJvcmAgd2lsbCBiZSBfX3RydWVfXy4gVGhlXG4gKiBgLmNsaWVudEVycm9yYCBhbmQgYC5zZXJ2ZXJFcnJvcmAgYXJlIGFsc28gYXZhaWxhYmxlIHRvIGJlIG1vcmVcbiAqIHNwZWNpZmljLCBhbmQgYC5zdGF0dXNUeXBlYCBpcyB0aGUgY2xhc3Mgb2YgZXJyb3IgcmFuZ2luZyBmcm9tIDEuLjVcbiAqIHNvbWV0aW1lcyB1c2VmdWwgZm9yIG1hcHBpbmcgcmVzcG9uZCBjb2xvcnMgZXRjLlxuICpcbiAqIFwic3VnYXJcIiBwcm9wZXJ0aWVzIGFyZSBhbHNvIGRlZmluZWQgZm9yIGNvbW1vbiBjYXNlcy4gQ3VycmVudGx5IHByb3ZpZGluZzpcbiAqXG4gKiAgIC0gLm5vQ29udGVudFxuICogICAtIC5iYWRSZXF1ZXN0XG4gKiAgIC0gLnVuYXV0aG9yaXplZFxuICogICAtIC5ub3RBY2NlcHRhYmxlXG4gKiAgIC0gLm5vdEZvdW5kXG4gKlxuICogQHBhcmFtIHtOdW1iZXJ9IHN0YXR1c1xuICogQGFwaSBwcml2YXRlXG4gKi9cblxuUmVzcG9uc2VCYXNlLnByb3RvdHlwZS5fc2V0U3RhdHVzUHJvcGVydGllcyA9IGZ1bmN0aW9uKHN0YXR1cyl7XG4gICAgdmFyIHR5cGUgPSBzdGF0dXMgLyAxMDAgfCAwO1xuXG4gICAgLy8gc3RhdHVzIC8gY2xhc3NcbiAgICB0aGlzLnN0YXR1cyA9IHRoaXMuc3RhdHVzQ29kZSA9IHN0YXR1cztcbiAgICB0aGlzLnN0YXR1c1R5cGUgPSB0eXBlO1xuXG4gICAgLy8gYmFzaWNzXG4gICAgdGhpcy5pbmZvID0gMSA9PSB0eXBlO1xuICAgIHRoaXMub2sgPSAyID09IHR5cGU7XG4gICAgdGhpcy5yZWRpcmVjdCA9IDMgPT0gdHlwZTtcbiAgICB0aGlzLmNsaWVudEVycm9yID0gNCA9PSB0eXBlO1xuICAgIHRoaXMuc2VydmVyRXJyb3IgPSA1ID09IHR5cGU7XG4gICAgdGhpcy5lcnJvciA9ICg0ID09IHR5cGUgfHwgNSA9PSB0eXBlKVxuICAgICAgICA/IHRoaXMudG9FcnJvcigpXG4gICAgICAgIDogZmFsc2U7XG5cbiAgICAvLyBzdWdhclxuICAgIHRoaXMuY3JlYXRlZCA9IDIwMSA9PSBzdGF0dXM7XG4gICAgdGhpcy5hY2NlcHRlZCA9IDIwMiA9PSBzdGF0dXM7XG4gICAgdGhpcy5ub0NvbnRlbnQgPSAyMDQgPT0gc3RhdHVzO1xuICAgIHRoaXMuYmFkUmVxdWVzdCA9IDQwMCA9PSBzdGF0dXM7XG4gICAgdGhpcy51bmF1dGhvcml6ZWQgPSA0MDEgPT0gc3RhdHVzO1xuICAgIHRoaXMubm90QWNjZXB0YWJsZSA9IDQwNiA9PSBzdGF0dXM7XG4gICAgdGhpcy5mb3JiaWRkZW4gPSA0MDMgPT0gc3RhdHVzO1xuICAgIHRoaXMubm90Rm91bmQgPSA0MDQgPT0gc3RhdHVzO1xuICAgIHRoaXMudW5wcm9jZXNzYWJsZUVudGl0eSA9IDQyMiA9PSBzdGF0dXM7XG59O1xuIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///26\n')},function(module,exports,__webpack_require__){"use strict";eval("\n\n/**\n * Return the mime type for the given `str`.\n *\n * @param {String} str\n * @return {String}\n * @api private\n */\n\nexports.type = function(str){\n  return str.split(/ *; */).shift();\n};\n\n/**\n * Return header field parameters.\n *\n * @param {String} str\n * @return {Object}\n * @api private\n */\n\nexports.params = function(str){\n  return str.split(/ *; */).reduce(function(obj, str){\n    var parts = str.split(/ *= */);\n    var key = parts.shift();\n    var val = parts.shift();\n\n    if (key && val) obj[key] = val;\n    return obj;\n  }, {});\n};\n\n/**\n * Parse Link header fields.\n *\n * @param {String} str\n * @return {Object}\n * @api private\n */\n\nexports.parseLinks = function(str){\n  return str.split(/ *, */).reduce(function(obj, str){\n    var parts = str.split(/ *; */);\n    var url = parts[0].slice(1, -1);\n    var rel = parts[1].split(/ *= */)[1].slice(1, -1);\n    obj[rel] = url;\n    return obj;\n  }, {});\n};\n\n/**\n * Strip content related fields from `header`.\n *\n * @param {Object} header\n * @return {Object} header\n * @api private\n */\n\nexports.cleanHeader = function(header, changesOrigin){\n  delete header['content-type'];\n  delete header['content-length'];\n  delete header['transfer-encoding'];\n  delete header['host'];\n  // secuirty\n  if (changesOrigin) {\n    delete header['authorization'];\n    delete header['cookie'];\n  }\n  return header;\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMjcuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9AOTFhcHAvbmluZXlpLmxpYi5zcGFya2NvcmUvLi9ub2RlX21vZHVsZXMvc3VwZXJhZ2VudC9saWIvdXRpbHMuanM/YTA3OSJdLCJzb3VyY2VzQ29udGVudCI6WyIndXNlIHN0cmljdCc7XG5cbi8qKlxuICogUmV0dXJuIHRoZSBtaW1lIHR5cGUgZm9yIHRoZSBnaXZlbiBgc3RyYC5cbiAqXG4gKiBAcGFyYW0ge1N0cmluZ30gc3RyXG4gKiBAcmV0dXJuIHtTdHJpbmd9XG4gKiBAYXBpIHByaXZhdGVcbiAqL1xuXG5leHBvcnRzLnR5cGUgPSBmdW5jdGlvbihzdHIpe1xuICByZXR1cm4gc3RyLnNwbGl0KC8gKjsgKi8pLnNoaWZ0KCk7XG59O1xuXG4vKipcbiAqIFJldHVybiBoZWFkZXIgZmllbGQgcGFyYW1ldGVycy5cbiAqXG4gKiBAcGFyYW0ge1N0cmluZ30gc3RyXG4gKiBAcmV0dXJuIHtPYmplY3R9XG4gKiBAYXBpIHByaXZhdGVcbiAqL1xuXG5leHBvcnRzLnBhcmFtcyA9IGZ1bmN0aW9uKHN0cil7XG4gIHJldHVybiBzdHIuc3BsaXQoLyAqOyAqLykucmVkdWNlKGZ1bmN0aW9uKG9iaiwgc3RyKXtcbiAgICB2YXIgcGFydHMgPSBzdHIuc3BsaXQoLyAqPSAqLyk7XG4gICAgdmFyIGtleSA9IHBhcnRzLnNoaWZ0KCk7XG4gICAgdmFyIHZhbCA9IHBhcnRzLnNoaWZ0KCk7XG5cbiAgICBpZiAoa2V5ICYmIHZhbCkgb2JqW2tleV0gPSB2YWw7XG4gICAgcmV0dXJuIG9iajtcbiAgfSwge30pO1xufTtcblxuLyoqXG4gKiBQYXJzZSBMaW5rIGhlYWRlciBmaWVsZHMuXG4gKlxuICogQHBhcmFtIHtTdHJpbmd9IHN0clxuICogQHJldHVybiB7T2JqZWN0fVxuICogQGFwaSBwcml2YXRlXG4gKi9cblxuZXhwb3J0cy5wYXJzZUxpbmtzID0gZnVuY3Rpb24oc3RyKXtcbiAgcmV0dXJuIHN0ci5zcGxpdCgvICosICovKS5yZWR1Y2UoZnVuY3Rpb24ob2JqLCBzdHIpe1xuICAgIHZhciBwYXJ0cyA9IHN0ci5zcGxpdCgvICo7ICovKTtcbiAgICB2YXIgdXJsID0gcGFydHNbMF0uc2xpY2UoMSwgLTEpO1xuICAgIHZhciByZWwgPSBwYXJ0c1sxXS5zcGxpdCgvICo9ICovKVsxXS5zbGljZSgxLCAtMSk7XG4gICAgb2JqW3JlbF0gPSB1cmw7XG4gICAgcmV0dXJuIG9iajtcbiAgfSwge30pO1xufTtcblxuLyoqXG4gKiBTdHJpcCBjb250ZW50IHJlbGF0ZWQgZmllbGRzIGZyb20gYGhlYWRlcmAuXG4gKlxuICogQHBhcmFtIHtPYmplY3R9IGhlYWRlclxuICogQHJldHVybiB7T2JqZWN0fSBoZWFkZXJcbiAqIEBhcGkgcHJpdmF0ZVxuICovXG5cbmV4cG9ydHMuY2xlYW5IZWFkZXIgPSBmdW5jdGlvbihoZWFkZXIsIGNoYW5nZXNPcmlnaW4pe1xuICBkZWxldGUgaGVhZGVyWydjb250ZW50LXR5cGUnXTtcbiAgZGVsZXRlIGhlYWRlclsnY29udGVudC1sZW5ndGgnXTtcbiAgZGVsZXRlIGhlYWRlclsndHJhbnNmZXItZW5jb2RpbmcnXTtcbiAgZGVsZXRlIGhlYWRlclsnaG9zdCddO1xuICAvLyBzZWN1aXJ0eVxuICBpZiAoY2hhbmdlc09yaWdpbikge1xuICAgIGRlbGV0ZSBoZWFkZXJbJ2F1dGhvcml6YXRpb24nXTtcbiAgICBkZWxldGUgaGVhZGVyWydjb29raWUnXTtcbiAgfVxuICByZXR1cm4gaGVhZGVyO1xufTtcbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///27\n")},function(module,exports){eval('function Agent() {\n  this._defaults = [];\n}\n\n["use", "on", "once", "set", "query", "type", "accept", "auth", "withCredentials", "sortQuery", "retry", "ok", "redirects",\n "timeout", "buffer", "serialize", "parse", "ca", "key", "pfx", "cert"].forEach(function(fn) {\n  /** Default setting for all requests from this agent */\n  Agent.prototype[fn] = function(/*varargs*/) {\n    this._defaults.push({fn:fn, arguments:arguments});\n    return this;\n  }\n});\n\nAgent.prototype._setDefaults = function(req) {\n    this._defaults.forEach(function(def) {\n      req[def.fn].apply(req, def.arguments);\n    });\n};\n\nmodule.exports = Agent;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMjguanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9AOTFhcHAvbmluZXlpLmxpYi5zcGFya2NvcmUvLi9ub2RlX21vZHVsZXMvc3VwZXJhZ2VudC9saWIvYWdlbnQtYmFzZS5qcz85ZDk2Il0sInNvdXJjZXNDb250ZW50IjpbImZ1bmN0aW9uIEFnZW50KCkge1xuICB0aGlzLl9kZWZhdWx0cyA9IFtdO1xufVxuXG5bXCJ1c2VcIiwgXCJvblwiLCBcIm9uY2VcIiwgXCJzZXRcIiwgXCJxdWVyeVwiLCBcInR5cGVcIiwgXCJhY2NlcHRcIiwgXCJhdXRoXCIsIFwid2l0aENyZWRlbnRpYWxzXCIsIFwic29ydFF1ZXJ5XCIsIFwicmV0cnlcIiwgXCJva1wiLCBcInJlZGlyZWN0c1wiLFxuIFwidGltZW91dFwiLCBcImJ1ZmZlclwiLCBcInNlcmlhbGl6ZVwiLCBcInBhcnNlXCIsIFwiY2FcIiwgXCJrZXlcIiwgXCJwZnhcIiwgXCJjZXJ0XCJdLmZvckVhY2goZnVuY3Rpb24oZm4pIHtcbiAgLyoqIERlZmF1bHQgc2V0dGluZyBmb3IgYWxsIHJlcXVlc3RzIGZyb20gdGhpcyBhZ2VudCAqL1xuICBBZ2VudC5wcm90b3R5cGVbZm5dID0gZnVuY3Rpb24oLyp2YXJhcmdzKi8pIHtcbiAgICB0aGlzLl9kZWZhdWx0cy5wdXNoKHtmbjpmbiwgYXJndW1lbnRzOmFyZ3VtZW50c30pO1xuICAgIHJldHVybiB0aGlzO1xuICB9XG59KTtcblxuQWdlbnQucHJvdG90eXBlLl9zZXREZWZhdWx0cyA9IGZ1bmN0aW9uKHJlcSkge1xuICAgIHRoaXMuX2RlZmF1bHRzLmZvckVhY2goZnVuY3Rpb24oZGVmKSB7XG4gICAgICByZXFbZGVmLmZuXS5hcHBseShyZXEsIGRlZi5hcmd1bWVudHMpO1xuICAgIH0pO1xufTtcblxubW9kdWxlLmV4cG9ydHMgPSBBZ2VudDtcbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///28\n')},function(module,exports,__webpack_require__){eval("// extracted by mini-css-extract-plugin//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMjkuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9AOTFhcHAvbmluZXlpLmxpYi5zcGFya2NvcmUvLi9zcmMvY29tcG9uZW50cy9jaGVja0JveC9jaGVja0JveC5zY3NzPzI1YTIiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gZXh0cmFjdGVkIGJ5IG1pbmktY3NzLWV4dHJhY3QtcGx1Z2luIl0sIm1hcHBpbmdzIjoiQUFBQSIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///29\n")},function(module,exports,__webpack_require__){eval("// extracted by mini-css-extract-plugin//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMzAuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9AOTFhcHAvbmluZXlpLmxpYi5zcGFya2NvcmUvLi9zcmMvY29tcG9uZW50cy9yYWRpb0J1dHRvbi9yYWRpb0J1dHRvbi5zY3NzPzdhZDEiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gZXh0cmFjdGVkIGJ5IG1pbmktY3NzLWV4dHJhY3QtcGx1Z2luIl0sIm1hcHBpbmdzIjoiQUFBQSIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///30\n")},function(module,exports){eval("// Unique ID creation requires a high quality random # generator.  In the\n// browser this is a little complicated due to unknown quality of Math.random()\n// and inconsistent support for the `crypto` API.  We do the best we can via\n// feature-detection\n\n// getRandomValues needs to be invoked in a context where \"this\" is a Crypto\n// implementation. Also, find the complete implementation of crypto on IE11.\nvar getRandomValues = (typeof(crypto) != 'undefined' && crypto.getRandomValues && crypto.getRandomValues.bind(crypto)) ||\n                      (typeof(msCrypto) != 'undefined' && typeof window.msCrypto.getRandomValues == 'function' && msCrypto.getRandomValues.bind(msCrypto));\n\nif (getRandomValues) {\n  // WHATWG crypto RNG - http://wiki.whatwg.org/wiki/Crypto\n  var rnds8 = new Uint8Array(16); // eslint-disable-line no-undef\n\n  module.exports = function whatwgRNG() {\n    getRandomValues(rnds8);\n    return rnds8;\n  };\n} else {\n  // Math.random()-based (RNG)\n  //\n  // If all else fails, use Math.random().  It's fast, but is of unspecified\n  // quality.\n  var rnds = new Array(16);\n\n  module.exports = function mathRNG() {\n    for (var i = 0, r; i < 16; i++) {\n      if ((i & 0x03) === 0) r = Math.random() * 0x100000000;\n      rnds[i] = r >>> ((i & 0x03) << 3) & 0xff;\n    }\n\n    return rnds;\n  };\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMzEuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9AOTFhcHAvbmluZXlpLmxpYi5zcGFya2NvcmUvLi9ub2RlX21vZHVsZXMvdXVpZC9saWIvcm5nLWJyb3dzZXIuanM/ZTFmNCJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBVbmlxdWUgSUQgY3JlYXRpb24gcmVxdWlyZXMgYSBoaWdoIHF1YWxpdHkgcmFuZG9tICMgZ2VuZXJhdG9yLiAgSW4gdGhlXG4vLyBicm93c2VyIHRoaXMgaXMgYSBsaXR0bGUgY29tcGxpY2F0ZWQgZHVlIHRvIHVua25vd24gcXVhbGl0eSBvZiBNYXRoLnJhbmRvbSgpXG4vLyBhbmQgaW5jb25zaXN0ZW50IHN1cHBvcnQgZm9yIHRoZSBgY3J5cHRvYCBBUEkuICBXZSBkbyB0aGUgYmVzdCB3ZSBjYW4gdmlhXG4vLyBmZWF0dXJlLWRldGVjdGlvblxuXG4vLyBnZXRSYW5kb21WYWx1ZXMgbmVlZHMgdG8gYmUgaW52b2tlZCBpbiBhIGNvbnRleHQgd2hlcmUgXCJ0aGlzXCIgaXMgYSBDcnlwdG9cbi8vIGltcGxlbWVudGF0aW9uLiBBbHNvLCBmaW5kIHRoZSBjb21wbGV0ZSBpbXBsZW1lbnRhdGlvbiBvZiBjcnlwdG8gb24gSUUxMS5cbnZhciBnZXRSYW5kb21WYWx1ZXMgPSAodHlwZW9mKGNyeXB0bykgIT0gJ3VuZGVmaW5lZCcgJiYgY3J5cHRvLmdldFJhbmRvbVZhbHVlcyAmJiBjcnlwdG8uZ2V0UmFuZG9tVmFsdWVzLmJpbmQoY3J5cHRvKSkgfHxcbiAgICAgICAgICAgICAgICAgICAgICAodHlwZW9mKG1zQ3J5cHRvKSAhPSAndW5kZWZpbmVkJyAmJiB0eXBlb2Ygd2luZG93Lm1zQ3J5cHRvLmdldFJhbmRvbVZhbHVlcyA9PSAnZnVuY3Rpb24nICYmIG1zQ3J5cHRvLmdldFJhbmRvbVZhbHVlcy5iaW5kKG1zQ3J5cHRvKSk7XG5cbmlmIChnZXRSYW5kb21WYWx1ZXMpIHtcbiAgLy8gV0hBVFdHIGNyeXB0byBSTkcgLSBodHRwOi8vd2lraS53aGF0d2cub3JnL3dpa2kvQ3J5cHRvXG4gIHZhciBybmRzOCA9IG5ldyBVaW50OEFycmF5KDE2KTsgLy8gZXNsaW50LWRpc2FibGUtbGluZSBuby11bmRlZlxuXG4gIG1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gd2hhdHdnUk5HKCkge1xuICAgIGdldFJhbmRvbVZhbHVlcyhybmRzOCk7XG4gICAgcmV0dXJuIHJuZHM4O1xuICB9O1xufSBlbHNlIHtcbiAgLy8gTWF0aC5yYW5kb20oKS1iYXNlZCAoUk5HKVxuICAvL1xuICAvLyBJZiBhbGwgZWxzZSBmYWlscywgdXNlIE1hdGgucmFuZG9tKCkuICBJdCdzIGZhc3QsIGJ1dCBpcyBvZiB1bnNwZWNpZmllZFxuICAvLyBxdWFsaXR5LlxuICB2YXIgcm5kcyA9IG5ldyBBcnJheSgxNik7XG5cbiAgbW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiBtYXRoUk5HKCkge1xuICAgIGZvciAodmFyIGkgPSAwLCByOyBpIDwgMTY7IGkrKykge1xuICAgICAgaWYgKChpICYgMHgwMykgPT09IDApIHIgPSBNYXRoLnJhbmRvbSgpICogMHgxMDAwMDAwMDA7XG4gICAgICBybmRzW2ldID0gciA+Pj4gKChpICYgMHgwMykgPDwgMykgJiAweGZmO1xuICAgIH1cblxuICAgIHJldHVybiBybmRzO1xuICB9O1xufVxuIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///31\n")},function(module,exports){eval("/**\n * Convert array of 16 byte values to UUID string format of the form:\n * XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX\n */\nvar byteToHex = [];\nfor (var i = 0; i < 256; ++i) {\n  byteToHex[i] = (i + 0x100).toString(16).substr(1);\n}\n\nfunction bytesToUuid(buf, offset) {\n  var i = offset || 0;\n  var bth = byteToHex;\n  // join used to fix memory issue caused by concatenation: https://bugs.chromium.org/p/v8/issues/detail?id=3175#c4\n  return ([\n    bth[buf[i++]], bth[buf[i++]],\n    bth[buf[i++]], bth[buf[i++]], '-',\n    bth[buf[i++]], bth[buf[i++]], '-',\n    bth[buf[i++]], bth[buf[i++]], '-',\n    bth[buf[i++]], bth[buf[i++]], '-',\n    bth[buf[i++]], bth[buf[i++]],\n    bth[buf[i++]], bth[buf[i++]],\n    bth[buf[i++]], bth[buf[i++]]\n  ]).join('');\n}\n\nmodule.exports = bytesToUuid;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMzIuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9AOTFhcHAvbmluZXlpLmxpYi5zcGFya2NvcmUvLi9ub2RlX21vZHVsZXMvdXVpZC9saWIvYnl0ZXNUb1V1aWQuanM/MjM2NiJdLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIENvbnZlcnQgYXJyYXkgb2YgMTYgYnl0ZSB2YWx1ZXMgdG8gVVVJRCBzdHJpbmcgZm9ybWF0IG9mIHRoZSBmb3JtOlxuICogWFhYWFhYWFgtWFhYWC1YWFhYLVhYWFgtWFhYWFhYWFhYWFhYXG4gKi9cbnZhciBieXRlVG9IZXggPSBbXTtcbmZvciAodmFyIGkgPSAwOyBpIDwgMjU2OyArK2kpIHtcbiAgYnl0ZVRvSGV4W2ldID0gKGkgKyAweDEwMCkudG9TdHJpbmcoMTYpLnN1YnN0cigxKTtcbn1cblxuZnVuY3Rpb24gYnl0ZXNUb1V1aWQoYnVmLCBvZmZzZXQpIHtcbiAgdmFyIGkgPSBvZmZzZXQgfHwgMDtcbiAgdmFyIGJ0aCA9IGJ5dGVUb0hleDtcbiAgLy8gam9pbiB1c2VkIHRvIGZpeCBtZW1vcnkgaXNzdWUgY2F1c2VkIGJ5IGNvbmNhdGVuYXRpb246IGh0dHBzOi8vYnVncy5jaHJvbWl1bS5vcmcvcC92OC9pc3N1ZXMvZGV0YWlsP2lkPTMxNzUjYzRcbiAgcmV0dXJuIChbXG4gICAgYnRoW2J1ZltpKytdXSwgYnRoW2J1ZltpKytdXSxcbiAgICBidGhbYnVmW2krK11dLCBidGhbYnVmW2krK11dLCAnLScsXG4gICAgYnRoW2J1ZltpKytdXSwgYnRoW2J1ZltpKytdXSwgJy0nLFxuICAgIGJ0aFtidWZbaSsrXV0sIGJ0aFtidWZbaSsrXV0sICctJyxcbiAgICBidGhbYnVmW2krK11dLCBidGhbYnVmW2krK11dLCAnLScsXG4gICAgYnRoW2J1ZltpKytdXSwgYnRoW2J1ZltpKytdXSxcbiAgICBidGhbYnVmW2krK11dLCBidGhbYnVmW2krK11dLFxuICAgIGJ0aFtidWZbaSsrXV0sIGJ0aFtidWZbaSsrXV1cbiAgXSkuam9pbignJyk7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gYnl0ZXNUb1V1aWQ7XG4iXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///32\n")},function(module,exports,__webpack_require__){eval("// extracted by mini-css-extract-plugin//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMzMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9AOTFhcHAvbmluZXlpLmxpYi5zcGFya2NvcmUvLi9zcmMvY29tcG9uZW50cy9hZGRUb0NhcnQvZGVza3RvcC9hZGRUb0NhcnQuc2Nzcz8zYmYyIl0sInNvdXJjZXNDb250ZW50IjpbIi8vIGV4dHJhY3RlZCBieSBtaW5pLWNzcy1leHRyYWN0LXBsdWdpbiJdLCJtYXBwaW5ncyI6IkFBQUEiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///33\n")},function(module,__webpack_exports__,__webpack_require__){"use strict";eval("// ESM COMPAT FLAG\n__webpack_require__.r(__webpack_exports__);\n\n// EXPORTS\n__webpack_require__.d(__webpack_exports__, \"AddToCartDesktop\", function() { return /* reexport */ addToCart_desktop_AddToCart; });\n__webpack_require__.d(__webpack_exports__, \"AddToCartMobile\", function() { return /* reexport */ addToCart_mobile_AddToCart; });\n__webpack_require__.d(__webpack_exports__, \"Modal\", function() { return /* reexport */ modal_modal; });\n__webpack_require__.d(__webpack_exports__, \"Loading\", function() { return /* reexport */ loading_loading; });\n__webpack_require__.d(__webpack_exports__, \"Toast\", function() { return /* reexport */ toast_toast; });\n__webpack_require__.d(__webpack_exports__, \"getToastMessageItem\", function() { return /* reexport */ getToastMessageItem; });\n__webpack_require__.d(__webpack_exports__, \"Currency\", function() { return /* reexport */ currency; });\n__webpack_require__.d(__webpack_exports__, \"CheckBox\", function() { return /* reexport */ checkBox_checkBox; });\n__webpack_require__.d(__webpack_exports__, \"RadioButton\", function() { return /* reexport */ radioButton_radioButton; });\n__webpack_require__.d(__webpack_exports__, \"Button\", function() { return /* reexport */ components_button; });\n__webpack_require__.d(__webpack_exports__, \"Link\", function() { return /* reexport */ components_link; });\n__webpack_require__.d(__webpack_exports__, \"Tag\", function() { return /* reexport */ tag; });\n__webpack_require__.d(__webpack_exports__, \"SparkCoreThemeProvider\", function() { return /* reexport */ components_theme; });\n__webpack_require__.d(__webpack_exports__, \"httpProvider\", function() { return /* reexport */ http_provider_namespaceObject; });\n__webpack_require__.d(__webpack_exports__, \"dateFormatUtility\", function() { return /* reexport */ dateFormat_utility_namespaceObject; });\n__webpack_require__.d(__webpack_exports__, \"deviceUtility\", function() { return /* reexport */ device_utility_namespaceObject; });\n__webpack_require__.d(__webpack_exports__, \"userAgentUtility\", function() { return /* reexport */ userAgent_utility_namespaceObject; });\n__webpack_require__.d(__webpack_exports__, \"runtimeModeUtility\", function() { return /* reexport */ runtimeMode_utility_namespaceObject; });\n__webpack_require__.d(__webpack_exports__, \"cookieUtility\", function() { return /* reexport */ cookie_utility_namespaceObject; });\n__webpack_require__.d(__webpack_exports__, \"urlUtility\", function() { return /* reexport */ url_utility_namespaceObject; });\n__webpack_require__.d(__webpack_exports__, \"currencyUtility\", function() { return /* reexport */ currency_utility_namespaceObject; });\n\n// NAMESPACE OBJECT: ./src/utilities/dateFormat.utility.ts\nvar dateFormat_utility_namespaceObject = {};\n__webpack_require__.r(dateFormat_utility_namespaceObject);\n__webpack_require__.d(dateFormat_utility_namespaceObject, \"dotNetDateParser\", function() { return dotNetDateParser; });\n\n// NAMESPACE OBJECT: ./src/utilities/device.utility.ts\nvar device_utility_namespaceObject = {};\n__webpack_require__.r(device_utility_namespaceObject);\n__webpack_require__.d(device_utility_namespaceObject, \"getBrowsingMode\", function() { return getBrowsingMode; });\n__webpack_require__.d(device_utility_namespaceObject, \"isMobile\", function() { return isMobile; });\n\n// NAMESPACE OBJECT: ./src/utilities/userAgent.utility.ts\nvar userAgent_utility_namespaceObject = {};\n__webpack_require__.r(userAgent_utility_namespaceObject);\n__webpack_require__.d(userAgent_utility_namespaceObject, \"checkIsFirefox\", function() { return checkIsFirefox; });\n__webpack_require__.d(userAgent_utility_namespaceObject, \"checkIsChrome\", function() { return checkIsChrome; });\n__webpack_require__.d(userAgent_utility_namespaceObject, \"checkIsSafari\", function() { return checkIsSafari; });\n__webpack_require__.d(userAgent_utility_namespaceObject, \"checkIsIE\", function() { return checkIsIE; });\n__webpack_require__.d(userAgent_utility_namespaceObject, \"getDeviceOS\", function() { return getDeviceOS; });\n__webpack_require__.d(userAgent_utility_namespaceObject, \"checkIsBot\", function() { return checkIsBot; });\n\n// NAMESPACE OBJECT: ./src/utilities/runtimeMode.utility.ts\nvar runtimeMode_utility_namespaceObject = {};\n__webpack_require__.r(runtimeMode_utility_namespaceObject);\n__webpack_require__.d(runtimeMode_utility_namespaceObject, \"checkIsClientRender\", function() { return checkIsClientRender; });\n__webpack_require__.d(runtimeMode_utility_namespaceObject, \"checkIsServerRender\", function() { return checkIsServerRender; });\n\n// NAMESPACE OBJECT: ./src/utilities/cookie.utility.ts\nvar cookie_utility_namespaceObject = {};\n__webpack_require__.r(cookie_utility_namespaceObject);\n__webpack_require__.d(cookie_utility_namespaceObject, \"addCookie\", function() { return addCookie; });\n__webpack_require__.d(cookie_utility_namespaceObject, \"deleteCookie\", function() { return deleteCookie; });\n__webpack_require__.d(cookie_utility_namespaceObject, \"getCookie\", function() { return getCookie; });\n\n// NAMESPACE OBJECT: ./src/utilities/url.utility.ts\nvar url_utility_namespaceObject = {};\n__webpack_require__.r(url_utility_namespaceObject);\n__webpack_require__.d(url_utility_namespaceObject, \"getQueryString\", function() { return getQueryString; });\n__webpack_require__.d(url_utility_namespaceObject, \"appendParameter\", function() { return appendParameter; });\n__webpack_require__.d(url_utility_namespaceObject, \"removeQueryStringParam\", function() { return removeQueryStringParam; });\n\n// NAMESPACE OBJECT: ./src/utilities/currency.utility.ts\nvar currency_utility_namespaceObject = {};\n__webpack_require__.r(currency_utility_namespaceObject);\n__webpack_require__.d(currency_utility_namespaceObject, \"currencyFormat\", function() { return currency_utility_currencyFormat; });\n\n// NAMESPACE OBJECT: ./src/providers/http.provider.ts\nvar http_provider_namespaceObject = {};\n__webpack_require__.r(http_provider_namespaceObject);\n__webpack_require__.d(http_provider_namespaceObject, \"fetchApi\", function() { return fetchApi; });\n\n// EXTERNAL MODULE: external {\"root\":\"React\",\"amd\":\"react\",\"commonjs\":\"react\",\"commonjs2\":\"react\",\"umd\":\"react\"}\nvar external_root_React_amd_react_commonjs_react_commonjs2_react_umd_react_ = __webpack_require__(0);\nvar external_root_React_amd_react_commonjs_react_commonjs2_react_umd_react_default = /*#__PURE__*/__webpack_require__.n(external_root_React_amd_react_commonjs_react_commonjs2_react_umd_react_);\n\n// EXTERNAL MODULE: external {\"root\":\"ReactReduxI18n\",\"amd\":\"react-redux-i18n\",\"commonjs\":\"react-redux-i18n\",\"commonjs2\":\"react-redux-i18n\",\"umd\":\"react-redux-i18n\"}\nvar external_root_ReactReduxI18n_amd_react_redux_i18n_commonjs_react_redux_i18n_commonjs2_react_redux_i18n_umd_react_redux_i18n_ = __webpack_require__(3);\n\n// EXTERNAL MODULE: ./node_modules/classnames/index.js\nvar classnames = __webpack_require__(4);\nvar classnames_default = /*#__PURE__*/__webpack_require__.n(classnames);\n\n// CONCATENATED MODULE: ./src/utilities/dateFormat.utility.ts\n/**\n * 轉換.net date格式\n */\nconst dotNetDateParser = date => {\n  var minDate = '/Date(-62135596800000)/';\n\n  if (date === minDate) {\n    return null;\n  }\n\n  var newDate = new Date(parseInt(date.replace(\"/Date(\", \"\").replace(\")/\", \"\"), 10));\n  return newDate;\n};\n// CONCATENATED MODULE: ./src/constants/device.constants.ts\nconst BROWSING_MODE = {\n  DESKTOP: 'desktop',\n  MOBILE: 'mobile'\n};\n// CONCATENATED MODULE: ./src/utilities/device.utility.ts\n\n\n/**\n * 取得瀏覽模式\n */\n\nconst getBrowsingMode = () => {\n  if (!runtimeMode_utility_namespaceObject.checkIsClientRender()) {\n    return BROWSING_MODE.DESKTOP;\n  } // 若server有指定顯示的瀏覽模式為desktop(用於手機上點擊「使用電腦版瀏覽」的情境)\n\n\n  if ((document.cookie.match('(^|; )' + \"BrowsingMode\" + '=([^;]*)') || 0)[2] === \"DeskTop\") {\n    return BROWSING_MODE.DESKTOP;\n  } else {\n    if (/android|webOS|iPhone|iPod|iOS|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent) || /(tablet|ipad|playbook|silk)|(android(?!.*mobile))/i.test(navigator.userAgent)) {\n      return BROWSING_MODE.MOBILE;\n    } else {\n      return BROWSING_MODE.DESKTOP;\n    }\n  }\n};\n/**\n * 是否為手機模式\n */\n\nconst isMobile = () => getBrowsingMode() === BROWSING_MODE.MOBILE;\n// CONCATENATED MODULE: ./src/utilities/userAgent.utility.ts\nvar Browser;\n\n(function (Browser) {\n  Browser[\"Firefox\"] = \"Firefox\";\n  Browser[\"Chrome\"] = \"Chrome\";\n  Browser[\"Safari\"] = \"Safari\";\n  Browser[\"Trident\"] = \"Trident\";\n  Browser[\"MSIE\"] = \"MSIE\";\n})(Browser || (Browser = {}));\n\nvar DeviceOS;\n\n(function (DeviceOS) {\n  DeviceOS[\"Android\"] = \"Android\";\n  DeviceOS[\"iOS\"] = \"iOS\";\n  DeviceOS[\"Bot\"] = \"Bot\";\n  DeviceOS[\"UnKnown\"] = \"UnKnown\";\n})(DeviceOS || (DeviceOS = {}));\n\nconst checkIsFirefox = userAgent => userAgent.indexOf(Browser.Firefox) !== -1;\nconst checkIsChrome = userAgent => userAgent.indexOf(Browser.Chrome) !== -1;\nconst checkIsSafari = userAgent => userAgent.indexOf(Browser.Chrome) === -1 && userAgent.indexOf(Browser.Safari) !== -1;\nconst checkIsIE = userAgent => userAgent.indexOf(Browser.Trident) > 0 || userAgent.indexOf(Browser.MSIE) > 0;\nconst getDeviceOS = userAgent => {\n  if (/android/i.test(userAgent)) {\n    return DeviceOS.Android;\n  }\n\n  if (/(iPhone|iPad|iPod|iOS)/i.test(userAgent)) {\n    return DeviceOS.iOS;\n  }\n\n  if (/bot|spider|crawl/i.test(userAgent)) {\n    return DeviceOS.Bot;\n  }\n\n  return DeviceOS.UnKnown;\n};\nconst checkIsBot = () => typeof window !== 'undefined' && window.navigator && /bot|spider|crawl/i.test(navigator.userAgent);\n// CONCATENATED MODULE: ./src/utilities/runtimeMode.utility.ts\nconst checkIsClientRender = () => typeof window !== 'undefined';\nconst checkIsServerRender = () => typeof window === 'undefined';\n// CONCATENATED MODULE: ./src/utilities/cookie.utility.ts\nconst addCookie = (name, value, days) => {\n  let expires = '';\n\n  if (days) {\n    const date = new Date();\n    date.setTime(date.getTime() + days * 24 * 60 * 60 * 1000);\n    expires = `; expires=${date.toUTCString()}`;\n  }\n\n  document.cookie = `${name}=${value}${expires}; path=/`;\n};\nconst deleteCookie = name => {\n  const today = new Date();\n  document.cookie = `${name}=;expires=${today.toUTCString()};path=/`;\n};\nconst getCookie = name => {\n  const arr = document.cookie.match(new RegExp(`(^| )${name}=([^;]*)(;|$)`));\n\n  if (arr) {\n    return arr[2];\n  }\n\n  return '';\n};\n// CONCATENATED MODULE: ./src/utilities/url.utility.ts\nconst getQueryString = (name, url) => {\n  try {\n    const match = RegExp(`[?&]${name}=([^&]*)`).exec(url || document.location.search);\n    return match && decodeURIComponent(decodeURIComponent(match[1].replace(/\\+/g, ' ')));\n  } catch (e) {\n    return null;\n  }\n}; // Source code from\n// http://stackoverflow.com/questions/6953944/how-to-add-parameters-to-a-url-that-already-contains-other-parameters-and-maybe\n\nconst appendParameter = (url, key, value, atStart = false) => {\n  const replaceDuplicates = true; // Get url without hash\n\n  let urlhash = '';\n  let urlLength = url.length;\n\n  if (url.indexOf('#') > 0) {\n    urlLength = url.indexOf('#');\n    urlhash = url.substring(url.indexOf('#'), url.length);\n  }\n\n  const sourceUrl = url.substring(0, urlLength); // Get url search part\n\n  const urlParts = sourceUrl.split('?');\n  let newQueryString = ''; // Get new parameter query string\n\n  if (urlParts.length > 1) {\n    const parameters = urlParts[1].split('&');\n\n    for (let i = 0; i < parameters.length; i++) {\n      const parameterParts = parameters[i].split('=');\n\n      if (!(replaceDuplicates && parameterParts[0] === key)) {\n        if (newQueryString === '') {\n          newQueryString = '?';\n        } else {\n          newQueryString += '&';\n        }\n\n        newQueryString += `${parameterParts[0]}=${parameterParts[1] ? parameterParts[1] : ''}`;\n      }\n    }\n  }\n\n  if (newQueryString === '') {\n    newQueryString = '?';\n  } // Append to url\n\n\n  if (atStart) {\n    newQueryString = `?${key}=${value + (newQueryString.length > 1 ? `&${newQueryString.substring(1)}` : '')}`;\n  } else {\n    if (newQueryString !== '' && newQueryString !== '?') {\n      newQueryString += '&';\n    }\n\n    newQueryString += `${key}=${value || ''}`;\n  }\n\n  return urlParts[0] + newQueryString + urlhash;\n};\nconst removeQueryStringParam = (key, sourceURL) => {\n  let alteredURL = sourceURL.split('?')[0];\n  let param;\n  let paramsArr = [];\n  const queryString = sourceURL.indexOf('?') !== -1 ? sourceURL.split('?')[1] : '';\n\n  if (queryString !== '') {\n    paramsArr = queryString.split('&');\n\n    for (let i = paramsArr.length - 1; i >= 0; i -= 1) {\n      param = paramsArr[i].split('=')[0];\n\n      if (param === key) {\n        paramsArr.splice(i, 1);\n      }\n    }\n\n    alteredURL = `${alteredURL}?${paramsArr.join('&')}`;\n  }\n\n  return alteredURL;\n};\n// CONCATENATED MODULE: ./src/utilities/currency.utility.ts\n/**\n * 顯示組好的幣別字串\n * 國別 TW: currencyFormat(1000, 0) --\x3e NT$ 1,000\n * 國別 MY: currencyFormat(1000, 2) --\x3e RM 1,000.00\n */\nconst currency_utility_currencyFormat = (value, decimal) => {\n  const {\n    MWeb\n  } = window['nineyi'] || {};\n  const currency = MWeb && MWeb.DefaultCurrency || 'NT$';\n  const displayValue = decimal > 0 ? value.toFixed(decimal).replace(/\\d(?=(\\d{3})+\\.)/g, '$&,') : new Intl.NumberFormat().format(value);\n  return `${currency} ${displayValue}`;\n};\n// CONCATENATED MODULE: ./src/utilities/index.ts\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n// EXTERNAL MODULE: ./src/components/modal/modal.scss\nvar modal = __webpack_require__(10);\n\n// CONCATENATED MODULE: ./src/components/modal/index.tsx\n\n\n\n\n;\n/**\n * 當開啟PopUp鎖住底部scroll處理\n */\n\nconst modal_freezeBody = isFixed => {\n  if (runtimeMode_utility_namespaceObject.checkIsClientRender()) {\n    if (isFixed) {\n      window.document.body.classList.add('freeze');\n    } else {\n      window.document.body.classList.remove('freeze');\n    }\n  }\n};\n/**\n * 彈窗元件 Popup\n * @param props \n */\n\n\nconst modal_Modal = props => {\n  const {\n    isOpen,\n    isShowClose,\n    isMaskOpacity,\n    onCloseModal,\n    onConfirmModal,\n    customStyle,\n    customCssClass,\n    title,\n    children,\n    cancelText,\n    confirmText\n  } = props;\n  Object(external_root_React_amd_react_commonjs_react_commonjs2_react_umd_react_[\"useEffect\"])(() => {\n    modal_freezeBody(isOpen);\n  }, [isOpen]);\n  return /*#__PURE__*/external_root_React_amd_react_commonjs_react_commonjs2_react_umd_react_default.a.createElement(\"div\", {\n    className: classnames_default()('modal', isOpen === true ? 'modal--open' : '')\n  }, isOpen && /*#__PURE__*/external_root_React_amd_react_commonjs_react_commonjs2_react_umd_react_default.a.createElement(\"div\", {\n    className: classnames_default()('modal__backdrop', isMaskOpacity ? 'modal__backdrop--opacity' : ''),\n    onClick: onCloseModal\n  }), isOpen && /*#__PURE__*/external_root_React_amd_react_commonjs_react_commonjs2_react_umd_react_default.a.createElement(\"div\", {\n    style: customStyle,\n    className: classnames_default()('modal--default', customCssClass || '')\n  }, isShowClose && /*#__PURE__*/external_root_React_amd_react_commonjs_react_commonjs2_react_umd_react_default.a.createElement(\"div\", {\n    className: \"modal__header\"\n  }, /*#__PURE__*/external_root_React_amd_react_commonjs_react_commonjs2_react_umd_react_default.a.createElement(\"a\", {\n    className: \"close\",\n    onClick: onCloseModal\n  }, /*#__PURE__*/external_root_React_amd_react_commonjs_react_commonjs2_react_umd_react_default.a.createElement(\"i\", {\n    className: \"icon icon-slim-close\"\n  })), title && /*#__PURE__*/external_root_React_amd_react_commonjs_react_commonjs2_react_umd_react_default.a.createElement(\"h2\", {\n    className: \"modal__title\"\n  }, title)), !children && /*#__PURE__*/external_root_React_amd_react_commonjs_react_commonjs2_react_umd_react_default.a.createElement(\"div\", {\n    className: \"modal__loading black-spinner \"\n  }), children && /*#__PURE__*/external_root_React_amd_react_commonjs_react_commonjs2_react_umd_react_default.a.createElement(\"div\", {\n    className: \"modal__body\"\n  }, children), cancelText || confirmText ? /*#__PURE__*/external_root_React_amd_react_commonjs_react_commonjs2_react_umd_react_default.a.createElement(\"div\", {\n    className: \"modal__footer\"\n  }, cancelText && /*#__PURE__*/external_root_React_amd_react_commonjs_react_commonjs2_react_umd_react_default.a.createElement(\"button\", {\n    type: \"button\",\n    className: \"cancel-btn\",\n    onClick: onCloseModal\n  }, cancelText), confirmText && /*#__PURE__*/external_root_React_amd_react_commonjs_react_commonjs2_react_umd_react_default.a.createElement(\"button\", {\n    type: \"button\",\n    className: \"confirm-btn\",\n    onClick: onConfirmModal\n  }, confirmText)) : null));\n};\n\nmodal_Modal.defaultProps = {\n  isOpen: false,\n  isShowClose: true,\n  isMaskOpacity: true,\n  title: '',\n  confirmText: '',\n  cancelText: ''\n};\n/* harmony default export */ var components_modal = (modal_Modal);\n// EXTERNAL MODULE: ./node_modules/underscore/underscore.js\nvar underscore = __webpack_require__(2);\nvar underscore_default = /*#__PURE__*/__webpack_require__.n(underscore);\n\n// CONCATENATED MODULE: ./src/utilities/globalParameter.utility.ts\n/**\n * 取得使用者目前選擇的語言\n */\nconst getCurrentLocale = () => {\n  const nineyi = window['nineyi'] || {};\n  const mwebCurrentLocale = nineyi.MWeb && nineyi.MWeb.CurrentLocale || '';\n  const currentLocale = mwebCurrentLocale ? mwebCurrentLocale : nineyi.dependencies && nineyi.dependencies.locale || '';\n  return currentLocale;\n};\n// CONCATENATED MODULE: ./src/utilities/path.utility.ts\n\n // 此檔案不對外輸出，僅限 spark-core內使用\n\n // 靜態圖檔路徑\n\nconst CONTENT_IMAGES = '/contents/images';\n/**\n * 設定API Host\n */\n\nconst getApiConfig = () => {\n  const nineyi = window['nineyi'] || {}; // 全站webapi cdn\n\n  const isEnableCdnApi = underscore[\"property\"]('dependencies.apiConfig.isEnableCdnApi'.split('.'))(nineyi);\n\n  const cdnApiHost = underscore[\"property\"]('dependencies.apiConfig.cdnApiHost'.split('.'))(nineyi);\n\n  return {\n    isEnableCdnApi: isEnableCdnApi || false,\n    lang: getCurrentLocale(),\n    apiHost: '',\n    cdnApiHost: cdnApiHost || '/',\n    cdnSourceHost: nineyi.MWeb && nineyi.MWeb.JavsScriptCDN || ''\n  };\n};\n/**\n * 組合MWeb Api Url 方法\n * @param apiPath\n */\n\n\nconst getMwebApiUrl = (apiPath, isSwitchCdn = false) => {\n  const apiConfig = getApiConfig();\n  let apiHost = apiConfig.isEnableCdnApi && isSwitchCdn ? apiConfig.cdnApiHost : apiConfig.apiHost;\n  let apiUrl = `${apiHost}/webapi/${apiPath}`; // 切換語系\n\n  if (apiConfig.lang !== '') {\n    apiUrl = appendParameter(apiUrl, 'lang', apiConfig.lang);\n  }\n\n  return apiUrl;\n};\n/**\n * 取得實體靜態資源路徑\n * @param path\n */\n\nconst getContentImagePath = path => {\n  const nineyi = window['nineyi'] || {};\n\n  if (!nineyi.MWeb) {\n    return CONTENT_IMAGES + path;\n  }\n\n  const cdnDomain = nineyi.MWeb.CssCDNDomain || '';\n  return `${cdnDomain}/V2/Scripts/dist${CONTENT_IMAGES}${path}`;\n};\n// EXTERNAL MODULE: ./src/components/loading/loading.scss\nvar loading = __webpack_require__(19);\n\n// CONCATENATED MODULE: ./src/components/loading/loading.tsx\n\n\n\n\n/**\n * Loading元件\n */\nconst Loading = props => {\n  const {\n    isLoading\n  } = props;\n  return isLoading && /*#__PURE__*/external_root_React_amd_react_commonjs_react_commonjs2_react_umd_react_[\"createElement\"](\"div\", {\n    className: \"loading\"\n  }, /*#__PURE__*/external_root_React_amd_react_commonjs_react_commonjs2_react_umd_react_[\"createElement\"](\"div\", {\n    className: \"loading__backdrop\"\n  }), /*#__PURE__*/external_root_React_amd_react_commonjs_react_commonjs2_react_umd_react_[\"createElement\"](\"div\", {\n    className: \"loading__content\"\n  }, /*#__PURE__*/external_root_React_amd_react_commonjs_react_commonjs2_react_umd_react_[\"createElement\"](\"figure\", {\n    className: \"loading__image\"\n  }, /*#__PURE__*/external_root_React_amd_react_commonjs_react_commonjs2_react_umd_react_[\"createElement\"](\"img\", {\n    src: getContentImagePath('/ajax-loader.gif'),\n    width: \"20px\",\n    height: \"20px\"\n  })), \"loading\"));\n};\n\n/* harmony default export */ var loading_loading = (Loading);\n// CONCATENATED MODULE: ./src/constants/translation.constants.ts\nconst TRANSLATE_LOCALE_KEY = {\n  FRONTEND: {\n    LIB: {\n      QUANTITY: 'frontend.lib.add_to_cart.quantity',\n      LIMIT_MIN_VALUE_MSG: 'frontend.lib.add_to_cart.limit_min_value_msg',\n      LIMIT_MAX_VALUE_MSG: 'frontend.lib.add_to_cart.limit_max_value_msg',\n      ADD: 'frontend.lib.add_to_cart.add',\n      ADD_CART: 'frontend.lib.add_to_cart.add_cart',\n      CHECK_OUT: 'frontend.lib.add_to_cart.check_out',\n      NOT_YET_OPEN_SALE: 'frontend.lib.add_to_cart.not_yet_open_sale',\n      ONLY_ON_APP: 'frontend.lib.add_to_cart.only_on_app',\n      SHARE_AND_BUY: 'frontend.lib.add_to_cart.share_and_buy',\n      SOLD_OUT_AND_REPLENISHED: 'frontend.lib.add_to_cart.sold_out_and_replenished',\n      OUT_OF_STOCK: 'frontend.lib.add_to_cart.out_of_stock',\n      UPDATE: 'frontend.lib.add_to_cart.update',\n      SELECT_OPTION: 'frontend.lib.add_to_cart.select_option',\n      PLEASE_SELECT_PURCHASE_METHOD: 'frontend.lib.add_to_cart.please_select_purchase_method',\n      PURCHASE_METHOD_POINT: 'frontend.lib.add_to_cart.purchase_method_point',\n      CONFIRM: 'frontend.lib.add_to_cart.confirm',\n      TOAST: {\n        SUBMIT_SUCCESS: 'frontend.lib.toast.submit_success',\n        SUBMIT_ERROR: 'frontend.lib.toast.submit_error',\n        ADD_SUCCESS: 'frontend.lib.toast.add_success',\n        IS_CLOSED: 'frontend.lib.toast.is_closed',\n        LOGIN_SUCCESS: 'frontend.lib.toast.login_success',\n        LOGOUT_SUCCESS: 'frontend.lib.toast.logout_success',\n        NO_START: 'frontend.lib.toast.no_start',\n        NOT_FOUND: 'frontend.lib.toast.not_found',\n        REMOVE_SUCCESS: 'frontend.lib.toast.remove_success',\n        SOLD_OUT: 'frontend.lib.toast.sold_out',\n        UN_LISTING: 'frontend.lib.toast.un_listing'\n      }\n    }\n  }\n};\n// EXTERNAL MODULE: ./src/components/toast/toast.scss\nvar toast = __webpack_require__(20);\n\n// CONCATENATED MODULE: ./src/components/toast/toast.tsx\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\n\n\n\n\n\n// 建立訊息清單\nconst messageList = [{\n  type: 'success',\n  status: 'AddSuccess',\n  message: TRANSLATE_LOCALE_KEY.FRONTEND.LIB.TOAST.ADD_SUCCESS\n}, {\n  type: 'success',\n  status: 'RemoveSuccess',\n  message: TRANSLATE_LOCALE_KEY.FRONTEND.LIB.TOAST.REMOVE_SUCCESS\n}, {\n  type: 'success',\n  status: 'SubmitSuccess',\n  message: TRANSLATE_LOCALE_KEY.FRONTEND.LIB.TOAST.SUBMIT_SUCCESS\n}, {\n  type: 'warning',\n  status: 'SoldOut',\n  message: TRANSLATE_LOCALE_KEY.FRONTEND.LIB.TOAST.SOLD_OUT\n}, {\n  type: 'warning',\n  status: 'NoStart',\n  message: TRANSLATE_LOCALE_KEY.FRONTEND.LIB.TOAST.NO_START\n}, {\n  type: 'warning',\n  status: 'NotFound',\n  message: TRANSLATE_LOCALE_KEY.FRONTEND.LIB.TOAST.NOT_FOUND\n}, {\n  type: 'warning',\n  status: 'IsClosed',\n  message: TRANSLATE_LOCALE_KEY.FRONTEND.LIB.TOAST.IS_CLOSED\n}, {\n  type: 'warning',\n  status: 'UnListing',\n  message: TRANSLATE_LOCALE_KEY.FRONTEND.LIB.TOAST.UN_LISTING\n}, {\n  type: 'warning',\n  status: 'SubmitError',\n  message: TRANSLATE_LOCALE_KEY.FRONTEND.LIB.TOAST.SUBMIT_ERROR\n}, {\n  type: 'warning',\n  status: 'Error',\n  message: 'server error'\n}];\n/**\n * 取得顯示訊息物件\n * @param status\n */\n\nconst getToastMessageItem = status => Object(underscore[\"find\"])(messageList, item => item.status === status);\n/**\n * Toast元件\n */\n\nclass toast_Toast extends external_root_React_amd_react_commonjs_react_commonjs2_react_umd_react_[\"Component\"] {\n  // 成功樣式\n  // 警告樣式\n  constructor(props) {\n    super(props);\n\n    _defineProperty(this, \"successClass\", 'icon icon-check-selected toast__icon--success');\n\n    _defineProperty(this, \"warningClass\", 'icon-editor icon-editor-icon_common_alert_solid toast__icon--warning');\n\n    _defineProperty(this, \"changeIconHandle\", type => {\n      let className = '';\n\n      if (type === 'success') {\n        className = this.successClass;\n      } else if (type === 'warning') {\n        className = this.warningClass;\n      }\n\n      return className;\n    });\n\n    this.state = {\n      isOpen: this.props.isOpen,\n      animationDelay: '0s'\n    };\n  }\n\n  componentWillReceiveProps(nextProps) {\n    if (nextProps.isOpen && this.state.isOpen !== nextProps.isOpen) {\n      this.setState({\n        isOpen: true\n      }, () => {\n        const animationDelayTime = nextProps.delay > 1000 ? `${(nextProps.delay - 1000) / 1000}s` : '1s';\n        this.setState({\n          animationDelay: animationDelayTime\n        });\n        setTimeout(() => {\n          this.setState({\n            isOpen: false\n          });\n\n          if (this.props.afterClose) {\n            this.props.afterClose();\n          }\n        }, this.props.delay);\n      });\n    }\n  }\n  /**\n   * 切換顯示Icon處理\n   */\n\n\n  render() {\n    return /*#__PURE__*/external_root_React_amd_react_commonjs_react_commonjs2_react_umd_react_[\"createElement\"](\"div\", {\n      className: classnames_default()('toast')\n    }, this.state.isOpen && /*#__PURE__*/external_root_React_amd_react_commonjs_react_commonjs2_react_umd_react_[\"createElement\"](\"div\", {\n      className: classnames_default()('toast--backdrop', {\n        'toast--fade-out': this.props.isOpen\n      }),\n      style: {\n        animationDelay: this.state.animationDelay\n      }\n    }), this.state.isOpen && /*#__PURE__*/external_root_React_amd_react_commonjs_react_commonjs2_react_umd_react_[\"createElement\"](\"div\", {\n      className: classnames_default()('toast--default', this.props.customCssClass || '', {\n        'toast--fade-out': this.props.isOpen\n      }),\n      style: {\n        animationDelay: this.state.animationDelay\n      }\n    }, this.props.message && /*#__PURE__*/external_root_React_amd_react_commonjs_react_commonjs2_react_umd_react_[\"createElement\"](\"div\", {\n      className: \"toast--content\"\n    }, this.props.type && /*#__PURE__*/external_root_React_amd_react_commonjs_react_commonjs2_react_umd_react_[\"createElement\"](\"i\", {\n      className: classnames_default()('toast__icon', this.changeIconHandle(this.props.type))\n    }), this.props.message)));\n  }\n\n}\n\n_defineProperty(toast_Toast, \"defaultProps\", {\n  isOpen: false,\n  customCssClass: '',\n  afterClose: () => {},\n  type: '',\n  message: '',\n  delay: 2500\n});\n\n/* harmony default export */ var toast_toast = (toast_Toast);\n// EXTERNAL MODULE: ./node_modules/accounting/accounting.js\nvar accounting = __webpack_require__(12);\n\n// EXTERNAL MODULE: ./node_modules/styled-components/dist/styled-components.browser.esm.js\nvar styled_components_browser_esm = __webpack_require__(1);\n\n// CONCATENATED MODULE: ./src/components/currency/currency.tsx\n\n\n\n\nconst currency_Wrapper = styled_components_browser_esm[\"c\" /* default */].div.withConfig({\n  displayName: \"currency__Wrapper\",\n  componentId: \"sc-1iznayr-0\"\n})([\"display:inline-block;text-decoration:\", \";color:\", \";\"], props => props.isThrough ? 'line-through' : 'none', props => props.disableTheme || underscore_default.a.isEmpty(props.theme) ? 'inherit' : props.theme.generalStyle.moneyColor);\n/**\n * 顯示幣別元件\n */\n\nconst Currency = ({\n  isThrough = false,\n  decimal = 0,\n  value = 0,\n  symbol = '$',\n  rate = 1,\n  disableTheme = false,\n  negativeSymbolPrefix = false\n}) => {\n  let currencyFormat = {\n    pos: '%s%v',\n    neg: negativeSymbolPrefix ? '-%s%v' : '%s-%v',\n    zero: '%s%v'\n  };\n  return /*#__PURE__*/external_root_React_amd_react_commonjs_react_commonjs2_react_umd_react_[\"createElement\"](currency_Wrapper, {\n    isThrough: isThrough,\n    disableTheme: disableTheme\n  }, typeof value === 'number' && Object(accounting[\"formatMoney\"])(value * rate, {\n    symbol,\n    precision: decimal,\n    format: currencyFormat\n  }));\n};\n\n/* harmony default export */ var currency = (Currency);\n// CONCATENATED MODULE: ./src/styles/common/mixin/clearFix.ts\nconst clearFix = `\n  &:before, &:after {\n    content: \"\";\n    display: table;\n    clear: both;\n  }\n`;\n/* harmony default export */ var mixin_clearFix = (clearFix);\n// CONCATENATED MODULE: ./src/components/addToCart/product/themeColor.ts\n\nconst textColor = props => {\n  const {\n    theme\n  } = props;\n\n  if (!underscore[\"isEmpty\"](theme)) {\n    return theme.buttonStyle.primaryBtnTextColor;\n  } else {\n    return '#fff';\n  }\n};\nconst themeColor_backgroundColor = props => {\n  const {\n    theme\n  } = props;\n\n  if (!underscore[\"isEmpty\"](theme)) {\n    return theme.buttonStyle.primaryBtnBgColor;\n  } else {\n    return '#ff5353';\n  }\n\n  ;\n};\nconst borderColor = props => {\n  const {\n    theme\n  } = props;\n\n  if (!underscore[\"isEmpty\"](theme)) {\n    return theme.buttonStyle.primaryBtnBgColor;\n  } else {\n    return '#ff5353';\n  }\n\n  ;\n};\nconst moneyColor = props => {\n  const {\n    theme\n  } = props;\n\n  if (!underscore[\"isEmpty\"](theme)) {\n    return theme.generalStyle.moneyColor;\n  } else {\n    return '#ff5353';\n  }\n\n  ;\n};\n// CONCATENATED MODULE: ./src/components/addToCart/product/productPointPayPrice.tsx\n\n\n\n\n\n\nconst InfoPrice = styled_components_browser_esm[\"c\" /* default */].div.withConfig({\n  displayName: \"productPointPayPrice__InfoPrice\",\n  componentId: \"sc-1f3ckh8-0\"\n})([\"font-size:1em;line-height:1.5;color:\", \";\"], moneyColor);\nconst ProductPointPayPrice = props => {\n  const {\n    selectedPurchaseMethod,\n    decimal,\n    symbol,\n    rate\n  } = props;\n  return /*#__PURE__*/external_root_React_amd_react_commonjs_react_commonjs2_react_umd_react_[\"createElement\"](InfoPrice, null, selectedPurchaseMethod.PairsPoints === 0 && selectedPurchaseMethod.PairsPrice > 0 && /*#__PURE__*/external_root_React_amd_react_commonjs_react_commonjs2_react_umd_react_[\"createElement\"](currency, {\n    value: selectedPurchaseMethod.PairsPrice,\n    decimal: decimal,\n    symbol: symbol,\n    rate: rate,\n    disableTheme: true\n  }), selectedPurchaseMethod.PairsPrice === 0 && selectedPurchaseMethod.PairsPoints > 0 && /*#__PURE__*/external_root_React_amd_react_commonjs_react_commonjs2_react_umd_react_[\"createElement\"](external_root_ReactReduxI18n_amd_react_redux_i18n_commonjs_react_redux_i18n_commonjs2_react_redux_i18n_umd_react_redux_i18n_[\"Translate\"], {\n    value: TRANSLATE_LOCALE_KEY.FRONTEND.LIB.PURCHASE_METHOD_POINT,\n    point: selectedPurchaseMethod.PairsPoints\n  }), selectedPurchaseMethod.PairsPoints > 0 && selectedPurchaseMethod.PairsPrice > 0 && /*#__PURE__*/external_root_React_amd_react_commonjs_react_commonjs2_react_umd_react_[\"createElement\"](\"span\", null, /*#__PURE__*/external_root_React_amd_react_commonjs_react_commonjs2_react_umd_react_[\"createElement\"](external_root_ReactReduxI18n_amd_react_redux_i18n_commonjs_react_redux_i18n_commonjs2_react_redux_i18n_umd_react_redux_i18n_[\"Translate\"], {\n    value: TRANSLATE_LOCALE_KEY.FRONTEND.LIB.PURCHASE_METHOD_POINT,\n    point: selectedPurchaseMethod.PairsPoints\n  }), /*#__PURE__*/external_root_React_amd_react_commonjs_react_commonjs2_react_umd_react_[\"createElement\"](\"span\", null, \"\\uFF0B\"), /*#__PURE__*/external_root_React_amd_react_commonjs_react_commonjs2_react_umd_react_[\"createElement\"](currency, {\n    value: selectedPurchaseMethod.PairsPrice,\n    decimal: decimal,\n    symbol: symbol,\n    rate: rate,\n    disableTheme: true\n  })));\n};\n// CONCATENATED MODULE: ./src/components/addToCart/product/productMainInfo.tsx\n\n\n\n\n\n\n\n\n\n\n/**\n * 取得商品圖顯示\n * @param mainImageUrl\n * @param skuId\n */\nconst getMainImageSrc = (mainImageUrl, skuId) => {\n  const skuImageItem = underscore[\"find\"](mainImageUrl, img => {\n    return img.skuId && img.skuId === skuId;\n  });\n\n  return skuImageItem ? skuImageItem.imageSrc : mainImageUrl[0].imageSrc; // 若找不到對應的sku圖片，使用主圖第一張\n};\n/**\n * TODO: 目前設計有預選，所以不用加區間顯示\n * 是否顯示售價區間\n * @param suggestPriceData\n * @param priceData\n */\n\n\nconst isShowRangeSuggestPrice = (suggestPriceData, priceData) => {\n  return suggestPriceData.min > priceData.min || suggestPriceData.max > priceData.max;\n};\n/**\n * 是否顯示建議售價\n * @param suggestPrice\n * @param price\n */\n\n\nconst isShowSuggestPrice = (suggestPrice, price) => {\n  return suggestPrice > price;\n};\n\nconst ProductMainInfoContainer = styled_components_browser_esm[\"c\" /* default */].div.withConfig({\n  displayName: \"productMainInfo__ProductMainInfoContainer\",\n  componentId: \"sc-eudblh-0\"\n})([\"padding:\", \";margin:0;position:relative;\", \";\"], device_utility_namespaceObject.getBrowsingMode() === BROWSING_MODE.MOBILE ? '12px' : '0 20px 20px', mixin_clearFix);\nconst InfoLeft = styled_components_browser_esm[\"c\" /* default */].div.withConfig({\n  displayName: \"productMainInfo__InfoLeft\",\n  componentId: \"sc-eudblh-1\"\n})([\"float:left;\"]);\nconst InfoFigure = styled_components_browser_esm[\"c\" /* default */].figure.withConfig({\n  displayName: \"productMainInfo__InfoFigure\",\n  componentId: \"sc-eudblh-2\"\n})([\"width:120px;height:120px;text-align:center;\"]);\nconst InfoImage = styled_components_browser_esm[\"c\" /* default */].img.withConfig({\n  displayName: \"productMainInfo__InfoImage\",\n  componentId: \"sc-eudblh-3\"\n})([\"max-width:120px;max-height:120px;\"]);\nconst InfoRight = styled_components_browser_esm[\"c\" /* default */].div.withConfig({\n  displayName: \"productMainInfo__InfoRight\",\n  componentId: \"sc-eudblh-4\"\n})([\"box-sizing:border-box;float:right;height:120px;padding:0 16px;position:relative;text-align:left;width:calc(100% - 130px);\"]);\nconst InfoTitle = styled_components_browser_esm[\"c\" /* default */].h3.withConfig({\n  displayName: \"productMainInfo__InfoTitle\",\n  componentId: \"sc-eudblh-5\"\n})([\"-webkit-box-orient:vertical;-webkit-line-clamp:2;color:#000000;display:-webkit-box;font-size:14px;font-weight:normal;height:34px;line-height:17px;overflow:hidden;text-overflow:ellipsis;white-space:normal;word-break:break-all;\"]);\nconst InfoPriceWrapper = styled_components_browser_esm[\"c\" /* default */].div.withConfig({\n  displayName: \"productMainInfo__InfoPriceWrapper\",\n  componentId: \"sc-eudblh-6\"\n})([\"position:absolute;bottom:0;\"]);\nconst InfoSuggestPrice = styled_components_browser_esm[\"c\" /* default */].div.withConfig({\n  displayName: \"productMainInfo__InfoSuggestPrice\",\n  componentId: \"sc-eudblh-7\"\n})([\"font-size:0.7em;line-height:1.5;color:#aaa;text-decoration:line-through;\"]);\nconst MaxSuggestPrice = styled_components_browser_esm[\"c\" /* default */].span.withConfig({\n  displayName: \"productMainInfo__MaxSuggestPrice\",\n  componentId: \"sc-eudblh-8\"\n})([\"color:\", \";\"], moneyColor);\nconst productMainInfo_InfoPrice = styled_components_browser_esm[\"c\" /* default */].div.withConfig({\n  displayName: \"productMainInfo__InfoPrice\",\n  componentId: \"sc-eudblh-9\"\n})([\"font-size:1em;line-height:1.5;color:\", \";\"], moneyColor);\n/**\n * 商品主要資訊（標題、售價、圖片等等）\n * @param props\n */\n\nconst ProductMainInfo = props => {\n  const {\n    salePageInfo,\n    skuInfoList,\n    skuId,\n    decimal,\n    symbol,\n    rate,\n    selectedPurchaseMethod\n  } = props;\n  const {\n    title,\n    mainImageUrl,\n    maxPrice,\n    maxSuggestPrice,\n    minPrice,\n    minSuggestPrice,\n    hasPointPayOption\n  } = salePageInfo; // 取得SKU不同價資料\n\n  const skuItem = underscore[\"find\"](skuInfoList, item => item.skuId == skuId); // 是否選取SKU\n\n\n  const isSelectSkuId = skuId > 0 ? true : false; // 是否顯示建議售價\n\n  const isShowSuggest = skuItem ? isShowSuggestPrice(skuItem.suggestPrice, skuItem.price) : false; // 是否顯示建議售價範圍\n\n  const isShowRangeSuggest = isShowRangeSuggestPrice({\n    min: minSuggestPrice,\n    max: maxSuggestPrice\n  }, {\n    min: minPrice,\n    max: maxPrice\n  });\n  return /*#__PURE__*/external_root_React_amd_react_commonjs_react_commonjs2_react_umd_react_default.a.createElement(ProductMainInfoContainer, null, /*#__PURE__*/external_root_React_amd_react_commonjs_react_commonjs2_react_umd_react_default.a.createElement(InfoLeft, null, /*#__PURE__*/external_root_React_amd_react_commonjs_react_commonjs2_react_umd_react_default.a.createElement(InfoFigure, null, /*#__PURE__*/external_root_React_amd_react_commonjs_react_commonjs2_react_umd_react_default.a.createElement(InfoImage, {\n    src: getMainImageSrc(mainImageUrl, skuId)\n  }))), /*#__PURE__*/external_root_React_amd_react_commonjs_react_commonjs2_react_umd_react_default.a.createElement(InfoRight, null, /*#__PURE__*/external_root_React_amd_react_commonjs_react_commonjs2_react_umd_react_default.a.createElement(InfoTitle, null, title), /*#__PURE__*/external_root_React_amd_react_commonjs_react_commonjs2_react_umd_react_default.a.createElement(InfoPriceWrapper, null, isSelectSkuId ? /*#__PURE__*/external_root_React_amd_react_commonjs_react_commonjs2_react_umd_react_default.a.createElement(\"div\", null, isShowSuggest && /*#__PURE__*/external_root_React_amd_react_commonjs_react_commonjs2_react_umd_react_default.a.createElement(InfoSuggestPrice, null, /*#__PURE__*/external_root_React_amd_react_commonjs_react_commonjs2_react_umd_react_default.a.createElement(currency, {\n    value: skuItem.suggestPrice,\n    decimal: decimal,\n    symbol: symbol,\n    rate: rate,\n    isThrough: true,\n    disableTheme: true\n  })), !hasPointPayOption && /*#__PURE__*/external_root_React_amd_react_commonjs_react_commonjs2_react_umd_react_default.a.createElement(productMainInfo_InfoPrice, null, /*#__PURE__*/external_root_React_amd_react_commonjs_react_commonjs2_react_umd_react_default.a.createElement(currency, {\n    value: skuItem.price,\n    decimal: decimal,\n    symbol: symbol,\n    rate: rate\n  })), hasPointPayOption && /*#__PURE__*/external_root_React_amd_react_commonjs_react_commonjs2_react_umd_react_default.a.createElement(ProductPointPayPrice, {\n    selectedPurchaseMethod: selectedPurchaseMethod,\n    decimal: decimal,\n    symbol: symbol,\n    rate: rate\n  })) : /*#__PURE__*/external_root_React_amd_react_commonjs_react_commonjs2_react_umd_react_default.a.createElement(\"div\", null, isShowRangeSuggest && /*#__PURE__*/external_root_React_amd_react_commonjs_react_commonjs2_react_umd_react_default.a.createElement(InfoSuggestPrice, null, /*#__PURE__*/external_root_React_amd_react_commonjs_react_commonjs2_react_umd_react_default.a.createElement(currency, {\n    value: minSuggestPrice,\n    decimal: decimal,\n    symbol: symbol,\n    rate: rate,\n    isThrough: true,\n    disableTheme: true\n  }), maxSuggestPrice > minSuggestPrice && /*#__PURE__*/external_root_React_amd_react_commonjs_react_commonjs2_react_umd_react_default.a.createElement(\"span\", null, \"~\", /*#__PURE__*/external_root_React_amd_react_commonjs_react_commonjs2_react_umd_react_default.a.createElement(currency, {\n    value: maxSuggestPrice,\n    decimal: decimal,\n    symbol: symbol,\n    rate: rate,\n    isThrough: true,\n    disableTheme: true\n  }))), !hasPointPayOption && /*#__PURE__*/external_root_React_amd_react_commonjs_react_commonjs2_react_umd_react_default.a.createElement(productMainInfo_InfoPrice, null, /*#__PURE__*/external_root_React_amd_react_commonjs_react_commonjs2_react_umd_react_default.a.createElement(currency, {\n    value: minPrice,\n    decimal: decimal,\n    symbol: symbol,\n    rate: rate\n  }), maxPrice > minPrice && /*#__PURE__*/external_root_React_amd_react_commonjs_react_commonjs2_react_umd_react_default.a.createElement(MaxSuggestPrice, null, ' ', \"~\", ' ', /*#__PURE__*/external_root_React_amd_react_commonjs_react_commonjs2_react_umd_react_default.a.createElement(currency, {\n    value: maxPrice,\n    decimal: decimal,\n    symbol: symbol,\n    rate: rate\n  }))), hasPointPayOption && /*#__PURE__*/external_root_React_amd_react_commonjs_react_commonjs2_react_umd_react_default.a.createElement(ProductPointPayPrice, {\n    selectedPurchaseMethod: selectedPurchaseMethod,\n    decimal: decimal,\n    symbol: symbol,\n    rate: rate\n  })))));\n};\n// CONCATENATED MODULE: ./node_modules/@babel/runtime/helpers/esm/extends.js\nfunction _extends() {\n  _extends = Object.assign || function (target) {\n    for (var i = 1; i < arguments.length; i++) {\n      var source = arguments[i];\n\n      for (var key in source) {\n        if (Object.prototype.hasOwnProperty.call(source, key)) {\n          target[key] = source[key];\n        }\n      }\n    }\n\n    return target;\n  };\n\n  return _extends.apply(this, arguments);\n}\n// CONCATENATED MODULE: ./node_modules/@babel/runtime/helpers/esm/assertThisInitialized.js\nfunction _assertThisInitialized(self) {\n  if (self === void 0) {\n    throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n  }\n\n  return self;\n}\n// CONCATENATED MODULE: ./node_modules/@babel/runtime/helpers/esm/setPrototypeOf.js\nfunction _setPrototypeOf(o, p) {\n  _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) {\n    o.__proto__ = p;\n    return o;\n  };\n\n  return _setPrototypeOf(o, p);\n}\n// CONCATENATED MODULE: ./node_modules/@babel/runtime/helpers/esm/inheritsLoose.js\n\nfunction _inheritsLoose(subClass, superClass) {\n  subClass.prototype = Object.create(superClass.prototype);\n  subClass.prototype.constructor = subClass;\n  _setPrototypeOf(subClass, superClass);\n}\n// CONCATENATED MODULE: ./node_modules/@babel/runtime/helpers/esm/getPrototypeOf.js\nfunction _getPrototypeOf(o) {\n  _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) {\n    return o.__proto__ || Object.getPrototypeOf(o);\n  };\n  return _getPrototypeOf(o);\n}\n// CONCATENATED MODULE: ./node_modules/@babel/runtime/helpers/esm/isNativeFunction.js\nfunction _isNativeFunction(fn) {\n  return Function.toString.call(fn).indexOf(\"[native code]\") !== -1;\n}\n// CONCATENATED MODULE: ./node_modules/@babel/runtime/helpers/esm/isNativeReflectConstruct.js\nfunction _isNativeReflectConstruct() {\n  if (typeof Reflect === \"undefined\" || !Reflect.construct) return false;\n  if (Reflect.construct.sham) return false;\n  if (typeof Proxy === \"function\") return true;\n\n  try {\n    Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {}));\n    return true;\n  } catch (e) {\n    return false;\n  }\n}\n// CONCATENATED MODULE: ./node_modules/@babel/runtime/helpers/esm/construct.js\n\n\nfunction construct_construct(Parent, args, Class) {\n  if (_isNativeReflectConstruct()) {\n    construct_construct = Reflect.construct;\n  } else {\n    construct_construct = function _construct(Parent, args, Class) {\n      var a = [null];\n      a.push.apply(a, args);\n      var Constructor = Function.bind.apply(Parent, a);\n      var instance = new Constructor();\n      if (Class) _setPrototypeOf(instance, Class.prototype);\n      return instance;\n    };\n  }\n\n  return construct_construct.apply(null, arguments);\n}\n// CONCATENATED MODULE: ./node_modules/@babel/runtime/helpers/esm/wrapNativeSuper.js\n\n\n\n\nfunction wrapNativeSuper_wrapNativeSuper(Class) {\n  var _cache = typeof Map === \"function\" ? new Map() : undefined;\n\n  wrapNativeSuper_wrapNativeSuper = function _wrapNativeSuper(Class) {\n    if (Class === null || !_isNativeFunction(Class)) return Class;\n\n    if (typeof Class !== \"function\") {\n      throw new TypeError(\"Super expression must either be null or a function\");\n    }\n\n    if (typeof _cache !== \"undefined\") {\n      if (_cache.has(Class)) return _cache.get(Class);\n\n      _cache.set(Class, Wrapper);\n    }\n\n    function Wrapper() {\n      return construct_construct(Class, arguments, _getPrototypeOf(this).constructor);\n    }\n\n    Wrapper.prototype = Object.create(Class.prototype, {\n      constructor: {\n        value: Wrapper,\n        enumerable: false,\n        writable: true,\n        configurable: true\n      }\n    });\n    return _setPrototypeOf(Wrapper, Class);\n  };\n\n  return wrapNativeSuper_wrapNativeSuper(Class);\n}\n// CONCATENATED MODULE: ./node_modules/@babel/runtime/helpers/esm/taggedTemplateLiteralLoose.js\nfunction _taggedTemplateLiteralLoose(strings, raw) {\n  if (!raw) {\n    raw = strings.slice(0);\n  }\n\n  strings.raw = raw;\n  return strings;\n}\n// CONCATENATED MODULE: ./node_modules/polished/dist/polished.esm.js\n\n\n\n\n\n\nfunction last() {\n  var _ref;\n\n  return _ref = arguments.length - 1, _ref < 0 || arguments.length <= _ref ? undefined : arguments[_ref];\n}\n\nfunction negation(a) {\n  return -a;\n}\n\nfunction addition(a, b) {\n  return a + b;\n}\n\nfunction subtraction(a, b) {\n  return a - b;\n}\n\nfunction multiplication(a, b) {\n  return a * b;\n}\n\nfunction division(a, b) {\n  return a / b;\n}\n\nfunction factorial(a) {\n  if (a % 1 || !(+a >= 0)) return NaN;\n  if (a > 170) return Infinity;else if (a === 0) return 1;else {\n    return a * factorial(a - 1);\n  }\n}\n\nfunction power(a, b) {\n  return Math.pow(a, b);\n}\n\nfunction sqrt(a) {\n  return Math.sqrt(a);\n}\n\nfunction max() {\n  return Math.max.apply(Math, arguments);\n}\n\nfunction min() {\n  return Math.min.apply(Math, arguments);\n}\n\nfunction comma() {\n  return Array.of.apply(Array, arguments);\n}\n\nvar defaultMathSymbols = {\n  symbols: {\n    '!': {\n      postfix: {\n        symbol: '!',\n        f: factorial,\n        notation: 'postfix',\n        precedence: 6,\n        rightToLeft: 0,\n        argCount: 1\n      },\n      symbol: '!',\n      regSymbol: '!'\n    },\n    '^': {\n      infix: {\n        symbol: '^',\n        f: power,\n        notation: 'infix',\n        precedence: 5,\n        rightToLeft: 1,\n        argCount: 2\n      },\n      symbol: '^',\n      regSymbol: '\\\\^'\n    },\n    '*': {\n      infix: {\n        symbol: '*',\n        f: multiplication,\n        notation: 'infix',\n        precedence: 4,\n        rightToLeft: 0,\n        argCount: 2\n      },\n      symbol: '*',\n      regSymbol: '\\\\*'\n    },\n    '/': {\n      infix: {\n        symbol: '/',\n        f: division,\n        notation: 'infix',\n        precedence: 4,\n        rightToLeft: 0,\n        argCount: 2\n      },\n      symbol: '/',\n      regSymbol: '/'\n    },\n    '+': {\n      infix: {\n        symbol: '+',\n        f: addition,\n        notation: 'infix',\n        precedence: 2,\n        rightToLeft: 0,\n        argCount: 2\n      },\n      prefix: {\n        symbol: '+',\n        f: last,\n        notation: 'prefix',\n        precedence: 3,\n        rightToLeft: 0,\n        argCount: 1\n      },\n      symbol: '+',\n      regSymbol: '\\\\+'\n    },\n    '-': {\n      infix: {\n        symbol: '-',\n        f: subtraction,\n        notation: 'infix',\n        precedence: 2,\n        rightToLeft: 0,\n        argCount: 2\n      },\n      prefix: {\n        symbol: '-',\n        f: negation,\n        notation: 'prefix',\n        precedence: 3,\n        rightToLeft: 0,\n        argCount: 1\n      },\n      symbol: '-',\n      regSymbol: '-'\n    },\n    ',': {\n      infix: {\n        symbol: ',',\n        f: comma,\n        notation: 'infix',\n        precedence: 1,\n        rightToLeft: 0,\n        argCount: 2\n      },\n      symbol: ',',\n      regSymbol: ','\n    },\n    '(': {\n      prefix: {\n        symbol: '(',\n        f: last,\n        notation: 'prefix',\n        precedence: 0,\n        rightToLeft: 0,\n        argCount: 1\n      },\n      symbol: '(',\n      regSymbol: '\\\\('\n    },\n    ')': {\n      postfix: {\n        symbol: ')',\n        f: undefined,\n        notation: 'postfix',\n        precedence: 0,\n        rightToLeft: 0,\n        argCount: 1\n      },\n      symbol: ')',\n      regSymbol: '\\\\)'\n    },\n    min: {\n      func: {\n        symbol: 'min',\n        f: min,\n        notation: 'func',\n        precedence: 0,\n        rightToLeft: 0,\n        argCount: 1\n      },\n      symbol: 'min',\n      regSymbol: 'min\\\\b'\n    },\n    max: {\n      func: {\n        symbol: 'max',\n        f: max,\n        notation: 'func',\n        precedence: 0,\n        rightToLeft: 0,\n        argCount: 1\n      },\n      symbol: 'max',\n      regSymbol: 'max\\\\b'\n    },\n    sqrt: {\n      func: {\n        symbol: 'sqrt',\n        f: sqrt,\n        notation: 'func',\n        precedence: 0,\n        rightToLeft: 0,\n        argCount: 1\n      },\n      symbol: 'sqrt',\n      regSymbol: 'sqrt\\\\b'\n    }\n  }\n};\n\n// based on https://github.com/styled-components/styled-components/blob/fcf6f3804c57a14dd7984dfab7bc06ee2edca044/src/utils/error.js\n\n/**\n * Parse errors.md and turn it into a simple hash of code: message\n * @private\n */\nvar ERRORS = {\n  \"1\": \"Passed invalid arguments to hsl, please pass multiple numbers e.g. hsl(360, 0.75, 0.4) or an object e.g. rgb({ hue: 255, saturation: 0.4, lightness: 0.75 }).\\n\\n\",\n  \"2\": \"Passed invalid arguments to hsla, please pass multiple numbers e.g. hsla(360, 0.75, 0.4, 0.7) or an object e.g. rgb({ hue: 255, saturation: 0.4, lightness: 0.75, alpha: 0.7 }).\\n\\n\",\n  \"3\": \"Passed an incorrect argument to a color function, please pass a string representation of a color.\\n\\n\",\n  \"4\": \"Couldn't generate valid rgb string from %s, it returned %s.\\n\\n\",\n  \"5\": \"Couldn't parse the color string. Please provide the color as a string in hex, rgb, rgba, hsl or hsla notation.\\n\\n\",\n  \"6\": \"Passed invalid arguments to rgb, please pass multiple numbers e.g. rgb(255, 205, 100) or an object e.g. rgb({ red: 255, green: 205, blue: 100 }).\\n\\n\",\n  \"7\": \"Passed invalid arguments to rgba, please pass multiple numbers e.g. rgb(255, 205, 100, 0.75) or an object e.g. rgb({ red: 255, green: 205, blue: 100, alpha: 0.75 }).\\n\\n\",\n  \"8\": \"Passed invalid argument to toColorString, please pass a RgbColor, RgbaColor, HslColor or HslaColor object.\\n\\n\",\n  \"9\": \"Please provide a number of steps to the modularScale helper.\\n\\n\",\n  \"10\": \"Please pass a number or one of the predefined scales to the modularScale helper as the ratio.\\n\\n\",\n  \"11\": \"Invalid value passed as base to modularScale, expected number or em string but got \\\"%s\\\"\\n\\n\",\n  \"12\": \"Expected a string ending in \\\"px\\\" or a number passed as the first argument to %s(), got \\\"%s\\\" instead.\\n\\n\",\n  \"13\": \"Expected a string ending in \\\"px\\\" or a number passed as the second argument to %s(), got \\\"%s\\\" instead.\\n\\n\",\n  \"14\": \"Passed invalid pixel value (\\\"%s\\\") to %s(), please pass a value like \\\"12px\\\" or 12.\\n\\n\",\n  \"15\": \"Passed invalid base value (\\\"%s\\\") to %s(), please pass a value like \\\"12px\\\" or 12.\\n\\n\",\n  \"16\": \"You must provide a template to this method.\\n\\n\",\n  \"17\": \"You passed an unsupported selector state to this method.\\n\\n\",\n  \"18\": \"minScreen and maxScreen must be provided as stringified numbers with the same units.\\n\\n\",\n  \"19\": \"fromSize and toSize must be provided as stringified numbers with the same units.\\n\\n\",\n  \"20\": \"expects either an array of objects or a single object with the properties prop, fromSize, and toSize.\\n\\n\",\n  \"21\": \"expects the objects in the first argument array to have the properties `prop`, `fromSize`, and `toSize`.\\n\\n\",\n  \"22\": \"expects the first argument object to have the properties `prop`, `fromSize`, and `toSize`.\\n\\n\",\n  \"23\": \"fontFace expects a name of a font-family.\\n\\n\",\n  \"24\": \"fontFace expects either the path to the font file(s) or a name of a local copy.\\n\\n\",\n  \"25\": \"fontFace expects localFonts to be an array.\\n\\n\",\n  \"26\": \"fontFace expects fileFormats to be an array.\\n\\n\",\n  \"27\": \"radialGradient requries at least 2 color-stops to properly render.\\n\\n\",\n  \"28\": \"Please supply a filename to retinaImage() as the first argument.\\n\\n\",\n  \"29\": \"Passed invalid argument to triangle, please pass correct pointingDirection e.g. 'right'.\\n\\n\",\n  \"30\": \"Passed an invalid value to `height` or `width`. Please provide a pixel based unit.\\n\\n\",\n  \"31\": \"The animation shorthand only takes 8 arguments. See the specification for more information: http://mdn.io/animation\\n\\n\",\n  \"32\": \"To pass multiple animations please supply them in arrays, e.g. animation(['rotate', '2s'], ['move', '1s'])\\nTo pass a single animation please supply them in simple values, e.g. animation('rotate', '2s')\\n\\n\",\n  \"33\": \"The animation shorthand arrays can only have 8 elements. See the specification for more information: http://mdn.io/animation\\n\\n\",\n  \"34\": \"borderRadius expects a radius value as a string or number as the second argument.\\n\\n\",\n  \"35\": \"borderRadius expects one of \\\"top\\\", \\\"bottom\\\", \\\"left\\\" or \\\"right\\\" as the first argument.\\n\\n\",\n  \"36\": \"Property must be a string value.\\n\\n\",\n  \"37\": \"Syntax Error at %s.\\n\\n\",\n  \"38\": \"Formula contains a function that needs parentheses at %s.\\n\\n\",\n  \"39\": \"Formula is missing closing parenthesis at %s.\\n\\n\",\n  \"40\": \"Formula has too many closing parentheses at %s.\\n\\n\",\n  \"41\": \"All values in a formula must have the same unit or be unitless.\\n\\n\",\n  \"42\": \"Please provide a number of steps to the modularScale helper.\\n\\n\",\n  \"43\": \"Please pass a number or one of the predefined scales to the modularScale helper as the ratio.\\n\\n\",\n  \"44\": \"Invalid value passed as base to modularScale, expected number or em/rem string but got %s.\\n\\n\",\n  \"45\": \"Passed invalid argument to hslToColorString, please pass a HslColor or HslaColor object.\\n\\n\",\n  \"46\": \"Passed invalid argument to rgbToColorString, please pass a RgbColor or RgbaColor object.\\n\\n\",\n  \"47\": \"minScreen and maxScreen must be provided as stringified numbers with the same units.\\n\\n\",\n  \"48\": \"fromSize and toSize must be provided as stringified numbers with the same units.\\n\\n\",\n  \"49\": \"Expects either an array of objects or a single object with the properties prop, fromSize, and toSize.\\n\\n\",\n  \"50\": \"Expects the objects in the first argument array to have the properties prop, fromSize, and toSize.\\n\\n\",\n  \"51\": \"Expects the first argument object to have the properties prop, fromSize, and toSize.\\n\\n\",\n  \"52\": \"fontFace expects either the path to the font file(s) or a name of a local copy.\\n\\n\",\n  \"53\": \"fontFace expects localFonts to be an array.\\n\\n\",\n  \"54\": \"fontFace expects fileFormats to be an array.\\n\\n\",\n  \"55\": \"fontFace expects a name of a font-family.\\n\\n\",\n  \"56\": \"linearGradient requries at least 2 color-stops to properly render.\\n\\n\",\n  \"57\": \"radialGradient requries at least 2 color-stops to properly render.\\n\\n\",\n  \"58\": \"Please supply a filename to retinaImage() as the first argument.\\n\\n\",\n  \"59\": \"Passed invalid argument to triangle, please pass correct pointingDirection e.g. 'right'.\\n\\n\",\n  \"60\": \"Passed an invalid value to `height` or `width`. Please provide a pixel based unit.\\n\\n\",\n  \"61\": \"Property must be a string value.\\n\\n\",\n  \"62\": \"borderRadius expects a radius value as a string or number as the second argument.\\n\\n\",\n  \"63\": \"borderRadius expects one of \\\"top\\\", \\\"bottom\\\", \\\"left\\\" or \\\"right\\\" as the first argument.\\n\\n\",\n  \"64\": \"The animation shorthand only takes 8 arguments. See the specification for more information: http://mdn.io/animation.\\n\\n\",\n  \"65\": \"To pass multiple animations please supply them in arrays, e.g. animation(['rotate', '2s'], ['move', '1s'])\\\\nTo pass a single animation please supply them in simple values, e.g. animation('rotate', '2s').\\n\\n\",\n  \"66\": \"The animation shorthand arrays can only have 8 elements. See the specification for more information: http://mdn.io/animation.\\n\\n\",\n  \"67\": \"You must provide a template to this method.\\n\\n\",\n  \"68\": \"You passed an unsupported selector state to this method.\\n\\n\",\n  \"69\": \"Expected a string ending in \\\"px\\\" or a number passed as the first argument to %s(), got %s instead.\\n\\n\",\n  \"70\": \"Expected a string ending in \\\"px\\\" or a number passed as the second argument to %s(), got %s instead.\\n\\n\",\n  \"71\": \"Passed invalid pixel value %s to %s(), please pass a value like \\\"12px\\\" or 12.\\n\\n\",\n  \"72\": \"Passed invalid base value %s to %s(), please pass a value like \\\"12px\\\" or 12.\\n\\n\",\n  \"73\": \"Please provide a valid CSS variable.\\n\\n\",\n  \"74\": \"CSS variable not found.\\n\\n\",\n  \"75\": \"fromSize and toSize must be provided as stringified numbers with the same units as minScreen and maxScreen.\\n\"\n};\n/**\n * super basic version of sprintf\n * @private\n */\n\nfunction format() {\n  for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n    args[_key] = arguments[_key];\n  }\n\n  var a = args[0];\n  var b = [];\n  var c;\n\n  for (c = 1; c < args.length; c += 1) {\n    b.push(args[c]);\n  }\n\n  b.forEach(function (d) {\n    a = a.replace(/%[a-z]/, d);\n  });\n  return a;\n}\n/**\n * Create an error file out of errors.md for development and a simple web link to the full errors\n * in production mode.\n * @private\n */\n\n\nvar polished_esm_PolishedError = /*#__PURE__*/function (_Error) {\n  _inheritsLoose(PolishedError, _Error);\n\n  function PolishedError(code) {\n    var _this;\n\n    if (true) {\n      _this = _Error.call(this, \"An error occurred. See https://github.com/styled-components/polished/blob/main/src/internalHelpers/errors.md#\" + code + \" for more information.\") || this;\n    } else { var _len2, args, _key2; }\n\n    return _assertThisInitialized(_this);\n  }\n\n  return PolishedError;\n}( /*#__PURE__*/wrapNativeSuper_wrapNativeSuper(Error));\n\nvar unitRegExp = /((?!\\w)a|na|hc|mc|dg|me[r]?|xe|ni(?![a-zA-Z])|mm|cp|tp|xp|q(?!s)|hv|xamv|nimv|wv|sm|s(?!\\D|$)|ged|darg?|nrut)/g; // Merges additional math functionality into the defaults.\n\nfunction mergeSymbolMaps(additionalSymbols) {\n  var symbolMap = {};\n  symbolMap.symbols = additionalSymbols ? _extends({}, defaultMathSymbols.symbols, additionalSymbols.symbols) : _extends({}, defaultMathSymbols.symbols);\n  return symbolMap;\n}\n\nfunction exec(operators, values) {\n  var _ref;\n\n  var op = operators.pop();\n  values.push(op.f.apply(op, (_ref = []).concat.apply(_ref, values.splice(-op.argCount))));\n  return op.precedence;\n}\n\nfunction calculate(expression, additionalSymbols) {\n  var symbolMap = mergeSymbolMaps(additionalSymbols);\n  var match;\n  var operators = [symbolMap.symbols['('].prefix];\n  var values = [];\n  var pattern = new RegExp( // Pattern for numbers\n  \"\\\\d+(?:\\\\.\\\\d+)?|\" + // ...and patterns for individual operators/function names\n  Object.keys(symbolMap.symbols).map(function (key) {\n    return symbolMap.symbols[key];\n  }) // longer symbols should be listed first\n  // $FlowFixMe\n  .sort(function (a, b) {\n    return b.symbol.length - a.symbol.length;\n  }) // $FlowFixMe\n  .map(function (val) {\n    return val.regSymbol;\n  }).join('|') + \"|(\\\\S)\", 'g');\n  pattern.lastIndex = 0; // Reset regular expression object\n\n  var afterValue = false;\n\n  do {\n    match = pattern.exec(expression);\n\n    var _ref2 = match || [')', undefined],\n        token = _ref2[0],\n        bad = _ref2[1];\n\n    var notNumber = symbolMap.symbols[token];\n    var notNewValue = notNumber && !notNumber.prefix && !notNumber.func;\n    var notAfterValue = !notNumber || !notNumber.postfix && !notNumber.infix; // Check for syntax errors:\n\n    if (bad || (afterValue ? notAfterValue : notNewValue)) {\n      throw new polished_esm_PolishedError(37, match ? match.index : expression.length, expression);\n    }\n\n    if (afterValue) {\n      // We either have an infix or postfix operator (they should be mutually exclusive)\n      var curr = notNumber.postfix || notNumber.infix;\n\n      do {\n        var prev = operators[operators.length - 1];\n        if ((curr.precedence - prev.precedence || prev.rightToLeft) > 0) break; // Apply previous operator, since it has precedence over current one\n      } while (exec(operators, values)); // Exit loop after executing an opening parenthesis or function\n\n\n      afterValue = curr.notation === 'postfix';\n\n      if (curr.symbol !== ')') {\n        operators.push(curr); // Postfix always has precedence over any operator that follows after it\n\n        if (afterValue) exec(operators, values);\n      }\n    } else if (notNumber) {\n      // prefix operator or function\n      operators.push(notNumber.prefix || notNumber.func);\n\n      if (notNumber.func) {\n        // Require an opening parenthesis\n        match = pattern.exec(expression);\n\n        if (!match || match[0] !== '(') {\n          throw new polished_esm_PolishedError(38, match ? match.index : expression.length, expression);\n        }\n      }\n    } else {\n      // number\n      values.push(+token);\n      afterValue = true;\n    }\n  } while (match && operators.length);\n\n  if (operators.length) {\n    throw new polished_esm_PolishedError(39, match ? match.index : expression.length, expression);\n  } else if (match) {\n    throw new polished_esm_PolishedError(40, match ? match.index : expression.length, expression);\n  } else {\n    return values.pop();\n  }\n}\n\nfunction reverseString(str) {\n  return str.split('').reverse().join('');\n}\n/**\n * Helper for doing math with CSS Units. Accepts a formula as a string. All values in the formula must have the same unit (or be unitless). Supports complex formulas utliziing addition, subtraction, multiplication, division, square root, powers, factorial, min, max, as well as parentheses for order of operation.\n *\n *In cases where you need to do calculations with mixed units where one unit is a [relative length unit](https://developer.mozilla.org/en-US/docs/Web/CSS/length#Relative_length_units), you will want to use [CSS Calc](https://developer.mozilla.org/en-US/docs/Web/CSS/calc).\n *\n * *warning* While we've done everything possible to ensure math safely evalutes formulas expressed as strings, you should always use extreme caution when passing `math` user provided values.\n * @example\n * // Styles as object usage\n * const styles = {\n *   fontSize: math('12rem + 8rem'),\n *   fontSize: math('(12px + 2px) * 3'),\n *   fontSize: math('3px^2 + sqrt(4)'),\n * }\n *\n * // styled-components usage\n * const div = styled.div`\n *   fontSize: ${math('12rem + 8rem')};\n *   fontSize: ${math('(12px + 2px) * 3')};\n *   fontSize: ${math('3px^2 + sqrt(4)')};\n * `\n *\n * // CSS as JS Output\n *\n * div: {\n *   fontSize: '20rem',\n *   fontSize: '42px',\n *   fontSize: '11px',\n * }\n */\n\n\nfunction math(formula, additionalSymbols) {\n  var reversedFormula = reverseString(formula);\n  var formulaMatch = reversedFormula.match(unitRegExp); // Check that all units are the same\n\n  if (formulaMatch && !formulaMatch.every(function (unit) {\n    return unit === formulaMatch[0];\n  })) {\n    throw new polished_esm_PolishedError(41);\n  }\n\n  var cleanFormula = reverseString(reversedFormula.replace(unitRegExp, ''));\n  return \"\" + calculate(cleanFormula, additionalSymbols) + (formulaMatch ? reverseString(formulaMatch[0]) : '');\n}\n\nvar cssVariableRegex = /--[\\S]*/g;\n/**\n * Fetches the value of a passed CSS Variable.\n *\n * Passthrough can be enabled (off by default) for when you are unsure of the input and want non-variable values to be returned instead of an error.\n *\n * @example\n * // Styles as object usage\n * const styles = {\n *   'background': cssVar('--background-color'),\n * }\n *\n * // styled-components usage\n * const div = styled.div`\n *   background: ${cssVar('--background-color')};\n * `\n *\n * // CSS in JS Output\n *\n * element {\n *   'background': 'red'\n * }\n */\n\nfunction cssVar(cssVariable, passThrough) {\n  if (!cssVariable || !cssVariable.match(cssVariableRegex)) {\n    if (passThrough) return cssVariable;\n    throw new polished_esm_PolishedError(73);\n  }\n\n  var variableValue;\n  /* eslint-disable */\n\n  /* istanbul ignore next */\n\n  if (typeof document !== 'undefined' && document.documentElement !== null) {\n    variableValue = getComputedStyle(document.documentElement).getPropertyValue(cssVariable);\n  }\n  /* eslint-enable */\n\n\n  if (variableValue) {\n    return variableValue.trim();\n  } else {\n    throw new polished_esm_PolishedError(74);\n  }\n}\n\n// @private\nfunction capitalizeString(string) {\n  return string.charAt(0).toUpperCase() + string.slice(1);\n}\n\nvar positionMap = ['Top', 'Right', 'Bottom', 'Left'];\n\nfunction generateProperty(property, position) {\n  if (!property) return position.toLowerCase();\n  var splitProperty = property.split('-');\n\n  if (splitProperty.length > 1) {\n    splitProperty.splice(1, 0, position);\n    return splitProperty.reduce(function (acc, val) {\n      return \"\" + acc + capitalizeString(val);\n    });\n  }\n\n  var joinedProperty = property.replace(/([a-z])([A-Z])/g, \"$1\" + position + \"$2\");\n  return property === joinedProperty ? \"\" + property + position : joinedProperty;\n}\n\nfunction generateStyles(property, valuesWithDefaults) {\n  var styles = {};\n\n  for (var i = 0; i < valuesWithDefaults.length; i += 1) {\n    if (valuesWithDefaults[i] || valuesWithDefaults[i] === 0) {\n      styles[generateProperty(property, positionMap[i])] = valuesWithDefaults[i];\n    }\n  }\n\n  return styles;\n}\n/**\n * Enables shorthand for direction-based properties. It accepts a property (hyphenated or camelCased) and up to four values that map to top, right, bottom, and left, respectively. You can optionally pass an empty string to get only the directional values as properties. You can also optionally pass a null argument for a directional value to ignore it.\n * @example\n * // Styles as object usage\n * const styles = {\n *   ...directionalProperty('padding', '12px', '24px', '36px', '48px')\n * }\n *\n * // styled-components usage\n * const div = styled.div`\n *   ${directionalProperty('padding', '12px', '24px', '36px', '48px')}\n * `\n *\n * // CSS as JS Output\n *\n * div {\n *   'paddingTop': '12px',\n *   'paddingRight': '24px',\n *   'paddingBottom': '36px',\n *   'paddingLeft': '48px'\n * }\n */\n\n\nfunction directionalProperty(property) {\n  for (var _len = arguments.length, values = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n    values[_key - 1] = arguments[_key];\n  }\n\n  //  prettier-ignore\n  var firstValue = values[0],\n      _values$ = values[1],\n      secondValue = _values$ === void 0 ? firstValue : _values$,\n      _values$2 = values[2],\n      thirdValue = _values$2 === void 0 ? firstValue : _values$2,\n      _values$3 = values[3],\n      fourthValue = _values$3 === void 0 ? secondValue : _values$3;\n  var valuesWithDefaults = [firstValue, secondValue, thirdValue, fourthValue];\n  return generateStyles(property, valuesWithDefaults);\n}\n\n/**\n * Check if a string ends with something\n * @private\n */\nfunction endsWith(string, suffix) {\n  return string.substr(-suffix.length) === suffix;\n}\n\nvar cssRegex = /^([+-]?(?:\\d+|\\d*\\.\\d+))([a-z]*|%)$/;\n/**\n * Returns a given CSS value minus its unit of measure.\n *\n * @deprecated - stripUnit's unitReturn functionality has been marked for deprecation in polished 4.0. It's functionality has been been moved to getValueAndUnit.\n *\n * @example\n * // Styles as object usage\n * const styles = {\n *   '--dimension': stripUnit('100px')\n * }\n *\n * // styled-components usage\n * const div = styled.div`\n *   --dimension: ${stripUnit('100px')};\n * `\n *\n * // CSS in JS Output\n *\n * element {\n *   '--dimension': 100\n * }\n */\n\nfunction stripUnit(value, unitReturn) {\n  if (typeof value !== 'string') return unitReturn ? [value, undefined] : value;\n  var matchedValue = value.match(cssRegex);\n\n  if (unitReturn) {\n    // eslint-disable-next-line no-console\n    console.warn(\"stripUnit's unitReturn functionality has been marked for deprecation in polished 4.0. It's functionality has been been moved to getValueAndUnit.\");\n    if (matchedValue) return [parseFloat(value), matchedValue[2]];\n    return [value, undefined];\n  }\n\n  if (matchedValue) return parseFloat(value);\n  return value;\n}\n\n/**\n * Factory function that creates pixel-to-x converters\n * @private\n */\n\nvar pxtoFactory = function pxtoFactory(to) {\n  return function (pxval, base) {\n    if (base === void 0) {\n      base = '16px';\n    }\n\n    var newPxval = pxval;\n    var newBase = base;\n\n    if (typeof pxval === 'string') {\n      if (!endsWith(pxval, 'px')) {\n        throw new polished_esm_PolishedError(69, to, pxval);\n      }\n\n      newPxval = stripUnit(pxval);\n    }\n\n    if (typeof base === 'string') {\n      if (!endsWith(base, 'px')) {\n        throw new polished_esm_PolishedError(70, to, base);\n      }\n\n      newBase = stripUnit(base);\n    }\n\n    if (typeof newPxval === 'string') {\n      throw new polished_esm_PolishedError(71, pxval, to);\n    }\n\n    if (typeof newBase === 'string') {\n      throw new polished_esm_PolishedError(72, base, to);\n    }\n\n    return \"\" + newPxval / newBase + to;\n  };\n};\n\n/**\n * Convert pixel value to ems. The default base value is 16px, but can be changed by passing a\n * second argument to the function.\n * @function\n * @param {string|number} pxval\n * @param {string|number} [base='16px']\n * @example\n * // Styles as object usage\n * const styles = {\n *   'height': em('16px')\n * }\n *\n * // styled-components usage\n * const div = styled.div`\n *   height: ${em('16px')}\n * `\n *\n * // CSS in JS Output\n *\n * element {\n *   'height': '1em'\n * }\n */\n\nvar em = /*#__PURE__*/pxtoFactory('em');\n\nvar cssRegex$1 = /^([+-]?(?:\\d+|\\d*\\.\\d+))([a-z]*|%)$/;\n/**\n * Returns a given CSS value and its unit as elements of an array.\n *\n * @example\n * // Styles as object usage\n * const styles = {\n *   '--dimension': getValueAndUnit('100px')[0],\n *   '--unit': getValueAndUnit('100px')[1],\n * }\n *\n * // styled-components usage\n * const div = styled.div`\n *   --dimension: ${getValueAndUnit('100px')[0]};\n *   --unit: ${getValueAndUnit('100px')[1]};\n * `\n *\n * // CSS in JS Output\n *\n * element {\n *   '--dimension': 100,\n *   '--unit': 'px',\n * }\n */\n\nfunction getValueAndUnit(value) {\n  if (typeof value !== 'string') return [value, ''];\n  var matchedValue = value.match(cssRegex$1);\n  if (matchedValue) return [parseFloat(value), matchedValue[2]];\n  return [value, undefined];\n}\n\nvar ratioNames = {\n  minorSecond: 1.067,\n  majorSecond: 1.125,\n  minorThird: 1.2,\n  majorThird: 1.25,\n  perfectFourth: 1.333,\n  augFourth: 1.414,\n  perfectFifth: 1.5,\n  minorSixth: 1.6,\n  goldenSection: 1.618,\n  majorSixth: 1.667,\n  minorSeventh: 1.778,\n  majorSeventh: 1.875,\n  octave: 2,\n  majorTenth: 2.5,\n  majorEleventh: 2.667,\n  majorTwelfth: 3,\n  doubleOctave: 4\n};\n\nfunction getRatio(ratioName) {\n  return ratioNames[ratioName];\n}\n/**\n * Establish consistent measurements and spacial relationships throughout your projects by incrementing an em or rem value up or down a defined scale. We provide a list of commonly used scales as pre-defined variables.\n * @example\n * // Styles as object usage\n * const styles = {\n *    // Increment two steps up the default scale\n *   'fontSize': modularScale(2)\n * }\n *\n * // styled-components usage\n * const div = styled.div`\n *    // Increment two steps up the default scale\n *   fontSize: ${modularScale(2)}\n * `\n *\n * // CSS in JS Output\n *\n * element {\n *   'fontSize': '1.77689em'\n * }\n */\n\n\nfunction modularScale(steps, base, ratio) {\n  if (base === void 0) {\n    base = '1em';\n  }\n\n  if (ratio === void 0) {\n    ratio = 1.333;\n  }\n\n  if (typeof steps !== 'number') {\n    throw new polished_esm_PolishedError(42);\n  }\n\n  if (typeof ratio === 'string' && !ratioNames[ratio]) {\n    throw new polished_esm_PolishedError(43);\n  }\n\n  var _ref = typeof base === 'string' ? getValueAndUnit(base) : [base, ''],\n      realBase = _ref[0],\n      unit = _ref[1];\n\n  var realRatio = typeof ratio === 'string' ? getRatio(ratio) : ratio;\n\n  if (typeof realBase === 'string') {\n    throw new polished_esm_PolishedError(44, base);\n  }\n\n  return \"\" + realBase * Math.pow(realRatio, steps) + (unit || '');\n}\n\n/**\n * Convert pixel value to rems. The default base value is 16px, but can be changed by passing a\n * second argument to the function.\n * @function\n * @param {string|number} pxval\n * @param {string|number} [base='16px']\n * @example\n * // Styles as object usage\n * const styles = {\n *   'height': rem('16px')\n * }\n *\n * // styled-components usage\n * const div = styled.div`\n *   height: ${rem('16px')}\n * `\n *\n * // CSS in JS Output\n *\n * element {\n *   'height': '1rem'\n * }\n */\n\nvar rem = /*#__PURE__*/pxtoFactory('rem');\n\n/**\n * Returns a CSS calc formula for linear interpolation of a property between two values. Accepts optional minScreen (defaults to '320px') and maxScreen (defaults to '1200px').\n *\n * @example\n * // Styles as object usage\n * const styles = {\n *   fontSize: between('20px', '100px', '400px', '1000px'),\n *   fontSize: between('20px', '100px')\n * }\n *\n * // styled-components usage\n * const div = styled.div`\n *   fontSize: ${between('20px', '100px', '400px', '1000px')};\n *   fontSize: ${between('20px', '100px')}\n * `\n *\n * // CSS as JS Output\n *\n * h1: {\n *   'fontSize': 'calc(-33.33333333333334px + 13.333333333333334vw)',\n *   'fontSize': 'calc(-9.090909090909093px + 9.090909090909092vw)'\n * }\n */\n\nfunction between(fromSize, toSize, minScreen, maxScreen) {\n  if (minScreen === void 0) {\n    minScreen = '320px';\n  }\n\n  if (maxScreen === void 0) {\n    maxScreen = '1200px';\n  }\n\n  var _getValueAndUnit = getValueAndUnit(fromSize),\n      unitlessFromSize = _getValueAndUnit[0],\n      fromSizeUnit = _getValueAndUnit[1];\n\n  var _getValueAndUnit2 = getValueAndUnit(toSize),\n      unitlessToSize = _getValueAndUnit2[0],\n      toSizeUnit = _getValueAndUnit2[1];\n\n  var _getValueAndUnit3 = getValueAndUnit(minScreen),\n      unitlessMinScreen = _getValueAndUnit3[0],\n      minScreenUnit = _getValueAndUnit3[1];\n\n  var _getValueAndUnit4 = getValueAndUnit(maxScreen),\n      unitlessMaxScreen = _getValueAndUnit4[0],\n      maxScreenUnit = _getValueAndUnit4[1];\n\n  if (typeof unitlessMinScreen !== 'number' || typeof unitlessMaxScreen !== 'number' || !minScreenUnit || !maxScreenUnit || minScreenUnit !== maxScreenUnit) {\n    throw new polished_esm_PolishedError(47);\n  }\n\n  if (typeof unitlessFromSize !== 'number' || typeof unitlessToSize !== 'number' || fromSizeUnit !== toSizeUnit) {\n    throw new polished_esm_PolishedError(48);\n  }\n\n  if (fromSizeUnit !== minScreenUnit || toSizeUnit !== maxScreenUnit) {\n    throw new polished_esm_PolishedError(75);\n  }\n\n  var slope = (unitlessFromSize - unitlessToSize) / (unitlessMinScreen - unitlessMaxScreen);\n  var base = unitlessToSize - slope * unitlessMaxScreen;\n  return \"calc(\" + base.toFixed(2) + (fromSizeUnit || '') + \" + \" + (100 * slope).toFixed(2) + \"vw)\";\n}\n\n/**\n * CSS to contain a float (credit to CSSMojo).\n *\n * @example\n * // Styles as object usage\n * const styles = {\n *    ...clearFix(),\n * }\n *\n * // styled-components usage\n * const div = styled.div`\n *   ${clearFix()}\n * `\n *\n * // CSS as JS Output\n *\n * '&::after': {\n *   'clear': 'both',\n *   'content': '\"\"',\n *   'display': 'table'\n * }\n */\nfunction polished_esm_clearFix(parent) {\n  var _ref;\n\n  if (parent === void 0) {\n    parent = '&';\n  }\n\n  var pseudoSelector = parent + \"::after\";\n  return _ref = {}, _ref[pseudoSelector] = {\n    clear: 'both',\n    content: '\"\"',\n    display: 'table'\n  }, _ref;\n}\n\n/**\n * CSS to fully cover an area. Can optionally be passed an offset to act as a \"padding\".\n *\n * @example\n * // Styles as object usage\n * const styles = {\n *   ...cover()\n * }\n *\n * // styled-components usage\n * const div = styled.div`\n *   ${cover()}\n * `\n *\n * // CSS as JS Output\n *\n * div: {\n *   'position': 'absolute',\n *   'top': '0',\n *   'right: '0',\n *   'bottom': '0',\n *   'left: '0'\n * }\n */\nfunction cover(offset) {\n  if (offset === void 0) {\n    offset = 0;\n  }\n\n  return {\n    position: 'absolute',\n    top: offset,\n    right: offset,\n    bottom: offset,\n    left: offset\n  };\n}\n\n/**\n * CSS to represent truncated text with an ellipsis.\n *\n * @example\n * // Styles as object usage\n * const styles = {\n *   ...ellipsis('250px')\n * }\n *\n * // styled-components usage\n * const div = styled.div`\n *   ${ellipsis('250px')}\n * `\n *\n * // CSS as JS Output\n *\n * div: {\n *   'display': 'inline-block',\n *   'maxWidth': '250px',\n *   'overflow': 'hidden',\n *   'textOverflow': 'ellipsis',\n *   'whiteSpace': 'nowrap',\n *   'wordWrap': 'normal'\n * }\n */\nfunction ellipsis(width) {\n  if (width === void 0) {\n    width = '100%';\n  }\n\n  return {\n    display: 'inline-block',\n    maxWidth: width,\n    overflow: 'hidden',\n    textOverflow: 'ellipsis',\n    whiteSpace: 'nowrap',\n    wordWrap: 'normal'\n  };\n}\n\nfunction _createForOfIteratorHelperLoose(o, allowArrayLike) { var it = typeof Symbol !== \"undefined\" && o[Symbol.iterator] || o[\"@@iterator\"]; if (it) return (it = it.call(o)).next.bind(it); if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === \"number\") { if (it) o = it; var i = 0; return function () { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }; } throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\n\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\n\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }\n\n/**\n * Returns a set of media queries that resizes a property (or set of properties) between a provided fromSize and toSize. Accepts optional minScreen (defaults to '320px') and maxScreen (defaults to '1200px') to constrain the interpolation.\n *\n * @example\n * // Styles as object usage\n * const styles = {\n *   ...fluidRange(\n *    {\n *        prop: 'padding',\n *        fromSize: '20px',\n *        toSize: '100px',\n *      },\n *      '400px',\n *      '1000px',\n *    )\n * }\n *\n * // styled-components usage\n * const div = styled.div`\n *   ${fluidRange(\n *      {\n *        prop: 'padding',\n *        fromSize: '20px',\n *        toSize: '100px',\n *      },\n *      '400px',\n *      '1000px',\n *    )}\n * `\n *\n * // CSS as JS Output\n *\n * div: {\n *   \"@media (min-width: 1000px)\": Object {\n *     \"padding\": \"100px\",\n *   },\n *   \"@media (min-width: 400px)\": Object {\n *     \"padding\": \"calc(-33.33333333333334px + 13.333333333333334vw)\",\n *   },\n *   \"padding\": \"20px\",\n * }\n */\nfunction fluidRange(cssProp, minScreen, maxScreen) {\n  if (minScreen === void 0) {\n    minScreen = '320px';\n  }\n\n  if (maxScreen === void 0) {\n    maxScreen = '1200px';\n  }\n\n  if (!Array.isArray(cssProp) && typeof cssProp !== 'object' || cssProp === null) {\n    throw new polished_esm_PolishedError(49);\n  }\n\n  if (Array.isArray(cssProp)) {\n    var mediaQueries = {};\n    var fallbacks = {};\n\n    for (var _iterator = _createForOfIteratorHelperLoose(cssProp), _step; !(_step = _iterator()).done;) {\n      var _extends2, _extends3;\n\n      var obj = _step.value;\n\n      if (!obj.prop || !obj.fromSize || !obj.toSize) {\n        throw new polished_esm_PolishedError(50);\n      }\n\n      fallbacks[obj.prop] = obj.fromSize;\n      mediaQueries[\"@media (min-width: \" + minScreen + \")\"] = _extends({}, mediaQueries[\"@media (min-width: \" + minScreen + \")\"], (_extends2 = {}, _extends2[obj.prop] = between(obj.fromSize, obj.toSize, minScreen, maxScreen), _extends2));\n      mediaQueries[\"@media (min-width: \" + maxScreen + \")\"] = _extends({}, mediaQueries[\"@media (min-width: \" + maxScreen + \")\"], (_extends3 = {}, _extends3[obj.prop] = obj.toSize, _extends3));\n    }\n\n    return _extends({}, fallbacks, mediaQueries);\n  } else {\n    var _ref, _ref2, _ref3;\n\n    if (!cssProp.prop || !cssProp.fromSize || !cssProp.toSize) {\n      throw new polished_esm_PolishedError(51);\n    }\n\n    return _ref3 = {}, _ref3[cssProp.prop] = cssProp.fromSize, _ref3[\"@media (min-width: \" + minScreen + \")\"] = (_ref = {}, _ref[cssProp.prop] = between(cssProp.fromSize, cssProp.toSize, minScreen, maxScreen), _ref), _ref3[\"@media (min-width: \" + maxScreen + \")\"] = (_ref2 = {}, _ref2[cssProp.prop] = cssProp.toSize, _ref2), _ref3;\n  }\n}\n\nvar dataURIRegex = /^\\s*data:([a-z]+\\/[a-z-]+(;[a-z-]+=[a-z-]+)?)?(;charset=[a-z0-9-]+)?(;base64)?,[a-z0-9!$&',()*+,;=\\-._~:@/?%\\s]*\\s*$/i;\nvar formatHintMap = {\n  woff: 'woff',\n  woff2: 'woff2',\n  ttf: 'truetype',\n  otf: 'opentype',\n  eot: 'embedded-opentype',\n  svg: 'svg',\n  svgz: 'svg'\n};\n\nfunction generateFormatHint(format, formatHint) {\n  if (!formatHint) return '';\n  return \" format(\\\"\" + formatHintMap[format] + \"\\\")\";\n}\n\nfunction isDataURI(fontFilePath) {\n  return !!fontFilePath.replace(/\\s+/g, ' ').match(dataURIRegex);\n}\n\nfunction generateFileReferences(fontFilePath, fileFormats, formatHint) {\n  if (isDataURI(fontFilePath)) {\n    return \"url(\\\"\" + fontFilePath + \"\\\")\" + generateFormatHint(fileFormats[0], formatHint);\n  }\n\n  var fileFontReferences = fileFormats.map(function (format) {\n    return \"url(\\\"\" + fontFilePath + \".\" + format + \"\\\")\" + generateFormatHint(format, formatHint);\n  });\n  return fileFontReferences.join(', ');\n}\n\nfunction generateLocalReferences(localFonts) {\n  var localFontReferences = localFonts.map(function (font) {\n    return \"local(\\\"\" + font + \"\\\")\";\n  });\n  return localFontReferences.join(', ');\n}\n\nfunction generateSources(fontFilePath, localFonts, fileFormats, formatHint) {\n  var fontReferences = [];\n  if (localFonts) fontReferences.push(generateLocalReferences(localFonts));\n\n  if (fontFilePath) {\n    fontReferences.push(generateFileReferences(fontFilePath, fileFormats, formatHint));\n  }\n\n  return fontReferences.join(', ');\n}\n/**\n * CSS for a @font-face declaration.\n *\n * @example\n * // Styles as object basic usage\n * const styles = {\n *    ...fontFace({\n *      'fontFamily': 'Sans-Pro',\n *      'fontFilePath': 'path/to/file'\n *    })\n * }\n *\n * // styled-components basic usage\n * const GlobalStyle = createGlobalStyle`${\n *   fontFace({\n *     'fontFamily': 'Sans-Pro',\n *     'fontFilePath': 'path/to/file'\n *   }\n * )}`\n *\n * // CSS as JS Output\n *\n * '@font-face': {\n *   'fontFamily': 'Sans-Pro',\n *   'src': 'url(\"path/to/file.eot\"), url(\"path/to/file.woff2\"), url(\"path/to/file.woff\"), url(\"path/to/file.ttf\"), url(\"path/to/file.svg\")',\n * }\n */\n\n\nfunction fontFace(_ref) {\n  var fontFamily = _ref.fontFamily,\n      fontFilePath = _ref.fontFilePath,\n      fontStretch = _ref.fontStretch,\n      fontStyle = _ref.fontStyle,\n      fontVariant = _ref.fontVariant,\n      fontWeight = _ref.fontWeight,\n      _ref$fileFormats = _ref.fileFormats,\n      fileFormats = _ref$fileFormats === void 0 ? ['eot', 'woff2', 'woff', 'ttf', 'svg'] : _ref$fileFormats,\n      _ref$formatHint = _ref.formatHint,\n      formatHint = _ref$formatHint === void 0 ? false : _ref$formatHint,\n      localFonts = _ref.localFonts,\n      unicodeRange = _ref.unicodeRange,\n      fontDisplay = _ref.fontDisplay,\n      fontVariationSettings = _ref.fontVariationSettings,\n      fontFeatureSettings = _ref.fontFeatureSettings;\n  // Error Handling\n  if (!fontFamily) throw new polished_esm_PolishedError(55);\n\n  if (!fontFilePath && !localFonts) {\n    throw new polished_esm_PolishedError(52);\n  }\n\n  if (localFonts && !Array.isArray(localFonts)) {\n    throw new polished_esm_PolishedError(53);\n  }\n\n  if (!Array.isArray(fileFormats)) {\n    throw new polished_esm_PolishedError(54);\n  }\n\n  var fontFaceDeclaration = {\n    '@font-face': {\n      fontFamily: fontFamily,\n      src: generateSources(fontFilePath, localFonts, fileFormats, formatHint),\n      unicodeRange: unicodeRange,\n      fontStretch: fontStretch,\n      fontStyle: fontStyle,\n      fontVariant: fontVariant,\n      fontWeight: fontWeight,\n      fontDisplay: fontDisplay,\n      fontVariationSettings: fontVariationSettings,\n      fontFeatureSettings: fontFeatureSettings\n    }\n  }; // Removes undefined fields for cleaner css object.\n\n  return JSON.parse(JSON.stringify(fontFaceDeclaration));\n}\n\n/**\n * CSS to hide text to show a background image in a SEO-friendly way.\n *\n * @example\n * // Styles as object usage\n * const styles = {\n *   'backgroundImage': 'url(logo.png)',\n *   ...hideText(),\n * }\n *\n * // styled-components usage\n * const div = styled.div`\n *   backgroundImage: url(logo.png);\n *   ${hideText()};\n * `\n *\n * // CSS as JS Output\n *\n * 'div': {\n *   'backgroundImage': 'url(logo.png)',\n *   'textIndent': '101%',\n *   'overflow': 'hidden',\n *   'whiteSpace': 'nowrap',\n * }\n */\nfunction hideText() {\n  return {\n    textIndent: '101%',\n    overflow: 'hidden',\n    whiteSpace: 'nowrap'\n  };\n}\n\n/**\n * CSS to hide content visually but remain accessible to screen readers.\n * from [HTML5 Boilerplate](https://github.com/h5bp/html5-boilerplate/blob/9a176f57af1cfe8ec70300da4621fb9b07e5fa31/src/css/main.css#L121)\n *\n * @example\n * // Styles as object usage\n * const styles = {\n *   ...hideVisually(),\n * }\n *\n * // styled-components usage\n * const div = styled.div`\n *   ${hideVisually()};\n * `\n *\n * // CSS as JS Output\n *\n * 'div': {\n *   'border': '0',\n *   'clip': 'rect(0 0 0 0)',\n *   'height': '1px',\n *   'margin': '-1px',\n *   'overflow': 'hidden',\n *   'padding': '0',\n *   'position': 'absolute',\n *   'whiteSpace': 'nowrap',\n *   'width': '1px',\n * }\n */\nfunction hideVisually() {\n  return {\n    border: '0',\n    clip: 'rect(0 0 0 0)',\n    height: '1px',\n    margin: '-1px',\n    overflow: 'hidden',\n    padding: '0',\n    position: 'absolute',\n    whiteSpace: 'nowrap',\n    width: '1px'\n  };\n}\n\n/**\n * Generates a media query to target HiDPI devices.\n *\n * @example\n * // Styles as object usage\n * const styles = {\n *  [hiDPI(1.5)]: {\n *    width: 200px;\n *  }\n * }\n *\n * // styled-components usage\n * const div = styled.div`\n *   ${hiDPI(1.5)} {\n *     width: 200px;\n *   }\n * `\n *\n * // CSS as JS Output\n *\n * '@media only screen and (-webkit-min-device-pixel-ratio: 1.5),\n *  only screen and (min--moz-device-pixel-ratio: 1.5),\n *  only screen and (-o-min-device-pixel-ratio: 1.5/1),\n *  only screen and (min-resolution: 144dpi),\n *  only screen and (min-resolution: 1.5dppx)': {\n *   'width': '200px',\n * }\n */\nfunction hiDPI(ratio) {\n  if (ratio === void 0) {\n    ratio = 1.3;\n  }\n\n  return \"\\n    @media only screen and (-webkit-min-device-pixel-ratio: \" + ratio + \"),\\n    only screen and (min--moz-device-pixel-ratio: \" + ratio + \"),\\n    only screen and (-o-min-device-pixel-ratio: \" + ratio + \"/1),\\n    only screen and (min-resolution: \" + Math.round(ratio * 96) + \"dpi),\\n    only screen and (min-resolution: \" + ratio + \"dppx)\\n  \";\n}\n\nfunction constructGradientValue(literals) {\n  var template = '';\n\n  for (var _len = arguments.length, substitutions = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n    substitutions[_key - 1] = arguments[_key];\n  }\n\n  for (var i = 0; i < literals.length; i += 1) {\n    template += literals[i];\n\n    if (i === substitutions.length - 1 && substitutions[i]) {\n      var definedValues = substitutions.filter(function (substitute) {\n        return !!substitute;\n      }); // Adds leading coma if properties preceed color-stops\n\n      if (definedValues.length > 1) {\n        template = template.slice(0, -1);\n        template += \", \" + substitutions[i]; // No trailing space if color-stops is the only param provided\n      } else if (definedValues.length === 1) {\n        template += \"\" + substitutions[i];\n      }\n    } else if (substitutions[i]) {\n      template += substitutions[i] + \" \";\n    }\n  }\n\n  return template.trim();\n}\n\nvar _templateObject;\n\n/**\n * CSS for declaring a linear gradient, including a fallback background-color. The fallback is either the first color-stop or an explicitly passed fallback color.\n *\n * @example\n * // Styles as object usage\n * const styles = {\n *   ...linearGradient({\n        colorStops: ['#00FFFF 0%', 'rgba(0, 0, 255, 0) 50%', '#0000FF 95%'],\n        toDirection: 'to top right',\n        fallback: '#FFF',\n      })\n * }\n *\n * // styled-components usage\n * const div = styled.div`\n *   ${linearGradient({\n        colorStops: ['#00FFFF 0%', 'rgba(0, 0, 255, 0) 50%', '#0000FF 95%'],\n        toDirection: 'to top right',\n        fallback: '#FFF',\n      })}\n *`\n *\n * // CSS as JS Output\n *\n * div: {\n *   'backgroundColor': '#FFF',\n *   'backgroundImage': 'linear-gradient(to top right, #00FFFF 0%, rgba(0, 0, 255, 0) 50%, #0000FF 95%)',\n * }\n */\nfunction linearGradient(_ref) {\n  var colorStops = _ref.colorStops,\n      fallback = _ref.fallback,\n      _ref$toDirection = _ref.toDirection,\n      toDirection = _ref$toDirection === void 0 ? '' : _ref$toDirection;\n\n  if (!colorStops || colorStops.length < 2) {\n    throw new polished_esm_PolishedError(56);\n  }\n\n  return {\n    backgroundColor: fallback || colorStops[0].replace(/,\\s+/g, ',').split(' ')[0].replace(/,(?=\\S)/g, ', '),\n    backgroundImage: constructGradientValue(_templateObject || (_templateObject = _taggedTemplateLiteralLoose([\"linear-gradient(\", \"\", \")\"])), toDirection, colorStops.join(', ').replace(/,(?=\\S)/g, ', '))\n  };\n}\n\n/**\n * CSS to normalize abnormalities across browsers (normalize.css v8.0.1 | MIT License | github.com/necolas/normalize.css)\n *\n * @example\n * // Styles as object usage\n * const styles = {\n *    ...normalize(),\n * }\n *\n * // styled-components usage\n * const GlobalStyle = createGlobalStyle`${normalize()}`\n *\n * // CSS as JS Output\n *\n * html {\n *   lineHeight: 1.15,\n *   textSizeAdjust: 100%,\n * } ...\n */\nfunction normalize() {\n  var _ref;\n\n  return [(_ref = {\n    html: {\n      lineHeight: '1.15',\n      textSizeAdjust: '100%'\n    },\n    body: {\n      margin: '0'\n    },\n    main: {\n      display: 'block'\n    },\n    h1: {\n      fontSize: '2em',\n      margin: '0.67em 0'\n    },\n    hr: {\n      boxSizing: 'content-box',\n      height: '0',\n      overflow: 'visible'\n    },\n    pre: {\n      fontFamily: 'monospace, monospace',\n      fontSize: '1em'\n    },\n    a: {\n      backgroundColor: 'transparent'\n    },\n    'abbr[title]': {\n      borderBottom: 'none',\n      textDecoration: 'underline'\n    }\n  }, _ref[\"b,\\n    strong\"] = {\n    fontWeight: 'bolder'\n  }, _ref[\"code,\\n    kbd,\\n    samp\"] = {\n    fontFamily: 'monospace, monospace',\n    fontSize: '1em'\n  }, _ref.small = {\n    fontSize: '80%'\n  }, _ref[\"sub,\\n    sup\"] = {\n    fontSize: '75%',\n    lineHeight: '0',\n    position: 'relative',\n    verticalAlign: 'baseline'\n  }, _ref.sub = {\n    bottom: '-0.25em'\n  }, _ref.sup = {\n    top: '-0.5em'\n  }, _ref.img = {\n    borderStyle: 'none'\n  }, _ref[\"button,\\n    input,\\n    optgroup,\\n    select,\\n    textarea\"] = {\n    fontFamily: 'inherit',\n    fontSize: '100%',\n    lineHeight: '1.15',\n    margin: '0'\n  }, _ref[\"button,\\n    input\"] = {\n    overflow: 'visible'\n  }, _ref[\"button,\\n    select\"] = {\n    textTransform: 'none'\n  }, _ref[\"button,\\n    html [type=\\\"button\\\"],\\n    [type=\\\"reset\\\"],\\n    [type=\\\"submit\\\"]\"] = {\n    WebkitAppearance: 'button'\n  }, _ref[\"button::-moz-focus-inner,\\n    [type=\\\"button\\\"]::-moz-focus-inner,\\n    [type=\\\"reset\\\"]::-moz-focus-inner,\\n    [type=\\\"submit\\\"]::-moz-focus-inner\"] = {\n    borderStyle: 'none',\n    padding: '0'\n  }, _ref[\"button:-moz-focusring,\\n    [type=\\\"button\\\"]:-moz-focusring,\\n    [type=\\\"reset\\\"]:-moz-focusring,\\n    [type=\\\"submit\\\"]:-moz-focusring\"] = {\n    outline: '1px dotted ButtonText'\n  }, _ref.fieldset = {\n    padding: '0.35em 0.625em 0.75em'\n  }, _ref.legend = {\n    boxSizing: 'border-box',\n    color: 'inherit',\n    display: 'table',\n    maxWidth: '100%',\n    padding: '0',\n    whiteSpace: 'normal'\n  }, _ref.progress = {\n    verticalAlign: 'baseline'\n  }, _ref.textarea = {\n    overflow: 'auto'\n  }, _ref[\"[type=\\\"checkbox\\\"],\\n    [type=\\\"radio\\\"]\"] = {\n    boxSizing: 'border-box',\n    padding: '0'\n  }, _ref[\"[type=\\\"number\\\"]::-webkit-inner-spin-button,\\n    [type=\\\"number\\\"]::-webkit-outer-spin-button\"] = {\n    height: 'auto'\n  }, _ref['[type=\"search\"]'] = {\n    WebkitAppearance: 'textfield',\n    outlineOffset: '-2px'\n  }, _ref['[type=\"search\"]::-webkit-search-decoration'] = {\n    WebkitAppearance: 'none'\n  }, _ref['::-webkit-file-upload-button'] = {\n    WebkitAppearance: 'button',\n    font: 'inherit'\n  }, _ref.details = {\n    display: 'block'\n  }, _ref.summary = {\n    display: 'list-item'\n  }, _ref.template = {\n    display: 'none'\n  }, _ref['[hidden]'] = {\n    display: 'none'\n  }, _ref), {\n    'abbr[title]': {\n      textDecoration: 'underline dotted'\n    }\n  }];\n}\n\nvar _templateObject$1;\n\n/**\n * CSS for declaring a radial gradient, including a fallback background-color. The fallback is either the first color-stop or an explicitly passed fallback color.\n *\n * @example\n * // Styles as object usage\n * const styles = {\n *   ...radialGradient({\n *     colorStops: ['#00FFFF 0%', 'rgba(0, 0, 255, 0) 50%', '#0000FF 95%'],\n *     extent: 'farthest-corner at 45px 45px',\n *     position: 'center',\n *     shape: 'ellipse',\n *   })\n * }\n *\n * // styled-components usage\n * const div = styled.div`\n *   ${radialGradient({\n *     colorStops: ['#00FFFF 0%', 'rgba(0, 0, 255, 0) 50%', '#0000FF 95%'],\n *     extent: 'farthest-corner at 45px 45px',\n *     position: 'center',\n *     shape: 'ellipse',\n *   })}\n *`\n *\n * // CSS as JS Output\n *\n * div: {\n *   'backgroundColor': '#00FFFF',\n *   'backgroundImage': 'radial-gradient(center ellipse farthest-corner at 45px 45px, #00FFFF 0%, rgba(0, 0, 255, 0) 50%, #0000FF 95%)',\n * }\n */\nfunction radialGradient(_ref) {\n  var colorStops = _ref.colorStops,\n      _ref$extent = _ref.extent,\n      extent = _ref$extent === void 0 ? '' : _ref$extent,\n      fallback = _ref.fallback,\n      _ref$position = _ref.position,\n      position = _ref$position === void 0 ? '' : _ref$position,\n      _ref$shape = _ref.shape,\n      shape = _ref$shape === void 0 ? '' : _ref$shape;\n\n  if (!colorStops || colorStops.length < 2) {\n    throw new polished_esm_PolishedError(57);\n  }\n\n  return {\n    backgroundColor: fallback || colorStops[0].split(' ')[0],\n    backgroundImage: constructGradientValue(_templateObject$1 || (_templateObject$1 = _taggedTemplateLiteralLoose([\"radial-gradient(\", \"\", \"\", \"\", \")\"])), position, shape, extent, colorStops.join(', '))\n  };\n}\n\n/**\n * A helper to generate a retina background image and non-retina\n * background image. The retina background image will output to a HiDPI media query. The mixin uses\n * a _2x.png filename suffix by default.\n *\n * @example\n * // Styles as object usage\n * const styles = {\n *  ...retinaImage('my-img')\n * }\n *\n * // styled-components usage\n * const div = styled.div`\n *   ${retinaImage('my-img')}\n * `\n *\n * // CSS as JS Output\n * div {\n *   backgroundImage: 'url(my-img.png)',\n *   '@media only screen and (-webkit-min-device-pixel-ratio: 1.3),\n *    only screen and (min--moz-device-pixel-ratio: 1.3),\n *    only screen and (-o-min-device-pixel-ratio: 1.3/1),\n *    only screen and (min-resolution: 144dpi),\n *    only screen and (min-resolution: 1.5dppx)': {\n *     backgroundImage: 'url(my-img_2x.png)',\n *   }\n * }\n */\nfunction retinaImage(filename, backgroundSize, extension, retinaFilename, retinaSuffix) {\n  var _ref;\n\n  if (extension === void 0) {\n    extension = 'png';\n  }\n\n  if (retinaSuffix === void 0) {\n    retinaSuffix = '_2x';\n  }\n\n  if (!filename) {\n    throw new polished_esm_PolishedError(58);\n  } // Replace the dot at the beginning of the passed extension if one exists\n\n\n  var ext = extension.replace(/^\\./, '');\n  var rFilename = retinaFilename ? retinaFilename + \".\" + ext : \"\" + filename + retinaSuffix + \".\" + ext;\n  return _ref = {\n    backgroundImage: \"url(\" + filename + \".\" + ext + \")\"\n  }, _ref[hiDPI()] = _extends({\n    backgroundImage: \"url(\" + rFilename + \")\"\n  }, backgroundSize ? {\n    backgroundSize: backgroundSize\n  } : {}), _ref;\n}\n\n/* eslint-disable key-spacing */\nvar functionsMap = {\n  easeInBack: 'cubic-bezier(0.600, -0.280, 0.735, 0.045)',\n  easeInCirc: 'cubic-bezier(0.600,  0.040, 0.980, 0.335)',\n  easeInCubic: 'cubic-bezier(0.550,  0.055, 0.675, 0.190)',\n  easeInExpo: 'cubic-bezier(0.950,  0.050, 0.795, 0.035)',\n  easeInQuad: 'cubic-bezier(0.550,  0.085, 0.680, 0.530)',\n  easeInQuart: 'cubic-bezier(0.895,  0.030, 0.685, 0.220)',\n  easeInQuint: 'cubic-bezier(0.755,  0.050, 0.855, 0.060)',\n  easeInSine: 'cubic-bezier(0.470,  0.000, 0.745, 0.715)',\n  easeOutBack: 'cubic-bezier(0.175,  0.885, 0.320, 1.275)',\n  easeOutCubic: 'cubic-bezier(0.215,  0.610, 0.355, 1.000)',\n  easeOutCirc: 'cubic-bezier(0.075,  0.820, 0.165, 1.000)',\n  easeOutExpo: 'cubic-bezier(0.190,  1.000, 0.220, 1.000)',\n  easeOutQuad: 'cubic-bezier(0.250,  0.460, 0.450, 0.940)',\n  easeOutQuart: 'cubic-bezier(0.165,  0.840, 0.440, 1.000)',\n  easeOutQuint: 'cubic-bezier(0.230,  1.000, 0.320, 1.000)',\n  easeOutSine: 'cubic-bezier(0.390,  0.575, 0.565, 1.000)',\n  easeInOutBack: 'cubic-bezier(0.680, -0.550, 0.265, 1.550)',\n  easeInOutCirc: 'cubic-bezier(0.785,  0.135, 0.150, 0.860)',\n  easeInOutCubic: 'cubic-bezier(0.645,  0.045, 0.355, 1.000)',\n  easeInOutExpo: 'cubic-bezier(1.000,  0.000, 0.000, 1.000)',\n  easeInOutQuad: 'cubic-bezier(0.455,  0.030, 0.515, 0.955)',\n  easeInOutQuart: 'cubic-bezier(0.770,  0.000, 0.175, 1.000)',\n  easeInOutQuint: 'cubic-bezier(0.860,  0.000, 0.070, 1.000)',\n  easeInOutSine: 'cubic-bezier(0.445,  0.050, 0.550, 0.950)'\n};\n/* eslint-enable key-spacing */\n\nfunction getTimingFunction(functionName) {\n  return functionsMap[functionName];\n}\n/**\n * String to represent common easing functions as demonstrated here: (github.com/jaukia/easie).\n *\n * @example\n * // Styles as object usage\n * const styles = {\n *   'transitionTimingFunction': timingFunctions('easeInQuad')\n * }\n *\n * // styled-components usage\n *  const div = styled.div`\n *   transitionTimingFunction: ${timingFunctions('easeInQuad')};\n * `\n *\n * // CSS as JS Output\n *\n * 'div': {\n *   'transitionTimingFunction': 'cubic-bezier(0.550,  0.085, 0.680, 0.530)',\n * }\n */\n\n\nfunction timingFunctions(timingFunction) {\n  return getTimingFunction(timingFunction);\n}\n\nvar getBorderWidth = function getBorderWidth(pointingDirection, height, width) {\n  var fullWidth = \"\" + width[0] + (width[1] || '');\n  var halfWidth = \"\" + width[0] / 2 + (width[1] || '');\n  var fullHeight = \"\" + height[0] + (height[1] || '');\n  var halfHeight = \"\" + height[0] / 2 + (height[1] || '');\n\n  switch (pointingDirection) {\n    case 'top':\n      return \"0 \" + halfWidth + \" \" + fullHeight + \" \" + halfWidth;\n\n    case 'topLeft':\n      return fullWidth + \" \" + fullHeight + \" 0 0\";\n\n    case 'left':\n      return halfHeight + \" \" + fullWidth + \" \" + halfHeight + \" 0\";\n\n    case 'bottomLeft':\n      return fullWidth + \" 0 0 \" + fullHeight;\n\n    case 'bottom':\n      return fullHeight + \" \" + halfWidth + \" 0 \" + halfWidth;\n\n    case 'bottomRight':\n      return \"0 0 \" + fullWidth + \" \" + fullHeight;\n\n    case 'right':\n      return halfHeight + \" 0 \" + halfHeight + \" \" + fullWidth;\n\n    case 'topRight':\n    default:\n      return \"0 \" + fullWidth + \" \" + fullHeight + \" 0\";\n  }\n};\n\nvar getBorderColor = function getBorderColor(pointingDirection, foregroundColor) {\n  switch (pointingDirection) {\n    case 'top':\n    case 'bottomRight':\n      return {\n        borderBottomColor: foregroundColor\n      };\n\n    case 'right':\n    case 'bottomLeft':\n      return {\n        borderLeftColor: foregroundColor\n      };\n\n    case 'bottom':\n    case 'topLeft':\n      return {\n        borderTopColor: foregroundColor\n      };\n\n    case 'left':\n    case 'topRight':\n      return {\n        borderRightColor: foregroundColor\n      };\n\n    default:\n      throw new polished_esm_PolishedError(59);\n  }\n};\n/**\n * CSS to represent triangle with any pointing direction with an optional background color.\n *\n * @example\n * // Styles as object usage\n *\n * const styles = {\n *   ...triangle({ pointingDirection: 'right', width: '100px', height: '100px', foregroundColor: 'red' })\n * }\n *\n *\n * // styled-components usage\n * const div = styled.div`\n *   ${triangle({ pointingDirection: 'right', width: '100px', height: '100px', foregroundColor: 'red' })}\n *\n *\n * // CSS as JS Output\n *\n * div: {\n *  'borderColor': 'transparent transparent transparent red',\n *  'borderStyle': 'solid',\n *  'borderWidth': '50px 0 50px 100px',\n *  'height': '0',\n *  'width': '0',\n * }\n */\n\n\nfunction triangle(_ref) {\n  var pointingDirection = _ref.pointingDirection,\n      height = _ref.height,\n      width = _ref.width,\n      foregroundColor = _ref.foregroundColor,\n      _ref$backgroundColor = _ref.backgroundColor,\n      backgroundColor = _ref$backgroundColor === void 0 ? 'transparent' : _ref$backgroundColor;\n  var widthAndUnit = getValueAndUnit(width);\n  var heightAndUnit = getValueAndUnit(height);\n\n  if (isNaN(heightAndUnit[0]) || isNaN(widthAndUnit[0])) {\n    throw new polished_esm_PolishedError(60);\n  }\n\n  return _extends({\n    width: '0',\n    height: '0',\n    borderColor: backgroundColor\n  }, getBorderColor(pointingDirection, foregroundColor), {\n    borderStyle: 'solid',\n    borderWidth: getBorderWidth(pointingDirection, heightAndUnit, widthAndUnit)\n  });\n}\n\n/**\n * Provides an easy way to change the `wordWrap` property.\n *\n * @example\n * // Styles as object usage\n * const styles = {\n *   ...wordWrap('break-word')\n * }\n *\n * // styled-components usage\n * const div = styled.div`\n *   ${wordWrap('break-word')}\n * `\n *\n * // CSS as JS Output\n *\n * const styles = {\n *   overflowWrap: 'break-word',\n *   wordWrap: 'break-word',\n *   wordBreak: 'break-all',\n * }\n */\nfunction wordWrap(wrap) {\n  if (wrap === void 0) {\n    wrap = 'break-word';\n  }\n\n  var wordBreak = wrap === 'break-word' ? 'break-all' : wrap;\n  return {\n    overflowWrap: wrap,\n    wordWrap: wrap,\n    wordBreak: wordBreak\n  };\n}\n\nfunction colorToInt(color) {\n  return Math.round(color * 255);\n}\n\nfunction convertToInt(red, green, blue) {\n  return colorToInt(red) + \",\" + colorToInt(green) + \",\" + colorToInt(blue);\n}\n\nfunction hslToRgb(hue, saturation, lightness, convert) {\n  if (convert === void 0) {\n    convert = convertToInt;\n  }\n\n  if (saturation === 0) {\n    // achromatic\n    return convert(lightness, lightness, lightness);\n  } // formulae from https://en.wikipedia.org/wiki/HSL_and_HSV\n\n\n  var huePrime = (hue % 360 + 360) % 360 / 60;\n  var chroma = (1 - Math.abs(2 * lightness - 1)) * saturation;\n  var secondComponent = chroma * (1 - Math.abs(huePrime % 2 - 1));\n  var red = 0;\n  var green = 0;\n  var blue = 0;\n\n  if (huePrime >= 0 && huePrime < 1) {\n    red = chroma;\n    green = secondComponent;\n  } else if (huePrime >= 1 && huePrime < 2) {\n    red = secondComponent;\n    green = chroma;\n  } else if (huePrime >= 2 && huePrime < 3) {\n    green = chroma;\n    blue = secondComponent;\n  } else if (huePrime >= 3 && huePrime < 4) {\n    green = secondComponent;\n    blue = chroma;\n  } else if (huePrime >= 4 && huePrime < 5) {\n    red = secondComponent;\n    blue = chroma;\n  } else if (huePrime >= 5 && huePrime < 6) {\n    red = chroma;\n    blue = secondComponent;\n  }\n\n  var lightnessModification = lightness - chroma / 2;\n  var finalRed = red + lightnessModification;\n  var finalGreen = green + lightnessModification;\n  var finalBlue = blue + lightnessModification;\n  return convert(finalRed, finalGreen, finalBlue);\n}\n\nvar namedColorMap = {\n  aliceblue: 'f0f8ff',\n  antiquewhite: 'faebd7',\n  aqua: '00ffff',\n  aquamarine: '7fffd4',\n  azure: 'f0ffff',\n  beige: 'f5f5dc',\n  bisque: 'ffe4c4',\n  black: '000',\n  blanchedalmond: 'ffebcd',\n  blue: '0000ff',\n  blueviolet: '8a2be2',\n  brown: 'a52a2a',\n  burlywood: 'deb887',\n  cadetblue: '5f9ea0',\n  chartreuse: '7fff00',\n  chocolate: 'd2691e',\n  coral: 'ff7f50',\n  cornflowerblue: '6495ed',\n  cornsilk: 'fff8dc',\n  crimson: 'dc143c',\n  cyan: '00ffff',\n  darkblue: '00008b',\n  darkcyan: '008b8b',\n  darkgoldenrod: 'b8860b',\n  darkgray: 'a9a9a9',\n  darkgreen: '006400',\n  darkgrey: 'a9a9a9',\n  darkkhaki: 'bdb76b',\n  darkmagenta: '8b008b',\n  darkolivegreen: '556b2f',\n  darkorange: 'ff8c00',\n  darkorchid: '9932cc',\n  darkred: '8b0000',\n  darksalmon: 'e9967a',\n  darkseagreen: '8fbc8f',\n  darkslateblue: '483d8b',\n  darkslategray: '2f4f4f',\n  darkslategrey: '2f4f4f',\n  darkturquoise: '00ced1',\n  darkviolet: '9400d3',\n  deeppink: 'ff1493',\n  deepskyblue: '00bfff',\n  dimgray: '696969',\n  dimgrey: '696969',\n  dodgerblue: '1e90ff',\n  firebrick: 'b22222',\n  floralwhite: 'fffaf0',\n  forestgreen: '228b22',\n  fuchsia: 'ff00ff',\n  gainsboro: 'dcdcdc',\n  ghostwhite: 'f8f8ff',\n  gold: 'ffd700',\n  goldenrod: 'daa520',\n  gray: '808080',\n  green: '008000',\n  greenyellow: 'adff2f',\n  grey: '808080',\n  honeydew: 'f0fff0',\n  hotpink: 'ff69b4',\n  indianred: 'cd5c5c',\n  indigo: '4b0082',\n  ivory: 'fffff0',\n  khaki: 'f0e68c',\n  lavender: 'e6e6fa',\n  lavenderblush: 'fff0f5',\n  lawngreen: '7cfc00',\n  lemonchiffon: 'fffacd',\n  lightblue: 'add8e6',\n  lightcoral: 'f08080',\n  lightcyan: 'e0ffff',\n  lightgoldenrodyellow: 'fafad2',\n  lightgray: 'd3d3d3',\n  lightgreen: '90ee90',\n  lightgrey: 'd3d3d3',\n  lightpink: 'ffb6c1',\n  lightsalmon: 'ffa07a',\n  lightseagreen: '20b2aa',\n  lightskyblue: '87cefa',\n  lightslategray: '789',\n  lightslategrey: '789',\n  lightsteelblue: 'b0c4de',\n  lightyellow: 'ffffe0',\n  lime: '0f0',\n  limegreen: '32cd32',\n  linen: 'faf0e6',\n  magenta: 'f0f',\n  maroon: '800000',\n  mediumaquamarine: '66cdaa',\n  mediumblue: '0000cd',\n  mediumorchid: 'ba55d3',\n  mediumpurple: '9370db',\n  mediumseagreen: '3cb371',\n  mediumslateblue: '7b68ee',\n  mediumspringgreen: '00fa9a',\n  mediumturquoise: '48d1cc',\n  mediumvioletred: 'c71585',\n  midnightblue: '191970',\n  mintcream: 'f5fffa',\n  mistyrose: 'ffe4e1',\n  moccasin: 'ffe4b5',\n  navajowhite: 'ffdead',\n  navy: '000080',\n  oldlace: 'fdf5e6',\n  olive: '808000',\n  olivedrab: '6b8e23',\n  orange: 'ffa500',\n  orangered: 'ff4500',\n  orchid: 'da70d6',\n  palegoldenrod: 'eee8aa',\n  palegreen: '98fb98',\n  paleturquoise: 'afeeee',\n  palevioletred: 'db7093',\n  papayawhip: 'ffefd5',\n  peachpuff: 'ffdab9',\n  peru: 'cd853f',\n  pink: 'ffc0cb',\n  plum: 'dda0dd',\n  powderblue: 'b0e0e6',\n  purple: '800080',\n  rebeccapurple: '639',\n  red: 'f00',\n  rosybrown: 'bc8f8f',\n  royalblue: '4169e1',\n  saddlebrown: '8b4513',\n  salmon: 'fa8072',\n  sandybrown: 'f4a460',\n  seagreen: '2e8b57',\n  seashell: 'fff5ee',\n  sienna: 'a0522d',\n  silver: 'c0c0c0',\n  skyblue: '87ceeb',\n  slateblue: '6a5acd',\n  slategray: '708090',\n  slategrey: '708090',\n  snow: 'fffafa',\n  springgreen: '00ff7f',\n  steelblue: '4682b4',\n  tan: 'd2b48c',\n  teal: '008080',\n  thistle: 'd8bfd8',\n  tomato: 'ff6347',\n  turquoise: '40e0d0',\n  violet: 'ee82ee',\n  wheat: 'f5deb3',\n  white: 'fff',\n  whitesmoke: 'f5f5f5',\n  yellow: 'ff0',\n  yellowgreen: '9acd32'\n};\n/**\n * Checks if a string is a CSS named color and returns its equivalent hex value, otherwise returns the original color.\n * @private\n */\n\nfunction nameToHex(color) {\n  if (typeof color !== 'string') return color;\n  var normalizedColorName = color.toLowerCase();\n  return namedColorMap[normalizedColorName] ? \"#\" + namedColorMap[normalizedColorName] : color;\n}\n\nvar hexRegex = /^#[a-fA-F0-9]{6}$/;\nvar hexRgbaRegex = /^#[a-fA-F0-9]{8}$/;\nvar reducedHexRegex = /^#[a-fA-F0-9]{3}$/;\nvar reducedRgbaHexRegex = /^#[a-fA-F0-9]{4}$/;\nvar rgbRegex = /^rgb\\(\\s*(\\d{1,3})\\s*,\\s*(\\d{1,3})\\s*,\\s*(\\d{1,3})\\s*\\)$/i;\nvar rgbaRegex = /^rgba\\(\\s*(\\d{1,3})\\s*,\\s*(\\d{1,3})\\s*,\\s*(\\d{1,3})\\s*,\\s*([-+]?[0-9]*[.]?[0-9]+)\\s*\\)$/i;\nvar hslRegex = /^hsl\\(\\s*(\\d{0,3}[.]?[0-9]+)\\s*,\\s*(\\d{1,3}[.]?[0-9]?)%\\s*,\\s*(\\d{1,3}[.]?[0-9]?)%\\s*\\)$/i;\nvar hslaRegex = /^hsla\\(\\s*(\\d{0,3}[.]?[0-9]+)\\s*,\\s*(\\d{1,3}[.]?[0-9]?)%\\s*,\\s*(\\d{1,3}[.]?[0-9]?)%\\s*,\\s*([-+]?[0-9]*[.]?[0-9]+)\\s*\\)$/i;\n/**\n * Returns an RgbColor or RgbaColor object. This utility function is only useful\n * if want to extract a color component. With the color util `toColorString` you\n * can convert a RgbColor or RgbaColor object back to a string.\n *\n * @example\n * // Assigns `{ red: 255, green: 0, blue: 0 }` to color1\n * const color1 = parseToRgb('rgb(255, 0, 0)');\n * // Assigns `{ red: 92, green: 102, blue: 112, alpha: 0.75 }` to color2\n * const color2 = parseToRgb('hsla(210, 10%, 40%, 0.75)');\n */\n\nfunction parseToRgb(color) {\n  if (typeof color !== 'string') {\n    throw new polished_esm_PolishedError(3);\n  }\n\n  var normalizedColor = nameToHex(color);\n\n  if (normalizedColor.match(hexRegex)) {\n    return {\n      red: parseInt(\"\" + normalizedColor[1] + normalizedColor[2], 16),\n      green: parseInt(\"\" + normalizedColor[3] + normalizedColor[4], 16),\n      blue: parseInt(\"\" + normalizedColor[5] + normalizedColor[6], 16)\n    };\n  }\n\n  if (normalizedColor.match(hexRgbaRegex)) {\n    var alpha = parseFloat((parseInt(\"\" + normalizedColor[7] + normalizedColor[8], 16) / 255).toFixed(2));\n    return {\n      red: parseInt(\"\" + normalizedColor[1] + normalizedColor[2], 16),\n      green: parseInt(\"\" + normalizedColor[3] + normalizedColor[4], 16),\n      blue: parseInt(\"\" + normalizedColor[5] + normalizedColor[6], 16),\n      alpha: alpha\n    };\n  }\n\n  if (normalizedColor.match(reducedHexRegex)) {\n    return {\n      red: parseInt(\"\" + normalizedColor[1] + normalizedColor[1], 16),\n      green: parseInt(\"\" + normalizedColor[2] + normalizedColor[2], 16),\n      blue: parseInt(\"\" + normalizedColor[3] + normalizedColor[3], 16)\n    };\n  }\n\n  if (normalizedColor.match(reducedRgbaHexRegex)) {\n    var _alpha = parseFloat((parseInt(\"\" + normalizedColor[4] + normalizedColor[4], 16) / 255).toFixed(2));\n\n    return {\n      red: parseInt(\"\" + normalizedColor[1] + normalizedColor[1], 16),\n      green: parseInt(\"\" + normalizedColor[2] + normalizedColor[2], 16),\n      blue: parseInt(\"\" + normalizedColor[3] + normalizedColor[3], 16),\n      alpha: _alpha\n    };\n  }\n\n  var rgbMatched = rgbRegex.exec(normalizedColor);\n\n  if (rgbMatched) {\n    return {\n      red: parseInt(\"\" + rgbMatched[1], 10),\n      green: parseInt(\"\" + rgbMatched[2], 10),\n      blue: parseInt(\"\" + rgbMatched[3], 10)\n    };\n  }\n\n  var rgbaMatched = rgbaRegex.exec(normalizedColor.substring(0, 50));\n\n  if (rgbaMatched) {\n    return {\n      red: parseInt(\"\" + rgbaMatched[1], 10),\n      green: parseInt(\"\" + rgbaMatched[2], 10),\n      blue: parseInt(\"\" + rgbaMatched[3], 10),\n      alpha: parseFloat(\"\" + rgbaMatched[4])\n    };\n  }\n\n  var hslMatched = hslRegex.exec(normalizedColor);\n\n  if (hslMatched) {\n    var hue = parseInt(\"\" + hslMatched[1], 10);\n    var saturation = parseInt(\"\" + hslMatched[2], 10) / 100;\n    var lightness = parseInt(\"\" + hslMatched[3], 10) / 100;\n    var rgbColorString = \"rgb(\" + hslToRgb(hue, saturation, lightness) + \")\";\n    var hslRgbMatched = rgbRegex.exec(rgbColorString);\n\n    if (!hslRgbMatched) {\n      throw new polished_esm_PolishedError(4, normalizedColor, rgbColorString);\n    }\n\n    return {\n      red: parseInt(\"\" + hslRgbMatched[1], 10),\n      green: parseInt(\"\" + hslRgbMatched[2], 10),\n      blue: parseInt(\"\" + hslRgbMatched[3], 10)\n    };\n  }\n\n  var hslaMatched = hslaRegex.exec(normalizedColor.substring(0, 50));\n\n  if (hslaMatched) {\n    var _hue = parseInt(\"\" + hslaMatched[1], 10);\n\n    var _saturation = parseInt(\"\" + hslaMatched[2], 10) / 100;\n\n    var _lightness = parseInt(\"\" + hslaMatched[3], 10) / 100;\n\n    var _rgbColorString = \"rgb(\" + hslToRgb(_hue, _saturation, _lightness) + \")\";\n\n    var _hslRgbMatched = rgbRegex.exec(_rgbColorString);\n\n    if (!_hslRgbMatched) {\n      throw new polished_esm_PolishedError(4, normalizedColor, _rgbColorString);\n    }\n\n    return {\n      red: parseInt(\"\" + _hslRgbMatched[1], 10),\n      green: parseInt(\"\" + _hslRgbMatched[2], 10),\n      blue: parseInt(\"\" + _hslRgbMatched[3], 10),\n      alpha: parseFloat(\"\" + hslaMatched[4])\n    };\n  }\n\n  throw new polished_esm_PolishedError(5);\n}\n\nfunction rgbToHsl(color) {\n  // make sure rgb are contained in a set of [0, 255]\n  var red = color.red / 255;\n  var green = color.green / 255;\n  var blue = color.blue / 255;\n  var max = Math.max(red, green, blue);\n  var min = Math.min(red, green, blue);\n  var lightness = (max + min) / 2;\n\n  if (max === min) {\n    // achromatic\n    if (color.alpha !== undefined) {\n      return {\n        hue: 0,\n        saturation: 0,\n        lightness: lightness,\n        alpha: color.alpha\n      };\n    } else {\n      return {\n        hue: 0,\n        saturation: 0,\n        lightness: lightness\n      };\n    }\n  }\n\n  var hue;\n  var delta = max - min;\n  var saturation = lightness > 0.5 ? delta / (2 - max - min) : delta / (max + min);\n\n  switch (max) {\n    case red:\n      hue = (green - blue) / delta + (green < blue ? 6 : 0);\n      break;\n\n    case green:\n      hue = (blue - red) / delta + 2;\n      break;\n\n    default:\n      // blue case\n      hue = (red - green) / delta + 4;\n      break;\n  }\n\n  hue *= 60;\n\n  if (color.alpha !== undefined) {\n    return {\n      hue: hue,\n      saturation: saturation,\n      lightness: lightness,\n      alpha: color.alpha\n    };\n  }\n\n  return {\n    hue: hue,\n    saturation: saturation,\n    lightness: lightness\n  };\n}\n\n/**\n * Returns an HslColor or HslaColor object. This utility function is only useful\n * if want to extract a color component. With the color util `toColorString` you\n * can convert a HslColor or HslaColor object back to a string.\n *\n * @example\n * // Assigns `{ hue: 0, saturation: 1, lightness: 0.5 }` to color1\n * const color1 = parseToHsl('rgb(255, 0, 0)');\n * // Assigns `{ hue: 128, saturation: 1, lightness: 0.5, alpha: 0.75 }` to color2\n * const color2 = parseToHsl('hsla(128, 100%, 50%, 0.75)');\n */\nfunction parseToHsl(color) {\n  // Note: At a later stage we can optimize this function as right now a hsl\n  // color would be parsed converted to rgb values and converted back to hsl.\n  return rgbToHsl(parseToRgb(color));\n}\n\n/**\n * Reduces hex values if possible e.g. #ff8866 to #f86\n * @private\n */\nvar reduceHexValue = function reduceHexValue(value) {\n  if (value.length === 7 && value[1] === value[2] && value[3] === value[4] && value[5] === value[6]) {\n    return \"#\" + value[1] + value[3] + value[5];\n  }\n\n  return value;\n};\n\nfunction numberToHex(value) {\n  var hex = value.toString(16);\n  return hex.length === 1 ? \"0\" + hex : hex;\n}\n\nfunction colorToHex(color) {\n  return numberToHex(Math.round(color * 255));\n}\n\nfunction convertToHex(red, green, blue) {\n  return reduceHexValue(\"#\" + colorToHex(red) + colorToHex(green) + colorToHex(blue));\n}\n\nfunction hslToHex(hue, saturation, lightness) {\n  return hslToRgb(hue, saturation, lightness, convertToHex);\n}\n\n/**\n * Returns a string value for the color. The returned result is the smallest possible hex notation.\n *\n * @example\n * // Styles as object usage\n * const styles = {\n *   background: hsl(359, 0.75, 0.4),\n *   background: hsl({ hue: 360, saturation: 0.75, lightness: 0.4 }),\n * }\n *\n * // styled-components usage\n * const div = styled.div`\n *   background: ${hsl(359, 0.75, 0.4)};\n *   background: ${hsl({ hue: 360, saturation: 0.75, lightness: 0.4 })};\n * `\n *\n * // CSS in JS Output\n *\n * element {\n *   background: \"#b3191c\";\n *   background: \"#b3191c\";\n * }\n */\nfunction hsl(value, saturation, lightness) {\n  if (typeof value === 'number' && typeof saturation === 'number' && typeof lightness === 'number') {\n    return hslToHex(value, saturation, lightness);\n  } else if (typeof value === 'object' && saturation === undefined && lightness === undefined) {\n    return hslToHex(value.hue, value.saturation, value.lightness);\n  }\n\n  throw new polished_esm_PolishedError(1);\n}\n\n/**\n * Returns a string value for the color. The returned result is the smallest possible rgba or hex notation.\n *\n * @example\n * // Styles as object usage\n * const styles = {\n *   background: hsla(359, 0.75, 0.4, 0.7),\n *   background: hsla({ hue: 360, saturation: 0.75, lightness: 0.4, alpha: 0,7 }),\n *   background: hsla(359, 0.75, 0.4, 1),\n * }\n *\n * // styled-components usage\n * const div = styled.div`\n *   background: ${hsla(359, 0.75, 0.4, 0.7)};\n *   background: ${hsla({ hue: 360, saturation: 0.75, lightness: 0.4, alpha: 0,7 })};\n *   background: ${hsla(359, 0.75, 0.4, 1)};\n * `\n *\n * // CSS in JS Output\n *\n * element {\n *   background: \"rgba(179,25,28,0.7)\";\n *   background: \"rgba(179,25,28,0.7)\";\n *   background: \"#b3191c\";\n * }\n */\nfunction hsla(value, saturation, lightness, alpha) {\n  if (typeof value === 'number' && typeof saturation === 'number' && typeof lightness === 'number' && typeof alpha === 'number') {\n    return alpha >= 1 ? hslToHex(value, saturation, lightness) : \"rgba(\" + hslToRgb(value, saturation, lightness) + \",\" + alpha + \")\";\n  } else if (typeof value === 'object' && saturation === undefined && lightness === undefined && alpha === undefined) {\n    return value.alpha >= 1 ? hslToHex(value.hue, value.saturation, value.lightness) : \"rgba(\" + hslToRgb(value.hue, value.saturation, value.lightness) + \",\" + value.alpha + \")\";\n  }\n\n  throw new polished_esm_PolishedError(2);\n}\n\n/**\n * Returns a string value for the color. The returned result is the smallest possible hex notation.\n *\n * @example\n * // Styles as object usage\n * const styles = {\n *   background: rgb(255, 205, 100),\n *   background: rgb({ red: 255, green: 205, blue: 100 }),\n * }\n *\n * // styled-components usage\n * const div = styled.div`\n *   background: ${rgb(255, 205, 100)};\n *   background: ${rgb({ red: 255, green: 205, blue: 100 })};\n * `\n *\n * // CSS in JS Output\n *\n * element {\n *   background: \"#ffcd64\";\n *   background: \"#ffcd64\";\n * }\n */\nfunction rgb(value, green, blue) {\n  if (typeof value === 'number' && typeof green === 'number' && typeof blue === 'number') {\n    return reduceHexValue(\"#\" + numberToHex(value) + numberToHex(green) + numberToHex(blue));\n  } else if (typeof value === 'object' && green === undefined && blue === undefined) {\n    return reduceHexValue(\"#\" + numberToHex(value.red) + numberToHex(value.green) + numberToHex(value.blue));\n  }\n\n  throw new polished_esm_PolishedError(6);\n}\n\n/**\n * Returns a string value for the color. The returned result is the smallest possible rgba or hex notation.\n *\n * Can also be used to fade a color by passing a hex value or named CSS color along with an alpha value.\n *\n * @example\n * // Styles as object usage\n * const styles = {\n *   background: rgba(255, 205, 100, 0.7),\n *   background: rgba({ red: 255, green: 205, blue: 100, alpha: 0.7 }),\n *   background: rgba(255, 205, 100, 1),\n *   background: rgba('#ffffff', 0.4),\n *   background: rgba('black', 0.7),\n * }\n *\n * // styled-components usage\n * const div = styled.div`\n *   background: ${rgba(255, 205, 100, 0.7)};\n *   background: ${rgba({ red: 255, green: 205, blue: 100, alpha: 0.7 })};\n *   background: ${rgba(255, 205, 100, 1)};\n *   background: ${rgba('#ffffff', 0.4)};\n *   background: ${rgba('black', 0.7)};\n * `\n *\n * // CSS in JS Output\n *\n * element {\n *   background: \"rgba(255,205,100,0.7)\";\n *   background: \"rgba(255,205,100,0.7)\";\n *   background: \"#ffcd64\";\n *   background: \"rgba(255,255,255,0.4)\";\n *   background: \"rgba(0,0,0,0.7)\";\n * }\n */\nfunction rgba(firstValue, secondValue, thirdValue, fourthValue) {\n  if (typeof firstValue === 'string' && typeof secondValue === 'number') {\n    var rgbValue = parseToRgb(firstValue);\n    return \"rgba(\" + rgbValue.red + \",\" + rgbValue.green + \",\" + rgbValue.blue + \",\" + secondValue + \")\";\n  } else if (typeof firstValue === 'number' && typeof secondValue === 'number' && typeof thirdValue === 'number' && typeof fourthValue === 'number') {\n    return fourthValue >= 1 ? rgb(firstValue, secondValue, thirdValue) : \"rgba(\" + firstValue + \",\" + secondValue + \",\" + thirdValue + \",\" + fourthValue + \")\";\n  } else if (typeof firstValue === 'object' && secondValue === undefined && thirdValue === undefined && fourthValue === undefined) {\n    return firstValue.alpha >= 1 ? rgb(firstValue.red, firstValue.green, firstValue.blue) : \"rgba(\" + firstValue.red + \",\" + firstValue.green + \",\" + firstValue.blue + \",\" + firstValue.alpha + \")\";\n  }\n\n  throw new polished_esm_PolishedError(7);\n}\n\nvar isRgb = function isRgb(color) {\n  return typeof color.red === 'number' && typeof color.green === 'number' && typeof color.blue === 'number' && (typeof color.alpha !== 'number' || typeof color.alpha === 'undefined');\n};\n\nvar isRgba = function isRgba(color) {\n  return typeof color.red === 'number' && typeof color.green === 'number' && typeof color.blue === 'number' && typeof color.alpha === 'number';\n};\n\nvar isHsl = function isHsl(color) {\n  return typeof color.hue === 'number' && typeof color.saturation === 'number' && typeof color.lightness === 'number' && (typeof color.alpha !== 'number' || typeof color.alpha === 'undefined');\n};\n\nvar isHsla = function isHsla(color) {\n  return typeof color.hue === 'number' && typeof color.saturation === 'number' && typeof color.lightness === 'number' && typeof color.alpha === 'number';\n};\n/**\n * Converts a RgbColor, RgbaColor, HslColor or HslaColor object to a color string.\n * This util is useful in case you only know on runtime which color object is\n * used. Otherwise we recommend to rely on `rgb`, `rgba`, `hsl` or `hsla`.\n *\n * @example\n * // Styles as object usage\n * const styles = {\n *   background: toColorString({ red: 255, green: 205, blue: 100 }),\n *   background: toColorString({ red: 255, green: 205, blue: 100, alpha: 0.72 }),\n *   background: toColorString({ hue: 240, saturation: 1, lightness: 0.5 }),\n *   background: toColorString({ hue: 360, saturation: 0.75, lightness: 0.4, alpha: 0.72 }),\n * }\n *\n * // styled-components usage\n * const div = styled.div`\n *   background: ${toColorString({ red: 255, green: 205, blue: 100 })};\n *   background: ${toColorString({ red: 255, green: 205, blue: 100, alpha: 0.72 })};\n *   background: ${toColorString({ hue: 240, saturation: 1, lightness: 0.5 })};\n *   background: ${toColorString({ hue: 360, saturation: 0.75, lightness: 0.4, alpha: 0.72 })};\n * `\n *\n * // CSS in JS Output\n * element {\n *   background: \"#ffcd64\";\n *   background: \"rgba(255,205,100,0.72)\";\n *   background: \"#00f\";\n *   background: \"rgba(179,25,25,0.72)\";\n * }\n */\n\n\nfunction toColorString(color) {\n  if (typeof color !== 'object') throw new polished_esm_PolishedError(8);\n  if (isRgba(color)) return rgba(color);\n  if (isRgb(color)) return rgb(color);\n  if (isHsla(color)) return hsla(color);\n  if (isHsl(color)) return hsl(color);\n  throw new polished_esm_PolishedError(8);\n}\n\n// Type definitions taken from https://github.com/gcanti/flow-static-land/blob/master/src/Fun.js\n// eslint-disable-next-line no-unused-vars\n// eslint-disable-next-line no-unused-vars\n// eslint-disable-next-line no-redeclare\nfunction curried(f, length, acc) {\n  return function fn() {\n    // eslint-disable-next-line prefer-rest-params\n    var combined = acc.concat(Array.prototype.slice.call(arguments));\n    return combined.length >= length ? f.apply(this, combined) : curried(f, length, combined);\n  };\n} // eslint-disable-next-line no-redeclare\n\n\nfunction curry(f) {\n  // eslint-disable-line no-redeclare\n  return curried(f, f.length, []);\n}\n\n/**\n * Changes the hue of the color. Hue is a number between 0 to 360. The first\n * argument for adjustHue is the amount of degrees the color is rotated around\n * the color wheel, always producing a positive hue value.\n *\n * @example\n * // Styles as object usage\n * const styles = {\n *   background: adjustHue(180, '#448'),\n *   background: adjustHue('180', 'rgba(101,100,205,0.7)'),\n * }\n *\n * // styled-components usage\n * const div = styled.div`\n *   background: ${adjustHue(180, '#448')};\n *   background: ${adjustHue('180', 'rgba(101,100,205,0.7)')};\n * `\n *\n * // CSS in JS Output\n * element {\n *   background: \"#888844\";\n *   background: \"rgba(136,136,68,0.7)\";\n * }\n */\n\nfunction adjustHue(degree, color) {\n  if (color === 'transparent') return color;\n  var hslColor = parseToHsl(color);\n  return toColorString(_extends({}, hslColor, {\n    hue: hslColor.hue + parseFloat(degree)\n  }));\n} // prettier-ignore\n\n\nvar curriedAdjustHue = /*#__PURE__*/curry\n/* ::<number | string, string, string> */\n(adjustHue);\n\n/**\n * Returns the complement of the provided color. This is identical to adjustHue(180, <color>).\n *\n * @example\n * // Styles as object usage\n * const styles = {\n *   background: complement('#448'),\n *   background: complement('rgba(204,205,100,0.7)'),\n * }\n *\n * // styled-components usage\n * const div = styled.div`\n *   background: ${complement('#448')};\n *   background: ${complement('rgba(204,205,100,0.7)')};\n * `\n *\n * // CSS in JS Output\n * element {\n *   background: \"#884\";\n *   background: \"rgba(153,153,153,0.7)\";\n * }\n */\n\nfunction complement(color) {\n  if (color === 'transparent') return color;\n  var hslColor = parseToHsl(color);\n  return toColorString(_extends({}, hslColor, {\n    hue: (hslColor.hue + 180) % 360\n  }));\n}\n\nfunction guard(lowerBoundary, upperBoundary, value) {\n  return Math.max(lowerBoundary, Math.min(upperBoundary, value));\n}\n\n/**\n * Returns a string value for the darkened color.\n *\n * @example\n * // Styles as object usage\n * const styles = {\n *   background: darken(0.2, '#FFCD64'),\n *   background: darken('0.2', 'rgba(255,205,100,0.7)'),\n * }\n *\n * // styled-components usage\n * const div = styled.div`\n *   background: ${darken(0.2, '#FFCD64')};\n *   background: ${darken('0.2', 'rgba(255,205,100,0.7)')};\n * `\n *\n * // CSS in JS Output\n *\n * element {\n *   background: \"#ffbd31\";\n *   background: \"rgba(255,189,49,0.7)\";\n * }\n */\n\nfunction darken(amount, color) {\n  if (color === 'transparent') return color;\n  var hslColor = parseToHsl(color);\n  return toColorString(_extends({}, hslColor, {\n    lightness: guard(0, 1, hslColor.lightness - parseFloat(amount))\n  }));\n} // prettier-ignore\n\n\nvar curriedDarken = /*#__PURE__*/curry\n/* ::<number | string, string, string> */\n(darken);\n\n/**\n * Decreases the intensity of a color. Its range is between 0 to 1. The first\n * argument of the desaturate function is the amount by how much the color\n * intensity should be decreased.\n *\n * @example\n * // Styles as object usage\n * const styles = {\n *   background: desaturate(0.2, '#CCCD64'),\n *   background: desaturate('0.2', 'rgba(204,205,100,0.7)'),\n * }\n *\n * // styled-components usage\n * const div = styled.div`\n *   background: ${desaturate(0.2, '#CCCD64')};\n *   background: ${desaturate('0.2', 'rgba(204,205,100,0.7)')};\n * `\n *\n * // CSS in JS Output\n * element {\n *   background: \"#b8b979\";\n *   background: \"rgba(184,185,121,0.7)\";\n * }\n */\n\nfunction desaturate(amount, color) {\n  if (color === 'transparent') return color;\n  var hslColor = parseToHsl(color);\n  return toColorString(_extends({}, hslColor, {\n    saturation: guard(0, 1, hslColor.saturation - parseFloat(amount))\n  }));\n} // prettier-ignore\n\n\nvar curriedDesaturate = /*#__PURE__*/curry\n/* ::<number | string, string, string> */\n(desaturate);\n\n/**\n * Returns a number (float) representing the luminance of a color.\n *\n * @example\n * // Styles as object usage\n * const styles = {\n *   background: getLuminance('#CCCD64') >= getLuminance('#0000ff') ? '#CCCD64' : '#0000ff',\n *   background: getLuminance('rgba(58, 133, 255, 1)') >= getLuminance('rgba(255, 57, 149, 1)') ?\n *                             'rgba(58, 133, 255, 1)' :\n *                             'rgba(255, 57, 149, 1)',\n * }\n *\n * // styled-components usage\n * const div = styled.div`\n *   background: ${getLuminance('#CCCD64') >= getLuminance('#0000ff') ? '#CCCD64' : '#0000ff'};\n *   background: ${getLuminance('rgba(58, 133, 255, 1)') >= getLuminance('rgba(255, 57, 149, 1)') ?\n *                             'rgba(58, 133, 255, 1)' :\n *                             'rgba(255, 57, 149, 1)'};\n *\n * // CSS in JS Output\n *\n * div {\n *   background: \"#CCCD64\";\n *   background: \"rgba(58, 133, 255, 1)\";\n * }\n */\n\nfunction getLuminance(color) {\n  if (color === 'transparent') return 0;\n  var rgbColor = parseToRgb(color);\n\n  var _Object$keys$map = Object.keys(rgbColor).map(function (key) {\n    var channel = rgbColor[key] / 255;\n    return channel <= 0.03928 ? channel / 12.92 : Math.pow((channel + 0.055) / 1.055, 2.4);\n  }),\n      r = _Object$keys$map[0],\n      g = _Object$keys$map[1],\n      b = _Object$keys$map[2];\n\n  return parseFloat((0.2126 * r + 0.7152 * g + 0.0722 * b).toFixed(3));\n}\n\n/**\n * Returns the contrast ratio between two colors based on\n * [W3's recommended equation for calculating contrast](http://www.w3.org/TR/WCAG20/#contrast-ratiodef).\n *\n * @example\n * const contrastRatio = getContrast('#444', '#fff');\n */\n\nfunction getContrast(color1, color2) {\n  var luminance1 = getLuminance(color1);\n  var luminance2 = getLuminance(color2);\n  return parseFloat((luminance1 > luminance2 ? (luminance1 + 0.05) / (luminance2 + 0.05) : (luminance2 + 0.05) / (luminance1 + 0.05)).toFixed(2));\n}\n\n/**\n * Converts the color to a grayscale, by reducing its saturation to 0.\n *\n * @example\n * // Styles as object usage\n * const styles = {\n *   background: grayscale('#CCCD64'),\n *   background: grayscale('rgba(204,205,100,0.7)'),\n * }\n *\n * // styled-components usage\n * const div = styled.div`\n *   background: ${grayscale('#CCCD64')};\n *   background: ${grayscale('rgba(204,205,100,0.7)')};\n * `\n *\n * // CSS in JS Output\n * element {\n *   background: \"#999\";\n *   background: \"rgba(153,153,153,0.7)\";\n * }\n */\n\nfunction grayscale(color) {\n  if (color === 'transparent') return color;\n  return toColorString(_extends({}, parseToHsl(color), {\n    saturation: 0\n  }));\n}\n\n/**\n * Converts a HslColor or HslaColor object to a color string.\n * This util is useful in case you only know on runtime which color object is\n * used. Otherwise we recommend to rely on `hsl` or `hsla`.\n *\n * @example\n * // Styles as object usage\n * const styles = {\n *   background: hslToColorString({ hue: 240, saturation: 1, lightness: 0.5 }),\n *   background: hslToColorString({ hue: 360, saturation: 0.75, lightness: 0.4, alpha: 0.72 }),\n * }\n *\n * // styled-components usage\n * const div = styled.div`\n *   background: ${hslToColorString({ hue: 240, saturation: 1, lightness: 0.5 })};\n *   background: ${hslToColorString({ hue: 360, saturation: 0.75, lightness: 0.4, alpha: 0.72 })};\n * `\n *\n * // CSS in JS Output\n * element {\n *   background: \"#00f\";\n *   background: \"rgba(179,25,25,0.72)\";\n * }\n */\nfunction hslToColorString(color) {\n  if (typeof color === 'object' && typeof color.hue === 'number' && typeof color.saturation === 'number' && typeof color.lightness === 'number') {\n    if (color.alpha && typeof color.alpha === 'number') {\n      return hsla({\n        hue: color.hue,\n        saturation: color.saturation,\n        lightness: color.lightness,\n        alpha: color.alpha\n      });\n    }\n\n    return hsl({\n      hue: color.hue,\n      saturation: color.saturation,\n      lightness: color.lightness\n    });\n  }\n\n  throw new polished_esm_PolishedError(45);\n}\n\n/**\n * Inverts the red, green and blue values of a color.\n *\n * @example\n * // Styles as object usage\n * const styles = {\n *   background: invert('#CCCD64'),\n *   background: invert('rgba(101,100,205,0.7)'),\n * }\n *\n * // styled-components usage\n * const div = styled.div`\n *   background: ${invert('#CCCD64')};\n *   background: ${invert('rgba(101,100,205,0.7)')};\n * `\n *\n * // CSS in JS Output\n *\n * element {\n *   background: \"#33329b\";\n *   background: \"rgba(154,155,50,0.7)\";\n * }\n */\n\nfunction invert(color) {\n  if (color === 'transparent') return color; // parse color string to rgb\n\n  var value = parseToRgb(color);\n  return toColorString(_extends({}, value, {\n    red: 255 - value.red,\n    green: 255 - value.green,\n    blue: 255 - value.blue\n  }));\n}\n\n/**\n * Returns a string value for the lightened color.\n *\n * @example\n * // Styles as object usage\n * const styles = {\n *   background: lighten(0.2, '#CCCD64'),\n *   background: lighten('0.2', 'rgba(204,205,100,0.7)'),\n * }\n *\n * // styled-components usage\n * const div = styled.div`\n *   background: ${lighten(0.2, '#FFCD64')};\n *   background: ${lighten('0.2', 'rgba(204,205,100,0.7)')};\n * `\n *\n * // CSS in JS Output\n *\n * element {\n *   background: \"#e5e6b1\";\n *   background: \"rgba(229,230,177,0.7)\";\n * }\n */\n\nfunction lighten(amount, color) {\n  if (color === 'transparent') return color;\n  var hslColor = parseToHsl(color);\n  return toColorString(_extends({}, hslColor, {\n    lightness: guard(0, 1, hslColor.lightness + parseFloat(amount))\n  }));\n} // prettier-ignore\n\n\nvar curriedLighten = /*#__PURE__*/curry\n/* ::<number | string, string, string> */\n(lighten);\n\n/**\n * Determines which contrast guidelines have been met for two colors.\n * Based on the [contrast calculations recommended by W3](https://www.w3.org/WAI/WCAG21/Understanding/contrast-enhanced.html).\n *\n * @example\n * const scores = meetsContrastGuidelines('#444', '#fff');\n */\nfunction meetsContrastGuidelines(color1, color2) {\n  var contrastRatio = getContrast(color1, color2);\n  return {\n    AA: contrastRatio >= 4.5,\n    AALarge: contrastRatio >= 3,\n    AAA: contrastRatio >= 7,\n    AAALarge: contrastRatio >= 4.5\n  };\n}\n\n/**\n * Mixes the two provided colors together by calculating the average of each of the RGB components weighted to the first color by the provided weight.\n *\n * @example\n * // Styles as object usage\n * const styles = {\n *   background: mix(0.5, '#f00', '#00f')\n *   background: mix(0.25, '#f00', '#00f')\n *   background: mix('0.5', 'rgba(255, 0, 0, 0.5)', '#00f')\n * }\n *\n * // styled-components usage\n * const div = styled.div`\n *   background: ${mix(0.5, '#f00', '#00f')};\n *   background: ${mix(0.25, '#f00', '#00f')};\n *   background: ${mix('0.5', 'rgba(255, 0, 0, 0.5)', '#00f')};\n * `\n *\n * // CSS in JS Output\n *\n * element {\n *   background: \"#7f007f\";\n *   background: \"#3f00bf\";\n *   background: \"rgba(63, 0, 191, 0.75)\";\n * }\n */\n\nfunction mix(weight, color, otherColor) {\n  if (color === 'transparent') return otherColor;\n  if (otherColor === 'transparent') return color;\n  if (weight === 0) return otherColor;\n  var parsedColor1 = parseToRgb(color);\n\n  var color1 = _extends({}, parsedColor1, {\n    alpha: typeof parsedColor1.alpha === 'number' ? parsedColor1.alpha : 1\n  });\n\n  var parsedColor2 = parseToRgb(otherColor);\n\n  var color2 = _extends({}, parsedColor2, {\n    alpha: typeof parsedColor2.alpha === 'number' ? parsedColor2.alpha : 1\n  }); // The formula is copied from the original Sass implementation:\n  // http://sass-lang.com/documentation/Sass/Script/Functions.html#mix-instance_method\n\n\n  var alphaDelta = color1.alpha - color2.alpha;\n  var x = parseFloat(weight) * 2 - 1;\n  var y = x * alphaDelta === -1 ? x : x + alphaDelta;\n  var z = 1 + x * alphaDelta;\n  var weight1 = (y / z + 1) / 2.0;\n  var weight2 = 1 - weight1;\n  var mixedColor = {\n    red: Math.floor(color1.red * weight1 + color2.red * weight2),\n    green: Math.floor(color1.green * weight1 + color2.green * weight2),\n    blue: Math.floor(color1.blue * weight1 + color2.blue * weight2),\n    alpha: color1.alpha * (parseFloat(weight) / 1.0) + color2.alpha * (1 - parseFloat(weight) / 1.0)\n  };\n  return rgba(mixedColor);\n} // prettier-ignore\n\n\nvar curriedMix = /*#__PURE__*/curry\n/* ::<number | string, string, string, string> */\n(mix);\n\n/**\n * Increases the opacity of a color. Its range for the amount is between 0 to 1.\n *\n *\n * @example\n * // Styles as object usage\n * const styles = {\n *   background: opacify(0.1, 'rgba(255, 255, 255, 0.9)');\n *   background: opacify(0.2, 'hsla(0, 0%, 100%, 0.5)'),\n *   background: opacify('0.5', 'rgba(255, 0, 0, 0.2)'),\n * }\n *\n * // styled-components usage\n * const div = styled.div`\n *   background: ${opacify(0.1, 'rgba(255, 255, 255, 0.9)')};\n *   background: ${opacify(0.2, 'hsla(0, 0%, 100%, 0.5)')},\n *   background: ${opacify('0.5', 'rgba(255, 0, 0, 0.2)')},\n * `\n *\n * // CSS in JS Output\n *\n * element {\n *   background: \"#fff\";\n *   background: \"rgba(255,255,255,0.7)\";\n *   background: \"rgba(255,0,0,0.7)\";\n * }\n */\n\nfunction opacify(amount, color) {\n  if (color === 'transparent') return color;\n  var parsedColor = parseToRgb(color);\n  var alpha = typeof parsedColor.alpha === 'number' ? parsedColor.alpha : 1;\n\n  var colorWithAlpha = _extends({}, parsedColor, {\n    alpha: guard(0, 1, (alpha * 100 + parseFloat(amount) * 100) / 100)\n  });\n\n  return rgba(colorWithAlpha);\n} // prettier-ignore\n\n\nvar curriedOpacify = /*#__PURE__*/curry\n/* ::<number | string, string, string> */\n(opacify);\n\nvar defaultReturnIfLightColor = '#000';\nvar defaultReturnIfDarkColor = '#fff';\n/**\n * Returns black or white (or optional passed colors) for best\n * contrast depending on the luminosity of the given color.\n * When passing custom return colors, strict mode ensures that the\n * return color always meets or exceeds WCAG level AA or greater. If this test\n * fails, the default return color (black or white) is returned in place of the\n * custom return color. You can optionally turn off strict mode.\n *\n * Follows [W3C specs for readability](https://www.w3.org/TR/WCAG20-TECHS/G18.html).\n *\n * @example\n * // Styles as object usage\n * const styles = {\n *   color: readableColor('#000'),\n *   color: readableColor('black', '#001', '#ff8'),\n *   color: readableColor('white', '#001', '#ff8'),\n *   color: readableColor('red', '#333', '#ddd', true)\n * }\n *\n * // styled-components usage\n * const div = styled.div`\n *   color: ${readableColor('#000')};\n *   color: ${readableColor('black', '#001', '#ff8')};\n *   color: ${readableColor('white', '#001', '#ff8')};\n *   color: ${readableColor('red', '#333', '#ddd', true)};\n * `\n *\n * // CSS in JS Output\n * element {\n *   color: \"#fff\";\n *   color: \"#ff8\";\n *   color: \"#001\";\n *   color: \"#000\";\n * }\n */\n\nfunction readableColor(color, returnIfLightColor, returnIfDarkColor, strict) {\n  if (returnIfLightColor === void 0) {\n    returnIfLightColor = defaultReturnIfLightColor;\n  }\n\n  if (returnIfDarkColor === void 0) {\n    returnIfDarkColor = defaultReturnIfDarkColor;\n  }\n\n  if (strict === void 0) {\n    strict = true;\n  }\n\n  var isColorLight = getLuminance(color) > 0.179;\n  var preferredReturnColor = isColorLight ? returnIfLightColor : returnIfDarkColor;\n\n  if (!strict || getContrast(color, preferredReturnColor) >= 4.5) {\n    return preferredReturnColor;\n  }\n\n  return isColorLight ? defaultReturnIfLightColor : defaultReturnIfDarkColor;\n}\n\n/**\n * Converts a RgbColor or RgbaColor object to a color string.\n * This util is useful in case you only know on runtime which color object is\n * used. Otherwise we recommend to rely on `rgb` or `rgba`.\n *\n * @example\n * // Styles as object usage\n * const styles = {\n *   background: rgbToColorString({ red: 255, green: 205, blue: 100 }),\n *   background: rgbToColorString({ red: 255, green: 205, blue: 100, alpha: 0.72 }),\n * }\n *\n * // styled-components usage\n * const div = styled.div`\n *   background: ${rgbToColorString({ red: 255, green: 205, blue: 100 })};\n *   background: ${rgbToColorString({ red: 255, green: 205, blue: 100, alpha: 0.72 })};\n * `\n *\n * // CSS in JS Output\n * element {\n *   background: \"#ffcd64\";\n *   background: \"rgba(255,205,100,0.72)\";\n * }\n */\nfunction rgbToColorString(color) {\n  if (typeof color === 'object' && typeof color.red === 'number' && typeof color.green === 'number' && typeof color.blue === 'number') {\n    if (typeof color.alpha === 'number') {\n      return rgba({\n        red: color.red,\n        green: color.green,\n        blue: color.blue,\n        alpha: color.alpha\n      });\n    }\n\n    return rgb({\n      red: color.red,\n      green: color.green,\n      blue: color.blue\n    });\n  }\n\n  throw new polished_esm_PolishedError(46);\n}\n\n/**\n * Increases the intensity of a color. Its range is between 0 to 1. The first\n * argument of the saturate function is the amount by how much the color\n * intensity should be increased.\n *\n * @example\n * // Styles as object usage\n * const styles = {\n *   background: saturate(0.2, '#CCCD64'),\n *   background: saturate('0.2', 'rgba(204,205,100,0.7)'),\n * }\n *\n * // styled-components usage\n * const div = styled.div`\n *   background: ${saturate(0.2, '#FFCD64')};\n *   background: ${saturate('0.2', 'rgba(204,205,100,0.7)')};\n * `\n *\n * // CSS in JS Output\n *\n * element {\n *   background: \"#e0e250\";\n *   background: \"rgba(224,226,80,0.7)\";\n * }\n */\n\nfunction saturate(amount, color) {\n  if (color === 'transparent') return color;\n  var hslColor = parseToHsl(color);\n  return toColorString(_extends({}, hslColor, {\n    saturation: guard(0, 1, hslColor.saturation + parseFloat(amount))\n  }));\n} // prettier-ignore\n\n\nvar curriedSaturate = /*#__PURE__*/curry\n/* ::<number | string, string, string> */\n(saturate);\n\n/**\n * Sets the hue of a color to the provided value. The hue range can be\n * from 0 and 359.\n *\n * @example\n * // Styles as object usage\n * const styles = {\n *   background: setHue(42, '#CCCD64'),\n *   background: setHue('244', 'rgba(204,205,100,0.7)'),\n * }\n *\n * // styled-components usage\n * const div = styled.div`\n *   background: ${setHue(42, '#CCCD64')};\n *   background: ${setHue('244', 'rgba(204,205,100,0.7)')};\n * `\n *\n * // CSS in JS Output\n * element {\n *   background: \"#cdae64\";\n *   background: \"rgba(107,100,205,0.7)\";\n * }\n */\n\nfunction setHue(hue, color) {\n  if (color === 'transparent') return color;\n  return toColorString(_extends({}, parseToHsl(color), {\n    hue: parseFloat(hue)\n  }));\n} // prettier-ignore\n\n\nvar curriedSetHue = /*#__PURE__*/curry\n/* ::<number | string, string, string> */\n(setHue);\n\n/**\n * Sets the lightness of a color to the provided value. The lightness range can be\n * from 0 and 1.\n *\n * @example\n * // Styles as object usage\n * const styles = {\n *   background: setLightness(0.2, '#CCCD64'),\n *   background: setLightness('0.75', 'rgba(204,205,100,0.7)'),\n * }\n *\n * // styled-components usage\n * const div = styled.div`\n *   background: ${setLightness(0.2, '#CCCD64')};\n *   background: ${setLightness('0.75', 'rgba(204,205,100,0.7)')};\n * `\n *\n * // CSS in JS Output\n * element {\n *   background: \"#4d4d19\";\n *   background: \"rgba(223,224,159,0.7)\";\n * }\n */\n\nfunction setLightness(lightness, color) {\n  if (color === 'transparent') return color;\n  return toColorString(_extends({}, parseToHsl(color), {\n    lightness: parseFloat(lightness)\n  }));\n} // prettier-ignore\n\n\nvar curriedSetLightness = /*#__PURE__*/curry\n/* ::<number | string, string, string> */\n(setLightness);\n\n/**\n * Sets the saturation of a color to the provided value. The saturation range can be\n * from 0 and 1.\n *\n * @example\n * // Styles as object usage\n * const styles = {\n *   background: setSaturation(0.2, '#CCCD64'),\n *   background: setSaturation('0.75', 'rgba(204,205,100,0.7)'),\n * }\n *\n * // styled-components usage\n * const div = styled.div`\n *   background: ${setSaturation(0.2, '#CCCD64')};\n *   background: ${setSaturation('0.75', 'rgba(204,205,100,0.7)')};\n * `\n *\n * // CSS in JS Output\n * element {\n *   background: \"#adad84\";\n *   background: \"rgba(228,229,76,0.7)\";\n * }\n */\n\nfunction setSaturation(saturation, color) {\n  if (color === 'transparent') return color;\n  return toColorString(_extends({}, parseToHsl(color), {\n    saturation: parseFloat(saturation)\n  }));\n} // prettier-ignore\n\n\nvar curriedSetSaturation = /*#__PURE__*/curry\n/* ::<number | string, string, string> */\n(setSaturation);\n\n/**\n * Shades a color by mixing it with black. `shade` can produce\n * hue shifts, where as `darken` manipulates the luminance channel and therefore\n * doesn't produce hue shifts.\n *\n * @example\n * // Styles as object usage\n * const styles = {\n *   background: shade(0.25, '#00f')\n * }\n *\n * // styled-components usage\n * const div = styled.div`\n *   background: ${shade(0.25, '#00f')};\n * `\n *\n * // CSS in JS Output\n *\n * element {\n *   background: \"#00003f\";\n * }\n */\n\nfunction shade(percentage, color) {\n  if (color === 'transparent') return color;\n  return curriedMix(parseFloat(percentage), 'rgb(0, 0, 0)', color);\n} // prettier-ignore\n\n\nvar curriedShade = /*#__PURE__*/curry\n/* ::<number | string, string, string> */\n(shade);\n\n/**\n * Tints a color by mixing it with white. `tint` can produce\n * hue shifts, where as `lighten` manipulates the luminance channel and therefore\n * doesn't produce hue shifts.\n *\n * @example\n * // Styles as object usage\n * const styles = {\n *   background: tint(0.25, '#00f')\n * }\n *\n * // styled-components usage\n * const div = styled.div`\n *   background: ${tint(0.25, '#00f')};\n * `\n *\n * // CSS in JS Output\n *\n * element {\n *   background: \"#bfbfff\";\n * }\n */\n\nfunction tint(percentage, color) {\n  if (color === 'transparent') return color;\n  return curriedMix(parseFloat(percentage), 'rgb(255, 255, 255)', color);\n} // prettier-ignore\n\n\nvar curriedTint = /*#__PURE__*/curry\n/* ::<number | string, string, string> */\n(tint);\n\n/**\n * Decreases the opacity of a color. Its range for the amount is between 0 to 1.\n *\n *\n * @example\n * // Styles as object usage\n * const styles = {\n *   background: transparentize(0.1, '#fff');\n *   background: transparentize(0.2, 'hsl(0, 0%, 100%)'),\n *   background: transparentize('0.5', 'rgba(255, 0, 0, 0.8)'),\n * }\n *\n * // styled-components usage\n * const div = styled.div`\n *   background: ${transparentize(0.1, '#fff')};\n *   background: ${transparentize(0.2, 'hsl(0, 0%, 100%)')},\n *   background: ${transparentize('0.5', 'rgba(255, 0, 0, 0.8)')},\n * `\n *\n * // CSS in JS Output\n *\n * element {\n *   background: \"rgba(255,255,255,0.9)\";\n *   background: \"rgba(255,255,255,0.8)\";\n *   background: \"rgba(255,0,0,0.3)\";\n * }\n */\n\nfunction transparentize(amount, color) {\n  if (color === 'transparent') return color;\n  var parsedColor = parseToRgb(color);\n  var alpha = typeof parsedColor.alpha === 'number' ? parsedColor.alpha : 1;\n\n  var colorWithAlpha = _extends({}, parsedColor, {\n    alpha: guard(0, 1, +(alpha * 100 - parseFloat(amount) * 100).toFixed(2) / 100)\n  });\n\n  return rgba(colorWithAlpha);\n} // prettier-ignore\n\n\nvar curriedTransparentize = /*#__PURE__*/curry\n/* ::<number | string, string, string> */\n(transparentize);\n\n/**\n * Shorthand for easily setting the animation property. Allows either multiple arrays with animations\n * or a single animation spread over the arguments.\n * @example\n * // Styles as object usage\n * const styles = {\n *   ...animation(['rotate', '1s', 'ease-in-out'], ['colorchange', '2s'])\n * }\n *\n * // styled-components usage\n * const div = styled.div`\n *   ${animation(['rotate', '1s', 'ease-in-out'], ['colorchange', '2s'])}\n * `\n *\n * // CSS as JS Output\n *\n * div {\n *   'animation': 'rotate 1s ease-in-out, colorchange 2s'\n * }\n * @example\n * // Styles as object usage\n * const styles = {\n *   ...animation('rotate', '1s', 'ease-in-out')\n * }\n *\n * // styled-components usage\n * const div = styled.div`\n *   ${animation('rotate', '1s', 'ease-in-out')}\n * `\n *\n * // CSS as JS Output\n *\n * div {\n *   'animation': 'rotate 1s ease-in-out'\n * }\n */\nfunction animation() {\n  for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n    args[_key] = arguments[_key];\n  }\n\n  // Allow single or multiple animations passed\n  var multiMode = Array.isArray(args[0]);\n\n  if (!multiMode && args.length > 8) {\n    throw new polished_esm_PolishedError(64);\n  }\n\n  var code = args.map(function (arg) {\n    if (multiMode && !Array.isArray(arg) || !multiMode && Array.isArray(arg)) {\n      throw new polished_esm_PolishedError(65);\n    }\n\n    if (Array.isArray(arg) && arg.length > 8) {\n      throw new polished_esm_PolishedError(66);\n    }\n\n    return Array.isArray(arg) ? arg.join(' ') : arg;\n  }).join(', ');\n  return {\n    animation: code\n  };\n}\n\n/**\n * Shorthand that accepts any number of backgroundImage values as parameters for creating a single background statement.\n * @example\n * // Styles as object usage\n * const styles = {\n *   ...backgroundImages('url(\"/image/background.jpg\")', 'linear-gradient(red, green)')\n * }\n *\n * // styled-components usage\n * const div = styled.div`\n *   ${backgroundImages('url(\"/image/background.jpg\")', 'linear-gradient(red, green)')}\n * `\n *\n * // CSS as JS Output\n *\n * div {\n *   'backgroundImage': 'url(\"/image/background.jpg\"), linear-gradient(red, green)'\n * }\n */\nfunction backgroundImages() {\n  for (var _len = arguments.length, properties = new Array(_len), _key = 0; _key < _len; _key++) {\n    properties[_key] = arguments[_key];\n  }\n\n  return {\n    backgroundImage: properties.join(', ')\n  };\n}\n\n/**\n * Shorthand that accepts any number of background values as parameters for creating a single background statement.\n * @example\n * // Styles as object usage\n * const styles = {\n *   ...backgrounds('url(\"/image/background.jpg\")', 'linear-gradient(red, green)', 'center no-repeat')\n * }\n *\n * // styled-components usage\n * const div = styled.div`\n *   ${backgrounds('url(\"/image/background.jpg\")', 'linear-gradient(red, green)', 'center no-repeat')}\n * `\n *\n * // CSS as JS Output\n *\n * div {\n *   'background': 'url(\"/image/background.jpg\"), linear-gradient(red, green), center no-repeat'\n * }\n */\nfunction backgrounds() {\n  for (var _len = arguments.length, properties = new Array(_len), _key = 0; _key < _len; _key++) {\n    properties[_key] = arguments[_key];\n  }\n\n  return {\n    background: properties.join(', ')\n  };\n}\n\nvar sideMap = ['top', 'right', 'bottom', 'left'];\n/**\n * Shorthand for the border property that splits out individual properties for use with tools like Fela and Styletron. A side keyword can optionally be passed to target only one side's border properties.\n *\n * @example\n * // Styles as object usage\n * const styles = {\n *   ...border('1px', 'solid', 'red')\n * }\n *\n * // styled-components usage\n * const div = styled.div`\n *   ${border('1px', 'solid', 'red')}\n * `\n *\n * // CSS as JS Output\n *\n * div {\n *   'borderColor': 'red',\n *   'borderStyle': 'solid',\n *   'borderWidth': `1px`,\n * }\n *\n * // Styles as object usage\n * const styles = {\n *   ...border('top', '1px', 'solid', 'red')\n * }\n *\n * // styled-components usage\n * const div = styled.div`\n *   ${border('top', '1px', 'solid', 'red')}\n * `\n *\n * // CSS as JS Output\n *\n * div {\n *   'borderTopColor': 'red',\n *   'borderTopStyle': 'solid',\n *   'borderTopWidth': `1px`,\n * }\n */\n\nfunction border(sideKeyword) {\n  for (var _len = arguments.length, values = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n    values[_key - 1] = arguments[_key];\n  }\n\n  if (typeof sideKeyword === 'string' && sideMap.indexOf(sideKeyword) >= 0) {\n    var _ref;\n\n    return _ref = {}, _ref[\"border\" + capitalizeString(sideKeyword) + \"Width\"] = values[0], _ref[\"border\" + capitalizeString(sideKeyword) + \"Style\"] = values[1], _ref[\"border\" + capitalizeString(sideKeyword) + \"Color\"] = values[2], _ref;\n  } else {\n    values.unshift(sideKeyword);\n    return {\n      borderWidth: values[0],\n      borderStyle: values[1],\n      borderColor: values[2]\n    };\n  }\n}\n\n/**\n * Shorthand that accepts up to four values, including null to skip a value, and maps them to their respective directions.\n * @example\n * // Styles as object usage\n * const styles = {\n *   ...borderColor('red', 'green', 'blue', 'yellow')\n * }\n *\n * // styled-components usage\n * const div = styled.div`\n *   ${borderColor('red', 'green', 'blue', 'yellow')}\n * `\n *\n * // CSS as JS Output\n *\n * div {\n *   'borderTopColor': 'red',\n *   'borderRightColor': 'green',\n *   'borderBottomColor': 'blue',\n *   'borderLeftColor': 'yellow'\n * }\n */\nfunction polished_esm_borderColor() {\n  for (var _len = arguments.length, values = new Array(_len), _key = 0; _key < _len; _key++) {\n    values[_key] = arguments[_key];\n  }\n\n  return directionalProperty.apply(void 0, ['borderColor'].concat(values));\n}\n\n/**\n * Shorthand that accepts a value for side and a value for radius and applies the radius value to both corners of the side.\n * @example\n * // Styles as object usage\n * const styles = {\n *   ...borderRadius('top', '5px')\n * }\n *\n * // styled-components usage\n * const div = styled.div`\n *   ${borderRadius('top', '5px')}\n * `\n *\n * // CSS as JS Output\n *\n * div {\n *   'borderTopRightRadius': '5px',\n *   'borderTopLeftRadius': '5px',\n * }\n */\nfunction borderRadius(side, radius) {\n  var uppercaseSide = capitalizeString(side);\n\n  if (!radius && radius !== 0) {\n    throw new polished_esm_PolishedError(62);\n  }\n\n  if (uppercaseSide === 'Top' || uppercaseSide === 'Bottom') {\n    var _ref;\n\n    return _ref = {}, _ref[\"border\" + uppercaseSide + \"RightRadius\"] = radius, _ref[\"border\" + uppercaseSide + \"LeftRadius\"] = radius, _ref;\n  }\n\n  if (uppercaseSide === 'Left' || uppercaseSide === 'Right') {\n    var _ref2;\n\n    return _ref2 = {}, _ref2[\"borderTop\" + uppercaseSide + \"Radius\"] = radius, _ref2[\"borderBottom\" + uppercaseSide + \"Radius\"] = radius, _ref2;\n  }\n\n  throw new polished_esm_PolishedError(63);\n}\n\n/**\n * Shorthand that accepts up to four values, including null to skip a value, and maps them to their respective directions.\n * @example\n * // Styles as object usage\n * const styles = {\n *   ...borderStyle('solid', 'dashed', 'dotted', 'double')\n * }\n *\n * // styled-components usage\n * const div = styled.div`\n *   ${borderStyle('solid', 'dashed', 'dotted', 'double')}\n * `\n *\n * // CSS as JS Output\n *\n * div {\n *   'borderTopStyle': 'solid',\n *   'borderRightStyle': 'dashed',\n *   'borderBottomStyle': 'dotted',\n *   'borderLeftStyle': 'double'\n * }\n */\nfunction borderStyle() {\n  for (var _len = arguments.length, values = new Array(_len), _key = 0; _key < _len; _key++) {\n    values[_key] = arguments[_key];\n  }\n\n  return directionalProperty.apply(void 0, ['borderStyle'].concat(values));\n}\n\n/**\n * Shorthand that accepts up to four values, including null to skip a value, and maps them to their respective directions.\n * @example\n * // Styles as object usage\n * const styles = {\n *   ...borderWidth('12px', '24px', '36px', '48px')\n * }\n *\n * // styled-components usage\n * const div = styled.div`\n *   ${borderWidth('12px', '24px', '36px', '48px')}\n * `\n *\n * // CSS as JS Output\n *\n * div {\n *   'borderTopWidth': '12px',\n *   'borderRightWidth': '24px',\n *   'borderBottomWidth': '36px',\n *   'borderLeftWidth': '48px'\n * }\n */\nfunction borderWidth() {\n  for (var _len = arguments.length, values = new Array(_len), _key = 0; _key < _len; _key++) {\n    values[_key] = arguments[_key];\n  }\n\n  return directionalProperty.apply(void 0, ['borderWidth'].concat(values));\n}\n\nfunction generateSelectors(template, state) {\n  var stateSuffix = state ? \":\" + state : '';\n  return template(stateSuffix);\n}\n/**\n * Function helper that adds an array of states to a template of selectors. Used in textInputs and buttons.\n * @private\n */\n\n\nfunction statefulSelectors(states, template, stateMap) {\n  if (!template) throw new polished_esm_PolishedError(67);\n  if (states.length === 0) return generateSelectors(template, null);\n  var selectors = [];\n\n  for (var i = 0; i < states.length; i += 1) {\n    if (stateMap && stateMap.indexOf(states[i]) < 0) {\n      throw new polished_esm_PolishedError(68);\n    }\n\n    selectors.push(generateSelectors(template, states[i]));\n  }\n\n  selectors = selectors.join(',');\n  return selectors;\n}\n\nvar stateMap = [undefined, null, 'active', 'focus', 'hover'];\n\nfunction template(state) {\n  return \"button\" + state + \",\\n  input[type=\\\"button\\\"]\" + state + \",\\n  input[type=\\\"reset\\\"]\" + state + \",\\n  input[type=\\\"submit\\\"]\" + state;\n}\n/**\n * Populates selectors that target all buttons. You can pass optional states to append to the selectors.\n * @example\n * // Styles as object usage\n * const styles = {\n *   [buttons('active')]: {\n *     'border': 'none'\n *   }\n * }\n *\n * // styled-components usage\n * const div = styled.div`\n *   > ${buttons('active')} {\n *     border: none;\n *   }\n * `\n *\n * // CSS in JS Output\n *\n *  'button:active,\n *  'input[type=\"button\"]:active,\n *  'input[type=\\\"reset\\\"]:active,\n *  'input[type=\\\"submit\\\"]:active: {\n *   'border': 'none'\n * }\n */\n\n\nfunction buttons() {\n  for (var _len = arguments.length, states = new Array(_len), _key = 0; _key < _len; _key++) {\n    states[_key] = arguments[_key];\n  }\n\n  return statefulSelectors(states, template, stateMap);\n}\n\n/**\n * Shorthand that accepts up to four values, including null to skip a value, and maps them to their respective directions.\n * @example\n * // Styles as object usage\n * const styles = {\n *   ...margin('12px', '24px', '36px', '48px')\n * }\n *\n * // styled-components usage\n * const div = styled.div`\n *   ${margin('12px', '24px', '36px', '48px')}\n * `\n *\n * // CSS as JS Output\n *\n * div {\n *   'marginTop': '12px',\n *   'marginRight': '24px',\n *   'marginBottom': '36px',\n *   'marginLeft': '48px'\n * }\n */\nfunction margin() {\n  for (var _len = arguments.length, values = new Array(_len), _key = 0; _key < _len; _key++) {\n    values[_key] = arguments[_key];\n  }\n\n  return directionalProperty.apply(void 0, ['margin'].concat(values));\n}\n\n/**\n * Shorthand that accepts up to four values, including null to skip a value, and maps them to their respective directions.\n * @example\n * // Styles as object usage\n * const styles = {\n *   ...padding('12px', '24px', '36px', '48px')\n * }\n *\n * // styled-components usage\n * const div = styled.div`\n *   ${padding('12px', '24px', '36px', '48px')}\n * `\n *\n * // CSS as JS Output\n *\n * div {\n *   'paddingTop': '12px',\n *   'paddingRight': '24px',\n *   'paddingBottom': '36px',\n *   'paddingLeft': '48px'\n * }\n */\nfunction padding() {\n  for (var _len = arguments.length, values = new Array(_len), _key = 0; _key < _len; _key++) {\n    values[_key] = arguments[_key];\n  }\n\n  return directionalProperty.apply(void 0, ['padding'].concat(values));\n}\n\nvar positionMap$1 = ['absolute', 'fixed', 'relative', 'static', 'sticky'];\n/**\n * Shorthand accepts up to five values, including null to skip a value, and maps them to their respective directions. The first value can optionally be a position keyword.\n * @example\n * // Styles as object usage\n * const styles = {\n *   ...position('12px', '24px', '36px', '48px')\n * }\n *\n * // styled-components usage\n * const div = styled.div`\n *   ${position('12px', '24px', '36px', '48px')}\n * `\n *\n * // CSS as JS Output\n *\n * div {\n *   'top': '12px',\n *   'right': '24px',\n *   'bottom': '36px',\n *   'left': '48px'\n * }\n *\n * // Styles as object usage\n * const styles = {\n *   ...position('absolute', '12px', '24px', '36px', '48px')\n * }\n *\n * // styled-components usage\n * const div = styled.div`\n *   ${position('absolute', '12px', '24px', '36px', '48px')}\n * `\n *\n * // CSS as JS Output\n *\n * div {\n *   'position': 'absolute',\n *   'top': '12px',\n *   'right': '24px',\n *   'bottom': '36px',\n *   'left': '48px'\n * }\n */\n\nfunction polished_esm_position(firstValue) {\n  for (var _len = arguments.length, values = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n    values[_key - 1] = arguments[_key];\n  }\n\n  if (positionMap$1.indexOf(firstValue) >= 0 && firstValue) {\n    return _extends({}, directionalProperty.apply(void 0, [''].concat(values)), {\n      position: firstValue\n    });\n  } else {\n    return directionalProperty.apply(void 0, ['', firstValue].concat(values));\n  }\n}\n\n/**\n * Shorthand to set the height and width properties in a single statement.\n * @example\n * // Styles as object usage\n * const styles = {\n *   ...size('300px', '250px')\n * }\n *\n * // styled-components usage\n * const div = styled.div`\n *   ${size('300px', '250px')}\n * `\n *\n * // CSS as JS Output\n *\n * div {\n *   'height': '300px',\n *   'width': '250px',\n * }\n */\nfunction polished_esm_size(height, width) {\n  if (width === void 0) {\n    width = height;\n  }\n\n  return {\n    height: height,\n    width: width\n  };\n}\n\nvar stateMap$1 = [undefined, null, 'active', 'focus', 'hover'];\n\nfunction template$1(state) {\n  return \"input[type=\\\"color\\\"]\" + state + \",\\n    input[type=\\\"date\\\"]\" + state + \",\\n    input[type=\\\"datetime\\\"]\" + state + \",\\n    input[type=\\\"datetime-local\\\"]\" + state + \",\\n    input[type=\\\"email\\\"]\" + state + \",\\n    input[type=\\\"month\\\"]\" + state + \",\\n    input[type=\\\"number\\\"]\" + state + \",\\n    input[type=\\\"password\\\"]\" + state + \",\\n    input[type=\\\"search\\\"]\" + state + \",\\n    input[type=\\\"tel\\\"]\" + state + \",\\n    input[type=\\\"text\\\"]\" + state + \",\\n    input[type=\\\"time\\\"]\" + state + \",\\n    input[type=\\\"url\\\"]\" + state + \",\\n    input[type=\\\"week\\\"]\" + state + \",\\n    input:not([type])\" + state + \",\\n    textarea\" + state;\n}\n/**\n * Populates selectors that target all text inputs. You can pass optional states to append to the selectors.\n * @example\n * // Styles as object usage\n * const styles = {\n *   [textInputs('active')]: {\n *     'border': 'none'\n *   }\n * }\n *\n * // styled-components usage\n * const div = styled.div`\n *   > ${textInputs('active')} {\n *     border: none;\n *   }\n * `\n *\n * // CSS in JS Output\n *\n *  'input[type=\"color\"]:active,\n *  input[type=\"date\"]:active,\n *  input[type=\"datetime\"]:active,\n *  input[type=\"datetime-local\"]:active,\n *  input[type=\"email\"]:active,\n *  input[type=\"month\"]:active,\n *  input[type=\"number\"]:active,\n *  input[type=\"password\"]:active,\n *  input[type=\"search\"]:active,\n *  input[type=\"tel\"]:active,\n *  input[type=\"text\"]:active,\n *  input[type=\"time\"]:active,\n *  input[type=\"url\"]:active,\n *  input[type=\"week\"]:active,\n *  input:not([type]):active,\n *  textarea:active': {\n *   'border': 'none'\n * }\n */\n\n\nfunction textInputs() {\n  for (var _len = arguments.length, states = new Array(_len), _key = 0; _key < _len; _key++) {\n    states[_key] = arguments[_key];\n  }\n\n  return statefulSelectors(states, template$1, stateMap$1);\n}\n\n/**\n * Accepts any number of transition values as parameters for creating a single transition statement. You may also pass an array of properties as the first parameter that you would like to apply the same transition values to (second parameter).\n * @example\n * // Styles as object usage\n * const styles = {\n *   ...transitions('opacity 1.0s ease-in 0s', 'width 2.0s ease-in 2s'),\n *   ...transitions(['color', 'background-color'], '2.0s ease-in 2s')\n * }\n *\n * // styled-components usage\n * const div = styled.div`\n *   ${transitions('opacity 1.0s ease-in 0s', 'width 2.0s ease-in 2s')};\n *   ${transitions(['color', 'background-color'], '2.0s ease-in 2s'),};\n * `\n *\n * // CSS as JS Output\n *\n * div {\n *   'transition': 'opacity 1.0s ease-in 0s, width 2.0s ease-in 2s'\n *   'transition': 'color 2.0s ease-in 2s, background-color 2.0s ease-in 2s',\n * }\n */\n\nfunction transitions() {\n  for (var _len = arguments.length, properties = new Array(_len), _key = 0; _key < _len; _key++) {\n    properties[_key] = arguments[_key];\n  }\n\n  if (Array.isArray(properties[0]) && properties.length === 2) {\n    var value = properties[1];\n\n    if (typeof value !== 'string') {\n      throw new polished_esm_PolishedError(61);\n    }\n\n    var transitionsString = properties[0].map(function (property) {\n      return property + \" \" + value;\n    }).join(', ');\n    return {\n      transition: transitionsString\n    };\n  } else {\n    return {\n      transition: properties.join(', ')\n    };\n  }\n}\n\n\n\n// CONCATENATED MODULE: ./src/components/addToCart/product/productGroupOption.tsx\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { productGroupOption_defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction productGroupOption_defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\n\n\n\n\n\n\n\n\n\n/**\n * 取得SKU ID方法\n * @param skuInfoList\n * @param currentKey\n */\nconst getSkuId = (skuInfoList, currentKey) => {\n  const keys = currentKey.split(';');\n\n  if (keys[1] === '') {\n    currentKey = keys[0];\n  }\n\n  let skuItem = underscore[\"find\"](skuInfoList, item => item.skuKey === currentKey);\n\n  return skuItem && skuItem.skuId || 0;\n};\n/**\n * 是否關聯SKU\n */\n\n\nconst isRelatedSku = (level, skuKeyPart, combinedSkuKey) => {\n  return level === 2 ? combinedSkuKey.split(';')[1] === skuKeyPart : combinedSkuKey.split(';')[0] === skuKeyPart;\n};\n/**\n * 處理sku項目顯示 (銷售中、開啟中)\n */\n\n\nconst getSkuDisplayList = (skuInfoList, skuGroupList, maxSkuLevel, level, selectedSkuKey, selectedSkuKeyLevel2) => {\n  let skuDisplayList;\n\n  if (maxSkuLevel === 1) {\n    // 當SKU只有一階層\n    skuDisplayList = skuGroupList.skuKeyList.map(skuItem => {\n      const matchItem = underscore[\"find\"](skuInfoList, skuInfo => {\n        return skuInfo.skuKey === skuItem.skuKey;\n      });\n\n      return _objectSpread({\n        isShow: matchItem.isShow,\n        isSelling: matchItem.sellingQty > 0\n      }, skuItem);\n    });\n  } else if (maxSkuLevel === 2) {\n    skuDisplayList = skuGroupList.skuKeyList.map(skuItem => {\n      let isShow = false;\n      let isSelling = false;\n\n      if (level === 1 && selectedSkuKeyLevel2 !== '') {\n        const matchedSkuItem = underscore[\"find\"](skuInfoList, skuInfo => {\n          return `${skuItem.skuKey};${selectedSkuKeyLevel2}` === skuInfo.skuKey;\n        });\n\n        isSelling = matchedSkuItem && matchedSkuItem.sellingQty > 0;\n        isShow = matchedSkuItem && matchedSkuItem.isShow;\n      } else if (level === 2 && selectedSkuKey !== '') {\n        const matchedSkuItem = underscore[\"find\"](skuInfoList, skuInfo => {\n          return `${selectedSkuKey};${skuItem.skuKey}` === skuInfo.skuKey;\n        });\n\n        isSelling = matchedSkuItem && matchedSkuItem.sellingQty > 0;\n        isShow = matchedSkuItem && matchedSkuItem.isShow;\n      } else if (selectedSkuKey === '' || selectedSkuKeyLevel2 === '') {\n        let relatedSkuItems = [];\n        relatedSkuItems = underscore[\"filter\"](skuInfoList, skuInfo => {\n          return isRelatedSku(level, skuItem.skuKey, skuInfo.skuKey) === true;\n        });\n\n        const matchedSellingItem = underscore[\"find\"](relatedSkuItems, skuInfo => skuInfo.sellingQty > 0);\n\n        const matchedShowItem = underscore[\"find\"](relatedSkuItems, skuInfo => skuInfo.isShow === true);\n\n        isSelling = matchedSellingItem && matchedSellingItem.sellingQty > 0 || false;\n        isShow = matchedShowItem && matchedShowItem.isShow || false;\n      }\n\n      return _objectSpread({\n        isShow,\n        isSelling\n      }, skuItem);\n    });\n  }\n\n  return skuDisplayList;\n};\n/**\n * 取得關聯選項可售的key值\n * @param optionList\n */\n\n\nconst getSellingSkuKey = optionList => {\n  let skuKey = '';\n\n  for (let i = 0; i < optionList.length; i++) {\n    if (optionList[i].isSelling) {\n      skuKey = optionList[i].skuKey;\n      break;\n    }\n  }\n\n  return skuKey;\n}; // style\n\n\nconst disabledSkuOption = () => {\n  return Object(styled_components_browser_esm[\"b\" /* css */])([\"background:#f0f0f0;cursor:pointer;position:relative;a{text-decoration:line-through;}&:before{animation:fade-in 0.2s ease-out;background-color:#666;border-radius:3px;box-sizing:border-box;color:#fff;content:attr(data-tooltip-content);font-size:0.8em;left:50%;min-width:46px;padding:4px 0;position:absolute;text-align:center;top:100%;transform:translateX(-50%);visibility:hidden;word-break:break-word;z-index:1;}&:after{border-color:transparent transparent #666666 transparent;border-style:solid;border-width:6px;content:'';height:0;left:50%;position:absolute;top:calc(100% - 11px);transform:translateX(-50%);visibility:hidden;width:0;}&:hover{&:before,&:after{visibility:visible;}}\"]);\n};\n\nconst skuOptionActivedStyle = props => {\n  return Object(styled_components_browser_esm[\"b\" /* css */])([\"background-color:\", \";box-shadow:0 0 0 1px \", \";color:\", \";&:hover{background-color:\", \";box-shadow:0 0 0 1px \", \";}\"], themeColor_backgroundColor(props), borderColor(props), textColor(props), curriedDarken(0.1, themeColor_backgroundColor(props)), curriedDarken(0.1, borderColor(props)));\n};\n\nconst skuOptionHoverStyle = props => {\n  return Object(styled_components_browser_esm[\"b\" /* css */])([\"&:hover{box-shadow:0 0 0 1px \", \";}\"], borderColor(props));\n};\n\nconst SkuOptions = styled_components_browser_esm[\"c\" /* default */].div.withConfig({\n  displayName: \"productGroupOption__SkuOptions\",\n  componentId: \"sc-n99ui4-0\"\n})([\"padding-bottom:15px;\"]);\nconst SkuOptionsLevel = styled_components_browser_esm[\"c\" /* default */].div.withConfig({\n  displayName: \"productGroupOption__SkuOptionsLevel\",\n  componentId: \"sc-n99ui4-1\"\n})([\"padding-top:10px;\"]);\nconst SkuOptionsTitle = styled_components_browser_esm[\"c\" /* default */].h6.withConfig({\n  displayName: \"productGroupOption__SkuOptionsTitle\",\n  componentId: \"sc-n99ui4-2\"\n})([\"color:#000000;font-size:0.8em;font-weight:400;line-height:1.5;text-align:left;\"]);\nconst SkuOptionsContainer = styled_components_browser_esm[\"c\" /* default */].ul.withConfig({\n  displayName: \"productGroupOption__SkuOptionsContainer\",\n  componentId: \"sc-n99ui4-3\"\n})([\"padding:2px;&:before,&:after{clear:both;content:'';display:table;}\"]);\nconst SkuOption = styled_components_browser_esm[\"c\" /* default */].li.withConfig({\n  displayName: \"productGroupOption__SkuOption\",\n  componentId: \"sc-n99ui4-4\"\n})([\"background-color:#fff;border-radius:3px;box-shadow:0 0 0 1px #ddd;color:#6b6b6b;display:\", \";float:left;margin:8px 8px 0 0;\", \"\"], props => props.hidden ? 'none' : 'inline-block', props => {\n  // option disabled style\n  if (props.disabled) {\n    return disabledSkuOption();\n  } else if (props.actived) {\n    return skuOptionActivedStyle(props);\n  } else {\n    return skuOptionHoverStyle(props);\n  }\n});\nconst SkuOptionButton = styled_components_browser_esm[\"c\" /* default */].a.withConfig({\n  displayName: \"productGroupOption__SkuOptionButton\",\n  componentId: \"sc-n99ui4-5\"\n})([\"box-sizing:border-box;color:inherit;display:inline-block;font-size:0.8em;line-height:1.2;min-width:46px;padding:5px 16px;text-align:center;word-break:break-all;\"]);\n/**\n * 單階選項清單元件\n * @param props\n */\n\nconst ProductOptions = props => {\n  const {\n    level,\n    optionName,\n    optionList,\n    isSkuStockUpdated,\n    selectedKey,\n    onSelectOption\n  } = props;\n  return /*#__PURE__*/external_root_React_amd_react_commonjs_react_commonjs2_react_umd_react_[\"createElement\"](SkuOptions, null, optionList && optionList.length > 0 && /*#__PURE__*/external_root_React_amd_react_commonjs_react_commonjs2_react_umd_react_[\"createElement\"](SkuOptionsLevel, null, /*#__PURE__*/external_root_React_amd_react_commonjs_react_commonjs2_react_umd_react_[\"createElement\"](SkuOptionsTitle, null, optionName), /*#__PURE__*/external_root_React_amd_react_commonjs_react_commonjs2_react_umd_react_[\"createElement\"](SkuOptionsContainer, null, optionList.map((skuItem, itemIndex) => {\n    return /*#__PURE__*/external_root_React_amd_react_commonjs_react_commonjs2_react_umd_react_[\"createElement\"](SkuOption, {\n      key: itemIndex,\n      \"data-tooltip-content\": isSkuStockUpdated === true ? external_root_ReactReduxI18n_amd_react_redux_i18n_commonjs_react_redux_i18n_commonjs2_react_redux_i18n_umd_react_redux_i18n_[\"I18n\"].t(TRANSLATE_LOCALE_KEY.FRONTEND.LIB.OUT_OF_STOCK) : external_root_ReactReduxI18n_amd_react_redux_i18n_commonjs_react_redux_i18n_commonjs2_react_redux_i18n_umd_react_redux_i18n_[\"I18n\"].t(TRANSLATE_LOCALE_KEY.FRONTEND.LIB.UPDATE),\n      actived: skuItem.isSelling === true && skuItem.skuKey === selectedKey,\n      hidden: skuItem.isShow === false,\n      disabled: !skuItem.isSelling\n    }, /*#__PURE__*/external_root_React_amd_react_commonjs_react_commonjs2_react_umd_react_[\"createElement\"](SkuOptionButton, {\n      \"data-sku-key\": skuItem.skuKey,\n      \"data-sku-name\": skuItem.skuName,\n      \"data-is-selling\": skuItem.isSelling,\n      \"data-selected-sku-level\": level,\n      onClick: onSelectOption\n    }, skuItem.skuName));\n  }))));\n};\n/**\n * 組合階層選項清單元件\n * @param props\n */\n\nconst ProductGroupOption = props => {\n  const {\n    skuInfoList,\n    skuGroup,\n    maxSkuLevel,\n    updateSelectedSkuId,\n    updateProductStock\n  } = props;\n  const [selectedSkuKey, setSelectedSkuKey] = Object(external_root_React_amd_react_commonjs_react_commonjs2_react_umd_react_[\"useState\"])('');\n  const [selectedSkuKeyLevel2, setSelectedSkuKeyLevel2] = Object(external_root_React_amd_react_commonjs_react_commonjs2_react_umd_react_[\"useState\"])('');\n  const [isSkuStockUpdate, setIsSkuStockUpdated] = Object(external_root_React_amd_react_commonjs_react_commonjs2_react_umd_react_[\"useState\"])(true);\n  const optionList1 = skuGroup.skuGroupLevel1 ? getSkuDisplayList(skuInfoList, skuGroup.skuGroupLevel1, maxSkuLevel, 1, selectedSkuKey, selectedSkuKeyLevel2) : null;\n  const optionList2 = skuGroup.skuGroupLevel2 ? getSkuDisplayList(skuInfoList, skuGroup.skuGroupLevel2, maxSkuLevel, 2, selectedSkuKey, selectedSkuKeyLevel2) : null; // 初始選擇SKU ID\n\n  let selectedSkuId;\n  let currentKey = '';\n  let sellingSkuKey = ''; // 當有二階顯示狀態且點擊選取時，需連動另一階選項處理\n\n  if (!isSkuStockUpdate) {\n    if (maxSkuLevel === 1) {\n      selectedSkuId = getSkuId(skuInfoList, selectedSkuKey);\n    } else {\n      if (selectedSkuKeyLevel2 === '') {\n        sellingSkuKey = getSellingSkuKey(optionList2);\n        currentKey = selectedSkuKey + ';' + sellingSkuKey;\n        setSelectedSkuKeyLevel2(sellingSkuKey);\n      } else if (selectedSkuKey === '') {\n        sellingSkuKey = getSellingSkuKey(optionList1);\n        currentKey = sellingSkuKey + ';' + selectedSkuKeyLevel2;\n        setSelectedSkuKey(sellingSkuKey);\n      } else {\n        currentKey = selectedSkuKey + ';' + selectedSkuKeyLevel2;\n      }\n\n      selectedSkuId = getSkuId(skuInfoList, currentKey);\n    } // console.log('更新ID:', selectedSkuId);\n\n\n    setIsSkuStockUpdated(true); // 更新Sku ID\n\n    updateSelectedSkuId(selectedSkuId);\n  } // 選擇SKU項目事件處理\n\n\n  const onSelectSkuItem = e => {\n    e.preventDefault();\n    e.stopPropagation();\n    const target = e.currentTarget;\n    const skuKey = target.getAttribute('data-sku-key');\n    const isSelling = JSON.parse(target.getAttribute('data-is-selling'));\n    const selectedSkuLevel = parseInt(target.getAttribute('data-selected-sku-level'), 10);\n\n    if (isSelling !== true) {\n      return;\n    } // 防止重複點擊已選取的項目\n\n\n    if (selectedSkuKey === skuKey || selectedSkuKeyLevel2 === skuKey) {\n      return;\n    }\n\n    if (maxSkuLevel === 1) {\n      setSelectedSkuKey(skuKey); // 選取一階的項目\n    } else {\n      // 判斷當前選取的階層，組合當前已選取的key+上一次紀錄選取階層的key\n      if (selectedSkuLevel === 1) {\n        setSelectedSkuKey(skuKey); // 選取一階的項目\n      } else if (selectedSkuLevel === 2) {\n        setSelectedSkuKeyLevel2(skuKey); // 選取二階的項目\n      }\n    } // console.log('選取的skuKey:', skuKey);\n    // 更新庫存開關\n\n\n    setIsSkuStockUpdated(false); // 更新庫存處理\n\n    updateProductStock(skuInfoList);\n  };\n\n  Object(external_root_React_amd_react_commonjs_react_commonjs2_react_umd_react_[\"useEffect\"])(() => {\n    // 當SKU一階且只有剩一個選項就直接選取\n    if (maxSkuLevel === 1 && optionList1 && optionList1.length <= 1) {\n      const {\n        skuKey\n      } = underscore[\"first\"](optionList1);\n\n      const skuId = getSkuId(skuInfoList, skuKey);\n      setSelectedSkuKey(skuKey);\n      setIsSkuStockUpdated(true);\n      updateSelectedSkuId(skuId);\n    }\n  }, []);\n  return /*#__PURE__*/external_root_React_amd_react_commonjs_react_commonjs2_react_umd_react_[\"createElement\"](external_root_React_amd_react_commonjs_react_commonjs2_react_umd_react_[\"Fragment\"], null, optionList1 && /*#__PURE__*/external_root_React_amd_react_commonjs_react_commonjs2_react_umd_react_[\"createElement\"](ProductOptions, {\n    level: 1,\n    isSkuStockUpdated: isSkuStockUpdate,\n    optionName: skuGroup.skuGroupLevel1.skuGroupName,\n    optionList: optionList1,\n    selectedKey: selectedSkuKey,\n    onSelectOption: onSelectSkuItem\n  }), optionList2 && /*#__PURE__*/external_root_React_amd_react_commonjs_react_commonjs2_react_umd_react_[\"createElement\"](ProductOptions, {\n    level: 2,\n    isSkuStockUpdated: isSkuStockUpdate,\n    optionName: skuGroup.skuGroupLevel2.skuGroupName,\n    optionList: optionList2,\n    selectedKey: selectedSkuKeyLevel2,\n    onSelectOption: onSelectSkuItem\n  }));\n};\n// CONCATENATED MODULE: ./src/components/button/index.tsx\n\n\n\n\n\n\nconst buttonSize = size => {\n  switch (size) {\n    case 'auto':\n      return Object(styled_components_browser_esm[\"b\" /* css */])([\"width:100%;height:40px;line-height:40px;\"]);\n\n    case 'normal':\n      return Object(styled_components_browser_esm[\"b\" /* css */])([\"width:131px;height:40px;line-height:40px;\"]);\n\n    case 'small':\n      return Object(styled_components_browser_esm[\"b\" /* css */])([\"width:60px;max-width:60px;height:28px;line-height:28px;\"]);\n\n    case 'fit':\n      return Object(styled_components_browser_esm[\"b\" /* css */])([\"width:fit-content;height:40px;line-height:40px;padding:0px 10px;\"]);\n\n    default:\n      return Object(styled_components_browser_esm[\"b\" /* css */])([\"width:60px;max-width:60px;height:28px;line-height:28px;\"]);\n  }\n};\n\nconst baseColor = '#fff';\nconst normalColor = '#bbb';\nconst fontColor = '#666';\n\nconst containedHoverStyle = () => {\n  return Object(styled_components_browser_esm[\"b\" /* css */])([\"&:hover{background-color:\", \";border:1px solid \", \";color:\", \";}\"], props => underscore_default.a.isEmpty(props.theme) ? '#ff2020' : curriedDarken(0.1, props.theme.buttonStyle.primaryBtnBgColor), props => underscore_default.a.isEmpty(props.theme) ? '#ff2020' : props.theme.buttonStyle.primaryBtnBgColor, props => underscore_default.a.isEmpty(props.theme) ? baseColor : props.theme.buttonStyle.primaryBtnTextColor);\n};\n\nconst outlinedHoverStyle = () => {\n  return Object(styled_components_browser_esm[\"b\" /* css */])([\"&:hover{background-color:\", \";border:1px solid \", \";color:\", \";}\"], props => underscore_default.a.isEmpty(props.theme) ? baseColor : curriedDarken(0.1, props.theme.buttonStyle.secondBtnBgColor), props => underscore_default.a.isEmpty(props.theme) ? '#ff2020' : props.theme.buttonStyle.secondBtnBorderColor, props => underscore_default.a.isEmpty(props.theme) ? '#ff5353' : props.theme.buttonStyle.secondBtnTextColor);\n};\n\nconst buttonVariant = variant => {\n  switch (variant) {\n    case 'contained':\n      return Object(styled_components_browser_esm[\"b\" /* css */])([\"background-color:\", \";color:\", \";cursor:pointer;border:1px solid \", \";\", \"\"], props => underscore_default.a.isEmpty(props.theme) ? '#ff5353' : props.theme.buttonStyle.primaryBtnBgColor, props => underscore_default.a.isEmpty(props.theme) ? baseColor : props.theme.buttonStyle.primaryBtnTextColor, props => underscore_default.a.isEmpty(props.theme) ? '#ff5353' : props.theme.buttonStyle.primaryBtnBgColor, () => device_utility_namespaceObject.getBrowsingMode() === BROWSING_MODE.DESKTOP ? containedHoverStyle() : '');\n\n    case 'outlined':\n      return Object(styled_components_browser_esm[\"b\" /* css */])([\"background-color:\", \";color:\", \";cursor:pointer;border:1px solid \", \";\", \"\"], props => underscore_default.a.isEmpty(props.theme) ? baseColor : props.theme.buttonStyle.secondBtnBgColor, props => underscore_default.a.isEmpty(props.theme) ? '#ff5353' : props.theme.buttonStyle.secondBtnTextColor, props => underscore_default.a.isEmpty(props.theme) ? '#ff5353' : props.theme.buttonStyle.secondBtnBorderColor, () => device_utility_namespaceObject.getBrowsingMode() === BROWSING_MODE.DESKTOP ? outlinedHoverStyle() : '');\n\n    case 'normal':\n      return Object(styled_components_browser_esm[\"b\" /* css */])([\"background-color:\", \";color:\", \";cursor:pointer;border:1px solid \", \";&:hover{border:1px solid \", \";}\"], baseColor, fontColor, normalColor, fontColor);\n\n    default:\n      return Object(styled_components_browser_esm[\"b\" /* css */])([\"background-color:\", \";color:\", \";cursor:pointer;border:1px solid \", \";\"], baseColor, normalColor, normalColor);\n  }\n};\n\nconst buttonDisable = Object(styled_components_browser_esm[\"b\" /* css */])([\"pointer-events:none;color:#ffffff;border:1px solid #dddddd;background-color:#dddddd;cursor:default;\"]);\nconst Button = styled_components_browser_esm[\"c\" /* default */].button.withConfig({\n  displayName: \"button__Button\",\n  componentId: \"sc-fjm4ds-0\"\n})([\"border-radius:4.5px;font-size:14px;text-align:center;box-sizing:border-box;display:inline-block;\", \"\"], props => {\n  const {\n    variant,\n    disable,\n    size\n  } = props;\n  return Object(styled_components_browser_esm[\"b\" /* css */])([\"\", \"};\", \";\"], disable ? buttonDisable : buttonVariant(variant), buttonSize(size));\n});\nButton.defaultProps = {\n  disable: false,\n  size: 'normal',\n  variant: 'contained'\n};\n/* harmony default export */ var components_button = (Button);\n// CONCATENATED MODULE: ./src/components/addToCart/product/productQty.tsx\n\n\n\n\n\n\n\n\nconst CartButtonContainer = styled_components_browser_esm[\"c\" /* default */].div.withConfig({\n  displayName: \"productQty__CartButtonContainer\",\n  componentId: \"sc-1tryteq-0\"\n})([\"flex:1;margin:auto;text-align:center;\"]);\nconst QtyButtonContainer = styled_components_browser_esm[\"c\" /* default */].div.withConfig({\n  displayName: \"productQty__QtyButtonContainer\",\n  componentId: \"sc-1tryteq-1\"\n})([\"flex:1;text-align:center;\"]);\nconst QtyTopContent = styled_components_browser_esm[\"c\" /* default */].div.withConfig({\n  displayName: \"productQty__QtyTopContent\",\n  componentId: \"sc-1tryteq-2\"\n})([\"display:flex;width:100%;height:40px;text-align:center;line-height:40px;justify-content:center;\"]);\nconst QtyBottomContent = styled_components_browser_esm[\"c\" /* default */].div.withConfig({\n  displayName: \"productQty__QtyBottomContent\",\n  componentId: \"sc-1tryteq-3\"\n})([\"flex:1;\"]);\nconst QtyCounterInput = styled_components_browser_esm[\"c\" /* default */].input.withConfig({\n  displayName: \"productQty__QtyCounterInput\",\n  componentId: \"sc-1tryteq-4\"\n})([\"color:#4a4e5c;font-size:1em;width:85px;text-align:center;&::-webkit-inner-spin-button,::-webkit-outer-spin-button{-webkit-appearance:none;-moz-appearance:none;appearance:none;margin:0;}\"]);\nconst QtyLimitText = styled_components_browser_esm[\"c\" /* default */].span.withConfig({\n  displayName: \"productQty__QtyLimitText\",\n  componentId: \"sc-1tryteq-5\"\n})([\"color:#ff5353;font-size:13px;line-height:1.5;\"]);\nconst QtyButton = styled_components_browser_esm[\"c\" /* default */].div.withConfig({\n  displayName: \"productQty__QtyButton\",\n  componentId: \"sc-1tryteq-6\"\n})([\"cursor:pointer;font-size:22px;font-weight:900;width:44px;color:\", \";\", \"\"], themeColor_backgroundColor, props => {\n  return props.isDisable && `\n            color: #999999;\n            &:hover {\n                cursor: not-allowed !important;\n            }\n            `;\n});\nconst CartButton = Object(styled_components_browser_esm[\"c\" /* default */])(components_button).withConfig({\n  displayName: \"productQty__CartButton\",\n  componentId: \"sc-1tryteq-7\"\n})([\"font-size:15px;width:\", \";\"], device_utility_namespaceObject.getBrowsingMode() === BROWSING_MODE.MOBILE ? '190px' : '310px');\n/**\n * 購物車購買數量顯示元件\n */\n\nconst ProductDisplayQty = props => {\n  const {\n    currentValue,\n    maxValue,\n    minValue,\n    onIncreseValue,\n    onDecreseValue,\n    onChangeValue\n  } = props; // 因手機需啟用鍵盤\n\n  const inputType = device_utility_namespaceObject.getBrowsingMode() === BROWSING_MODE.DESKTOP ? 'number' : 'tel';\n  return /*#__PURE__*/external_root_React_amd_react_commonjs_react_commonjs2_react_umd_react_default.a.createElement(QtyButtonContainer, null, /*#__PURE__*/external_root_React_amd_react_commonjs_react_commonjs2_react_umd_react_default.a.createElement(QtyTopContent, null, /*#__PURE__*/external_root_React_amd_react_commonjs_react_commonjs2_react_umd_react_default.a.createElement(QtyButton, {\n    isDisable: currentValue <= minValue,\n    onClick: onDecreseValue\n  }, /*#__PURE__*/external_root_React_amd_react_commonjs_react_commonjs2_react_umd_react_default.a.createElement(\"i\", {\n    className: \"icon icon-slim-minus\",\n    style: {\n      padding: '9px'\n    }\n  })), /*#__PURE__*/external_root_React_amd_react_commonjs_react_commonjs2_react_umd_react_default.a.createElement(QtyCounterInput, {\n    type: inputType,\n    name: \"qtyInput\",\n    pattern: \"[0-9]*\",\n    min: minValue,\n    max: maxValue,\n    value: currentValue,\n    onChange: onChangeValue\n  }), /*#__PURE__*/external_root_React_amd_react_commonjs_react_commonjs2_react_umd_react_default.a.createElement(QtyButton, {\n    isDisable: maxValue > 0 && currentValue >= maxValue,\n    onClick: onIncreseValue\n  }, /*#__PURE__*/external_root_React_amd_react_commonjs_react_commonjs2_react_umd_react_default.a.createElement(\"i\", {\n    className: \"icon icon-slim-plus\",\n    style: {\n      padding: '9px'\n    }\n  }))), /*#__PURE__*/external_root_React_amd_react_commonjs_react_commonjs2_react_umd_react_default.a.createElement(QtyBottomContent, null, maxValue > 0 && currentValue >= maxValue && /*#__PURE__*/external_root_React_amd_react_commonjs_react_commonjs2_react_umd_react_default.a.createElement(QtyLimitText, null, /*#__PURE__*/external_root_React_amd_react_commonjs_react_commonjs2_react_umd_react_default.a.createElement(external_root_ReactReduxI18n_amd_react_redux_i18n_commonjs_react_redux_i18n_commonjs2_react_redux_i18n_umd_react_redux_i18n_[\"Translate\"], {\n    value: TRANSLATE_LOCALE_KEY.FRONTEND.LIB.LIMIT_MAX_VALUE_MSG,\n    maxValue: maxValue\n  })), currentValue < minValue && /*#__PURE__*/external_root_React_amd_react_commonjs_react_commonjs2_react_umd_react_default.a.createElement(QtyLimitText, null, /*#__PURE__*/external_root_React_amd_react_commonjs_react_commonjs2_react_umd_react_default.a.createElement(external_root_ReactReduxI18n_amd_react_redux_i18n_commonjs_react_redux_i18n_commonjs2_react_redux_i18n_umd_react_redux_i18n_[\"Translate\"], {\n    value: TRANSLATE_LOCALE_KEY.FRONTEND.LIB.LIMIT_MIN_VALUE_MSG\n  }))));\n};\n\nconst getButton = (mode, status, onButtonHandler) => {\n  switch (status) {\n    case 'SoldOut':\n      return /*#__PURE__*/external_root_React_amd_react_commonjs_react_commonjs2_react_umd_react_default.a.createElement(CartButton, {\n        variant: \"contained\",\n        disabled: true\n      }, /*#__PURE__*/external_root_React_amd_react_commonjs_react_commonjs2_react_umd_react_default.a.createElement(external_root_ReactReduxI18n_amd_react_redux_i18n_commonjs_react_redux_i18n_commonjs2_react_redux_i18n_umd_react_redux_i18n_[\"Translate\"], {\n        value: TRANSLATE_LOCALE_KEY.FRONTEND.LIB.SOLD_OUT_AND_REPLENISHED\n      }));\n\n    case 'NotStartSell':\n      return /*#__PURE__*/external_root_React_amd_react_commonjs_react_commonjs2_react_umd_react_default.a.createElement(CartButton, {\n        variant: \"contained\",\n        disabled: true\n      }, /*#__PURE__*/external_root_React_amd_react_commonjs_react_commonjs2_react_umd_react_default.a.createElement(external_root_ReactReduxI18n_amd_react_redux_i18n_commonjs_react_redux_i18n_commonjs2_react_redux_i18n_umd_react_redux_i18n_[\"Translate\"], {\n        value: TRANSLATE_LOCALE_KEY.FRONTEND.LIB.NOT_YET_OPEN_SALE\n      }));\n\n    case 'ShareToBuy':\n      return /*#__PURE__*/external_root_React_amd_react_commonjs_react_commonjs2_react_umd_react_default.a.createElement(CartButton, {\n        variant: \"contained\",\n        onClick: onButtonHandler\n      }, /*#__PURE__*/external_root_React_amd_react_commonjs_react_commonjs2_react_umd_react_default.a.createElement(external_root_ReactReduxI18n_amd_react_redux_i18n_commonjs_react_redux_i18n_commonjs2_react_redux_i18n_umd_react_redux_i18n_[\"Translate\"], {\n        value: TRANSLATE_LOCALE_KEY.FRONTEND.LIB.SHARE_AND_BUY\n      }));\n\n    case 'AppOnly':\n      return /*#__PURE__*/external_root_React_amd_react_commonjs_react_commonjs2_react_umd_react_default.a.createElement(CartButton, {\n        variant: \"contained\",\n        onClick: onButtonHandler\n      }, /*#__PURE__*/external_root_React_amd_react_commonjs_react_commonjs2_react_umd_react_default.a.createElement(external_root_ReactReduxI18n_amd_react_redux_i18n_commonjs_react_redux_i18n_commonjs2_react_redux_i18n_umd_react_redux_i18n_[\"Translate\"], {\n        value: TRANSLATE_LOCALE_KEY.FRONTEND.LIB.ONLY_ON_APP\n      }));\n\n    case 'ImmediatelyBuy':\n      return /*#__PURE__*/external_root_React_amd_react_commonjs_react_commonjs2_react_umd_react_default.a.createElement(CartButton, {\n        variant: \"contained\",\n        onClick: onButtonHandler\n      }, /*#__PURE__*/external_root_React_amd_react_commonjs_react_commonjs2_react_umd_react_default.a.createElement(external_root_ReactReduxI18n_amd_react_redux_i18n_commonjs_react_redux_i18n_commonjs2_react_redux_i18n_umd_react_redux_i18n_[\"Translate\"], {\n        value: TRANSLATE_LOCALE_KEY.FRONTEND.LIB.CHECK_OUT\n      }));\n\n    default:\n      return mode === 'Normal' ?\n      /*#__PURE__*/\n      // 加入購物車\n      external_root_React_amd_react_commonjs_react_commonjs2_react_umd_react_default.a.createElement(CartButton, {\n        variant: \"contained\",\n        onClick: onButtonHandler\n      }, /*#__PURE__*/external_root_React_amd_react_commonjs_react_commonjs2_react_umd_react_default.a.createElement(external_root_ReactReduxI18n_amd_react_redux_i18n_commonjs_react_redux_i18n_commonjs2_react_redux_i18n_umd_react_redux_i18n_[\"Translate\"], {\n        value: TRANSLATE_LOCALE_KEY.FRONTEND.LIB.ADD_CART\n      })) :\n      /*#__PURE__*/\n      // 加入(選購商品)\n      external_root_React_amd_react_commonjs_react_commonjs2_react_umd_react_default.a.createElement(CartButton, {\n        variant: \"contained\",\n        onClick: onButtonHandler\n      }, /*#__PURE__*/external_root_React_amd_react_commonjs_react_commonjs2_react_umd_react_default.a.createElement(external_root_ReactReduxI18n_amd_react_redux_i18n_commonjs_react_redux_i18n_commonjs2_react_redux_i18n_umd_react_redux_i18n_[\"Translate\"], {\n        value: TRANSLATE_LOCALE_KEY.FRONTEND.LIB.ADD\n      }));\n  }\n};\n/**\n * 加入購物車功能按鈕\n */\n\n\nconst ProductCartButton = props => {\n  const {\n    mode,\n    status,\n    currentValue,\n    maxValue,\n    minValue,\n    onClicked\n  } = props;\n\n  const onButtonHandler = e => {\n    e.preventDefault();\n    e.stopPropagation();\n\n    if (!currentValue || maxValue && currentValue > maxValue || currentValue < minValue) {\n      return;\n    }\n\n    onClicked(status);\n  };\n\n  return /*#__PURE__*/external_root_React_amd_react_commonjs_react_commonjs2_react_umd_react_default.a.createElement(CartButtonContainer, null, getButton(mode, status, onButtonHandler));\n};\n// CONCATENATED MODULE: ./src/components/addToCart/product/purchaseMethod.tsx\n\n\n\n\n\n\n\nconst PurchaseMethodContainer = styled_components_browser_esm[\"c\" /* default */].div.withConfig({\n  displayName: \"purchaseMethod__PurchaseMethodContainer\",\n  componentId: \"sc-1npj25r-0\"\n})([\"padding:10px 0 15px;\"]);\nconst Title = styled_components_browser_esm[\"c\" /* default */].h6.withConfig({\n  displayName: \"purchaseMethod__Title\",\n  componentId: \"sc-1npj25r-1\"\n})([\"color:#4a4e5c;font-size:0.8em;line-height:1.5;\"]);\nconst PointpayOptions = styled_components_browser_esm[\"c\" /* default */].div.withConfig({\n  displayName: \"purchaseMethod__PointpayOptions\",\n  componentId: \"sc-1npj25r-2\"\n})([\"padding:0 2px;\"]);\n\nconst pointpayOptionActivedStyle = props => {\n  return Object(styled_components_browser_esm[\"b\" /* css */])([\"background-color:\", \";box-shadow:0 0 0 1px \", \";color:\", \";&:hover{background-color:\", \";box-shadow:0 0 0 1px \", \";}\"], themeColor_backgroundColor(props), borderColor(props), textColor(props), curriedDarken(0.1, themeColor_backgroundColor(props)), curriedDarken(0.1, borderColor(props)));\n};\n\nconst pointpayOptionHoverStyle = props => {\n  return Object(styled_components_browser_esm[\"b\" /* css */])([\"&:hover{box-shadow:0 0 0 1px \", \";}\"], borderColor(props));\n};\n\nconst PointpayOption = styled_components_browser_esm[\"c\" /* default */].button.withConfig({\n  displayName: \"purchaseMethod__PointpayOption\",\n  componentId: \"sc-1npj25r-3\"\n})([\"-webkit-tap-highlight-color:rgba(0,0,0,0);background-color:white;border-radius:3px;box-shadow:0 0 0 1px #ddd;box-sizing:border-box;color:#666;cursor:pointer;display:inline-block;font-size:0.8em;line-height:1.2;margin:8px 8px 0 0;min-width:46px;padding:5px 16px;text-align:center;\", \"\"], props => {\n  if (props.actived) {\n    return pointpayOptionActivedStyle(props);\n  } else {\n    return pointpayOptionHoverStyle(props);\n  }\n});\nconst PurchaseMethod = props => {\n  const {\n    purchaseMethodList,\n    selectedPurchaseMethod,\n    onSelectPurchaseMethod,\n    decimal,\n    symbol,\n    rate\n  } = props;\n  return /*#__PURE__*/external_root_React_amd_react_commonjs_react_commonjs2_react_umd_react_[\"createElement\"](PurchaseMethodContainer, null, /*#__PURE__*/external_root_React_amd_react_commonjs_react_commonjs2_react_umd_react_[\"createElement\"](Title, null, external_root_ReactReduxI18n_amd_react_redux_i18n_commonjs_react_redux_i18n_commonjs2_react_redux_i18n_umd_react_redux_i18n_[\"I18n\"].t(TRANSLATE_LOCALE_KEY.FRONTEND.LIB.PLEASE_SELECT_PURCHASE_METHOD)), /*#__PURE__*/external_root_React_amd_react_commonjs_react_commonjs2_react_umd_react_[\"createElement\"](PointpayOptions, null, purchaseMethodList.map((item, index) => {\n    return /*#__PURE__*/external_root_React_amd_react_commonjs_react_commonjs2_react_umd_react_[\"createElement\"](PointpayOption, {\n      key: index,\n      onClick: e => onSelectPurchaseMethod(item),\n      actived: item.PointsPayId === selectedPurchaseMethod.PointsPayId\n    }, item.PairsPoints === 0 && item.PairsPrice > 0 && /*#__PURE__*/external_root_React_amd_react_commonjs_react_commonjs2_react_umd_react_[\"createElement\"](currency, {\n      value: item.PairsPrice,\n      decimal: decimal,\n      symbol: symbol,\n      rate: rate,\n      disableTheme: true\n    }), item.PairsPrice === 0 && item.PairsPoints > 0 && /*#__PURE__*/external_root_React_amd_react_commonjs_react_commonjs2_react_umd_react_[\"createElement\"](external_root_ReactReduxI18n_amd_react_redux_i18n_commonjs_react_redux_i18n_commonjs2_react_redux_i18n_umd_react_redux_i18n_[\"Translate\"], {\n      value: TRANSLATE_LOCALE_KEY.FRONTEND.LIB.PURCHASE_METHOD_POINT,\n      point: item.PairsPoints\n    }), item.PairsPoints > 0 && item.PairsPrice > 0 && /*#__PURE__*/external_root_React_amd_react_commonjs_react_commonjs2_react_umd_react_[\"createElement\"](\"span\", null, /*#__PURE__*/external_root_React_amd_react_commonjs_react_commonjs2_react_umd_react_[\"createElement\"](external_root_ReactReduxI18n_amd_react_redux_i18n_commonjs_react_redux_i18n_commonjs2_react_redux_i18n_umd_react_redux_i18n_[\"Translate\"], {\n      value: TRANSLATE_LOCALE_KEY.FRONTEND.LIB.PURCHASE_METHOD_POINT,\n      point: item.PairsPoints\n    }), /*#__PURE__*/external_root_React_amd_react_commonjs_react_commonjs2_react_umd_react_[\"createElement\"](\"span\", null, \"\\uFF0B\"), /*#__PURE__*/external_root_React_amd_react_commonjs_react_commonjs2_react_umd_react_[\"createElement\"](currency, {\n      value: item.PairsPrice,\n      decimal: decimal,\n      symbol: symbol,\n      rate: rate,\n      disableTheme: true\n    })));\n  })));\n};\n// EXTERNAL MODULE: ./node_modules/statuses/index.js\nvar statuses = __webpack_require__(8);\n\n// EXTERNAL MODULE: ./node_modules/superagent/lib/client.js\nvar client = __webpack_require__(5);\n\n// CONCATENATED MODULE: ./src/providers/http.provider.ts\n\n\nasync function fetchApi(requestUrl, option = {\n  method: 'GET'\n}) {\n  const url = requestUrl.split('?')[0] || '';\n  const queryString = requestUrl.split('?')[1] || '';\n  const requestSetting = {\n    GET: client[\"get\"](url).query(queryString),\n    POST: client[\"post\"](url).query(queryString).send(option.body).set('Content-Type', 'application/json'),\n    PUT: client[\"put\"](url).query(queryString).send(option.body).set('Content-Type', 'application/json'),\n    DELETE: client[\"delete\"](url).query(queryString).send(option.body).set('Content-Type', 'application/json'),\n    FORM: client[\"post\"](url).query(queryString).send(option.formData)\n  };\n\n  try {\n    const response = await requestSetting[option.method];\n\n    if (statuses[\"redirect\"][response.status] || statuses[\"retry\"][response.status]) {\n      return Promise.reject(new Error(response.body));\n    }\n\n    return Promise.resolve(response.body);\n  } catch (err) {\n    return Promise.reject(err);\n  }\n}\n// CONCATENATED MODULE: ./src/models/productStock.model.ts\n\n\n\n\n/**\n * 取得庫存資訊\n * @param skuIdList \n * @param skuInfoList \n */\nconst fetchProductStockModel = async (shopId, skuIdList, skuInfoList) => {\n  try {\n    const apiUrl = getMwebApiUrl(`ProductStock/GetSellingQtyListNew?shopId=${shopId}`); // console.log('fetchProductStockModel skuIdList:', skuIdList);\n\n    const fetchParameters = {\n      method: 'POST',\n      body: JSON.stringify({\n        ids: skuIdList.toString()\n      })\n    };\n    const result = await fetchApi(apiUrl, fetchParameters);\n    return Promise.resolve(fetchProductStockMapping(result, skuInfoList));\n  } catch (error) {\n    return Promise.reject(error);\n  }\n};\n/**\n * 更新庫存資訊\n * @param response \n * @param skuInfoList \n */\n\nconst fetchProductStockMapping = (response, skuInfoList) => {\n  const stockInfoList = underscore[\"indexBy\"](response, 'SaleProductSKUId');\n\n  underscore[\"each\"](skuInfoList, item => {\n    item.sellingQty = stockInfoList[item.skuId].SellingQty; // 更新庫存資訊\n  });\n\n  return skuInfoList;\n};\n// CONCATENATED MODULE: ./src/components/addToCart/product/productSku.tsx\nfunction productSku_defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\n\n\n\n\n\n\n\n\n\n\nconst ProductWrapper = styled_components_browser_esm[\"c\" /* default */].div.withConfig({\n  displayName: \"productSku__ProductWrapper\",\n  componentId: \"sc-1x3m6tn-0\"\n})([\"padding:\", \";\"], device_utility_namespaceObject.getBrowsingMode() === BROWSING_MODE.MOBILE ? '8px 12px' : '8px 20px');\nconst ProductSkuContainer = styled_components_browser_esm[\"c\" /* default */].div.withConfig({\n  displayName: \"productSku__ProductSkuContainer\",\n  componentId: \"sc-1x3m6tn-1\"\n})([\"max-height:320px;overflow-y:auto;overflow-x:hidden;padding-bottom:20px;\"]);\nconst ProductQtyContainer = styled_components_browser_esm[\"c\" /* default */].div.withConfig({\n  displayName: \"productSku__ProductQtyContainer\",\n  componentId: \"sc-1x3m6tn-2\"\n})([\"border-top:1px solid #d4d9de;display:flex;padding:\", \";\"], device_utility_namespaceObject.getBrowsingMode() === BROWSING_MODE.MOBILE ? '12px' : '20px');\n/**\n * 取得選取SKU名稱\n * @param item\n * @returns\n */\n\nconst getSkuLevels = item => {\n  if (!item) {\n    return;\n  }\n\n  const skuKeyList = item.skuKey.split(';');\n  return {\n    level1: skuKeyList.length > 0 ? skuKeyList[0].split(':')[3] : '',\n    level2: skuKeyList.length > 1 ? skuKeyList[1].split(':')[3] : ''\n  };\n};\n/**\n * ProductSku 組合SKU載體\n * @description 分別將三個區塊，依照狀態組合顯示，各自控制元件事件處理\n */\n\n\nclass productSku_ProductSku extends external_root_React_amd_react_commonjs_react_commonjs2_react_umd_react_[\"Component\"] {\n  constructor(props) {\n    super(props);\n\n    productSku_defineProperty(this, \"cartButtonHandler\", status => {\n      const {\n        shopId,\n        handleAddToCart,\n        handleAppOnly,\n        handleFacebookShare,\n        skuQtyMode = 'Overwrite'\n      } = this.props;\n      const {\n        id,\n        hasPointPayOption,\n        title,\n        price,\n        suggestPrice\n      } = this.state.salePageInfo;\n\n      switch (status) {\n        // 加入購物車\n        case 'Normal':\n          const currentSkuItem = underscore[\"find\"](this.state.skuInfoList, item => item.skuId === this.state.selectedSkuId); // 封裝API需要的資料格式\n\n\n          const productInfo = {\n            shopId,\n            payload: {\n              salePageId: id,\n              quantity: this.state.currentValue,\n              skuId: this.state.selectedSkuId,\n              OptionalTypeId: hasPointPayOption && this.state.selectedPointPayOptionItem.PairsPoints > 0 ? this.state.selectedPointPayOptionItem.PointsPayId : 0,\n              OptionalTypeDef: hasPointPayOption && this.state.selectedPointPayOptionItem.PairsPoints > 0 ? 'PointsPay' : '',\n              mainImageUrl: this.state.mainImageUrl,\n              sellingQty: currentSkuItem === null || currentSkuItem === void 0 ? void 0 : currentSkuItem.sellingQty,\n              skuLevels: getSkuLevels(currentSkuItem),\n              title,\n              price: currentSkuItem === null || currentSkuItem === void 0 ? void 0 : currentSkuItem.price,\n              suggestPrice: currentSkuItem === null || currentSkuItem === void 0 ? void 0 : currentSkuItem.suggestPrice\n            },\n            isSkuQtyAccumulate: skuQtyMode === 'Accumulate'\n          };\n          handleAddToCart(productInfo);\n          break;\n        // APP獨賣\n\n        case 'AppOnly':\n          handleAppOnly(shopId, id);\n          break;\n        // FB分享後購買\n\n        case 'ShareToBuy':\n          handleFacebookShare(id);\n          break;\n      }\n    });\n\n    productSku_defineProperty(this, \"onChangeValue\", e => {\n      const newValue = isNaN(parseInt(e.target.value, 10)) ? '' : parseInt(e.target.value, 10);\n\n      if (this.state.selectedSkuId > 0) {\n        this.setState({\n          currentValue: newValue >= this.state.maxValue ? this.state.maxValue : newValue\n        });\n      } else {\n        this.setState({\n          currentValue: newValue\n        });\n      }\n    });\n\n    productSku_defineProperty(this, \"onIncreseValue\", () => {\n      // 有選取SKU才執行判斷數量最大值\n      if (this.state.selectedSkuId > 0 && this.state.currentValue >= this.state.maxValue) {\n        return;\n      }\n\n      this.setState(state => ({\n        currentValue: (+state.currentValue || 0) + 1\n      }));\n\n      if (this.props.onAddQuantity) {\n        this.props.onAddQuantity();\n      }\n    });\n\n    productSku_defineProperty(this, \"onDecreseValue\", () => {\n      this.setState(state => {\n        const newValue = +state.currentValue - 1;\n        return {\n          currentValue: newValue >= state.minValue ? newValue : state.minValue\n        };\n      });\n\n      if (this.props.onRemoveQuantity) {\n        this.props.onRemoveQuantity();\n      }\n    });\n\n    productSku_defineProperty(this, \"setMaxValue\", (skuInfoList, selectedSkuId) => {\n      underscore[\"map\"](skuInfoList, skuInfo => {\n        if (skuInfo.skuId === selectedSkuId) {\n          if (skuInfo.sellingQty > 0) {\n            this.setState({\n              maxValue: skuInfo.sellingQty,\n              currentValue: 1,\n              minValue: 1\n            });\n          } else {\n            // 設回初始值\n            this.setState({\n              maxValue: 0,\n              currentValue: 1,\n              minValue: 1\n            });\n          }\n        }\n      });\n    });\n\n    productSku_defineProperty(this, \"updateSelectedSkuId\", selectedSkuId => {\n      this.setState({\n        selectedSkuId\n      });\n      this.setMaxValue(this.state.skuInfoList, selectedSkuId);\n    });\n\n    productSku_defineProperty(this, \"updateProductStock\", skuInfoList => {\n      fetchProductStockModel(this.props.shopId, this.props.salePageInfo.skuIdList, skuInfoList).then(result => {\n        this.setState({\n          skuInfoList: result\n        });\n        this.setMaxValue(result, this.state.selectedSkuId);\n      }).catch(error => console.log('fetchProductStockModel Error:', error));\n    });\n\n    productSku_defineProperty(this, \"selectPurchaseMethod\", pointPayOptionItem => {\n      this.setState(state => underscore[\"extend\"]({}, {\n        selectedPointPayOptionItem: state.selectedPointPayOptionItem\n      }, {\n        selectedPointPayOptionItem: pointPayOptionItem\n      }));\n    });\n\n    const {\n      salePageInfo\n    } = props;\n    this.state = {\n      currentValue: 1,\n      minValue: 1,\n      maxValue: 0,\n      salePageInfo,\n      skuInfoList: null,\n      mainImageUrl: salePageInfo && salePageInfo.mainImageUrl[0].imageSrc,\n      selectedSkuId: 0,\n      selectedPointPayOptionItem: salePageInfo && salePageInfo.pointsPayPairsList.length > 0 ? salePageInfo.pointsPayPairsList[0] : null\n    };\n  }\n  /**\n   * 點擊按鈕事件處理\n   */\n\n\n  /**\n   * 元件初始化\n   */\n  componentDidMount() {\n    const {\n      maxSkuLevel,\n      skuIdList\n    } = this.props.salePageInfo; // 當無SKU選項時，直接設定第一筆SkuId\n\n    if (maxSkuLevel === 0) {\n      this.setState({\n        selectedSkuId: skuIdList[0]\n      }, () => {\n        // 初始ProductGroupOption元件，先取得最新庫存數量\n        this.updateProductStock(this.props.skuInfoList);\n      });\n    } else {\n      this.updateProductStock(this.props.skuInfoList);\n    }\n  }\n\n  render() {\n    const {\n      skuGroupLevel1,\n      skuGroupLevel2,\n      maxSkuLevel,\n      status\n    } = this.state.salePageInfo;\n    const {\n      skuInfoList\n    } = this.state;\n    return /*#__PURE__*/external_root_React_amd_react_commonjs_react_commonjs2_react_umd_react_[\"createElement\"](external_root_React_amd_react_commonjs_react_commonjs2_react_umd_react_[\"Fragment\"], null, this.state.salePageInfo && this.state.skuInfoList && /*#__PURE__*/external_root_React_amd_react_commonjs_react_commonjs2_react_umd_react_[\"createElement\"](ProductMainInfo, {\n      salePageInfo: this.state.salePageInfo,\n      skuInfoList: this.state.skuInfoList,\n      selectedPurchaseMethod: this.state.selectedPointPayOptionItem,\n      skuId: this.state.selectedSkuId,\n      decimal: this.props.decimal,\n      symbol: this.props.symbol,\n      rate: this.props.rate\n    }), /*#__PURE__*/external_root_React_amd_react_commonjs_react_commonjs2_react_umd_react_[\"createElement\"](\"div\", null, (maxSkuLevel > 0 || this.state.salePageInfo.hasPointPayOption) && /*#__PURE__*/external_root_React_amd_react_commonjs_react_commonjs2_react_umd_react_[\"createElement\"](ProductWrapper, null, /*#__PURE__*/external_root_React_amd_react_commonjs_react_commonjs2_react_umd_react_[\"createElement\"](ProductSkuContainer, null, skuInfoList && skuInfoList.length > 0 && /*#__PURE__*/external_root_React_amd_react_commonjs_react_commonjs2_react_umd_react_[\"createElement\"](ProductGroupOption, {\n      skuInfoList: skuInfoList,\n      skuGroup: {\n        skuGroupLevel1,\n        skuGroupLevel2\n      },\n      maxSkuLevel: maxSkuLevel,\n      updateSelectedSkuId: this.updateSelectedSkuId,\n      updateProductStock: this.updateProductStock\n    }), this.props.mode !== 'Choose' && this.state.salePageInfo.hasPointPayOption && /*#__PURE__*/external_root_React_amd_react_commonjs_react_commonjs2_react_umd_react_[\"createElement\"](PurchaseMethod, {\n      purchaseMethodList: this.state.salePageInfo.pointsPayPairsList,\n      selectedPurchaseMethod: this.state.selectedPointPayOptionItem,\n      onSelectPurchaseMethod: this.selectPurchaseMethod,\n      decimal: this.props.decimal,\n      symbol: this.props.symbol,\n      rate: this.props.rate\n    }))), /*#__PURE__*/external_root_React_amd_react_commonjs_react_commonjs2_react_umd_react_[\"createElement\"](ProductQtyContainer, null, /*#__PURE__*/external_root_React_amd_react_commonjs_react_commonjs2_react_umd_react_[\"createElement\"](ProductDisplayQty, {\n      currentValue: this.state.currentValue,\n      maxValue: this.state.maxValue,\n      minValue: this.state.minValue,\n      onIncreseValue: this.onIncreseValue,\n      onDecreseValue: this.onDecreseValue,\n      onChangeValue: this.onChangeValue\n    }), /*#__PURE__*/external_root_React_amd_react_commonjs_react_commonjs2_react_umd_react_[\"createElement\"](ProductCartButton, {\n      mode: this.props.mode,\n      status: status,\n      currentValue: this.state.currentValue,\n      maxValue: this.state.maxValue,\n      minValue: this.state.minValue,\n      onClicked: this.cartButtonHandler\n    }))));\n  }\n\n}\n// CONCATENATED MODULE: ./src/components/addToCart/mobile/slidePushMenu.tsx\n\n\n\nconst Backdrop = styled_components_browser_esm[\"c\" /* default */].div.withConfig({\n  displayName: \"slidePushMenu__Backdrop\",\n  componentId: \"sc-1usttef-0\"\n})([\"position:fixed;z-index:1000;top:0;right:0;bottom:0;left:0;background-color:#000000;\", \"\"], props => {\n  return props.isOpen ? `\n            width: 100%;\n            height: 100%;\n            opacity: .5;\n        ` : `\n            width: 0;\n            height: 0;\n            opacity: 0;\n        `;\n});\nconst BaseContainer = styled_components_browser_esm[\"c\" /* default */].div.withConfig({\n  displayName: \"slidePushMenu__BaseContainer\",\n  componentId: \"sc-1usttef-1\"\n})([\"position:fixed;z-index:10001;overflow-y:scroll;background:#ffffff;bottom:-75vh;\"]);\nconst BottomContainer = Object(styled_components_browser_esm[\"c\" /* default */])(BaseContainer).withConfig({\n  displayName: \"slidePushMenu__BottomContainer\",\n  componentId: \"sc-1usttef-2\"\n})([\"width:100%;transition:all 0.3s ease;bottom:\", \";box-shadow:0 0 10px #666;\"], props => props.isOpen ? '0' : '-75');\nconst LeftContainer = Object(styled_components_browser_esm[\"c\" /* default */])(BaseContainer).withConfig({\n  displayName: \"slidePushMenu__LeftContainer\",\n  componentId: \"sc-1usttef-3\"\n})([\"top:0;left:\", \";width:80%;height:100%;transition:all 0.3s ease;box-shadow:0 0 10px #666;\"], props => props.isOpen ? '0' : '-80%');\nconst CloseButton = styled_components_browser_esm[\"c\" /* default */].a.withConfig({\n  displayName: \"slidePushMenu__CloseButton\",\n  componentId: \"sc-1usttef-4\"\n})([\"position:absolute;z-index:1;top:19px;right:16px;\"]);\n/**\n * 推半頁元件\n */\n\nconst SlidePushMenu = props => {\n  const {\n    isOpen,\n    isShowClose,\n    openDirection,\n    freezeClassName,\n    onAfterClose\n  } = props;\n  const Container = openDirection !== 'left' ? BottomContainer : LeftContainer;\n  const [isOpenMenu, setIsOpenMenu] = Object(external_root_React_amd_react_commonjs_react_commonjs2_react_umd_react_[\"useState\"])(isOpen);\n\n  const freezeBody = isFixed => {\n    if (runtimeMode_utility_namespaceObject.checkIsClientRender()) {\n      if (isFixed) {\n        window.document.body.classList.add(freezeClassName);\n      } else {\n        window.document.body.classList.remove(freezeClassName);\n      }\n    }\n  };\n\n  const onCloseMenu = () => {\n    setIsOpenMenu(false);\n    onAfterClose();\n  };\n\n  Object(external_root_React_amd_react_commonjs_react_commonjs2_react_umd_react_[\"useEffect\"])(() => {\n    setIsOpenMenu(isOpen);\n    freezeBody(isOpen);\n  }, [isOpen]);\n  return /*#__PURE__*/external_root_React_amd_react_commonjs_react_commonjs2_react_umd_react_default.a.createElement(external_root_React_amd_react_commonjs_react_commonjs2_react_umd_react_default.a.Fragment, null, /*#__PURE__*/external_root_React_amd_react_commonjs_react_commonjs2_react_umd_react_default.a.createElement(Backdrop, {\n    isOpen: isOpenMenu,\n    onClick: onCloseMenu\n  }), /*#__PURE__*/external_root_React_amd_react_commonjs_react_commonjs2_react_umd_react_default.a.createElement(Container, {\n    id: openDirection === 'left' ? 'spark-slide-push-menu__left-containter' : '',\n    isOpen: isOpenMenu\n  }, isShowClose && /*#__PURE__*/external_root_React_amd_react_commonjs_react_commonjs2_react_umd_react_default.a.createElement(CloseButton, {\n    onClick: onCloseMenu\n  }, /*#__PURE__*/external_root_React_amd_react_commonjs_react_commonjs2_react_umd_react_default.a.createElement(\"i\", {\n    className: \"icon icon-slim-close\"\n  })), props.children));\n};\n\nSlidePushMenu.defaultProps = {\n  isOpen: false,\n  isShowClose: true,\n  openDirection: 'bottom',\n  freezeClassName: 'freeze--strictly'\n};\n/* harmony default export */ var slidePushMenu = (SlidePushMenu);\n// CONCATENATED MODULE: ./src/models/salePage.model.ts\n\n\n\n\n/**\n * 取得商品狀態\n * @param salePageId \n */\nconst fetchSalePageStatusModel = async salePageId => {\n  try {\n    const apiUrl = getMwebApiUrl(`SalePageStatus/GetSalePageStatus/${salePageId}`);\n    const fetchParameters = {\n      method: 'POST'\n    };\n    const result = await fetchApi(apiUrl, fetchParameters);\n    return Promise.resolve(result);\n  } catch (error) {\n    return Promise.reject(error);\n  }\n};\n/**\n * 取得商品資訊\n * @description 此API較完整商品資訊\n * @param shopId \n * @param salePageId \n */\n\nconst fetchSalePageInfoModel = async (shopId, salePageId) => {\n  try {\n    const apiUrl = getMwebApiUrl(`SalePagev2/GetSalePageV2Info/${shopId}/${salePageId}?hasShow2LevelAllImageList=true`, true);\n    const result = await fetchApi(apiUrl);\n    const {\n      ReturnCode,\n      Data,\n      Message\n    } = result;\n\n    if (ReturnCode === 'API0001') {\n      // 取得商品狀態 API\n      const status = await fetchSalePageStatusModel(salePageId);\n      Data.StatusDef = getSalePageStatus(status, Data.IsAPPOnly, Data.IsShareToBuy);\n      return Promise.resolve(fetchSalePageInfoMapping(Data));\n    } else {\n      return Promise.reject(Message);\n    }\n  } catch (error) {\n    return Promise.reject(error);\n  }\n};\n/**\n * 判斷商品狀態處理\n * @param status \n * @param isAppOnly \n * @param isShareToBuy \n */\n\nconst getSalePageStatus = (status, isAppOnly, isShareToBuy) => {\n  let type = status;\n\n  switch (true) {\n    case isAppOnly && isShareToBuy:\n      // APP獨賣權重比分享後購買高\n      type = 'AppOnly';\n      break;\n\n    case isAppOnly:\n      type = 'AppOnly';\n      break;\n\n    case isShareToBuy:\n      type = 'ShareToBuy';\n      break;\n  }\n\n  return type;\n};\n/**\n * 整理API回應的商品資料處理\n * @param data \n */\n\n\nconst fetchSalePageInfoMapping = data => {\n  const skuList = data.MajorList[0].SKUList;\n  let maxSkuLevel;\n\n  if (skuList && skuList.length > 0) {\n    if (skuList.length === 1) {\n      maxSkuLevel = skuList[0].Title === '-1' ? 0 : 1;\n    } else {\n      maxSkuLevel = 2;\n    }\n  } else {\n    maxSkuLevel = 0;\n  } // 轉換第一階key值清單\n\n\n  const skuKeyListLevel1 = maxSkuLevel > 0 ? underscore[\"map\"](skuList[0].PropertyList, item => {\n    return {\n      skuName: item.Name,\n      skuKey: item.PropertyNameSet\n    };\n  }) : []; // 組合第一階資訊\n\n  const skuGroupLevel1 = {\n    skuGroupName: skuList.length > 0 ? skuList[0].Title : '-1',\n    skuKeyList: skuKeyListLevel1\n  }; // 轉換第二階key值清單，如果沒有二階回傳空陣列\n\n  const skuKeyListLevel2 = maxSkuLevel === 2 ? underscore[\"map\"](skuList[1].PropertyList, item => {\n    return {\n      skuName: item.Name,\n      skuKey: item.PropertyNameSet\n    };\n  }) : []; // 組合第二階資訊\n\n  const skuGroupLevel2 = maxSkuLevel === 2 ? {\n    skuGroupName: skuList[1].Title,\n    skuKeyList: skuKeyListLevel2\n  } : null; // SKU初始資料清單\n\n  const skuInfoList = underscore[\"map\"](data.SKUPropertySetList, item => {\n    return {\n      isShow: item.IsShow,\n      skuKey: item.PropertyNameSet,\n      skuId: item.SaleProductSKUId,\n      sellingQty: item.SellingQty,\n      // 可售庫存數量，已經包含取得「當前庫存」及「一次購買最大數量」的最小值交集，不需要額外的OnceQty欄位判斷\n      price: item.Price,\n      suggestPrice: item.SuggestPrice\n    };\n  }); // SKU商品圖清單\n\n\n  const imageInfoList = underscore[\"map\"](data.ImageList, item => {\n    return {\n      skuId: item.Id,\n      skuName: item.SKUPropertyNameSet,\n      imageSrc: item.PicUrl\n    };\n  }); // 組合元件商品資料格式\n\n\n  const salePageInfo = {\n    maxSkuLevel,\n    skuGroupLevel1,\n    skuGroupLevel2,\n    id: data.Id,\n    status: data.StatusDef,\n    mainImageUrl: imageInfoList,\n    price: data.Price,\n    title: data.Title,\n    skuIdList: data.SaleProductSKUIdList,\n    suggestPrice: data.SuggestPrice,\n    maxPrice: data.MaxPrice,\n    maxSuggestPrice: data.MaxSuggestPrice,\n    minPrice: data.MinPrice,\n    minSuggestPrice: data.MinSuggestPrice,\n    hasPointPayOption: data.PointsPayPairsList && data.PointsPayPairsList.length > 0,\n    pointsPayPairsList: data.PointsPayPairsList\n  };\n  return {\n    salePageInfo,\n    skuInfoList\n  };\n};\n// CONCATENATED MODULE: ./src/models/shoppingCart.model.ts\n\n\n\n/**\n * 商品加入購物車\n * @param params \n */\nconst addShoppingCartModel = async params => {\n  const {\n    shopId,\n    payload,\n    isSkuQtyAccumulate = false\n  } = params;\n  const {\n    salePageId,\n    quantity,\n    skuId,\n    OptionalTypeId,\n    OptionalTypeDef\n  } = payload;\n\n  try {\n    const apiUrl = getMwebApiUrl(`ShoppingCartV4/InsertItem?shopId=${shopId}`);\n    const fetchParameters = {\n      method: 'POST',\n      body: JSON.stringify({\n        shopId,\n        salePageId,\n        qty: quantity,\n        saleProductSKUId: skuId,\n        OptionalTypeId,\n        OptionalTypeDef,\n        IsSkuQtyAccumulate: isSkuQtyAccumulate\n      })\n    };\n    const result = await fetchApi(apiUrl, fetchParameters);\n\n    if (result.ReturnCode === 'API5101') {\n      return Promise.resolve(result.Data);\n    } else {\n      return Promise.reject(result.Message);\n    }\n  } catch (error) {\n    return Promise.reject(error);\n  }\n};\n// CONCATENATED MODULE: ./src/components/addToCart/mobile/addToCart.mobile.tsx\nfunction addToCart_mobile_defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\n\n\n\n\n\n\n\n\n\n\n\n/**\n * 手機版 - SKU Popup模組\n */\nclass addToCart_mobile_AddToCart extends external_root_React_amd_react_commonjs_react_commonjs2_react_umd_react_[\"Component\"] {\n  constructor(props) {\n    super(props);\n\n    addToCart_mobile_defineProperty(this, \"checkAddToCartDirect\", data => {\n      const {\n        salePageInfo,\n        skuInfoList\n      } = data;\n      const {\n        status\n      } = salePageInfo;\n\n      switch (status) {\n        case 'AppOnly':\n        case 'ShareToBuy':\n        case 'Normal':\n          this.setState({\n            isOpenLoad: false,\n            isOpenSku: true,\n            salePageInfo,\n            skuInfoList\n          });\n          break;\n\n        default:\n          this.setState({\n            isOpenLoad: false\n          });\n          this.showMessage(status);\n          break;\n      }\n    });\n\n    addToCart_mobile_defineProperty(this, \"handleAddToCart\", productInfo => {\n      // 檢查是否選取數量\n      if (productInfo.payload.skuId <= 0) {\n        this.setState({\n          isOpenToast: true,\n          toastType: 'warning',\n          toastMessage: external_root_ReactReduxI18n_amd_react_redux_i18n_commonjs_react_redux_i18n_commonjs2_react_redux_i18n_umd_react_redux_i18n_[\"I18n\"].t(TRANSLATE_LOCALE_KEY.FRONTEND.LIB.SELECT_OPTION)\n        });\n        return;\n      } // 選購模式\n\n\n      if (this.state.mode === 'Choose') {\n        this.setState({\n          productInfo\n        }, () => {\n          this.setState({\n            isOpenToast: false,\n            toastType: '',\n            toastMessage: '',\n            isOpenSku: false,\n            salePageInfo: null,\n            skuInfoList: null,\n            salePageId: 0\n          }, () => {\n            if (this.props.afterSuccess) {\n              // 傳出外部GA使用的參數\n              this.props.afterSuccess(productInfo.payload);\n            }\n          });\n        });\n      } else {\n        // 加入購物車模式\n        this.setState({\n          isOpenSku: false\n        }, () => {\n          this.setState({\n            isOpenLoad: true,\n            productInfo\n          }); // Fetch API 加入購物車\n\n          addShoppingCartModel(productInfo).then(result => {\n            this.setState({\n              isOpenLoad: false\n            }, () => {\n              this.showMessage('AddSuccess');\n            });\n          }).catch(error => {\n            console.log('加入購物車 Error:', error);\n            this.setState({\n              isOpenLoad: false,\n              isOpenDialog: true,\n              dialogMessage: error\n            });\n          });\n        });\n      }\n    });\n\n    addToCart_mobile_defineProperty(this, \"handleAppOnly\", (shopId, salePageId) => {\n      this.setState({\n        isOpenSku: false\n      });\n\n      if (device_utility_namespaceObject.getBrowsingMode() === BROWSING_MODE.MOBILE) {\n        if (this.props.handleRedirectDeepLink) {\n          this.props.handleRedirectDeepLink();\n        } else {\n          window.location.href = '/SalePage/index/' + salePageId;\n        }\n      } else {\n        window.location.href = '/SalePage/ShowQRCode/' + salePageId;\n      }\n    });\n\n    addToCart_mobile_defineProperty(this, \"handleFacebookShare\", salePageId => {\n      if (this.props.facebook) {\n        const link = `${window.location.protocol}//${window.location.host}/SalePage/Index/${salePageId}`;\n        this.props.facebook.ui({\n          method: 'feed',\n          link,\n          display: 'popup'\n        }, response => {\n          this.state.salePageInfo.status = 'Normal';\n          this.setState({\n            salePageInfo: this.state.salePageInfo\n          });\n        });\n      }\n    });\n\n    addToCart_mobile_defineProperty(this, \"onCloseAddToCartHandler\", () => {\n      this.setState({\n        isOpenSku: false,\n        salePageInfo: null,\n        skuInfoList: null,\n        salePageId: 0\n      }, () => {\n        if (this.props.afterClose) {\n          this.props.afterClose();\n        }\n      });\n    });\n\n    addToCart_mobile_defineProperty(this, \"onCloseToastHandler\", () => {\n      // 當未選SKU直接加入購物車彈出警告訊息時，清空Toast狀態\n      if (this.state.toastMessage === external_root_ReactReduxI18n_amd_react_redux_i18n_commonjs_react_redux_i18n_commonjs2_react_redux_i18n_umd_react_redux_i18n_[\"I18n\"].t(TRANSLATE_LOCALE_KEY.FRONTEND.LIB.SELECT_OPTION)) {\n        this.setState({\n          isOpenToast: false,\n          toastType: '',\n          toastMessage: ''\n        });\n      } else if (this.state.toastMessage === external_root_ReactReduxI18n_amd_react_redux_i18n_commonjs_react_redux_i18n_commonjs2_react_redux_i18n_umd_react_redux_i18n_[\"I18n\"].t(TRANSLATE_LOCALE_KEY.FRONTEND.LIB.TOAST.ADD_SUCCESS)) {\n        // 當加入成功後觸發call back事件\n        this.setState({\n          isOpenToast: false,\n          toastType: '',\n          toastMessage: '',\n          isOpenSku: false,\n          salePageInfo: null,\n          skuInfoList: null,\n          salePageId: 0\n        }, () => {\n          if (this.props.afterSuccess) {\n            // 傳出外部GA使用的參數\n            this.props.afterSuccess(this.state.productInfo.payload);\n          }\n        });\n      } else {\n        this.setState({\n          isOpenToast: false,\n          toastType: '',\n          toastMessage: ''\n        }, this.onCloseAddToCartHandler);\n      }\n    });\n\n    addToCart_mobile_defineProperty(this, \"showMessage\", status => {\n      const messageItem = getToastMessageItem(status);\n\n      if (messageItem) {\n        this.setState({\n          isOpenToast: true,\n          toastMessage: external_root_ReactReduxI18n_amd_react_redux_i18n_commonjs_react_redux_i18n_commonjs2_react_redux_i18n_umd_react_redux_i18n_[\"I18n\"].t(messageItem.message),\n          toastType: messageItem.type\n        });\n      }\n    });\n\n    addToCart_mobile_defineProperty(this, \"handleCloseDialog\", () => {\n      this.setState({\n        isOpenDialog: false,\n        dialogMessage: ''\n      }, this.onCloseAddToCartHandler);\n    });\n\n    this.state = {\n      mode: props.mode || 'Normal',\n      salePageId: props.salePageId,\n      isOpenSku: false,\n      isOpenToast: false,\n      isOpenLoad: false,\n      isOpenDialog: false,\n      toastType: '',\n      toastMessage: '',\n      dialogMessage: '',\n      salePageInfo: null,\n      skuInfoList: null,\n      productInfo: null,\n      skuQtyMode: props.skuQtyMode || 'Overwrite'\n    };\n  }\n  /**\n   * 檢查是否開啟 SKU Popup\n   */\n\n\n  // TODO: 之後再調整不要使用componentWillReceiveProps觸發開關\n  componentWillReceiveProps(nextProps) {\n    if (nextProps.salePageId !== this.state.salePageId && !this.state.isOpenSku) {\n      this.setState({\n        isOpenLoad: true\n      }); // 取得API商品資訊\n\n      fetchSalePageInfoModel(this.props.shopId, nextProps.salePageId).then(data => this.checkAddToCartDirect(data)).catch(err => {\n        this.setState({\n          isOpenLoad: false\n        });\n        this.showMessage('Error');\n      });\n    }\n  }\n\n  render() {\n    return /*#__PURE__*/external_root_React_amd_react_commonjs_react_commonjs2_react_umd_react_[\"createElement\"](\"div\", {\n      className: \"add-to-cart-mobile\"\n    }, /*#__PURE__*/external_root_React_amd_react_commonjs_react_commonjs2_react_umd_react_[\"createElement\"](slidePushMenu, {\n      isOpen: this.state.isOpenSku,\n      openDirection: 'bottom',\n      isShowClose: true,\n      onAfterClose: this.onCloseAddToCartHandler,\n      freezeClassName: 'freeze'\n    }, this.state.salePageInfo && this.state.skuInfoList && /*#__PURE__*/external_root_React_amd_react_commonjs_react_commonjs2_react_umd_react_[\"createElement\"](productSku_ProductSku, {\n      mode: this.state.mode,\n      decimal: this.props.decimal,\n      symbol: this.props.symbol,\n      rate: this.props.rate,\n      shopId: this.props.shopId,\n      salePageInfo: this.state.salePageInfo,\n      skuInfoList: this.state.skuInfoList,\n      skuQtyMode: this.state.skuQtyMode,\n      handleAddToCart: this.handleAddToCart,\n      handleAppOnly: this.handleAppOnly,\n      handleFacebookShare: this.handleFacebookShare,\n      onAddQuantity: this.props.onAddQuantity,\n      onRemoveQuantity: this.props.onRemoveQuantity\n    })), /*#__PURE__*/external_root_React_amd_react_commonjs_react_commonjs2_react_umd_react_[\"createElement\"](toast_toast, {\n      isOpen: this.state.isOpenToast,\n      type: this.state.toastType,\n      message: this.state.toastMessage,\n      afterClose: this.onCloseToastHandler\n    }), /*#__PURE__*/external_root_React_amd_react_commonjs_react_commonjs2_react_umd_react_[\"createElement\"](loading_loading, {\n      isLoading: this.state.isOpenLoad\n    }), /*#__PURE__*/external_root_React_amd_react_commonjs_react_commonjs2_react_umd_react_[\"createElement\"](dialog, {\n      isOpen: this.state.isOpenDialog,\n      isShowClose: false,\n      confirmText: external_root_ReactReduxI18n_amd_react_redux_i18n_commonjs_react_redux_i18n_commonjs2_react_redux_i18n_umd_react_redux_i18n_[\"I18n\"].t(TRANSLATE_LOCALE_KEY.FRONTEND.LIB.CONFIRM),\n      onConfirmDialog: this.handleCloseDialog\n    }, /*#__PURE__*/external_root_React_amd_react_commonjs_react_commonjs2_react_umd_react_[\"createElement\"](\"div\", null, this.state.dialogMessage)));\n  }\n\n}\n// EXTERNAL MODULE: ./src/components/checkBox/checkBox.scss\nvar checkBox = __webpack_require__(29);\n\n// CONCATENATED MODULE: ./src/components/checkBox/checkBox.tsx\n\n\n\nconst CheckBox = /*#__PURE__*/external_root_React_amd_react_commonjs_react_commonjs2_react_umd_react_[\"forwardRef\"]((props, ref) => {\n  const {\n    labelText,\n    id,\n    name,\n    isCheck,\n    isDisable,\n    identifier,\n    afterCheck\n  } = props;\n  const [checked, setChecked] = Object(external_root_React_amd_react_commonjs_react_commonjs2_react_umd_react_[\"useState\"])(isCheck);\n  const [disabled, setDisabled] = Object(external_root_React_amd_react_commonjs_react_commonjs2_react_umd_react_[\"useState\"])(isDisable);\n\n  const handleClick = (identifier, checked) => {\n    setChecked(!checked);\n\n    if (typeof afterCheck === 'function') {\n      afterCheck(identifier, !checked);\n    }\n  };\n\n  Object(external_root_React_amd_react_commonjs_react_commonjs2_react_umd_react_[\"useEffect\"])(() => {\n    setChecked(isCheck);\n  }, [isCheck]);\n  Object(external_root_React_amd_react_commonjs_react_commonjs2_react_umd_react_[\"useEffect\"])(() => {\n    setDisabled(isDisable);\n  }, [isDisable]);\n  return /*#__PURE__*/external_root_React_amd_react_commonjs_react_commonjs2_react_umd_react_[\"createElement\"](\"label\", {\n    htmlFor: id,\n    className: \"checkbox-container\"\n  }, /*#__PURE__*/external_root_React_amd_react_commonjs_react_commonjs2_react_umd_react_[\"createElement\"](\"input\", {\n    id: id,\n    name: name,\n    type: \"checkbox\",\n    className: \"input-checkbox\",\n    checked: checked,\n    disabled: disabled,\n    onClick: () => {\n      handleClick(identifier, checked);\n    },\n    ref: ref\n  }), /*#__PURE__*/external_root_React_amd_react_commonjs_react_commonjs2_react_umd_react_[\"createElement\"](\"span\", {\n    className: \"check-mark\"\n  }), labelText && /*#__PURE__*/external_root_React_amd_react_commonjs_react_commonjs2_react_umd_react_[\"createElement\"](\"span\", {\n    className: \"label-text\"\n  }, labelText));\n});\n/* harmony default export */ var checkBox_checkBox = (CheckBox);\n// EXTERNAL MODULE: ./src/components/radioButton/radioButton.scss\nvar radioButton = __webpack_require__(30);\n\n// EXTERNAL MODULE: ./node_modules/uuid/v4.js\nvar v4 = __webpack_require__(16);\nvar v4_default = /*#__PURE__*/__webpack_require__.n(v4);\n\n// CONCATENATED MODULE: ./src/components/radioButton/radioButton.tsx\n\n\n\n\nconst RadioButton = /*#__PURE__*/external_root_React_amd_react_commonjs_react_commonjs2_react_umd_react_[\"forwardRef\"]((props, ref) => {\n  const id = props.id && 'radioBtnId' + v4_default()();\n  const className = props.className || '';\n  return /*#__PURE__*/external_root_React_amd_react_commonjs_react_commonjs2_react_umd_react_[\"createElement\"](\"div\", {\n    className: classnames_default()('radio-button', {\n      className: !!className,\n      'radio-button__disable': props.disabled\n    })\n  }, /*#__PURE__*/external_root_React_amd_react_commonjs_react_commonjs2_react_umd_react_[\"createElement\"](\"input\", {\n    type: \"radio\",\n    className: \"radio-button__hidden\",\n    id: id,\n    disabled: props.disabled,\n    checked: props.checked,\n    onChange: props.onChange,\n    value: props.value,\n    name: props.htmlName,\n    ref: ref\n  }), /*#__PURE__*/external_root_React_amd_react_commonjs_react_commonjs2_react_umd_react_[\"createElement\"](\"label\", {\n    className: \"radio-button__entry\",\n    htmlFor: id\n  }, /*#__PURE__*/external_root_React_amd_react_commonjs_react_commonjs2_react_umd_react_[\"createElement\"](\"div\", {\n    className: \"radio-button__circle\"\n  }), props.children));\n});\n/* harmony default export */ var radioButton_radioButton = (RadioButton);\n// CONCATENATED MODULE: ./src/components/link/index.tsx\n\n\nconst Link = styled_components_browser_esm[\"c\" /* default */].a.withConfig({\n  displayName: \"link__Link\",\n  componentId: \"sc-13pj9u1-0\"\n})([\"color:\", \";&:active{color:\", \";}&:hover{color:color:\", \";cursor:pointer;}\"], props => underscore_default.a.isEmpty(props.theme) ? '#428bca' : props.theme.generalStyle.linkColor, props => underscore_default.a.isEmpty(props.theme) ? '#428bca' : props.theme.generalStyle.linkColor, props => underscore_default.a.isEmpty(props.theme) ? '#428bca' : props.theme.generalStyle.linkColor);\n/* harmony default export */ var components_link = (Link);\n// CONCATENATED MODULE: ./src/components/tag/index.tsx\n\n\n\nconst tagVariant = variant => {\n  switch (variant) {\n    case 'emphasis':\n      return Object(styled_components_browser_esm[\"b\" /* css */])([\"color:\", \";background-color:\", \";\"], props => underscore_default.a.isEmpty(props.theme) ? '#fff2f2' : props.theme.tagStyle.emphasisTagTextColor, props => underscore_default.a.isEmpty(props.theme) ? '#ff5353' : props.theme.tagStyle.emphasisTagBgColor);\n\n    case 'general':\n      return Object(styled_components_browser_esm[\"b\" /* css */])([\"color:\", \";background-color:\", \";\"], props => underscore_default.a.isEmpty(props.theme) ? '#ff5353' : props.theme.tagStyle.generalTagTextColor, props => underscore_default.a.isEmpty(props.theme) ? '#fff2f2' : props.theme.tagStyle.generalTagBgColor);\n\n    default:\n      return Object(styled_components_browser_esm[\"b\" /* css */])([\"color:'#ff5353';background-color:'#fff2f2';\"]);\n  }\n};\n\nconst Tag = styled_components_browser_esm[\"c\" /* default */].div.withConfig({\n  displayName: \"tag__Tag\",\n  componentId: \"sc-u28i3w-0\"\n})([\"display:inline-block;padding:4px;font-size:12px;border-radius:2px;\", \"    \"], props => {\n  const {\n    variant\n  } = props;\n  return tagVariant(variant);\n});\nTag.defaultProps = {\n  variant: 'general'\n};\n/* harmony default export */ var tag = (Tag);\n// CONCATENATED MODULE: ./src/components/theme/index.tsx\nfunction theme_ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; }\n\nfunction theme_objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { theme_ownKeys(Object(source), true).forEach(function (key) { theme_defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { theme_ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction theme_defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\n\n\n\nconst SparkCoreThemeProvider = props => {\n  const {\n    theme\n  } = props;\n\n  const globalTheme = theme_objectSpread(theme_objectSpread({}, theme), {}, {\n    // FIXME 暫解 globalStyleData 缺少 key 造成白頁\n    generalStyle: {\n      linkColor: theme.generalStyle && theme.generalStyle.linkColor || '#428bca',\n      moneyColor: theme.generalStyle && theme.generalStyle.moneyColor || '#ff5353'\n    },\n    tagStyle: {\n      emphasisTagBgColor: theme.tagStyle && theme.tagStyle.emphasisTagBgColor || '#ff5353',\n      emphasisTagTextColor: theme.tagStyle && theme.tagStyle.emphasisTagTextColor || '#ffffff',\n      generalTagBgColor: theme.tagStyle && theme.tagStyle.generalTagBgColor || '#fff2f2',\n      generalTagTextColor: theme.tagStyle && theme.tagStyle.generalTagTextColor || '#ff5353'\n    },\n    buttonStyle: {\n      primaryBtnBgColor: theme.buttonStyle && theme.buttonStyle.primaryBtnBgColor || '#ff5353',\n      primaryBtnTextColor: theme.buttonStyle && theme.buttonStyle.primaryBtnTextColor || '#ffffff',\n      secondBtnVariant: theme.buttonStyle && theme.buttonStyle.secondBtnVariant || 'outline',\n      secondBtnBgColor: theme.buttonStyle && theme.buttonStyle.secondBtnBgColor || '#ffffff',\n      secondBtnTextColor: theme.buttonStyle && theme.buttonStyle.secondBtnTextColor || '#ff5353',\n      secondBtnBorderColor: theme.buttonStyle && theme.buttonStyle.secondBtnBorderColor || '#ff5353'\n    }\n  });\n\n  return /*#__PURE__*/external_root_React_amd_react_commonjs_react_commonjs2_react_umd_react_default.a.createElement(styled_components_browser_esm[\"a\" /* ThemeProvider */], {\n    theme: globalTheme\n  }, props.children);\n};\n\n/* harmony default export */ var components_theme = (SparkCoreThemeProvider);\n// CONCATENATED MODULE: ./src/styles/model/color.ts\n// 紅色系\nconst primaryRed = '#ff5353'; // 白色系\n\nconst white = '#fff';\nconst whiteThree = '#d8d8d8'; // 黑色系\n\nconst blackTwo = '#000';\nconst blackThree = '#333'; // 灰色系\n\nconst brownishGrey = '#666';\nconst lightGrey = '#dddddd';\nconst warmGrey = '#999';\nconst cloudyGray = '#ddd';\nconst paleGrey = '#f7f8fa';\nconst veryLightPink = '#ccc';\nconst veryLightPinkTwo = '#ececec';\nconst veryLightPinkThree = '#bbb';\nconst silver = '#d4d9de'; // 藍色系\n\nconst windowsBlue = '#428bca';\n// CONCATENATED MODULE: ./src/styles/model/zindex.ts\n// TODO: 待整理modal之外的zindex\nconst componentZindex = {\n  toast: 1070,\n  toastBack: 1060,\n  dialog: 1050,\n  dialogBack: 1040,\n  slidePushMenu: 1000,\n  nsMediaGallery: 200,\n  navTab: 90,\n  nsToolBox: 499,\n  mainVision: 550,\n  smartAppBanner: 500,\n  base: 1\n};\nconst headerZindex = {\n  fullScreen: 700,\n  navMenu: 650,\n  layoutHeader: 500,\n  searchKeywordList: 100\n};\nconst footerZindex = {\n  nsBasket: 300,\n  scrollToTop: 250,\n  layoutFooter: 200,\n  nsBrowsingHistory: 100\n};\n// CONCATENATED MODULE: ./src/styles/common/mixin/animate.ts\n// import { css, Keyframes, FlattenSimpleInterpolation } from 'styled-components';\n\n/**\n * animate 動畫\n * @param {string} name - 動畫名稱。(animation-name)\n * @param {string} time - 執行時間。(animation-duration)\n * @param {string} way - 動畫方式。(animation-timing-function)\n */\nconst animate = (name, time, way) => {\n  return `\n        animation: ${name} ${time} ${way} 0s;\n        animation-fill-mode: forwards;\n    `;\n};\n\n/* harmony default export */ var mixin_animate = (animate);\n// CONCATENATED MODULE: ./src/components/dialog/dialogBackdrop.tsx\n\n\n\n\n\nconst backdropMaskOpacityMode = `${mixin_animate('fadeIn', '0.2s', 'ease-out')}`;\nconst dialogBackdrop_Backdrop = styled_components_browser_esm[\"c\" /* default */].div.withConfig({\n  displayName: \"dialogBackdrop__Backdrop\",\n  componentId: \"sc-hyswb6-0\"\n})([\"position:fixed;top:0;right:0;bottom:0;left:0;background-color:\", \";z-index:\", \";@keyframes fadeIn{0%{opacity:0;}100%{opacity:0.5;}}\", \"\"], blackTwo, componentZindex.dialogBack, props => props.isMaskOpacity ? backdropMaskOpacityMode : '');\n\nconst DialogBackdrop = props => {\n  const {\n    isMaskOpacity,\n    onCloseDialog\n  } = props;\n  return /*#__PURE__*/external_root_React_amd_react_commonjs_react_commonjs2_react_umd_react_default.a.createElement(dialogBackdrop_Backdrop, {\n    isMaskOpacity: isMaskOpacity,\n    onClick: onCloseDialog\n  });\n};\n\n/* harmony default export */ var dialogBackdrop = (DialogBackdrop);\n// CONCATENATED MODULE: ./src/components/dialog/dialogBody.tsx\n\n\n\nconst fixedBodyMode = Object(styled_components_browser_esm[\"b\" /* css */])([\"text-align:left;padding:15px 0;height:200px;max-height:200px;overflow:scroll;\"]);\nconst normalNode = Object(styled_components_browser_esm[\"b\" /* css */])([\"text-align:center;padding:15px;\"]);\nconst dialogBody_Container = styled_components_browser_esm[\"c\" /* default */].div.withConfig({\n  displayName: \"dialogBody__Container\",\n  componentId: \"sc-195r2qp-0\"\n})([\"line-height:1.5;color:\", \";\", \";\"], blackThree, props => props.isFixedBody ? fixedBodyMode : normalNode);\n\nconst DialogBody = props => {\n  const {\n    isFixedBody,\n    children\n  } = props;\n  return /*#__PURE__*/external_root_React_amd_react_commonjs_react_commonjs2_react_umd_react_default.a.createElement(dialogBody_Container, {\n    isFixedBody: isFixedBody\n  }, children);\n};\n\n/* harmony default export */ var dialogBody = (DialogBody);\n// CONCATENATED MODULE: ./src/components/dialog/dialogHeader.tsx\n\n\n\n// TODO: close\nconst dialogHeader_Container = styled_components_browser_esm[\"c\" /* default */].div.withConfig({\n  displayName: \"dialogHeader__Container\",\n  componentId: \"sc-5gdab3-0\"\n})([\"min-height:15px;padding:15px 15px 0;\"]);\nconst IconWrapper = styled_components_browser_esm[\"c\" /* default */].a.withConfig({\n  displayName: \"dialogHeader__IconWrapper\",\n  componentId: \"sc-5gdab3-1\"\n})([\"position:absolute;right:10px;cursor:pointer;line-height:30px;color:\", \";display:block;background:rgba(255,255,255,0.7);border-radius:50%;width:30px;height:30px;text-align:center;font-size:10px;\"], blackThree);\nconst dialogHeader_Title = styled_components_browser_esm[\"c\" /* default */].h2.withConfig({\n  displayName: \"dialogHeader__Title\",\n  componentId: \"sc-5gdab3-2\"\n})([\"font-size:16px;line-height:1.5;margin:0 25px;text-align:center;font-weight:500;\"]);\n\nconst DialogHeader = props => {\n  const {\n    isShowClose,\n    title,\n    onCloseDialog\n  } = props;\n  return /*#__PURE__*/external_root_React_amd_react_commonjs_react_commonjs2_react_umd_react_default.a.createElement(dialogHeader_Container, null, isShowClose && /*#__PURE__*/external_root_React_amd_react_commonjs_react_commonjs2_react_umd_react_default.a.createElement(IconWrapper, {\n    onClick: onCloseDialog\n  }, /*#__PURE__*/external_root_React_amd_react_commonjs_react_commonjs2_react_umd_react_default.a.createElement(\"i\", {\n    className: \"icon icon-close\"\n  })), title && /*#__PURE__*/external_root_React_amd_react_commonjs_react_commonjs2_react_umd_react_default.a.createElement(dialogHeader_Title, null, title));\n};\n\n/* harmony default export */ var dialogHeader = (DialogHeader);\n// CONCATENATED MODULE: ./src/components/dialog/dialogFooter.tsx\n\n\n\nconst dialogFooter_Container = styled_components_browser_esm[\"c\" /* default */].div.withConfig({\n  displayName: \"dialogFooter__Container\",\n  componentId: \"sc-17q74un-0\"\n})([\"display:flex;padding:10px 15px 15px;width:100%;box-sizing:border-box;\"]);\nconst CancelBtn = Object(styled_components_browser_esm[\"c\" /* default */])(components_button).withConfig({\n  displayName: \"dialogFooter__CancelBtn\",\n  componentId: \"sc-17q74un-1\"\n})([\"font-size:15px;flex:1;margin-right:10px;\"]);\nconst ConfirmBtn = Object(styled_components_browser_esm[\"c\" /* default */])(components_button).withConfig({\n  displayName: \"dialogFooter__ConfirmBtn\",\n  componentId: \"sc-17q74un-2\"\n})([\"font-size:15px;flex:1;margin:0;\"]);\n\nconst DialogFooter = props => {\n  const {\n    cancelText,\n    confirmText,\n    onCloseDialog,\n    onConfirmDialog\n  } = props;\n  return /*#__PURE__*/external_root_React_amd_react_commonjs_react_commonjs2_react_umd_react_default.a.createElement(dialogFooter_Container, null, cancelText && /*#__PURE__*/external_root_React_amd_react_commonjs_react_commonjs2_react_umd_react_default.a.createElement(CancelBtn, {\n    variant: \"normal\",\n    onClick: onCloseDialog\n  }, cancelText), confirmText && /*#__PURE__*/external_root_React_amd_react_commonjs_react_commonjs2_react_umd_react_default.a.createElement(ConfirmBtn, {\n    variant: \"contained\",\n    onClick: onConfirmDialog\n  }, confirmText));\n};\n\n/* harmony default export */ var dialogFooter = (DialogFooter);\n// CONCATENATED MODULE: ./src/components/dialog/index.tsx\n\n\n\n\n\n\n\n\n\n\n/**\n * @props customStyle ex. { backgroundColor: 'red' }\n * @props customCss ex. \"background-color: red\"\n */\n\nconst dialog_Container = styled_components_browser_esm[\"c\" /* default */].div.withConfig({\n  displayName: \"dialog__Container\",\n  componentId: \"sc-1s99j3e-0\"\n})([\"position:fixed;top:0;right:0;bottom:0;left:0;margin:0;z-index:\", \";display:\", \";overflow:\", \";\"], componentZindex.dialog, props => props.isOpen ? 'block' : 'none', props => props.isOpen ? 'hidden' : '');\nconst BodyWrapper = styled_components_browser_esm[\"c\" /* default */].div.withConfig({\n  displayName: \"dialog__BodyWrapper\",\n  componentId: \"sc-1s99j3e-1\"\n})([\"position:relative;top:50%;width:290px;margin:0 auto;border-radius:4px;background-color:\", \";box-shadow:0 3px 7px rgba(0,0,0,0.3);z-index:\", \";@keyframes upToCenter{0%{transform:translateY(-100%);}100%{transform:translateY(-50%);}}\", \" \", \";\"], white, componentZindex.dialog, mixin_animate('upToCenter', '0.2s', 'ease-out'), props => props.customCss || '');\n/**\n * 彈跳視窗元件\n */\n\nconst Dialog = props => {\n  const {\n    title,\n    isOpen,\n    isMaskOpacity,\n    isFixedBody,\n    isEnableBackdropClick,\n    onCloseDialog,\n    onConfirmDialog,\n    customStyle,\n    customCss,\n    isShowClose,\n    children,\n    cancelText,\n    confirmText\n  } = props;\n\n  const removeFreezeBody = () => {\n    window.document.body.classList.remove('freeze');\n  };\n  /**\n   * 當開啟PopUp鎖住底部scroll處理\n   */\n\n\n  const freezeBody = isFixed => {\n    if (runtimeMode_utility_namespaceObject.checkIsClientRender()) {\n      if (isFixed) {\n        window.document.body.classList.add('freeze');\n      } else {\n        removeFreezeBody();\n      }\n    }\n  };\n\n  Object(external_root_React_amd_react_commonjs_react_commonjs2_react_umd_react_[\"useEffect\"])(() => {\n    freezeBody(isOpen);\n    return () => {\n      removeFreezeBody();\n    };\n  }, [isOpen]);\n  return /*#__PURE__*/external_root_React_amd_react_commonjs_react_commonjs2_react_umd_react_default.a.createElement(dialog_Container, {\n    isOpen: isOpen\n  }, isOpen && /*#__PURE__*/external_root_React_amd_react_commonjs_react_commonjs2_react_umd_react_default.a.createElement(external_root_React_amd_react_commonjs_react_commonjs2_react_umd_react_[\"Fragment\"], null, /*#__PURE__*/external_root_React_amd_react_commonjs_react_commonjs2_react_umd_react_default.a.createElement(dialogBackdrop, {\n    isMaskOpacity: isMaskOpacity,\n    onCloseDialog: isEnableBackdropClick ? onCloseDialog : null\n  }), /*#__PURE__*/external_root_React_amd_react_commonjs_react_commonjs2_react_umd_react_default.a.createElement(BodyWrapper, {\n    style: customStyle,\n    customCss: customCss\n  }, /*#__PURE__*/external_root_React_amd_react_commonjs_react_commonjs2_react_umd_react_default.a.createElement(dialogHeader, {\n    isShowClose: isShowClose,\n    title: title,\n    onCloseDialog: onCloseDialog\n  }), /*#__PURE__*/external_root_React_amd_react_commonjs_react_commonjs2_react_umd_react_default.a.createElement(dialogBody, {\n    isFixedBody: isFixedBody\n  }, children), cancelText || confirmText ? /*#__PURE__*/external_root_React_amd_react_commonjs_react_commonjs2_react_umd_react_default.a.createElement(dialogFooter, {\n    confirmText: confirmText,\n    cancelText: cancelText,\n    onCloseDialog: onCloseDialog,\n    onConfirmDialog: onConfirmDialog\n  }) : null)));\n};\n\nDialog.defaultProps = {\n  isOpen: false,\n  isShowClose: true,\n  isMaskOpacity: true,\n  isEnableBackdropClick: true,\n  title: '',\n  confirmText: '',\n  cancelText: ''\n};\n/* harmony default export */ var dialog = (Dialog);\n// CONCATENATED MODULE: ./src/components/index.ts\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n// EXTERNAL MODULE: ./src/components/addToCart/desktop/addToCart.scss\nvar addToCart = __webpack_require__(33);\n\n// CONCATENATED MODULE: ./src/components/addToCart/desktop/addToCart.desktop.tsx\nfunction addToCart_desktop_defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\n\n\n\n\n\n\n\n\n\n// TODO: 待翻 Modal元件 scss\n\n\n/**\n * 桌機版 - 購物車Popup模組\n * @description 主要控制 Modal、Toast、Loading元件，顯示狀態\n */\nclass addToCart_desktop_AddToCart extends external_root_React_amd_react_commonjs_react_commonjs2_react_umd_react_[\"Component\"] {\n  constructor(props) {\n    super(props);\n\n    addToCart_desktop_defineProperty(this, \"checkAddToCartDirect\", data => {\n      const {\n        salePageInfo,\n        skuInfoList\n      } = data;\n      const {\n        status\n      } = salePageInfo;\n\n      switch (status) {\n        case 'AppOnly':\n        case 'ShareToBuy':\n        case 'Normal':\n          this.setState({\n            isOpenLoad: false,\n            isOpenSku: true,\n            salePageInfo,\n            skuInfoList\n          });\n          break;\n\n        default:\n          this.setState({\n            isOpenLoad: false\n          });\n          this.showMessage(status);\n          break;\n      }\n    });\n\n    addToCart_desktop_defineProperty(this, \"handleAddToCart\", productInfo => {\n      // 檢查是否選取數量\n      if (productInfo.payload.skuId <= 0) {\n        this.setState({\n          isOpenToast: true,\n          toastType: 'warning',\n          toastMessage: external_root_ReactReduxI18n_amd_react_redux_i18n_commonjs_react_redux_i18n_commonjs2_react_redux_i18n_umd_react_redux_i18n_[\"I18n\"].t(TRANSLATE_LOCALE_KEY.FRONTEND.LIB.SELECT_OPTION)\n        });\n        return;\n      } // 選購模式\n\n\n      if (this.state.mode === 'Choose') {\n        this.setState({\n          productInfo\n        }, () => {\n          this.setState({\n            isOpenToast: false,\n            toastType: '',\n            toastMessage: '',\n            isOpenSku: false,\n            salePageInfo: null,\n            skuInfoList: null,\n            salePageId: 0\n          }, () => {\n            if (this.props.afterSuccess) {\n              // 傳出外部GA使用的參數\n              this.props.afterSuccess(productInfo.payload);\n            }\n          });\n        });\n      } else {\n        // 加入購物車模式\n        this.setState({\n          isOpenSku: false,\n          productInfo\n        }, () => {\n          this.setState({\n            isOpenLoad: true\n          }); // Fetch API 加入購物車\n\n          addShoppingCartModel(productInfo).then(result => {\n            this.setState({\n              isOpenLoad: false\n            }, () => {\n              this.showMessage('AddSuccess');\n            });\n          }).catch(error => {\n            console.log('加入購物車 Error:', error);\n            this.setState({\n              isOpenLoad: false,\n              isOpenDialog: true,\n              dialogMessage: error\n            });\n          });\n        });\n      }\n    });\n\n    addToCart_desktop_defineProperty(this, \"handleAppOnly\", (shopId, salePageId) => {\n      this.setState({\n        isOpenSku: false\n      });\n\n      if (device_utility_namespaceObject.getBrowsingMode() === BROWSING_MODE.MOBILE) {\n        if (this.props.handleRedirectDeepLink) {\n          this.props.handleRedirectDeepLink();\n        } else {\n          window.location.href = '/SalePage/index/' + salePageId;\n        }\n      } else {\n        window.location.href = '/SalePage/ShowQRCode/' + salePageId;\n      }\n    });\n\n    addToCart_desktop_defineProperty(this, \"handleFacebookShare\", salePageId => {\n      if (this.props.facebook) {\n        const link = `${window.location.protocol}//${window.location.host}/SalePage/Index/${salePageId}`;\n        this.props.facebook.ui({\n          method: 'feed',\n          link,\n          display: 'popup'\n        }, response => {\n          this.state.salePageInfo.status = 'Normal';\n          this.setState({\n            salePageInfo: this.state.salePageInfo\n          });\n        });\n      }\n    });\n\n    addToCart_desktop_defineProperty(this, \"onCloseAddToCartHandler\", () => {\n      this.setState({\n        isOpenSku: false,\n        salePageInfo: null,\n        skuInfoList: null,\n        salePageId: 0\n      }, () => {\n        if (this.props.afterClose) {\n          this.props.afterClose();\n        }\n      });\n    });\n\n    addToCart_desktop_defineProperty(this, \"onCloseToastHandler\", () => {\n      // 當未選SKU直接加入購物車彈出警告訊息時，清空Toast狀態\n      if (this.state.toastMessage === external_root_ReactReduxI18n_amd_react_redux_i18n_commonjs_react_redux_i18n_commonjs2_react_redux_i18n_umd_react_redux_i18n_[\"I18n\"].t(TRANSLATE_LOCALE_KEY.FRONTEND.LIB.SELECT_OPTION)) {\n        this.setState({\n          isOpenToast: false,\n          toastType: '',\n          toastMessage: ''\n        });\n      } else if (this.state.toastMessage === external_root_ReactReduxI18n_amd_react_redux_i18n_commonjs_react_redux_i18n_commonjs2_react_redux_i18n_umd_react_redux_i18n_[\"I18n\"].t(TRANSLATE_LOCALE_KEY.FRONTEND.LIB.TOAST.ADD_SUCCESS)) {\n        // 當加入成功後觸發call back事件\n        this.setState({\n          isOpenToast: false,\n          toastType: '',\n          toastMessage: '',\n          isOpenSku: false,\n          salePageInfo: null,\n          skuInfoList: null,\n          salePageId: 0\n        }, () => {\n          if (this.props.afterSuccess) {\n            // 傳出外部GA使用的參數\n            this.props.afterSuccess(this.state.productInfo.payload);\n          }\n        });\n      } else {\n        this.setState({\n          isOpenToast: false,\n          toastType: '',\n          toastMessage: ''\n        }, this.onCloseAddToCartHandler);\n      }\n    });\n\n    addToCart_desktop_defineProperty(this, \"showMessage\", status => {\n      const messageItem = getToastMessageItem(status);\n\n      if (messageItem) {\n        this.setState({\n          isOpenToast: true,\n          toastMessage: external_root_ReactReduxI18n_amd_react_redux_i18n_commonjs_react_redux_i18n_commonjs2_react_redux_i18n_umd_react_redux_i18n_[\"I18n\"].t(messageItem.message),\n          toastType: messageItem.type\n        });\n      }\n    });\n\n    addToCart_desktop_defineProperty(this, \"handleCloseDialog\", () => {\n      this.setState({\n        isOpenDialog: false,\n        dialogMessage: ''\n      }, this.onCloseAddToCartHandler);\n    });\n\n    this.state = {\n      mode: props.mode || 'Normal',\n      // Normal(一般) 或 Choose(選購)\n      salePageId: props.salePageId,\n      isOpenSku: false,\n      isOpenToast: false,\n      isOpenLoad: false,\n      isOpenDialog: false,\n      toastType: '',\n      toastMessage: '',\n      dialogMessage: '',\n      salePageInfo: null,\n      skuInfoList: null,\n      productInfo: null,\n      skuQtyMode: props.skuQtyMode || 'Overwrite'\n    };\n  }\n  /**\n   * 檢查是否開啟 SKU Popup\n   */\n\n\n  // TODO: 之後再調整不要使用componentWillReceiveProps觸發開關\n  componentWillReceiveProps(nextProps) {\n    if (nextProps.salePageId !== this.state.salePageId && !this.state.isOpenSku) {\n      this.setState({\n        isOpenLoad: true\n      }); // 取得API商品資訊\n\n      fetchSalePageInfoModel(this.props.shopId, nextProps.salePageId).then(data => this.checkAddToCartDirect(data)).catch(err => {\n        this.setState({\n          isOpenLoad: false\n        });\n        this.showMessage('Error');\n      });\n    }\n  }\n\n  render() {\n    return /*#__PURE__*/external_root_React_amd_react_commonjs_react_commonjs2_react_umd_react_[\"createElement\"](external_root_React_amd_react_commonjs_react_commonjs2_react_umd_react_[\"Fragment\"], null, /*#__PURE__*/external_root_React_amd_react_commonjs_react_commonjs2_react_umd_react_[\"createElement\"](components_modal, {\n      isOpen: this.state.isOpenSku,\n      isShowClose: true,\n      onCloseModal: this.onCloseAddToCartHandler,\n      customCssClass: \"modal--large\"\n    }, this.state.salePageInfo && this.state.skuInfoList && /*#__PURE__*/external_root_React_amd_react_commonjs_react_commonjs2_react_umd_react_[\"createElement\"](productSku_ProductSku, {\n      skuQtyMode: this.state.skuQtyMode,\n      mode: this.state.mode,\n      decimal: this.props.decimal,\n      symbol: this.props.symbol,\n      rate: this.props.rate,\n      shopId: this.props.shopId,\n      salePageInfo: this.state.salePageInfo,\n      skuInfoList: this.state.skuInfoList,\n      handleAddToCart: this.handleAddToCart,\n      handleAppOnly: this.handleAppOnly,\n      handleFacebookShare: this.handleFacebookShare,\n      onAddQuantity: this.props.onAddQuantity,\n      onRemoveQuantity: this.props.onRemoveQuantity\n    })), /*#__PURE__*/external_root_React_amd_react_commonjs_react_commonjs2_react_umd_react_[\"createElement\"](toast_toast, {\n      isOpen: this.state.isOpenToast,\n      type: this.state.toastType,\n      message: this.state.toastMessage,\n      afterClose: this.onCloseToastHandler\n    }), /*#__PURE__*/external_root_React_amd_react_commonjs_react_commonjs2_react_umd_react_[\"createElement\"](loading_loading, {\n      isLoading: this.state.isOpenLoad\n    }), /*#__PURE__*/external_root_React_amd_react_commonjs_react_commonjs2_react_umd_react_[\"createElement\"](dialog, {\n      isOpen: this.state.isOpenDialog,\n      isShowClose: false,\n      confirmText: external_root_ReactReduxI18n_amd_react_redux_i18n_commonjs_react_redux_i18n_commonjs2_react_redux_i18n_umd_react_redux_i18n_[\"I18n\"].t(TRANSLATE_LOCALE_KEY.FRONTEND.LIB.CONFIRM),\n      onConfirmDialog: this.handleCloseDialog\n    }, /*#__PURE__*/external_root_React_amd_react_commonjs_react_commonjs2_react_umd_react_[\"createElement\"](\"div\", null, this.state.dialogMessage)));\n  }\n\n}\n// CONCATENATED MODULE: ./src/components/modal/modal.tsx\nfunction modal_defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\n\n\n\n\n\n;\n;\n/**\n * 彈跳視窗元件\n */\n\nclass modal_modal_Modal extends external_root_React_amd_react_commonjs_react_commonjs2_react_umd_react_[\"Component\"] {\n  constructor(...args) {\n    super(...args);\n\n    modal_defineProperty(this, \"slidePushMenuLeftElem\", void 0);\n\n    modal_defineProperty(this, \"browsingMode\", void 0);\n\n    modal_defineProperty(this, \"freezeBody\", isFixed => {\n      if (runtimeMode_utility_namespaceObject.checkIsClientRender()) {\n        if (isFixed) {\n          window.document.body.classList.add('freeze');\n        } else {\n          window.document.body.classList.remove('freeze');\n        }\n      }\n    });\n\n    modal_defineProperty(this, \"freezeAsidePushMenu\", isFixed => {\n      const slidePushMenuLeftElemClassList = this.slidePushMenuLeftElem && this.slidePushMenuLeftElem.classList;\n\n      if (this.browsingMode === BROWSING_MODE.DESKTOP || !slidePushMenuLeftElemClassList || !userAgent_utility_namespaceObject.checkIsSafari(navigator.userAgent)) {\n        return;\n      }\n\n      if (isFixed) {\n        slidePushMenuLeftElemClassList.add('spark-slide-push-menu--freeze');\n      } else {\n        slidePushMenuLeftElemClassList.remove('spark-slide-push-menu--freeze');\n      }\n    });\n  }\n\n  componentDidMount() {\n    const {\n      isOpen\n    } = this.props;\n\n    if (runtimeMode_utility_namespaceObject.checkIsClientRender()) {\n      this.slidePushMenuLeftElem = document.getElementById('spark-slide-push-menu__left-containter');\n      this.browsingMode = device_utility_namespaceObject.getBrowsingMode();\n      this.freezeBody(isOpen);\n    }\n  }\n\n  componentWillReceiveProps(nextProps) {\n    const {\n      isOpen\n    } = this.props;\n\n    if (isOpen !== nextProps.isOpen) {\n      this.freezeBody(nextProps.isOpen);\n      this.freezeAsidePushMenu(nextProps.isOpen);\n    }\n  }\n  /**\n   * 當開啟PopUp鎖住底部scroll處理\n   */\n\n\n  render() {\n    const {\n      title,\n      isOpen,\n      isMaskOpacity,\n      onCloseModal,\n      onConfirmModal,\n      customStyle,\n      customCssClass,\n      isShowClose,\n      children,\n      cancelText,\n      confirmText\n    } = this.props;\n    return /*#__PURE__*/external_root_React_amd_react_commonjs_react_commonjs2_react_umd_react_[\"createElement\"](\"div\", {\n      className: classnames_default()('modal', isOpen === true ? 'modal--open' : '')\n    }, isOpen && /*#__PURE__*/external_root_React_amd_react_commonjs_react_commonjs2_react_umd_react_[\"createElement\"](\"div\", {\n      className: classnames_default()('modal__backdrop', isMaskOpacity ? 'modal__backdrop--opacity' : ''),\n      onClick: onCloseModal\n    }), isOpen && /*#__PURE__*/external_root_React_amd_react_commonjs_react_commonjs2_react_umd_react_[\"createElement\"](\"div\", {\n      style: customStyle,\n      className: classnames_default()('modal--default', customCssClass || '')\n    }, isShowClose && /*#__PURE__*/external_root_React_amd_react_commonjs_react_commonjs2_react_umd_react_[\"createElement\"](\"div\", {\n      className: \"modal__header\"\n    }, /*#__PURE__*/external_root_React_amd_react_commonjs_react_commonjs2_react_umd_react_[\"createElement\"](\"a\", {\n      className: \"close\",\n      onClick: onCloseModal\n    }, /*#__PURE__*/external_root_React_amd_react_commonjs_react_commonjs2_react_umd_react_[\"createElement\"](\"i\", {\n      className: \"icon icon-slim-close\"\n    })), title && /*#__PURE__*/external_root_React_amd_react_commonjs_react_commonjs2_react_umd_react_[\"createElement\"](\"h2\", {\n      className: \"modal__title\"\n    }, title)), !children && /*#__PURE__*/external_root_React_amd_react_commonjs_react_commonjs2_react_umd_react_[\"createElement\"](\"div\", {\n      className: \"modal__loading black-spinner \"\n    }), children && /*#__PURE__*/external_root_React_amd_react_commonjs_react_commonjs2_react_umd_react_[\"createElement\"](\"div\", {\n      className: \"modal__body\"\n    }, children), cancelText || confirmText ? /*#__PURE__*/external_root_React_amd_react_commonjs_react_commonjs2_react_umd_react_[\"createElement\"](\"div\", {\n      className: \"modal__footer\"\n    }, cancelText && /*#__PURE__*/external_root_React_amd_react_commonjs_react_commonjs2_react_umd_react_[\"createElement\"](\"button\", {\n      type: \"button\",\n      className: \"cancel-btn\",\n      onClick: onCloseModal\n    }, cancelText), confirmText && /*#__PURE__*/external_root_React_amd_react_commonjs_react_commonjs2_react_umd_react_[\"createElement\"](\"button\", {\n      type: \"button\",\n      className: \"confirm-btn\",\n      onClick: onConfirmModal\n    }, confirmText)) : null));\n  }\n\n}\n\nmodal_defineProperty(modal_modal_Modal, \"defaultProps\", {\n  isOpen: false,\n  isShowClose: true,\n  isMaskOpacity: true,\n  title: '',\n  confirmText: '',\n  cancelText: ''\n});\n\n/* harmony default export */ var modal_modal = (modal_modal_Modal);\n// CONCATENATED MODULE: ./src/providers/index.ts\n\n\n// CONCATENATED MODULE: ./src/index.ts\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMzQuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9AOTFhcHAvbmluZXlpLmxpYi5zcGFya2NvcmUvLi9zcmMvdXRpbGl0aWVzL2RhdGVGb3JtYXQudXRpbGl0eS50cz8yMTE5Iiwid2VicGFjazovL0A5MWFwcC9uaW5leWkubGliLnNwYXJrY29yZS8uL3NyYy9jb25zdGFudHMvZGV2aWNlLmNvbnN0YW50cy50cz85MTI1Iiwid2VicGFjazovL0A5MWFwcC9uaW5leWkubGliLnNwYXJrY29yZS8uL3NyYy91dGlsaXRpZXMvZGV2aWNlLnV0aWxpdHkudHM/NzAxOSIsIndlYnBhY2s6Ly9AOTFhcHAvbmluZXlpLmxpYi5zcGFya2NvcmUvLi9zcmMvdXRpbGl0aWVzL3VzZXJBZ2VudC51dGlsaXR5LnRzPzFmMWMiLCJ3ZWJwYWNrOi8vQDkxYXBwL25pbmV5aS5saWIuc3Bhcmtjb3JlLy4vc3JjL3V0aWxpdGllcy9ydW50aW1lTW9kZS51dGlsaXR5LnRzPzdkYjkiLCJ3ZWJwYWNrOi8vQDkxYXBwL25pbmV5aS5saWIuc3Bhcmtjb3JlLy4vc3JjL3V0aWxpdGllcy9jb29raWUudXRpbGl0eS50cz85MGQwIiwid2VicGFjazovL0A5MWFwcC9uaW5leWkubGliLnNwYXJrY29yZS8uL3NyYy91dGlsaXRpZXMvdXJsLnV0aWxpdHkudHM/MTdiOSIsIndlYnBhY2s6Ly9AOTFhcHAvbmluZXlpLmxpYi5zcGFya2NvcmUvLi9zcmMvdXRpbGl0aWVzL2N1cnJlbmN5LnV0aWxpdHkudHM/ODAwMiIsIndlYnBhY2s6Ly9AOTFhcHAvbmluZXlpLmxpYi5zcGFya2NvcmUvLi9zcmMvdXRpbGl0aWVzL2luZGV4LnRzPzRhY2UiLCJ3ZWJwYWNrOi8vQDkxYXBwL25pbmV5aS5saWIuc3Bhcmtjb3JlLy4vc3JjL2NvbXBvbmVudHMvbW9kYWwvaW5kZXgudHN4PzFiYWYiLCJ3ZWJwYWNrOi8vQDkxYXBwL25pbmV5aS5saWIuc3Bhcmtjb3JlLy4vc3JjL3V0aWxpdGllcy9nbG9iYWxQYXJhbWV0ZXIudXRpbGl0eS50cz83NGRmIiwid2VicGFjazovL0A5MWFwcC9uaW5leWkubGliLnNwYXJrY29yZS8uL3NyYy91dGlsaXRpZXMvcGF0aC51dGlsaXR5LnRzP2VhOTUiLCJ3ZWJwYWNrOi8vQDkxYXBwL25pbmV5aS5saWIuc3Bhcmtjb3JlLy4vc3JjL2NvbXBvbmVudHMvbG9hZGluZy9sb2FkaW5nLnRzeD84MmNiIiwid2VicGFjazovL0A5MWFwcC9uaW5leWkubGliLnNwYXJrY29yZS8uL3NyYy9jb25zdGFudHMvdHJhbnNsYXRpb24uY29uc3RhbnRzLnRzP2U5ZDEiLCJ3ZWJwYWNrOi8vQDkxYXBwL25pbmV5aS5saWIuc3Bhcmtjb3JlLy4vc3JjL2NvbXBvbmVudHMvdG9hc3QvdG9hc3QudHN4PzQwY2QiLCJ3ZWJwYWNrOi8vQDkxYXBwL25pbmV5aS5saWIuc3Bhcmtjb3JlLy4vc3JjL2NvbXBvbmVudHMvY3VycmVuY3kvY3VycmVuY3kudHN4PzBiMzgiLCJ3ZWJwYWNrOi8vQDkxYXBwL25pbmV5aS5saWIuc3Bhcmtjb3JlLy4vc3JjL3N0eWxlcy9jb21tb24vbWl4aW4vY2xlYXJGaXgudHM/MzJhOSIsIndlYnBhY2s6Ly9AOTFhcHAvbmluZXlpLmxpYi5zcGFya2NvcmUvLi9zcmMvY29tcG9uZW50cy9hZGRUb0NhcnQvcHJvZHVjdC90aGVtZUNvbG9yLnRzPzBiM2QiLCJ3ZWJwYWNrOi8vQDkxYXBwL25pbmV5aS5saWIuc3Bhcmtjb3JlLy4vc3JjL2NvbXBvbmVudHMvYWRkVG9DYXJ0L3Byb2R1Y3QvcHJvZHVjdFBvaW50UGF5UHJpY2UudHN4PzhjYzQiLCJ3ZWJwYWNrOi8vQDkxYXBwL25pbmV5aS5saWIuc3Bhcmtjb3JlLy4vc3JjL2NvbXBvbmVudHMvYWRkVG9DYXJ0L3Byb2R1Y3QvcHJvZHVjdE1haW5JbmZvLnRzeD8zYTkwIiwid2VicGFjazovL0A5MWFwcC9uaW5leWkubGliLnNwYXJrY29yZS8uL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9leHRlbmRzLmpzP2MzMWQiLCJ3ZWJwYWNrOi8vQDkxYXBwL25pbmV5aS5saWIuc3Bhcmtjb3JlLy4vbm9kZV9tb2R1bGVzL0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL2Fzc2VydFRoaXNJbml0aWFsaXplZC5qcz8yNTdlIiwid2VicGFjazovL0A5MWFwcC9uaW5leWkubGliLnNwYXJrY29yZS8uL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9zZXRQcm90b3R5cGVPZi5qcz9iMzgwIiwid2VicGFjazovL0A5MWFwcC9uaW5leWkubGliLnNwYXJrY29yZS8uL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9pbmhlcml0c0xvb3NlLmpzPzc0OGUiLCJ3ZWJwYWNrOi8vQDkxYXBwL25pbmV5aS5saWIuc3Bhcmtjb3JlLy4vbm9kZV9tb2R1bGVzL0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL2dldFByb3RvdHlwZU9mLmpzPzdlODQiLCJ3ZWJwYWNrOi8vQDkxYXBwL25pbmV5aS5saWIuc3Bhcmtjb3JlLy4vbm9kZV9tb2R1bGVzL0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL2lzTmF0aXZlRnVuY3Rpb24uanM/ZmE5NSIsIndlYnBhY2s6Ly9AOTFhcHAvbmluZXlpLmxpYi5zcGFya2NvcmUvLi9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vaXNOYXRpdmVSZWZsZWN0Q29uc3RydWN0LmpzP2Q5NjciLCJ3ZWJwYWNrOi8vQDkxYXBwL25pbmV5aS5saWIuc3Bhcmtjb3JlLy4vbm9kZV9tb2R1bGVzL0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL2NvbnN0cnVjdC5qcz80NDc4Iiwid2VicGFjazovL0A5MWFwcC9uaW5leWkubGliLnNwYXJrY29yZS8uL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS93cmFwTmF0aXZlU3VwZXIuanM/OTA3MiIsIndlYnBhY2s6Ly9AOTFhcHAvbmluZXlpLmxpYi5zcGFya2NvcmUvLi9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vdGFnZ2VkVGVtcGxhdGVMaXRlcmFsTG9vc2UuanM/MzE0YSIsIndlYnBhY2s6Ly9AOTFhcHAvbmluZXlpLmxpYi5zcGFya2NvcmUvLi9ub2RlX21vZHVsZXMvcG9saXNoZWQvZGlzdC9wb2xpc2hlZC5lc20uanM/YjlmYSIsIndlYnBhY2s6Ly9AOTFhcHAvbmluZXlpLmxpYi5zcGFya2NvcmUvLi9zcmMvY29tcG9uZW50cy9hZGRUb0NhcnQvcHJvZHVjdC9wcm9kdWN0R3JvdXBPcHRpb24udHN4P2M3ZDMiLCJ3ZWJwYWNrOi8vQDkxYXBwL25pbmV5aS5saWIuc3Bhcmtjb3JlLy4vc3JjL2NvbXBvbmVudHMvYnV0dG9uL2luZGV4LnRzeD9jZTg0Iiwid2VicGFjazovL0A5MWFwcC9uaW5leWkubGliLnNwYXJrY29yZS8uL3NyYy9jb21wb25lbnRzL2FkZFRvQ2FydC9wcm9kdWN0L3Byb2R1Y3RRdHkudHN4Pzc3NjMiLCJ3ZWJwYWNrOi8vQDkxYXBwL25pbmV5aS5saWIuc3Bhcmtjb3JlLy4vc3JjL2NvbXBvbmVudHMvYWRkVG9DYXJ0L3Byb2R1Y3QvcHVyY2hhc2VNZXRob2QudHN4Pzg0YjQiLCJ3ZWJwYWNrOi8vQDkxYXBwL25pbmV5aS5saWIuc3Bhcmtjb3JlLy4vc3JjL3Byb3ZpZGVycy9odHRwLnByb3ZpZGVyLnRzP2E3MGIiLCJ3ZWJwYWNrOi8vQDkxYXBwL25pbmV5aS5saWIuc3Bhcmtjb3JlLy4vc3JjL21vZGVscy9wcm9kdWN0U3RvY2subW9kZWwudHM/ODk1NyIsIndlYnBhY2s6Ly9AOTFhcHAvbmluZXlpLmxpYi5zcGFya2NvcmUvLi9zcmMvY29tcG9uZW50cy9hZGRUb0NhcnQvcHJvZHVjdC9wcm9kdWN0U2t1LnRzeD8xNDRhIiwid2VicGFjazovL0A5MWFwcC9uaW5leWkubGliLnNwYXJrY29yZS8uL3NyYy9jb21wb25lbnRzL2FkZFRvQ2FydC9tb2JpbGUvc2xpZGVQdXNoTWVudS50c3g/NTI5ZSIsIndlYnBhY2s6Ly9AOTFhcHAvbmluZXlpLmxpYi5zcGFya2NvcmUvLi9zcmMvbW9kZWxzL3NhbGVQYWdlLm1vZGVsLnRzP2Y3MWMiLCJ3ZWJwYWNrOi8vQDkxYXBwL25pbmV5aS5saWIuc3Bhcmtjb3JlLy4vc3JjL21vZGVscy9zaG9wcGluZ0NhcnQubW9kZWwudHM/MWI1OCIsIndlYnBhY2s6Ly9AOTFhcHAvbmluZXlpLmxpYi5zcGFya2NvcmUvLi9zcmMvY29tcG9uZW50cy9hZGRUb0NhcnQvbW9iaWxlL2FkZFRvQ2FydC5tb2JpbGUudHN4P2E2YTEiLCJ3ZWJwYWNrOi8vQDkxYXBwL25pbmV5aS5saWIuc3Bhcmtjb3JlLy4vc3JjL2NvbXBvbmVudHMvY2hlY2tCb3gvY2hlY2tCb3gudHN4PzIyMTUiLCJ3ZWJwYWNrOi8vQDkxYXBwL25pbmV5aS5saWIuc3Bhcmtjb3JlLy4vc3JjL2NvbXBvbmVudHMvcmFkaW9CdXR0b24vcmFkaW9CdXR0b24udHN4P2FkMjgiLCJ3ZWJwYWNrOi8vQDkxYXBwL25pbmV5aS5saWIuc3Bhcmtjb3JlLy4vc3JjL2NvbXBvbmVudHMvbGluay9pbmRleC50c3g/NzUzZSIsIndlYnBhY2s6Ly9AOTFhcHAvbmluZXlpLmxpYi5zcGFya2NvcmUvLi9zcmMvY29tcG9uZW50cy90YWcvaW5kZXgudHN4Pzk1NzciLCJ3ZWJwYWNrOi8vQDkxYXBwL25pbmV5aS5saWIuc3Bhcmtjb3JlLy4vc3JjL2NvbXBvbmVudHMvdGhlbWUvaW5kZXgudHN4P2E4ZTQiLCJ3ZWJwYWNrOi8vQDkxYXBwL25pbmV5aS5saWIuc3Bhcmtjb3JlLy4vc3JjL3N0eWxlcy9tb2RlbC9jb2xvci50cz8wMDg2Iiwid2VicGFjazovL0A5MWFwcC9uaW5leWkubGliLnNwYXJrY29yZS8uL3NyYy9zdHlsZXMvbW9kZWwvemluZGV4LnRzPzNiYWEiLCJ3ZWJwYWNrOi8vQDkxYXBwL25pbmV5aS5saWIuc3Bhcmtjb3JlLy4vc3JjL3N0eWxlcy9jb21tb24vbWl4aW4vYW5pbWF0ZS50cz8wM2E5Iiwid2VicGFjazovL0A5MWFwcC9uaW5leWkubGliLnNwYXJrY29yZS8uL3NyYy9jb21wb25lbnRzL2RpYWxvZy9kaWFsb2dCYWNrZHJvcC50c3g/NDdlMyIsIndlYnBhY2s6Ly9AOTFhcHAvbmluZXlpLmxpYi5zcGFya2NvcmUvLi9zcmMvY29tcG9uZW50cy9kaWFsb2cvZGlhbG9nQm9keS50c3g/NWZiYiIsIndlYnBhY2s6Ly9AOTFhcHAvbmluZXlpLmxpYi5zcGFya2NvcmUvLi9zcmMvY29tcG9uZW50cy9kaWFsb2cvZGlhbG9nSGVhZGVyLnRzeD8wMzNjIiwid2VicGFjazovL0A5MWFwcC9uaW5leWkubGliLnNwYXJrY29yZS8uL3NyYy9jb21wb25lbnRzL2RpYWxvZy9kaWFsb2dGb290ZXIudHN4PzM5MGMiLCJ3ZWJwYWNrOi8vQDkxYXBwL25pbmV5aS5saWIuc3Bhcmtjb3JlLy4vc3JjL2NvbXBvbmVudHMvZGlhbG9nL2luZGV4LnRzeD81ODI4Iiwid2VicGFjazovL0A5MWFwcC9uaW5leWkubGliLnNwYXJrY29yZS8uL3NyYy9jb21wb25lbnRzL2luZGV4LnRzPzM2MTciLCJ3ZWJwYWNrOi8vQDkxYXBwL25pbmV5aS5saWIuc3Bhcmtjb3JlLy4vc3JjL2NvbXBvbmVudHMvYWRkVG9DYXJ0L2Rlc2t0b3AvYWRkVG9DYXJ0LmRlc2t0b3AudHN4PzBkZWMiLCJ3ZWJwYWNrOi8vQDkxYXBwL25pbmV5aS5saWIuc3Bhcmtjb3JlLy4vc3JjL2NvbXBvbmVudHMvbW9kYWwvbW9kYWwudHN4PzQ0NWIiLCJ3ZWJwYWNrOi8vQDkxYXBwL25pbmV5aS5saWIuc3Bhcmtjb3JlLy4vc3JjL3Byb3ZpZGVycy9pbmRleC50cz9hZjE4Iiwid2VicGFjazovL0A5MWFwcC9uaW5leWkubGliLnNwYXJrY29yZS8uL3NyYy9pbmRleC50cz9mZmI0Il0sInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICog6L2J5o+bLm5ldCBkYXRl5qC85byPXG4gKi9cbmV4cG9ydCBjb25zdCBkb3ROZXREYXRlUGFyc2VyID0gKGRhdGUpID0+IHtcbiAgICB2YXIgbWluRGF0ZSA9ICcvRGF0ZSgtNjIxMzU1OTY4MDAwMDApLyc7XG4gICAgaWYgKGRhdGUgPT09IG1pbkRhdGUpIHtcbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuICAgIHZhciBuZXdEYXRlID0gbmV3IERhdGUocGFyc2VJbnQoZGF0ZS5yZXBsYWNlKFwiL0RhdGUoXCIsIFwiXCIpLnJlcGxhY2UoXCIpL1wiLCBcIlwiKSwgMTApKTtcbiAgICByZXR1cm4gbmV3RGF0ZTtcbn1cbiIsImV4cG9ydCBjb25zdCBCUk9XU0lOR19NT0RFID0ge1xuICAgIERFU0tUT1A6ICdkZXNrdG9wJyxcbiAgICBNT0JJTEU6ICdtb2JpbGUnXG59XG4iLCJpbXBvcnQgeyBCUk9XU0lOR19NT0RFIH0gZnJvbSAnLi4vY29uc3RhbnRzL2RldmljZS5jb25zdGFudHMnO1xuaW1wb3J0IHsgcnVudGltZU1vZGVVdGlsaXR5IH0gZnJvbSAnQHV0aWxpdGllcy9pbmRleCc7XG5cbi8qKlxuICog5Y+W5b6X54CP6Ka95qih5byPXG4gKi9cbmV4cG9ydCBjb25zdCBnZXRCcm93c2luZ01vZGUgPSAoKSA9PiB7XG4gICAgaWYgKCFydW50aW1lTW9kZVV0aWxpdHkuY2hlY2tJc0NsaWVudFJlbmRlcigpKSB7XG4gICAgICAgIHJldHVybiBCUk9XU0lOR19NT0RFLkRFU0tUT1A7XG4gICAgfVxuICAgIC8vIOiLpXNlcnZlcuacieaMh+Wumumhr+ekuueahOeAj+imveaooeW8j+eCumRlc2t0b3Ao55So5pa85omL5qmf5LiK6bue5pOK44CM5L2/55So6Zu76IWm54mI54CP6Ka944CN55qE5oOF5aKDKVxuICAgIGlmICgoZG9jdW1lbnQuY29va2llLm1hdGNoKCcoXnw7ICknICsgXCJCcm93c2luZ01vZGVcIiArICc9KFteO10qKScpIHx8IDApWzJdID09PSBcIkRlc2tUb3BcIikge1xuICAgICAgICByZXR1cm4gQlJPV1NJTkdfTU9ERS5ERVNLVE9QO1xuICAgIH0gZWxzZSB7XG4gICAgICAgIGlmICgoL2FuZHJvaWR8d2ViT1N8aVBob25lfGlQb2R8aU9TfEJsYWNrQmVycnl8SUVNb2JpbGV8T3BlcmEgTWluaS9pLnRlc3QobmF2aWdhdG9yLnVzZXJBZ2VudCkpIHx8XG4gICAgICAgICAgICAoLyh0YWJsZXR8aXBhZHxwbGF5Ym9va3xzaWxrKXwoYW5kcm9pZCg/IS4qbW9iaWxlKSkvaS50ZXN0KG5hdmlnYXRvci51c2VyQWdlbnQpKSkge1xuICAgICAgICAgICAgcmV0dXJuIEJST1dTSU5HX01PREUuTU9CSUxFO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIEJST1dTSU5HX01PREUuREVTS1RPUDtcbiAgICAgICAgfVxuICAgIH1cbn1cblxuLyoqXG4gKiDmmK/lkKbngrrmiYvmqZ/mqKHlvI9cbiAqL1xuZXhwb3J0IGNvbnN0IGlzTW9iaWxlID0gKCkgPT4gZ2V0QnJvd3NpbmdNb2RlKCkgPT09IEJST1dTSU5HX01PREUuTU9CSUxFO1xuIiwiZW51bSBCcm93c2VyIHtcbiAgICBGaXJlZm94ID0gJ0ZpcmVmb3gnLFxuICAgIENocm9tZSA9ICdDaHJvbWUnLFxuICAgIFNhZmFyaSA9ICdTYWZhcmknLFxuICAgIFRyaWRlbnQgPSAnVHJpZGVudCcsXG4gICAgTVNJRSA9ICdNU0lFJyxcbn1cblxuZW51bSBEZXZpY2VPUyB7XG4gICAgQW5kcm9pZCA9ICdBbmRyb2lkJyxcbiAgICBpT1MgPSAnaU9TJyxcbiAgICBCb3QgPSAnQm90JyxcbiAgICBVbktub3duID0gJ1VuS25vd24nLFxufVxuXG5leHBvcnQgY29uc3QgY2hlY2tJc0ZpcmVmb3ggPSAodXNlckFnZW50OiBzdHJpbmcpID0+IHVzZXJBZ2VudC5pbmRleE9mKEJyb3dzZXIuRmlyZWZveCkgIT09IC0xO1xuXG5leHBvcnQgY29uc3QgY2hlY2tJc0Nocm9tZSA9ICh1c2VyQWdlbnQ6IHN0cmluZykgPT4gdXNlckFnZW50LmluZGV4T2YoQnJvd3Nlci5DaHJvbWUpICE9PSAtMTtcblxuZXhwb3J0IGNvbnN0IGNoZWNrSXNTYWZhcmkgPSAodXNlckFnZW50OiBzdHJpbmcpID0+XG4gICAgdXNlckFnZW50LmluZGV4T2YoQnJvd3Nlci5DaHJvbWUpID09PSAtMSAmJiB1c2VyQWdlbnQuaW5kZXhPZihCcm93c2VyLlNhZmFyaSkgIT09IC0xO1xuXG5leHBvcnQgY29uc3QgY2hlY2tJc0lFID0gKHVzZXJBZ2VudDogc3RyaW5nKSA9PlxuICAgIHVzZXJBZ2VudC5pbmRleE9mKEJyb3dzZXIuVHJpZGVudCkgPiAwIHx8IHVzZXJBZ2VudC5pbmRleE9mKEJyb3dzZXIuTVNJRSkgPiAwO1xuXG5leHBvcnQgY29uc3QgZ2V0RGV2aWNlT1MgPSAodXNlckFnZW50OiBzdHJpbmcpID0+IHtcbiAgICBpZiAoL2FuZHJvaWQvaS50ZXN0KHVzZXJBZ2VudCkpIHtcbiAgICAgICAgcmV0dXJuIERldmljZU9TLkFuZHJvaWQ7XG4gICAgfVxuICAgIGlmICgvKGlQaG9uZXxpUGFkfGlQb2R8aU9TKS9pLnRlc3QodXNlckFnZW50KSkge1xuICAgICAgICByZXR1cm4gRGV2aWNlT1MuaU9TO1xuICAgIH1cbiAgICBpZiAoL2JvdHxzcGlkZXJ8Y3Jhd2wvaS50ZXN0KHVzZXJBZ2VudCkpIHtcbiAgICAgICAgcmV0dXJuIERldmljZU9TLkJvdDtcbiAgICB9XG4gICAgcmV0dXJuIERldmljZU9TLlVuS25vd247XG59O1xuXG5leHBvcnQgY29uc3QgY2hlY2tJc0JvdCA9ICgpID0+XG4gICAgdHlwZW9mIHdpbmRvdyAhPT0gJ3VuZGVmaW5lZCcgJiYgd2luZG93Lm5hdmlnYXRvciAmJiAvYm90fHNwaWRlcnxjcmF3bC9pLnRlc3QobmF2aWdhdG9yLnVzZXJBZ2VudCk7XG4iLCJleHBvcnQgY29uc3QgY2hlY2tJc0NsaWVudFJlbmRlciA9ICgpID0+IHR5cGVvZiB3aW5kb3cgIT09ICd1bmRlZmluZWQnO1xuXG5leHBvcnQgY29uc3QgY2hlY2tJc1NlcnZlclJlbmRlciA9ICgpID0+IHR5cGVvZiB3aW5kb3cgPT09ICd1bmRlZmluZWQnO1xuIiwiZXhwb3J0IGNvbnN0IGFkZENvb2tpZSA9IChuYW1lOiBzdHJpbmcsIHZhbHVlOiBzdHJpbmcsIGRheXM/OiBudW1iZXIpID0+IHtcbiAgICBsZXQgZXhwaXJlcyA9ICcnO1xuICAgIGlmIChkYXlzKSB7XG4gICAgICAgIGNvbnN0IGRhdGUgPSBuZXcgRGF0ZSgpO1xuICAgICAgICBkYXRlLnNldFRpbWUoZGF0ZS5nZXRUaW1lKCkgKyBkYXlzICogMjQgKiA2MCAqIDYwICogMTAwMCk7XG4gICAgICAgIGV4cGlyZXMgPSBgOyBleHBpcmVzPSR7ZGF0ZS50b1VUQ1N0cmluZygpfWA7XG4gICAgfVxuICAgIGRvY3VtZW50LmNvb2tpZSA9IGAke25hbWV9PSR7dmFsdWV9JHtleHBpcmVzfTsgcGF0aD0vYDtcbn07XG5cbmV4cG9ydCBjb25zdCBkZWxldGVDb29raWUgPSAobmFtZTogc3RyaW5nKSA9PiB7XG4gICAgY29uc3QgdG9kYXkgPSBuZXcgRGF0ZSgpO1xuICAgIGRvY3VtZW50LmNvb2tpZSA9IGAke25hbWV9PTtleHBpcmVzPSR7dG9kYXkudG9VVENTdHJpbmcoKX07cGF0aD0vYDtcbn07XG5cbmV4cG9ydCBjb25zdCBnZXRDb29raWUgPSAobmFtZTogc3RyaW5nKSA9PiB7XG4gICAgY29uc3QgYXJyID0gZG9jdW1lbnQuY29va2llLm1hdGNoKG5ldyBSZWdFeHAoYChefCApJHtuYW1lfT0oW147XSopKDt8JClgKSk7XG4gICAgaWYgKGFycikge1xuICAgICAgICByZXR1cm4gYXJyWzJdO1xuICAgIH1cbiAgICByZXR1cm4gJyc7XG59O1xuIiwiXG5leHBvcnQgY29uc3QgZ2V0UXVlcnlTdHJpbmcgPSAobmFtZTogc3RyaW5nLCB1cmw/OiBzdHJpbmcpID0+IHtcbiAgICB0cnkge1xuICAgICAgICBjb25zdCBtYXRjaCA9IFJlZ0V4cChgWz8mXSR7bmFtZX09KFteJl0qKWApLmV4ZWModXJsIHx8IGRvY3VtZW50LmxvY2F0aW9uLnNlYXJjaCk7XG4gICAgICAgIHJldHVybiBtYXRjaCAmJiBkZWNvZGVVUklDb21wb25lbnQoZGVjb2RlVVJJQ29tcG9uZW50KG1hdGNoWzFdLnJlcGxhY2UoL1xcKy9nLCAnICcpKSk7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG59O1xuXG4vLyBTb3VyY2UgY29kZSBmcm9tXG4vLyBodHRwOi8vc3RhY2tvdmVyZmxvdy5jb20vcXVlc3Rpb25zLzY5NTM5NDQvaG93LXRvLWFkZC1wYXJhbWV0ZXJzLXRvLWEtdXJsLXRoYXQtYWxyZWFkeS1jb250YWlucy1vdGhlci1wYXJhbWV0ZXJzLWFuZC1tYXliZVxuZXhwb3J0IGNvbnN0IGFwcGVuZFBhcmFtZXRlciA9ICh1cmw6IHN0cmluZywga2V5OiBzdHJpbmcsIHZhbHVlOiBzdHJpbmcsIGF0U3RhcnQgPSBmYWxzZSkgPT4ge1xuICAgIGNvbnN0IHJlcGxhY2VEdXBsaWNhdGVzID0gdHJ1ZTtcblxuICAgIC8vIEdldCB1cmwgd2l0aG91dCBoYXNoXG4gICAgbGV0IHVybGhhc2ggPSAnJztcbiAgICBsZXQgdXJsTGVuZ3RoID0gdXJsLmxlbmd0aDtcbiAgICBpZiAodXJsLmluZGV4T2YoJyMnKSA+IDApIHtcbiAgICAgICAgdXJsTGVuZ3RoID0gdXJsLmluZGV4T2YoJyMnKTtcbiAgICAgICAgdXJsaGFzaCA9IHVybC5zdWJzdHJpbmcodXJsLmluZGV4T2YoJyMnKSwgdXJsLmxlbmd0aCk7XG4gICAgfVxuXG4gICAgY29uc3Qgc291cmNlVXJsID0gdXJsLnN1YnN0cmluZygwLCB1cmxMZW5ndGgpO1xuXG4gICAgLy8gR2V0IHVybCBzZWFyY2ggcGFydFxuICAgIGNvbnN0IHVybFBhcnRzID0gc291cmNlVXJsLnNwbGl0KCc/Jyk7XG4gICAgbGV0IG5ld1F1ZXJ5U3RyaW5nID0gJyc7XG5cbiAgICAvLyBHZXQgbmV3IHBhcmFtZXRlciBxdWVyeSBzdHJpbmdcbiAgICBpZiAodXJsUGFydHMubGVuZ3RoID4gMSkge1xuICAgICAgICBjb25zdCBwYXJhbWV0ZXJzID0gdXJsUGFydHNbMV0uc3BsaXQoJyYnKTtcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBwYXJhbWV0ZXJzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICBjb25zdCBwYXJhbWV0ZXJQYXJ0cyA9IHBhcmFtZXRlcnNbaV0uc3BsaXQoJz0nKTtcbiAgICAgICAgICAgIGlmICghKHJlcGxhY2VEdXBsaWNhdGVzICYmIHBhcmFtZXRlclBhcnRzWzBdID09PSBrZXkpKSB7XG4gICAgICAgICAgICAgICAgaWYgKG5ld1F1ZXJ5U3RyaW5nID09PSAnJykge1xuICAgICAgICAgICAgICAgICAgICBuZXdRdWVyeVN0cmluZyA9ICc/JztcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBuZXdRdWVyeVN0cmluZyArPSAnJic7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIG5ld1F1ZXJ5U3RyaW5nICs9IGAke3BhcmFtZXRlclBhcnRzWzBdfT0ke3BhcmFtZXRlclBhcnRzWzFdID8gcGFyYW1ldGVyUGFydHNbMV0gOiAnJ31gO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuICAgIGlmIChuZXdRdWVyeVN0cmluZyA9PT0gJycpIHtcbiAgICAgICAgbmV3UXVlcnlTdHJpbmcgPSAnPyc7XG4gICAgfVxuXG4gICAgLy8gQXBwZW5kIHRvIHVybFxuICAgIGlmIChhdFN0YXJ0KSB7XG4gICAgICAgIG5ld1F1ZXJ5U3RyaW5nID0gYD8ke2tleX09JHt2YWx1ZSArIChuZXdRdWVyeVN0cmluZy5sZW5ndGggPiAxID8gYCYke25ld1F1ZXJ5U3RyaW5nLnN1YnN0cmluZygxKX1gIDogJycpfWA7XG4gICAgfSBlbHNlIHtcbiAgICAgICAgaWYgKG5ld1F1ZXJ5U3RyaW5nICE9PSAnJyAmJiBuZXdRdWVyeVN0cmluZyAhPT0gJz8nKSB7XG4gICAgICAgICAgICBuZXdRdWVyeVN0cmluZyArPSAnJic7XG4gICAgICAgIH1cbiAgICAgICAgbmV3UXVlcnlTdHJpbmcgKz0gYCR7a2V5fT0ke3ZhbHVlIHx8ICcnfWA7XG4gICAgfVxuICAgIHJldHVybiB1cmxQYXJ0c1swXSArIG5ld1F1ZXJ5U3RyaW5nICsgdXJsaGFzaDtcbn07XG5cbmV4cG9ydCBjb25zdCByZW1vdmVRdWVyeVN0cmluZ1BhcmFtID0gKGtleTogc3RyaW5nLCBzb3VyY2VVUkw6IHN0cmluZykgPT4ge1xuICAgIGxldCBhbHRlcmVkVVJMID0gc291cmNlVVJMLnNwbGl0KCc/JylbMF07XG4gICAgbGV0IHBhcmFtOiBzdHJpbmc7XG4gICAgbGV0IHBhcmFtc0Fycjogc3RyaW5nW10gPSBbXTtcbiAgICBjb25zdCBxdWVyeVN0cmluZyA9IHNvdXJjZVVSTC5pbmRleE9mKCc/JykgIT09IC0xID8gc291cmNlVVJMLnNwbGl0KCc/JylbMV0gOiAnJztcbiAgICBpZiAocXVlcnlTdHJpbmcgIT09ICcnKSB7XG4gICAgICAgIHBhcmFtc0FyciA9IHF1ZXJ5U3RyaW5nLnNwbGl0KCcmJyk7XG4gICAgICAgIGZvciAobGV0IGkgPSBwYXJhbXNBcnIubGVuZ3RoIC0gMTsgaSA+PSAwOyBpIC09IDEpIHtcbiAgICAgICAgICAgIHBhcmFtID0gcGFyYW1zQXJyW2ldLnNwbGl0KCc9JylbMF07XG4gICAgICAgICAgICBpZiAocGFyYW0gPT09IGtleSkge1xuICAgICAgICAgICAgICAgIHBhcmFtc0Fyci5zcGxpY2UoaSwgMSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgYWx0ZXJlZFVSTCA9IGAke2FsdGVyZWRVUkx9PyR7cGFyYW1zQXJyLmpvaW4oJyYnKX1gO1xuICAgIH1cbiAgICByZXR1cm4gYWx0ZXJlZFVSTDtcbn07XG4iLCIvKipcbiAqIOmhr+ekuue1hOWlveeahOW5o+WIpeWtl+S4slxuICog5ZyL5YilIFRXOiBjdXJyZW5jeUZvcm1hdCgxMDAwLCAwKSAtLT4gTlQkIDEsMDAwXG4gKiDlnIvliKUgTVk6IGN1cnJlbmN5Rm9ybWF0KDEwMDAsIDIpIC0tPiBSTSAxLDAwMC4wMFxuICovXG5leHBvcnQgY29uc3QgY3VycmVuY3lGb3JtYXQgPSAodmFsdWU6IG51bWJlciwgZGVjaW1hbDogbnVtYmVyKTogc3RyaW5nID0+IHtcbiAgICBjb25zdCB7IE1XZWIgfSA9IHdpbmRvd1snbmluZXlpJ10gfHwge307XG4gICAgY29uc3QgY3VycmVuY3kgPSBNV2ViICYmIE1XZWIuRGVmYXVsdEN1cnJlbmN5IHx8ICdOVCQnO1xuICAgIGNvbnN0IGRpc3BsYXlWYWx1ZTogc3RyaW5nID1cbiAgICAgICAgZGVjaW1hbCA+IDBcbiAgICAgICAgICAgID8gdmFsdWUudG9GaXhlZChkZWNpbWFsKS5yZXBsYWNlKC9cXGQoPz0oXFxkezN9KStcXC4pL2csICckJiwnKVxuICAgICAgICAgICAgOiBuZXcgSW50bC5OdW1iZXJGb3JtYXQoKS5mb3JtYXQodmFsdWUpO1xuXG4gICAgcmV0dXJuIGAke2N1cnJlbmN5fSAke2Rpc3BsYXlWYWx1ZX1gO1xufVxuIiwiaW1wb3J0ICogYXMgZGF0ZUZvcm1hdFV0aWxpdHkgZnJvbSAnLi9kYXRlRm9ybWF0LnV0aWxpdHknO1xuaW1wb3J0ICogYXMgZGV2aWNlVXRpbGl0eSBmcm9tICcuL2RldmljZS51dGlsaXR5JztcbmltcG9ydCAqIGFzIHVzZXJBZ2VudFV0aWxpdHkgZnJvbSAnLi91c2VyQWdlbnQudXRpbGl0eSc7XG5pbXBvcnQgKiBhcyBydW50aW1lTW9kZVV0aWxpdHkgZnJvbSAnLi9ydW50aW1lTW9kZS51dGlsaXR5JztcbmltcG9ydCAqIGFzIGNvb2tpZVV0aWxpdHkgZnJvbSAnLi9jb29raWUudXRpbGl0eSc7XG5pbXBvcnQgKiBhcyB1cmxVdGlsaXR5IGZyb20gJy4vdXJsLnV0aWxpdHknO1xuaW1wb3J0ICogYXMgY3VycmVuY3lVdGlsaXR5IGZyb20gJy4vY3VycmVuY3kudXRpbGl0eSc7XG5cbmV4cG9ydCAqIGZyb20gJy4vZGF0ZUZvcm1hdC51dGlsaXR5JztcbmV4cG9ydCAqIGZyb20gJy4vZGV2aWNlLnV0aWxpdHknO1xuZXhwb3J0ICogZnJvbSAnLi91c2VyQWdlbnQudXRpbGl0eSc7XG5leHBvcnQgKiBmcm9tICcuL3J1bnRpbWVNb2RlLnV0aWxpdHknO1xuZXhwb3J0ICogZnJvbSAnLi9jb29raWUudXRpbGl0eSc7XG5leHBvcnQgKiBmcm9tICcuL3VybC51dGlsaXR5JztcbmV4cG9ydCAqIGZyb20gJy4vY3VycmVuY3kudXRpbGl0eSc7XG5cbmV4cG9ydCB7XG4gICAgZGF0ZUZvcm1hdFV0aWxpdHksXG4gICAgZGV2aWNlVXRpbGl0eSxcbiAgICB1c2VyQWdlbnRVdGlsaXR5LFxuICAgIHJ1bnRpbWVNb2RlVXRpbGl0eSxcbiAgICBjb29raWVVdGlsaXR5LFxuICAgIHVybFV0aWxpdHksXG4gICAgY3VycmVuY3lVdGlsaXR5LFxufTtcbiIsImltcG9ydCBjbGFzc05hbWVzIGZyb20gJ2NsYXNzbmFtZXMnO1xuaW1wb3J0IFJlYWN0LCB7IEZDLCB1c2VFZmZlY3QgfSBmcm9tICdyZWFjdCc7XG5pbXBvcnQgeyBydW50aW1lTW9kZVV0aWxpdHkgfSBmcm9tICdAdXRpbGl0aWVzL2luZGV4JztcblxuaW1wb3J0ICcuL21vZGFsLnNjc3MnO1xuXG5pbnRlcmZhY2UgSVByb3BzIHtcbiAgICBpc09wZW46IGJvb2xlYW47XG4gICAgaXNTaG93Q2xvc2U6IGJvb2xlYW47XG4gICAgaXNMb2FkaW5nPzogYm9vbGVhbjtcbiAgICBpc01hc2tPcGFjaXR5PzogYm9vbGVhbjtcbiAgICB0aXRsZT86IHN0cmluZztcbiAgICBjb25maXJtVGV4dD86IHN0cmluZztcbiAgICBjYW5jZWxUZXh0Pzogc3RyaW5nO1xuICAgIGN1c3RvbVN0eWxlPzogUmVhY3QuQ1NTUHJvcGVydGllcztcbiAgICBjdXN0b21Dc3NDbGFzcz86IHN0cmluZztcbiAgICBvbkNsb3NlTW9kYWw/OiAoKSA9PiBhbnk7XG4gICAgb25Db25maXJtTW9kYWw/OiAoKSA9PiBhbnk7XG4gICAgY2hpbGRyZW4/OiBSZWFjdC5SZWFjdE5vZGU7XG59O1xuXG4vKipcbiAqIOeVtumWi+WVn1BvcFVw6Y6W5L2P5bqV6YOoc2Nyb2xs6JmV55CGXG4gKi9cbmNvbnN0IGZyZWV6ZUJvZHkgPSAoaXNGaXhlZDogYm9vbGVhbikgPT4ge1xuICAgIGlmIChydW50aW1lTW9kZVV0aWxpdHkuY2hlY2tJc0NsaWVudFJlbmRlcigpKSB7XG4gICAgICAgIGlmIChpc0ZpeGVkKSB7XG4gICAgICAgICAgICB3aW5kb3cuZG9jdW1lbnQuYm9keS5jbGFzc0xpc3QuYWRkKCdmcmVlemUnKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHdpbmRvdy5kb2N1bWVudC5ib2R5LmNsYXNzTGlzdC5yZW1vdmUoJ2ZyZWV6ZScpO1xuICAgICAgICB9XG4gICAgfVxufTtcbi8qKlxuICog5b2I56qX5YWD5Lu2IFBvcHVwXG4gKiBAcGFyYW0gcHJvcHMgXG4gKi9cbmNvbnN0IE1vZGFsOkZDPElQcm9wcz4gPSBwcm9wcyA9PiB7XG4gICAgY29uc3QgeyBcbiAgICAgICAgaXNPcGVuLFxuICAgICAgICBpc1Nob3dDbG9zZSxcbiAgICAgICAgaXNNYXNrT3BhY2l0eSxcbiAgICAgICAgb25DbG9zZU1vZGFsLCBcbiAgICAgICAgb25Db25maXJtTW9kYWwsXG4gICAgICAgIGN1c3RvbVN0eWxlLCBcbiAgICAgICAgY3VzdG9tQ3NzQ2xhc3MsXG4gICAgICAgIHRpdGxlLFxuICAgICAgICBjaGlsZHJlbixcbiAgICAgICAgY2FuY2VsVGV4dCxcbiAgICAgICAgY29uZmlybVRleHRcbiAgICB9ID0gcHJvcHM7XG4gICAgXG4gICAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICAgICAgZnJlZXplQm9keShpc09wZW4pO1xuICAgIH0sIFtpc09wZW5dKTtcblxuICAgIHJldHVybiAoXG4gICAgICAgIDxkaXYgY2xhc3NOYW1lPXtjbGFzc05hbWVzKCdtb2RhbCcsIGlzT3BlbiA9PT0gdHJ1ZSA/ICdtb2RhbC0tb3BlbicgOiAnJyl9PlxuICAgICAgICAgICAge2lzT3BlbiAmJiAoXG4gICAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU9e2NsYXNzTmFtZXMoJ21vZGFsX19iYWNrZHJvcCcsIGlzTWFza09wYWNpdHkgPyAnbW9kYWxfX2JhY2tkcm9wLS1vcGFjaXR5JyA6ICcnKX1cbiAgICAgICAgICAgICAgICAgICAgb25DbGljaz17b25DbG9zZU1vZGFsfVxuICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICApfVxuICAgICAgICAgICAge2lzT3BlbiAmJiAoXG4gICAgICAgICAgICAgICAgPGRpdiBzdHlsZT17Y3VzdG9tU3R5bGV9IGNsYXNzTmFtZT17Y2xhc3NOYW1lcygnbW9kYWwtLWRlZmF1bHQnLCBjdXN0b21Dc3NDbGFzcyB8fCAnJyl9PlxuICAgICAgICAgICAgICAgICAgICB7aXNTaG93Q2xvc2UgJiYgKFxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJtb2RhbF9faGVhZGVyXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgY2xhc3NOYW1lPVwiY2xvc2VcIiBvbkNsaWNrPXtvbkNsb3NlTW9kYWx9PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aSBjbGFzc05hbWU9XCJpY29uIGljb24tc2xpbS1jbG9zZVwiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9hPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt0aXRsZSAmJiA8aDIgY2xhc3NOYW1lPVwibW9kYWxfX3RpdGxlXCI+e3RpdGxlfTwvaDI+fVxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICl9XG4gICAgICAgICAgICAgICAgICAgIHshY2hpbGRyZW4gJiYgPGRpdiBjbGFzc05hbWU9XCJtb2RhbF9fbG9hZGluZyBibGFjay1zcGlubmVyIFwiIC8+fVxuICAgICAgICAgICAgICAgICAgICB7Y2hpbGRyZW4gJiYgPGRpdiBjbGFzc05hbWU9XCJtb2RhbF9fYm9keVwiPntjaGlsZHJlbn08L2Rpdj59XG4gICAgICAgICAgICAgICAgICAgIHsvKiDlpoLmnpzmspLmnInluLZidXR0b27mloflrZfvvIzliYfkuI3poa/npLpmb290ZXLljYDloYogKi99XG4gICAgICAgICAgICAgICAgICAgIHtjYW5jZWxUZXh0IHx8IGNvbmZpcm1UZXh0ID8gKFxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJtb2RhbF9fZm9vdGVyXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge2NhbmNlbFRleHQgJiYgKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBjbGFzc05hbWU9XCJjYW5jZWwtYnRuXCIgb25DbGljaz17b25DbG9zZU1vZGFsfT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtjYW5jZWxUZXh0fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtjb25maXJtVGV4dCAmJiAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIGNsYXNzTmFtZT1cImNvbmZpcm0tYnRuXCIgb25DbGljaz17b25Db25maXJtTW9kYWx9PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2NvbmZpcm1UZXh0fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICkgOiBudWxsfVxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgKX1cbiAgICAgICAgPC9kaXY+XG4gICAgKTtcbn07XG5cbk1vZGFsLmRlZmF1bHRQcm9wcyA9IHtcbiAgICBpc09wZW46IGZhbHNlLFxuICAgIGlzU2hvd0Nsb3NlOiB0cnVlLFxuICAgIGlzTWFza09wYWNpdHk6IHRydWUsXG4gICAgdGl0bGU6ICcnLFxuICAgIGNvbmZpcm1UZXh0OiAnJyxcbiAgICBjYW5jZWxUZXh0OiAnJ1xufVxuXG5leHBvcnQgZGVmYXVsdCBNb2RhbDtcbiIsIi8qKlxuICog5Y+W5b6X5L2/55So6ICF55uu5YmN6YG45pOH55qE6Kqe6KiAXG4gKi9cbmV4cG9ydCBjb25zdCBnZXRDdXJyZW50TG9jYWxlID0gKCkgPT4ge1xuICAgIGNvbnN0IG5pbmV5aSA9IHdpbmRvd1snbmluZXlpJ10gfHwge307XG4gICAgY29uc3QgbXdlYkN1cnJlbnRMb2NhbGUgPSBuaW5leWkuTVdlYiAmJiBuaW5leWkuTVdlYi5DdXJyZW50TG9jYWxlIHx8ICcnO1xuICAgIGNvbnN0IGN1cnJlbnRMb2NhbGUgPSBtd2ViQ3VycmVudExvY2FsZSA/IG13ZWJDdXJyZW50TG9jYWxlIDogbmluZXlpLmRlcGVuZGVuY2llcyAmJiBuaW5leWkuZGVwZW5kZW5jaWVzLmxvY2FsZSB8fCAnJztcbiAgICByZXR1cm4gY3VycmVudExvY2FsZTtcbn0iLCJpbXBvcnQgKiBhcyBfIGZyb20gJ3VuZGVyc2NvcmUnO1xuaW1wb3J0ICogYXMgdXJsVXRpbGl0eSBmcm9tICcuL3VybC51dGlsaXR5JztcblxuLy8g5q2k5qqU5qGI5LiN5bCN5aSW6Ly45Ye677yM5YOF6ZmQIHNwYXJrLWNvcmXlhafkvb/nlKhcbmltcG9ydCB7IGdldEN1cnJlbnRMb2NhbGUgfSBmcm9tICcuL2dsb2JhbFBhcmFtZXRlci51dGlsaXR5JztcblxuLy8g6Z2c5oWL5ZyW5qqU6Lev5b6RXG5jb25zdCBDT05URU5UX0lNQUdFUyA9ICcvY29udGVudHMvaW1hZ2VzJztcblxuLyoqXG4gKiDoqK3lrppBUEkgSG9zdFxuICovXG5jb25zdCBnZXRBcGlDb25maWcgPSAoKSA9PiB7XG4gICAgY29uc3QgbmluZXlpID0gd2luZG93WyduaW5leWknXSB8fCB7fTtcblxuICAgIC8vIOWFqOermXdlYmFwaSBjZG5cbiAgICBjb25zdCBpc0VuYWJsZUNkbkFwaSA9IF8ucHJvcGVydHkoJ2RlcGVuZGVuY2llcy5hcGlDb25maWcuaXNFbmFibGVDZG5BcGknLnNwbGl0KCcuJykpKG5pbmV5aSk7XG4gICAgY29uc3QgY2RuQXBpSG9zdCA9IF8ucHJvcGVydHkoJ2RlcGVuZGVuY2llcy5hcGlDb25maWcuY2RuQXBpSG9zdCcuc3BsaXQoJy4nKSkobmluZXlpKTtcblxuICAgIHJldHVybiB7XG4gICAgICAgIGlzRW5hYmxlQ2RuQXBpOiBpc0VuYWJsZUNkbkFwaSB8fCBmYWxzZSxcbiAgICAgICAgbGFuZzogZ2V0Q3VycmVudExvY2FsZSgpLFxuICAgICAgICBhcGlIb3N0OiAnJyxcbiAgICAgICAgY2RuQXBpSG9zdDogY2RuQXBpSG9zdCB8fCAnLycsXG4gICAgICAgIGNkblNvdXJjZUhvc3Q6IChuaW5leWkuTVdlYiAmJiBuaW5leWkuTVdlYi5KYXZzU2NyaXB0Q0ROKSB8fCAnJyxcbiAgICB9O1xufTtcblxuLyoqXG4gKiDntYTlkIhNV2ViIEFwaSBVcmwg5pa55rOVXG4gKiBAcGFyYW0gYXBpUGF0aFxuICovXG5leHBvcnQgY29uc3QgZ2V0TXdlYkFwaVVybCA9IChhcGlQYXRoOiBzdHJpbmcsIGlzU3dpdGNoQ2RuOiBib29sZWFuID0gZmFsc2UpID0+IHtcbiAgICBjb25zdCBhcGlDb25maWcgPSBnZXRBcGlDb25maWcoKTtcbiAgICBsZXQgYXBpSG9zdCA9IGFwaUNvbmZpZy5pc0VuYWJsZUNkbkFwaSAmJiBpc1N3aXRjaENkbiA/IGFwaUNvbmZpZy5jZG5BcGlIb3N0IDogYXBpQ29uZmlnLmFwaUhvc3Q7XG4gICAgbGV0IGFwaVVybCA9IGAke2FwaUhvc3R9L3dlYmFwaS8ke2FwaVBhdGh9YDtcblxuICAgIC8vIOWIh+aPm+iqnuezu1xuICAgIGlmIChhcGlDb25maWcubGFuZyAhPT0gJycpIHtcbiAgICAgICAgYXBpVXJsID0gdXJsVXRpbGl0eS5hcHBlbmRQYXJhbWV0ZXIoYXBpVXJsLCAnbGFuZycsIGFwaUNvbmZpZy5sYW5nKTtcbiAgICB9XG5cbiAgICByZXR1cm4gYXBpVXJsO1xufTtcblxuLyoqXG4gKiDlj5blvpflr6bpq5TpnZzmhYvos4fmupDot6/lvpFcbiAqIEBwYXJhbSBwYXRoXG4gKi9cbmV4cG9ydCBjb25zdCBnZXRDb250ZW50SW1hZ2VQYXRoID0gKHBhdGg6IHN0cmluZykgPT4ge1xuICAgIGNvbnN0IG5pbmV5aSA9IHdpbmRvd1snbmluZXlpJ10gfHwge307XG5cbiAgICBpZiAoIW5pbmV5aS5NV2ViKSB7XG4gICAgICAgIHJldHVybiBDT05URU5UX0lNQUdFUyArIHBhdGg7XG4gICAgfVxuXG4gICAgY29uc3QgY2RuRG9tYWluID0gbmluZXlpLk1XZWIuQ3NzQ0RORG9tYWluIHx8ICcnO1xuICAgIHJldHVybiBgJHtjZG5Eb21haW59L1YyL1NjcmlwdHMvZGlzdCR7Q09OVEVOVF9JTUFHRVN9JHtwYXRofWA7XG59O1xuIiwiaW1wb3J0ICogYXMgUmVhY3QgZnJvbSAncmVhY3QnO1xuaW1wb3J0IHsgZ2V0Q29udGVudEltYWdlUGF0aCB9IGZyb20gJ0B1dGlsaXRpZXMvcGF0aC51dGlsaXR5JztcblxuaW1wb3J0ICcuL2xvYWRpbmcuc2Nzcyc7XG5cbmludGVyZmFjZSBQcm9wcyB7XG4gICAgaXNMb2FkaW5nOiBib29sZWFuO1xufVxuXG4vKipcbiAqIExvYWRpbmflhYPku7ZcbiAqL1xuY29uc3QgTG9hZGluZzogUmVhY3QuRkM8UHJvcHM+ID0gKHByb3BzKSA9PiB7XG4gICAgY29uc3QgeyBpc0xvYWRpbmcgfSA9IHByb3BzO1xuICAgIHJldHVybiAoXG4gICAgICAgIGlzTG9hZGluZyAmJiAoXG4gICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImxvYWRpbmdcIj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImxvYWRpbmdfX2JhY2tkcm9wXCIgLz5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImxvYWRpbmdfX2NvbnRlbnRcIj5cbiAgICAgICAgICAgICAgICAgICAgPGZpZ3VyZSBjbGFzc05hbWU9XCJsb2FkaW5nX19pbWFnZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGltZyBzcmM9e2dldENvbnRlbnRJbWFnZVBhdGgoJy9hamF4LWxvYWRlci5naWYnKX0gd2lkdGg9XCIyMHB4XCIgaGVpZ2h0PVwiMjBweFwiIC8+XG4gICAgICAgICAgICAgICAgICAgIDwvZmlndXJlPlxuICAgICAgICAgICAgICAgICAgICBsb2FkaW5nXG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgKVxuICAgICk7XG59O1xuXG5leHBvcnQgZGVmYXVsdCBMb2FkaW5nO1xuIiwiZXhwb3J0IGNvbnN0IFRSQU5TTEFURV9MT0NBTEVfS0VZID0ge1xuICAgIEZST05URU5EOiB7XG4gICAgICAgIExJQjoge1xuICAgICAgICAgICAgUVVBTlRJVFk6ICdmcm9udGVuZC5saWIuYWRkX3RvX2NhcnQucXVhbnRpdHknLFxuICAgICAgICAgICAgTElNSVRfTUlOX1ZBTFVFX01TRzogJ2Zyb250ZW5kLmxpYi5hZGRfdG9fY2FydC5saW1pdF9taW5fdmFsdWVfbXNnJyxcbiAgICAgICAgICAgIExJTUlUX01BWF9WQUxVRV9NU0c6ICdmcm9udGVuZC5saWIuYWRkX3RvX2NhcnQubGltaXRfbWF4X3ZhbHVlX21zZycsXG4gICAgICAgICAgICBBREQ6ICdmcm9udGVuZC5saWIuYWRkX3RvX2NhcnQuYWRkJyxcbiAgICAgICAgICAgIEFERF9DQVJUOiAnZnJvbnRlbmQubGliLmFkZF90b19jYXJ0LmFkZF9jYXJ0JyxcbiAgICAgICAgICAgIENIRUNLX09VVDogJ2Zyb250ZW5kLmxpYi5hZGRfdG9fY2FydC5jaGVja19vdXQnLFxuICAgICAgICAgICAgTk9UX1lFVF9PUEVOX1NBTEU6ICdmcm9udGVuZC5saWIuYWRkX3RvX2NhcnQubm90X3lldF9vcGVuX3NhbGUnLFxuICAgICAgICAgICAgT05MWV9PTl9BUFA6ICdmcm9udGVuZC5saWIuYWRkX3RvX2NhcnQub25seV9vbl9hcHAnLFxuICAgICAgICAgICAgU0hBUkVfQU5EX0JVWTogJ2Zyb250ZW5kLmxpYi5hZGRfdG9fY2FydC5zaGFyZV9hbmRfYnV5JyxcbiAgICAgICAgICAgIFNPTERfT1VUX0FORF9SRVBMRU5JU0hFRDogJ2Zyb250ZW5kLmxpYi5hZGRfdG9fY2FydC5zb2xkX291dF9hbmRfcmVwbGVuaXNoZWQnLFxuICAgICAgICAgICAgT1VUX09GX1NUT0NLOiAnZnJvbnRlbmQubGliLmFkZF90b19jYXJ0Lm91dF9vZl9zdG9jaycsXG4gICAgICAgICAgICBVUERBVEU6ICdmcm9udGVuZC5saWIuYWRkX3RvX2NhcnQudXBkYXRlJyxcbiAgICAgICAgICAgIFNFTEVDVF9PUFRJT046ICdmcm9udGVuZC5saWIuYWRkX3RvX2NhcnQuc2VsZWN0X29wdGlvbicsXG4gICAgICAgICAgICBQTEVBU0VfU0VMRUNUX1BVUkNIQVNFX01FVEhPRDogJ2Zyb250ZW5kLmxpYi5hZGRfdG9fY2FydC5wbGVhc2Vfc2VsZWN0X3B1cmNoYXNlX21ldGhvZCcsXG4gICAgICAgICAgICBQVVJDSEFTRV9NRVRIT0RfUE9JTlQ6ICdmcm9udGVuZC5saWIuYWRkX3RvX2NhcnQucHVyY2hhc2VfbWV0aG9kX3BvaW50JyxcbiAgICAgICAgICAgIENPTkZJUk06ICdmcm9udGVuZC5saWIuYWRkX3RvX2NhcnQuY29uZmlybScsXG4gICAgICAgICAgICBUT0FTVDoge1xuICAgICAgICAgICAgICAgIFNVQk1JVF9TVUNDRVNTOiAnZnJvbnRlbmQubGliLnRvYXN0LnN1Ym1pdF9zdWNjZXNzJyxcbiAgICAgICAgICAgICAgICBTVUJNSVRfRVJST1I6ICdmcm9udGVuZC5saWIudG9hc3Quc3VibWl0X2Vycm9yJyxcbiAgICAgICAgICAgICAgICBBRERfU1VDQ0VTUzogJ2Zyb250ZW5kLmxpYi50b2FzdC5hZGRfc3VjY2VzcycsXG4gICAgICAgICAgICAgICAgSVNfQ0xPU0VEOiAnZnJvbnRlbmQubGliLnRvYXN0LmlzX2Nsb3NlZCcsXG4gICAgICAgICAgICAgICAgTE9HSU5fU1VDQ0VTUzogJ2Zyb250ZW5kLmxpYi50b2FzdC5sb2dpbl9zdWNjZXNzJyxcbiAgICAgICAgICAgICAgICBMT0dPVVRfU1VDQ0VTUzogJ2Zyb250ZW5kLmxpYi50b2FzdC5sb2dvdXRfc3VjY2VzcycsXG4gICAgICAgICAgICAgICAgTk9fU1RBUlQ6ICdmcm9udGVuZC5saWIudG9hc3Qubm9fc3RhcnQnLFxuICAgICAgICAgICAgICAgIE5PVF9GT1VORDogJ2Zyb250ZW5kLmxpYi50b2FzdC5ub3RfZm91bmQnLFxuICAgICAgICAgICAgICAgIFJFTU9WRV9TVUNDRVNTOiAnZnJvbnRlbmQubGliLnRvYXN0LnJlbW92ZV9zdWNjZXNzJyxcbiAgICAgICAgICAgICAgICBTT0xEX09VVDogJ2Zyb250ZW5kLmxpYi50b2FzdC5zb2xkX291dCcsXG4gICAgICAgICAgICAgICAgVU5fTElTVElORzogJ2Zyb250ZW5kLmxpYi50b2FzdC51bl9saXN0aW5nJyxcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbn07XG4iLCJpbXBvcnQgY2xhc3NOYW1lcyBmcm9tICdjbGFzc25hbWVzJztcbmltcG9ydCAqIGFzIFJlYWN0IGZyb20gJ3JlYWN0JztcbmltcG9ydCB7IGZpbmQgfSBmcm9tICd1bmRlcnNjb3JlJztcbmltcG9ydCB7IFRSQU5TTEFURV9MT0NBTEVfS0VZIH0gZnJvbSAnQGNvbnN0YW50cy90cmFuc2xhdGlvbi5jb25zdGFudHMnO1xuaW1wb3J0IHsgSTE4biB9IGZyb20gJ3JlYWN0LXJlZHV4LWkxOG4nO1xuXG5pbXBvcnQgJy4vdG9hc3Quc2Nzcyc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgVG9hc3RQcm9wcyB7XG4gICAgaXNPcGVuPzogYm9vbGVhbjtcbiAgICBjdXN0b21Dc3NDbGFzcz86IHN0cmluZztcbiAgICB0eXBlPzogc3RyaW5nO1xuICAgIHN0YXR1cz86IHN0cmluZztcbiAgICBtZXNzYWdlPzogc3RyaW5nO1xuICAgIGFmdGVyQ2xvc2U/OiAoKSA9PiBhbnk7XG4gICAgZGVsYXk/OiBudW1iZXI7XG59XG5cbi8vIOW7uueri+ioiuaBr+a4heWWrlxuY29uc3QgbWVzc2FnZUxpc3QgPSBbXG4gICAge1xuICAgICAgICB0eXBlOiAnc3VjY2VzcycsXG4gICAgICAgIHN0YXR1czogJ0FkZFN1Y2Nlc3MnLFxuICAgICAgICBtZXNzYWdlOiBUUkFOU0xBVEVfTE9DQUxFX0tFWS5GUk9OVEVORC5MSUIuVE9BU1QuQUREX1NVQ0NFU1NcbiAgICB9LFxuICAgIHtcbiAgICAgICAgdHlwZTogJ3N1Y2Nlc3MnLFxuICAgICAgICBzdGF0dXM6ICdSZW1vdmVTdWNjZXNzJyxcbiAgICAgICAgbWVzc2FnZTogVFJBTlNMQVRFX0xPQ0FMRV9LRVkuRlJPTlRFTkQuTElCLlRPQVNULlJFTU9WRV9TVUNDRVNTXG4gICAgfSxcbiAgICB7XG4gICAgICAgIHR5cGU6ICdzdWNjZXNzJyxcbiAgICAgICAgc3RhdHVzOiAnU3VibWl0U3VjY2VzcycsXG4gICAgICAgIG1lc3NhZ2U6IFRSQU5TTEFURV9MT0NBTEVfS0VZLkZST05URU5ELkxJQi5UT0FTVC5TVUJNSVRfU1VDQ0VTU1xuICAgIH0sXG4gICAge1xuICAgICAgICB0eXBlOiAnd2FybmluZycsXG4gICAgICAgIHN0YXR1czogJ1NvbGRPdXQnLFxuICAgICAgICBtZXNzYWdlOiBUUkFOU0xBVEVfTE9DQUxFX0tFWS5GUk9OVEVORC5MSUIuVE9BU1QuU09MRF9PVVRcbiAgICB9LFxuICAgIHtcbiAgICAgICAgdHlwZTogJ3dhcm5pbmcnLFxuICAgICAgICBzdGF0dXM6ICdOb1N0YXJ0JyxcbiAgICAgICAgbWVzc2FnZTogVFJBTlNMQVRFX0xPQ0FMRV9LRVkuRlJPTlRFTkQuTElCLlRPQVNULk5PX1NUQVJUXG4gICAgfSxcbiAgICB7XG4gICAgICAgIHR5cGU6ICd3YXJuaW5nJyxcbiAgICAgICAgc3RhdHVzOiAnTm90Rm91bmQnLFxuICAgICAgICBtZXNzYWdlOiBUUkFOU0xBVEVfTE9DQUxFX0tFWS5GUk9OVEVORC5MSUIuVE9BU1QuTk9UX0ZPVU5EXG4gICAgfSxcbiAgICB7XG4gICAgICAgIHR5cGU6ICd3YXJuaW5nJyxcbiAgICAgICAgc3RhdHVzOiAnSXNDbG9zZWQnLFxuICAgICAgICBtZXNzYWdlOiBUUkFOU0xBVEVfTE9DQUxFX0tFWS5GUk9OVEVORC5MSUIuVE9BU1QuSVNfQ0xPU0VEXG4gICAgfSxcbiAgICB7XG4gICAgICAgIHR5cGU6ICd3YXJuaW5nJyxcbiAgICAgICAgc3RhdHVzOiAnVW5MaXN0aW5nJyxcbiAgICAgICAgbWVzc2FnZTogVFJBTlNMQVRFX0xPQ0FMRV9LRVkuRlJPTlRFTkQuTElCLlRPQVNULlVOX0xJU1RJTkdcbiAgICB9LFxuICAgIHtcbiAgICAgICAgdHlwZTogJ3dhcm5pbmcnLFxuICAgICAgICBzdGF0dXM6ICdTdWJtaXRFcnJvcicsXG4gICAgICAgIG1lc3NhZ2U6IFRSQU5TTEFURV9MT0NBTEVfS0VZLkZST05URU5ELkxJQi5UT0FTVC5TVUJNSVRfRVJST1JcbiAgICB9LFxuICAgIHtcbiAgICAgICAgdHlwZTogJ3dhcm5pbmcnLFxuICAgICAgICBzdGF0dXM6ICdFcnJvcicsXG4gICAgICAgIG1lc3NhZ2U6ICdzZXJ2ZXIgZXJyb3InLFxuICAgIH1cbl07XG5cbi8qKlxuICog5Y+W5b6X6aGv56S66KiK5oGv54mp5Lu2XG4gKiBAcGFyYW0gc3RhdHVzXG4gKi9cbmV4cG9ydCBjb25zdCBnZXRUb2FzdE1lc3NhZ2VJdGVtID0gKHN0YXR1czogc3RyaW5nKSA9PiBmaW5kKG1lc3NhZ2VMaXN0LCBpdGVtID0+IGl0ZW0uc3RhdHVzID09PSBzdGF0dXMpO1xuXG5cbi8qKlxuICogVG9hc3TlhYPku7ZcbiAqL1xuY2xhc3MgVG9hc3QgZXh0ZW5kcyBSZWFjdC5Db21wb25lbnQ8VG9hc3RQcm9wcywgYW55PiB7XG4gICAgcHJvdGVjdGVkIHN0YXRpYyBkZWZhdWx0UHJvcHMgPSB7XG4gICAgICAgIGlzT3BlbjogZmFsc2UsXG4gICAgICAgIGN1c3RvbUNzc0NsYXNzOiAnJyxcbiAgICAgICAgYWZ0ZXJDbG9zZTogKCkgPT4ge30sXG4gICAgICAgIHR5cGU6ICcnLFxuICAgICAgICBtZXNzYWdlOiAnJyxcbiAgICAgICAgZGVsYXk6IDI1MDBcbiAgICB9O1xuICAgIC8vIOaIkOWKn+aoo+W8j1xuICAgIHByaXZhdGUgc3VjY2Vzc0NsYXNzOiBzdHJpbmcgPSAnaWNvbiBpY29uLWNoZWNrLXNlbGVjdGVkIHRvYXN0X19pY29uLS1zdWNjZXNzJztcbiAgICAvLyDorablkYrmqKPlvI9cbiAgICBwcml2YXRlIHdhcm5pbmdDbGFzczogc3RyaW5nID0gJ2ljb24tZWRpdG9yIGljb24tZWRpdG9yLWljb25fY29tbW9uX2FsZXJ0X3NvbGlkIHRvYXN0X19pY29uLS13YXJuaW5nJztcblxuICAgIGNvbnN0cnVjdG9yKHByb3BzOiBUb2FzdFByb3BzKSB7XG4gICAgICAgIHN1cGVyKHByb3BzKTtcbiAgICAgICAgdGhpcy5zdGF0ZSA9IHsgaXNPcGVuOiB0aGlzLnByb3BzLmlzT3BlbiwgYW5pbWF0aW9uRGVsYXk6ICcwcycgfTtcbiAgICB9XG5cbiAgICBwdWJsaWMgY29tcG9uZW50V2lsbFJlY2VpdmVQcm9wcyhuZXh0UHJvcHM6IFRvYXN0UHJvcHMpIHtcbiAgICAgICAgaWYgKG5leHRQcm9wcy5pc09wZW4gJiYgdGhpcy5zdGF0ZS5pc09wZW4gIT09IG5leHRQcm9wcy5pc09wZW4pIHtcbiAgICAgICAgICAgIHRoaXMuc2V0U3RhdGUoeyBpc09wZW46IHRydWUgfSwgKCkgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IGFuaW1hdGlvbkRlbGF5VGltZSA9IG5leHRQcm9wcy5kZWxheSA+IDEwMDAgPyBgJHsobmV4dFByb3BzLmRlbGF5IC0gMTAwMCkgLyAxMDAwfXNgIDogJzFzJztcbiAgICAgICAgICAgICAgICB0aGlzLnNldFN0YXRlKHsgYW5pbWF0aW9uRGVsYXk6IGFuaW1hdGlvbkRlbGF5VGltZSB9KTtcbiAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zZXRTdGF0ZSh7IGlzT3BlbjogZmFsc2UgfSk7XG4gICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLnByb3BzLmFmdGVyQ2xvc2UpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMucHJvcHMuYWZ0ZXJDbG9zZSgpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSwgdGhpcy5wcm9wcy5kZWxheSk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgIH1cbiAgICAvKipcbiAgICAgKiDliIfmj5vpoa/npLpJY29u6JmV55CGXG4gICAgICovXG4gICAgcHVibGljIGNoYW5nZUljb25IYW5kbGUgPSAodHlwZTogc3RyaW5nKSA9PiB7XG4gICAgICAgIGxldCBjbGFzc05hbWUgPSAnJztcbiAgICAgICAgaWYgKHR5cGUgPT09ICdzdWNjZXNzJykge1xuICAgICAgICAgICAgY2xhc3NOYW1lID0gdGhpcy5zdWNjZXNzQ2xhc3M7XG4gICAgICAgIH0gZWxzZSBpZiAodHlwZSA9PT0gJ3dhcm5pbmcnKSB7XG4gICAgICAgICAgICBjbGFzc05hbWUgPSB0aGlzLndhcm5pbmdDbGFzcztcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gY2xhc3NOYW1lO1xuICAgIH07XG5cbiAgICBwdWJsaWMgcmVuZGVyKCkge1xuICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9e2NsYXNzTmFtZXMoJ3RvYXN0Jyl9PlxuICAgICAgICAgICAgICAgIHt0aGlzLnN0YXRlLmlzT3BlbiAmJiAoXG4gICAgICAgICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT17Y2xhc3NOYW1lcygndG9hc3QtLWJhY2tkcm9wJywgeyAndG9hc3QtLWZhZGUtb3V0JzogdGhpcy5wcm9wcy5pc09wZW4gfSl9XG4gICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT17eyBhbmltYXRpb25EZWxheTogdGhpcy5zdGF0ZS5hbmltYXRpb25EZWxheSB9fVxuICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICl9XG4gICAgICAgICAgICAgICAge3RoaXMuc3RhdGUuaXNPcGVuICYmIChcbiAgICAgICAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPXtjbGFzc05hbWVzKCd0b2FzdC0tZGVmYXVsdCcsIHRoaXMucHJvcHMuY3VzdG9tQ3NzQ2xhc3MgfHwgJycsIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAndG9hc3QtLWZhZGUtb3V0JzogdGhpcy5wcm9wcy5pc09wZW5cbiAgICAgICAgICAgICAgICAgICAgICAgIH0pfVxuICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9e3sgYW5pbWF0aW9uRGVsYXk6IHRoaXMuc3RhdGUuYW5pbWF0aW9uRGVsYXkgfX0+XG4gICAgICAgICAgICAgICAgICAgICAgICB7dGhpcy5wcm9wcy5tZXNzYWdlICYmIChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInRvYXN0LS1jb250ZW50XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt0aGlzLnByb3BzLnR5cGUgJiYgKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3NOYW1lPXtjbGFzc05hbWVzKCd0b2FzdF9faWNvbicsIHRoaXMuY2hhbmdlSWNvbkhhbmRsZSh0aGlzLnByb3BzLnR5cGUpKX0gLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3RoaXMucHJvcHMubWVzc2FnZX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICl9XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICl9XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgKTtcbiAgICB9XG59XG5cbmV4cG9ydCBkZWZhdWx0IFRvYXN0O1xuIiwiaW1wb3J0ICogYXMgUmVhY3QgZnJvbSAncmVhY3QnO1xuaW1wb3J0IHsgZm9ybWF0TW9uZXkgfSBmcm9tICdhY2NvdW50aW5nJztcbmltcG9ydCBzdHlsZWQgZnJvbSAnc3R5bGVkLWNvbXBvbmVudHMnO1xuaW1wb3J0IF8gZnJvbSAndW5kZXJzY29yZSc7XG5cbmludGVyZmFjZSBQcm9wcyB7XG4gICAgaXNUaHJvdWdoPzogYm9vbGVhbjtcbiAgICBkZWNpbWFsOiBudW1iZXI7XG4gICAgdmFsdWU6IG51bWJlcjtcbiAgICBzeW1ib2w6IHN0cmluZztcbiAgICByYXRlOiBudW1iZXI7XG4gICAgZGlzYWJsZVRoZW1lPzogYm9vbGVhbjtcbiAgICBuZWdhdGl2ZVN5bWJvbFByZWZpeD86IGJvb2xlYW47XG59XG5cbmNvbnN0IFdyYXBwZXIgPSBzdHlsZWQuZGl2PHsgaXNUaHJvdWdoOiBib29sZWFuOyBkaXNhYmxlVGhlbWU6IGJvb2xlYW47IH0+YFxuICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgICB0ZXh0LWRlY29yYXRpb246ICR7cHJvcHMgPT4gKHByb3BzLmlzVGhyb3VnaCA/ICdsaW5lLXRocm91Z2gnIDogJ25vbmUnICl9O1xuICAgIGNvbG9yOiAke3Byb3BzID0+IChwcm9wcy5kaXNhYmxlVGhlbWUgfHwgXy5pc0VtcHR5KHByb3BzLnRoZW1lKSA/ICdpbmhlcml0JyA6IHByb3BzLnRoZW1lLmdlbmVyYWxTdHlsZS5tb25leUNvbG9yKX07XG5gO1xuXG4vKipcbiAqIOmhr+ekuuW5o+WIpeWFg+S7tlxuICovXG5jb25zdCBDdXJyZW5jeTogUmVhY3QuRkM8UHJvcHM+ID0gKHsgaXNUaHJvdWdoID0gZmFsc2UsIGRlY2ltYWwgPSAwLCB2YWx1ZSA9IDAsIHN5bWJvbCA9ICckJywgcmF0ZSA9IDEsIGRpc2FibGVUaGVtZSA9IGZhbHNlLCBuZWdhdGl2ZVN5bWJvbFByZWZpeCA9IGZhbHNlIH0pID0+IHtcbiAgICBsZXQgY3VycmVuY3lGb3JtYXQgPSB7XG4gICAgICAgIHBvczogJyVzJXYnLFxuICAgICAgICBuZWc6IG5lZ2F0aXZlU3ltYm9sUHJlZml4ID8gJy0lcyV2JyA6ICclcy0ldicsXG4gICAgICAgIHplcm86ICclcyV2J1xuICAgIH07XG5cbiAgICByZXR1cm4gKFxuICAgICAgICA8V3JhcHBlciBpc1Rocm91Z2g9e2lzVGhyb3VnaH0gZGlzYWJsZVRoZW1lPXtkaXNhYmxlVGhlbWV9PlxuICAgICAgICAgICAge3R5cGVvZiB2YWx1ZSA9PT0gJ251bWJlcicgJiZcbiAgICAgICAgICAgICAgICBmb3JtYXRNb25leSh2YWx1ZSAqIHJhdGUsIHsgc3ltYm9sLCBwcmVjaXNpb246IGRlY2ltYWwsIGZvcm1hdDogY3VycmVuY3lGb3JtYXQgfSlcbiAgICAgICAgICAgIH1cbiAgICAgICAgPC9XcmFwcGVyPlxuICAgIClcbn07XG5cbmV4cG9ydCBkZWZhdWx0IEN1cnJlbmN5O1xuIiwiY29uc3QgY2xlYXJGaXggPSBgXG4gICY6YmVmb3JlLCAmOmFmdGVyIHtcbiAgICBjb250ZW50OiBcIlwiO1xuICAgIGRpc3BsYXk6IHRhYmxlO1xuICAgIGNsZWFyOiBib3RoO1xuICB9XG5gO1xuXG5leHBvcnQgZGVmYXVsdCBjbGVhckZpeDtcbiIsImltcG9ydCAqIGFzIF8gZnJvbSAndW5kZXJzY29yZSc7XG5cbmV4cG9ydCBjb25zdCB0ZXh0Q29sb3IgPSAocHJvcHMpID0+IHtcbiAgICBjb25zdCB7IHRoZW1lIH0gPSBwcm9wcztcbiAgICBpZighXy5pc0VtcHR5KHRoZW1lKSkge1xuICAgICAgICByZXR1cm4gdGhlbWUuYnV0dG9uU3R5bGUucHJpbWFyeUJ0blRleHRDb2xvcjtcbiAgICB9IGVsc2Uge1xuICAgICAgICByZXR1cm4gJyNmZmYnO1xuICAgIH1cbn07XG5cbmV4cG9ydCBjb25zdCBiYWNrZ3JvdW5kQ29sb3IgPSAocHJvcHMpID0+IHtcbiAgICBjb25zdCB7IHRoZW1lIH0gPSBwcm9wcztcbiAgICBpZighXy5pc0VtcHR5KHRoZW1lKSkge1xuICAgICAgICByZXR1cm4gdGhlbWUuYnV0dG9uU3R5bGUucHJpbWFyeUJ0bkJnQ29sb3I7XG4gICAgfSBlbHNlIHtcbiAgICAgICAgcmV0dXJuICcjZmY1MzUzJztcbiAgICB9O1xufVxuXG5leHBvcnQgY29uc3QgYm9yZGVyQ29sb3IgPSAocHJvcHMpID0+IHtcbiAgICBjb25zdCB7IHRoZW1lIH0gPSBwcm9wcztcbiAgICBpZighXy5pc0VtcHR5KHRoZW1lKSkge1xuICAgICAgICByZXR1cm4gdGhlbWUuYnV0dG9uU3R5bGUucHJpbWFyeUJ0bkJnQ29sb3I7XG4gICAgfSBlbHNlIHtcbiAgICAgICAgcmV0dXJuICcjZmY1MzUzJztcbiAgICB9O1xufVxuXG5leHBvcnQgY29uc3QgbW9uZXlDb2xvciA9IChwcm9wcykgPT4ge1xuICAgIGNvbnN0IHsgdGhlbWUgfSA9IHByb3BzO1xuICAgIGlmKCFfLmlzRW1wdHkodGhlbWUpKSB7XG4gICAgICAgIHJldHVybiB0aGVtZS5nZW5lcmFsU3R5bGUubW9uZXlDb2xvcjtcbiAgICB9IGVsc2Uge1xuICAgICAgICByZXR1cm4gJyNmZjUzNTMnO1xuICAgIH07XG59XG4iLCJpbXBvcnQgKiBhcyBSZWFjdCBmcm9tICdyZWFjdCc7XG5pbXBvcnQgeyBGQyB9IGZyb20gJ3JlYWN0JztcbmltcG9ydCBzdHlsZWQsIHsgY3NzIH0gZnJvbSAnc3R5bGVkLWNvbXBvbmVudHMnO1xuaW1wb3J0ICogYXMgXyBmcm9tICd1bmRlcnNjb3JlJztcbmltcG9ydCB7IEN1cnJlbmN5IH0gZnJvbSAnQGNvbXBvbmVudHMvaW5kZXgnO1xuaW1wb3J0IHsgTVdlYkFwaSB9IGZyb20gJy4uLy4uLy4uL3R5cGluZ3MvbXdlYkFwaSc7XG5pbXBvcnQgeyBUcmFuc2xhdGUgfSBmcm9tICdyZWFjdC1yZWR1eC1pMThuJztcbmltcG9ydCB7IFRSQU5TTEFURV9MT0NBTEVfS0VZIH0gZnJvbSAnQGNvbnN0YW50cy90cmFuc2xhdGlvbi5jb25zdGFudHMnO1xuaW1wb3J0IHsgbW9uZXlDb2xvciB9IGZyb20gJy4vdGhlbWVDb2xvcic7XG5cbmludGVyZmFjZSBQcm9kdWN0UG9pbnRQYXlQcmljZVByb3BzIHtcbiAgICBzZWxlY3RlZFB1cmNoYXNlTWV0aG9kOiBNV2ViQXBpLldlYlN0b3JlLkZyb250ZW5kLkJFLlNhbGVQYWdlVjIuUG9pbnRzUGF5UGFpcnNFbnRpdHk7XG4gICAgZGVjaW1hbDogbnVtYmVyO1xuICAgIHN5bWJvbDogc3RyaW5nO1xuICAgIHJhdGU6IG51bWJlcjtcbn1cblxuY29uc3QgSW5mb1ByaWNlID0gc3R5bGVkLmRpdmBcbiAgICBmb250LXNpemU6IDFlbTtcbiAgICBsaW5lLWhlaWdodDogMS41O1xuICAgIGNvbG9yOiAke21vbmV5Q29sb3J9O1xuYDtcblxuZXhwb3J0IGNvbnN0IFByb2R1Y3RQb2ludFBheVByaWNlOiBGQzxQcm9kdWN0UG9pbnRQYXlQcmljZVByb3BzPiA9IHByb3BzID0+IHtcbiAgICBjb25zdCB7XG4gICAgICAgIHNlbGVjdGVkUHVyY2hhc2VNZXRob2QsXG4gICAgICAgIGRlY2ltYWwsXG4gICAgICAgIHN5bWJvbCxcbiAgICAgICAgcmF0ZVxuICAgIH0gPSBwcm9wcztcblxuICAgIHJldHVybiAoXG4gICAgICAgIDxJbmZvUHJpY2U+XG4gICAgICAgICAgICB7Lyog57SU6YeRICovfVxuICAgICAgICAgICAge3NlbGVjdGVkUHVyY2hhc2VNZXRob2QuUGFpcnNQb2ludHMgPT09IDAgJiYgc2VsZWN0ZWRQdXJjaGFzZU1ldGhvZC5QYWlyc1ByaWNlID4gMCAmJiBcbiAgICAgICAgICAgICAgICA8Q3VycmVuY3lcbiAgICAgICAgICAgICAgICAgICAgdmFsdWU9e3NlbGVjdGVkUHVyY2hhc2VNZXRob2QuUGFpcnNQcmljZX1cbiAgICAgICAgICAgICAgICAgICAgZGVjaW1hbD17ZGVjaW1hbH1cbiAgICAgICAgICAgICAgICAgICAgc3ltYm9sPXtzeW1ib2x9XG4gICAgICAgICAgICAgICAgICAgIHJhdGU9e3JhdGV9XG4gICAgICAgICAgICAgICAgICAgIGRpc2FibGVUaGVtZT17dHJ1ZX1cbiAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICB7Lyog57SU6bueICovfVxuICAgICAgICAgICAge3NlbGVjdGVkUHVyY2hhc2VNZXRob2QuUGFpcnNQcmljZSA9PT0gMCAmJiBzZWxlY3RlZFB1cmNoYXNlTWV0aG9kLlBhaXJzUG9pbnRzID4gMCAmJlxuICAgICAgICAgICAgICAgIDxUcmFuc2xhdGVcbiAgICAgICAgICAgICAgICAgICAgdmFsdWU9e1RSQU5TTEFURV9MT0NBTEVfS0VZLkZST05URU5ELkxJQi5QVVJDSEFTRV9NRVRIT0RfUE9JTlR9XG4gICAgICAgICAgICAgICAgICAgIHBvaW50PXtzZWxlY3RlZFB1cmNoYXNlTWV0aG9kLlBhaXJzUG9pbnRzfVxuICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHsvKiDpu57liqDph5EgKi99XG4gICAgICAgICAgICB7c2VsZWN0ZWRQdXJjaGFzZU1ldGhvZC5QYWlyc1BvaW50cyA+IDAgJiYgc2VsZWN0ZWRQdXJjaGFzZU1ldGhvZC5QYWlyc1ByaWNlID4gMCAmJlxuICAgICAgICAgICAgICAgIDxzcGFuPlxuICAgICAgICAgICAgICAgICAgICA8VHJhbnNsYXRlIFxuICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU9e1RSQU5TTEFURV9MT0NBTEVfS0VZLkZST05URU5ELkxJQi5QVVJDSEFTRV9NRVRIT0RfUE9JTlR9XG4gICAgICAgICAgICAgICAgICAgICAgICBwb2ludD17c2VsZWN0ZWRQdXJjaGFzZU1ldGhvZC5QYWlyc1BvaW50c31cbiAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgPHNwYW4+77yLPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICA8Q3VycmVuY3lcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlPXtzZWxlY3RlZFB1cmNoYXNlTWV0aG9kLlBhaXJzUHJpY2V9XG4gICAgICAgICAgICAgICAgICAgICAgICBkZWNpbWFsPXtkZWNpbWFsfVxuICAgICAgICAgICAgICAgICAgICAgICAgc3ltYm9sPXtzeW1ib2x9XG4gICAgICAgICAgICAgICAgICAgICAgICByYXRlPXtyYXRlfVxuICAgICAgICAgICAgICAgICAgICAgICAgZGlzYWJsZVRoZW1lPXt0cnVlfVxuICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgIH1cbiAgICAgICAgPC9JbmZvUHJpY2U+XG4gICAgKVxufVxuIiwiaW1wb3J0IFJlYWN0LCB7IEZDIH0gZnJvbSAncmVhY3QnO1xuaW1wb3J0ICogYXMgXyBmcm9tICd1bmRlcnNjb3JlJztcbmltcG9ydCBzdHlsZWQgZnJvbSAnc3R5bGVkLWNvbXBvbmVudHMnO1xuaW1wb3J0IGNsZWFyRml4IGZyb20gJ0BzdHlsZXMvY29tbW9uL21peGluL2NsZWFyRml4JztcbmltcG9ydCB7IEN1cnJlbmN5IH0gZnJvbSAnQGNvbXBvbmVudHMvaW5kZXgnO1xuaW1wb3J0IHsgZGV2aWNlVXRpbGl0eSB9IGZyb20gJ0B1dGlsaXRpZXMvaW5kZXgnO1xuaW1wb3J0IHsgQlJPV1NJTkdfTU9ERSB9IGZyb20gJ0Bjb25zdGFudHMvZGV2aWNlLmNvbnN0YW50cyc7XG5pbXBvcnQgeyBTYWxlUGFnZUluZm9FbnRpdHksIFByb2R1Y3RTa3VJbmZvRW50aXR5LCBQcm9kdWN0SW1hZ2VJbmZvRW50aXR5IH0gZnJvbSAnLi4vLi4vLi4vbW9kZWxzL3NhbGVQYWdlLm1vZGVsJztcbmltcG9ydCB7IE1XZWJBcGkgfSBmcm9tICcuLi8uLi8uLi90eXBpbmdzL213ZWJBcGknO1xuaW1wb3J0IHsgUHJvZHVjdFBvaW50UGF5UHJpY2UgfSBmcm9tICdAY29tcG9uZW50cy9hZGRUb0NhcnQvcHJvZHVjdC9wcm9kdWN0UG9pbnRQYXlQcmljZSc7XG5pbXBvcnQgeyBtb25leUNvbG9yIH0gZnJvbSAnLi90aGVtZUNvbG9yJztcblxuaW50ZXJmYWNlIE1haW5JbmZvUHJvcHMge1xuICAgIHNhbGVQYWdlSW5mbzogU2FsZVBhZ2VJbmZvRW50aXR5O1xuICAgIHNrdUluZm9MaXN0OiBQcm9kdWN0U2t1SW5mb0VudGl0eVtdO1xuICAgIHNrdUlkOiBudW1iZXI7XG4gICAgZGVjaW1hbDogbnVtYmVyO1xuICAgIHN5bWJvbDogc3RyaW5nO1xuICAgIHJhdGU6IG51bWJlcjtcbiAgICBzZWxlY3RlZFB1cmNoYXNlTWV0aG9kOiBNV2ViQXBpLldlYlN0b3JlLkZyb250ZW5kLkJFLlNhbGVQYWdlVjIuUG9pbnRzUGF5UGFpcnNFbnRpdHk7XG59XG5pbnRlcmZhY2UgUmFuZ2VEYXRhUHJvcHMge1xuICAgIG1pbjogbnVtYmVyO1xuICAgIG1heDogbnVtYmVyO1xufVxuLyoqXG4gKiDlj5blvpfllYblk4HlnJbpoa/npLpcbiAqIEBwYXJhbSBtYWluSW1hZ2VVcmxcbiAqIEBwYXJhbSBza3VJZFxuICovXG5jb25zdCBnZXRNYWluSW1hZ2VTcmMgPSAobWFpbkltYWdlVXJsOiBQcm9kdWN0SW1hZ2VJbmZvRW50aXR5W10sIHNrdUlkOiBudW1iZXIpOiBzdHJpbmcgPT4ge1xuICAgIGNvbnN0IHNrdUltYWdlSXRlbSA9IF8uZmluZChtYWluSW1hZ2VVcmwsIChpbWcpID0+IHtcbiAgICAgICAgcmV0dXJuIGltZy5za3VJZCAmJiBpbWcuc2t1SWQgPT09IHNrdUlkO1xuICAgIH0pO1xuICAgIHJldHVybiBza3VJbWFnZUl0ZW0gPyBza3VJbWFnZUl0ZW0uaW1hZ2VTcmMgOiBtYWluSW1hZ2VVcmxbMF0uaW1hZ2VTcmM7IC8vIOiLpeaJvuS4jeWIsOWwjeaHieeahHNrdeWclueJh++8jOS9v+eUqOS4u+WcluesrOS4gOW8tVxufTtcbi8qKlxuICogVE9ETzog55uu5YmN6Kit6KiI5pyJ6aCQ6YG477yM5omA5Lul5LiN55So5Yqg5Y2A6ZaT6aGv56S6XG4gKiDmmK/lkKbpoa/npLrllK7lg7nljYDplpNcbiAqIEBwYXJhbSBzdWdnZXN0UHJpY2VEYXRhXG4gKiBAcGFyYW0gcHJpY2VEYXRhXG4gKi9cbmNvbnN0IGlzU2hvd1JhbmdlU3VnZ2VzdFByaWNlID0gKHN1Z2dlc3RQcmljZURhdGE6IFJhbmdlRGF0YVByb3BzLCBwcmljZURhdGE6IFJhbmdlRGF0YVByb3BzKTogYm9vbGVhbiA9PiB7XG4gICAgcmV0dXJuIHN1Z2dlc3RQcmljZURhdGEubWluID4gcHJpY2VEYXRhLm1pbiB8fCBzdWdnZXN0UHJpY2VEYXRhLm1heCA+IHByaWNlRGF0YS5tYXg7XG59O1xuLyoqXG4gKiDmmK/lkKbpoa/npLrlu7rorbDllK7lg7lcbiAqIEBwYXJhbSBzdWdnZXN0UHJpY2VcbiAqIEBwYXJhbSBwcmljZVxuICovXG5jb25zdCBpc1Nob3dTdWdnZXN0UHJpY2UgPSAoc3VnZ2VzdFByaWNlOiBudW1iZXIsIHByaWNlOiBudW1iZXIpOiBib29sZWFuID0+IHtcbiAgICByZXR1cm4gc3VnZ2VzdFByaWNlID4gcHJpY2U7XG59O1xuXG5jb25zdCBQcm9kdWN0TWFpbkluZm9Db250YWluZXIgPSBzdHlsZWQuZGl2YFxuICAgIHBhZGRpbmc6ICR7ZGV2aWNlVXRpbGl0eS5nZXRCcm93c2luZ01vZGUoKSA9PT0gQlJPV1NJTkdfTU9ERS5NT0JJTEUgPyAnMTJweCcgOiAnMCAyMHB4IDIwcHgnfTtcbiAgICBtYXJnaW46IDA7XG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgICR7Y2xlYXJGaXh9O1xuYDtcblxuY29uc3QgSW5mb0xlZnQgPSBzdHlsZWQuZGl2YFxuICAgIGZsb2F0OiBsZWZ0O1xuYDtcblxuY29uc3QgSW5mb0ZpZ3VyZSA9IHN0eWxlZC5maWd1cmVgXG4gICAgd2lkdGg6IDEyMHB4O1xuICAgIGhlaWdodDogMTIwcHg7XG4gICAgdGV4dC1hbGlnbjogY2VudGVyO1xuYDtcblxuY29uc3QgSW5mb0ltYWdlID0gc3R5bGVkLmltZ2BcbiAgICBtYXgtd2lkdGg6IDEyMHB4O1xuICAgIG1heC1oZWlnaHQ6IDEyMHB4O1xuYDtcblxuY29uc3QgSW5mb1JpZ2h0ID0gc3R5bGVkLmRpdmBcbiAgICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xuICAgIGZsb2F0OiByaWdodDtcbiAgICBoZWlnaHQ6IDEyMHB4O1xuICAgIHBhZGRpbmc6IDAgMTZweDtcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgdGV4dC1hbGlnbjogbGVmdDtcbiAgICB3aWR0aDogY2FsYygxMDAlIC0gMTMwcHgpO1xuYDtcblxuY29uc3QgSW5mb1RpdGxlID0gc3R5bGVkLmgzYFxuICAgIC13ZWJraXQtYm94LW9yaWVudDogdmVydGljYWw7XG4gICAgLXdlYmtpdC1saW5lLWNsYW1wOiAyO1xuICAgIGNvbG9yOiAjMDAwMDAwO1xuICAgIGRpc3BsYXk6IC13ZWJraXQtYm94O1xuICAgIGZvbnQtc2l6ZTogMTRweDtcbiAgICBmb250LXdlaWdodDogbm9ybWFsO1xuICAgIGhlaWdodDogMzRweDtcbiAgICBsaW5lLWhlaWdodDogMTdweDtcbiAgICBvdmVyZmxvdzogaGlkZGVuO1xuICAgIHRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzO1xuICAgIHdoaXRlLXNwYWNlOiBub3JtYWw7XG4gICAgd29yZC1icmVhazogYnJlYWstYWxsO1xuYDtcblxuY29uc3QgSW5mb1ByaWNlV3JhcHBlciA9IHN0eWxlZC5kaXZgXG4gICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgIGJvdHRvbTogMDtcbmA7XG5cbmNvbnN0IEluZm9TdWdnZXN0UHJpY2UgPSBzdHlsZWQuZGl2YFxuICAgIGZvbnQtc2l6ZTogMC43ZW07XG4gICAgbGluZS1oZWlnaHQ6IDEuNTtcbiAgICBjb2xvcjogI2FhYTtcbiAgICB0ZXh0LWRlY29yYXRpb246IGxpbmUtdGhyb3VnaDtcbmA7XG5cbmNvbnN0IE1heFN1Z2dlc3RQcmljZSA9IHN0eWxlZC5zcGFuYFxuICAgIGNvbG9yOiAke21vbmV5Q29sb3J9O1xuYDtcblxuY29uc3QgSW5mb1ByaWNlID0gc3R5bGVkLmRpdmBcbiAgICBmb250LXNpemU6IDFlbTtcbiAgICBsaW5lLWhlaWdodDogMS41O1xuICAgIGNvbG9yOiAke21vbmV5Q29sb3J9O1xuYDtcblxuLyoqXG4gKiDllYblk4HkuLvopoHos4foqIrvvIjmqJnpoYzjgIHllK7lg7njgIHlnJbniYfnrYnnrYnvvIlcbiAqIEBwYXJhbSBwcm9wc1xuICovXG5leHBvcnQgY29uc3QgUHJvZHVjdE1haW5JbmZvOiBGQzxNYWluSW5mb1Byb3BzPiA9IChwcm9wcykgPT4ge1xuICAgIGNvbnN0IHsgc2FsZVBhZ2VJbmZvLCBza3VJbmZvTGlzdCwgc2t1SWQsIGRlY2ltYWwsIHN5bWJvbCwgcmF0ZSwgc2VsZWN0ZWRQdXJjaGFzZU1ldGhvZCB9ID0gcHJvcHM7XG4gICAgY29uc3QgeyB0aXRsZSwgbWFpbkltYWdlVXJsLCBtYXhQcmljZSwgbWF4U3VnZ2VzdFByaWNlLCBtaW5QcmljZSwgbWluU3VnZ2VzdFByaWNlLCBoYXNQb2ludFBheU9wdGlvbiB9ID1cbiAgICAgICAgc2FsZVBhZ2VJbmZvO1xuICAgIC8vIOWPluW+l1NLVeS4jeWQjOWDueizh+aWmVxuICAgIGNvbnN0IHNrdUl0ZW0gPSBfLmZpbmQoc2t1SW5mb0xpc3QsIChpdGVtKSA9PiBpdGVtLnNrdUlkID09IHNrdUlkKTtcbiAgICAvLyDmmK/lkKbpgbjlj5ZTS1VcbiAgICBjb25zdCBpc1NlbGVjdFNrdUlkID0gc2t1SWQgPiAwID8gdHJ1ZSA6IGZhbHNlO1xuICAgIC8vIOaYr+WQpumhr+ekuuW7uuitsOWUruWDuVxuICAgIGNvbnN0IGlzU2hvd1N1Z2dlc3QgPSBza3VJdGVtID8gaXNTaG93U3VnZ2VzdFByaWNlKHNrdUl0ZW0uc3VnZ2VzdFByaWNlLCBza3VJdGVtLnByaWNlKSA6IGZhbHNlO1xuICAgIC8vIOaYr+WQpumhr+ekuuW7uuitsOWUruWDueevhOWcjVxuICAgIGNvbnN0IGlzU2hvd1JhbmdlU3VnZ2VzdCA9IGlzU2hvd1JhbmdlU3VnZ2VzdFByaWNlKFxuICAgICAgICB7IG1pbjogbWluU3VnZ2VzdFByaWNlLCBtYXg6IG1heFN1Z2dlc3RQcmljZSB9LFxuICAgICAgICB7IG1pbjogbWluUHJpY2UsIG1heDogbWF4UHJpY2UgfVxuICAgICk7XG4gICAgcmV0dXJuIChcbiAgICAgICAgPFByb2R1Y3RNYWluSW5mb0NvbnRhaW5lcj5cbiAgICAgICAgICAgIDxJbmZvTGVmdD5cbiAgICAgICAgICAgICAgICA8SW5mb0ZpZ3VyZT5cbiAgICAgICAgICAgICAgICAgICAgPEluZm9JbWFnZSBzcmM9e2dldE1haW5JbWFnZVNyYyhtYWluSW1hZ2VVcmwsIHNrdUlkKX0gLz5cbiAgICAgICAgICAgICAgICA8L0luZm9GaWd1cmU+XG4gICAgICAgICAgICA8L0luZm9MZWZ0PlxuICAgICAgICAgICAgPEluZm9SaWdodD5cbiAgICAgICAgICAgICAgICA8SW5mb1RpdGxlPnt0aXRsZX08L0luZm9UaXRsZT5cbiAgICAgICAgICAgICAgICA8SW5mb1ByaWNlV3JhcHBlcj5cbiAgICAgICAgICAgICAgICAgICAgey8qIOWIpOaWt+aYr+WQpumBuOWPlnNrdSAqL31cbiAgICAgICAgICAgICAgICAgICAge2lzU2VsZWN0U2t1SWQgPyAoXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtpc1Nob3dTdWdnZXN0ICYmIChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEluZm9TdWdnZXN0UHJpY2U+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Q3VycmVuY3lcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZT17c2t1SXRlbS5zdWdnZXN0UHJpY2V9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVjaW1hbD17ZGVjaW1hbH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzeW1ib2w9e3N5bWJvbH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByYXRlPXtyYXRlfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlzVGhyb3VnaD17dHJ1ZX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaXNhYmxlVGhlbWU9e3RydWV9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L0luZm9TdWdnZXN0UHJpY2U+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IWhhc1BvaW50UGF5T3B0aW9uICYmIChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEluZm9QcmljZT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxDdXJyZW5jeSB2YWx1ZT17c2t1SXRlbS5wcmljZX0gZGVjaW1hbD17ZGVjaW1hbH0gc3ltYm9sPXtzeW1ib2x9IHJhdGU9e3JhdGV9IC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvSW5mb1ByaWNlPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICl9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge2hhc1BvaW50UGF5T3B0aW9uICYmIChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPFByb2R1Y3RQb2ludFBheVByaWNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxlY3RlZFB1cmNoYXNlTWV0aG9kPXtzZWxlY3RlZFB1cmNoYXNlTWV0aG9kfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVjaW1hbD17ZGVjaW1hbH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN5bWJvbD17c3ltYm9sfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmF0ZT17cmF0ZX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICkgOiAoXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtpc1Nob3dSYW5nZVN1Z2dlc3QgJiYgKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8SW5mb1N1Z2dlc3RQcmljZT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxDdXJyZW5jeVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlPXttaW5TdWdnZXN0UHJpY2V9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVjaW1hbD17ZGVjaW1hbH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzeW1ib2w9e3N5bWJvbH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByYXRlPXtyYXRlfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlzVGhyb3VnaD17dHJ1ZX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaXNhYmxlVGhlbWU9e3RydWV9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge21heFN1Z2dlc3RQcmljZSA+IG1pblN1Z2dlc3RQcmljZSAmJiAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEN1cnJlbmN5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZT17bWF4U3VnZ2VzdFByaWNlfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVjaW1hbD17ZGVjaW1hbH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN5bWJvbD17c3ltYm9sfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmF0ZT17cmF0ZX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlzVGhyb3VnaD17dHJ1ZX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpc2FibGVUaGVtZT17dHJ1ZX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L0luZm9TdWdnZXN0UHJpY2U+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IWhhc1BvaW50UGF5T3B0aW9uICYmIChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEluZm9QcmljZT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxDdXJyZW5jeSB2YWx1ZT17bWluUHJpY2V9IGRlY2ltYWw9e2RlY2ltYWx9IHN5bWJvbD17c3ltYm9sfSByYXRlPXtyYXRlfSAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge21heFByaWNlID4gbWluUHJpY2UgJiYgKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxNYXhTdWdnZXN0UHJpY2U+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsnICd9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH57JyAnfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Q3VycmVuY3kgdmFsdWU9e21heFByaWNlfSBkZWNpbWFsPXtkZWNpbWFsfSBzeW1ib2w9e3N5bWJvbH0gcmF0ZT17cmF0ZX0gLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L01heFN1Z2dlc3RQcmljZT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICl9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvSW5mb1ByaWNlPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICl9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge2hhc1BvaW50UGF5T3B0aW9uICYmIChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPFByb2R1Y3RQb2ludFBheVByaWNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxlY3RlZFB1cmNoYXNlTWV0aG9kPXtzZWxlY3RlZFB1cmNoYXNlTWV0aG9kfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVjaW1hbD17ZGVjaW1hbH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN5bWJvbD17c3ltYm9sfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmF0ZT17cmF0ZX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICl9XG4gICAgICAgICAgICAgICAgPC9JbmZvUHJpY2VXcmFwcGVyPlxuICAgICAgICAgICAgPC9JbmZvUmlnaHQ+XG4gICAgICAgIDwvUHJvZHVjdE1haW5JbmZvQ29udGFpbmVyPlxuICAgICk7XG59O1xuIiwiZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gX2V4dGVuZHMoKSB7XG4gIF9leHRlbmRzID0gT2JqZWN0LmFzc2lnbiB8fCBmdW5jdGlvbiAodGFyZ2V0KSB7XG4gICAgZm9yICh2YXIgaSA9IDE7IGkgPCBhcmd1bWVudHMubGVuZ3RoOyBpKyspIHtcbiAgICAgIHZhciBzb3VyY2UgPSBhcmd1bWVudHNbaV07XG5cbiAgICAgIGZvciAodmFyIGtleSBpbiBzb3VyY2UpIHtcbiAgICAgICAgaWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChzb3VyY2UsIGtleSkpIHtcbiAgICAgICAgICB0YXJnZXRba2V5XSA9IHNvdXJjZVtrZXldO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHRhcmdldDtcbiAgfTtcblxuICByZXR1cm4gX2V4dGVuZHMuYXBwbHkodGhpcywgYXJndW1lbnRzKTtcbn0iLCJleHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBfYXNzZXJ0VGhpc0luaXRpYWxpemVkKHNlbGYpIHtcbiAgaWYgKHNlbGYgPT09IHZvaWQgMCkge1xuICAgIHRocm93IG5ldyBSZWZlcmVuY2VFcnJvcihcInRoaXMgaGFzbid0IGJlZW4gaW5pdGlhbGlzZWQgLSBzdXBlcigpIGhhc24ndCBiZWVuIGNhbGxlZFwiKTtcbiAgfVxuXG4gIHJldHVybiBzZWxmO1xufSIsImV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIF9zZXRQcm90b3R5cGVPZihvLCBwKSB7XG4gIF9zZXRQcm90b3R5cGVPZiA9IE9iamVjdC5zZXRQcm90b3R5cGVPZiB8fCBmdW5jdGlvbiBfc2V0UHJvdG90eXBlT2YobywgcCkge1xuICAgIG8uX19wcm90b19fID0gcDtcbiAgICByZXR1cm4gbztcbiAgfTtcblxuICByZXR1cm4gX3NldFByb3RvdHlwZU9mKG8sIHApO1xufSIsImltcG9ydCBzZXRQcm90b3R5cGVPZiBmcm9tIFwiLi9zZXRQcm90b3R5cGVPZi5qc1wiO1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gX2luaGVyaXRzTG9vc2Uoc3ViQ2xhc3MsIHN1cGVyQ2xhc3MpIHtcbiAgc3ViQ2xhc3MucHJvdG90eXBlID0gT2JqZWN0LmNyZWF0ZShzdXBlckNsYXNzLnByb3RvdHlwZSk7XG4gIHN1YkNsYXNzLnByb3RvdHlwZS5jb25zdHJ1Y3RvciA9IHN1YkNsYXNzO1xuICBzZXRQcm90b3R5cGVPZihzdWJDbGFzcywgc3VwZXJDbGFzcyk7XG59IiwiZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gX2dldFByb3RvdHlwZU9mKG8pIHtcbiAgX2dldFByb3RvdHlwZU9mID0gT2JqZWN0LnNldFByb3RvdHlwZU9mID8gT2JqZWN0LmdldFByb3RvdHlwZU9mIDogZnVuY3Rpb24gX2dldFByb3RvdHlwZU9mKG8pIHtcbiAgICByZXR1cm4gby5fX3Byb3RvX18gfHwgT2JqZWN0LmdldFByb3RvdHlwZU9mKG8pO1xuICB9O1xuICByZXR1cm4gX2dldFByb3RvdHlwZU9mKG8pO1xufSIsImV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIF9pc05hdGl2ZUZ1bmN0aW9uKGZuKSB7XG4gIHJldHVybiBGdW5jdGlvbi50b1N0cmluZy5jYWxsKGZuKS5pbmRleE9mKFwiW25hdGl2ZSBjb2RlXVwiKSAhPT0gLTE7XG59IiwiZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gX2lzTmF0aXZlUmVmbGVjdENvbnN0cnVjdCgpIHtcbiAgaWYgKHR5cGVvZiBSZWZsZWN0ID09PSBcInVuZGVmaW5lZFwiIHx8ICFSZWZsZWN0LmNvbnN0cnVjdCkgcmV0dXJuIGZhbHNlO1xuICBpZiAoUmVmbGVjdC5jb25zdHJ1Y3Quc2hhbSkgcmV0dXJuIGZhbHNlO1xuICBpZiAodHlwZW9mIFByb3h5ID09PSBcImZ1bmN0aW9uXCIpIHJldHVybiB0cnVlO1xuXG4gIHRyeSB7XG4gICAgQm9vbGVhbi5wcm90b3R5cGUudmFsdWVPZi5jYWxsKFJlZmxlY3QuY29uc3RydWN0KEJvb2xlYW4sIFtdLCBmdW5jdGlvbiAoKSB7fSkpO1xuICAgIHJldHVybiB0cnVlO1xuICB9IGNhdGNoIChlKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG59IiwiaW1wb3J0IHNldFByb3RvdHlwZU9mIGZyb20gXCIuL3NldFByb3RvdHlwZU9mLmpzXCI7XG5pbXBvcnQgaXNOYXRpdmVSZWZsZWN0Q29uc3RydWN0IGZyb20gXCIuL2lzTmF0aXZlUmVmbGVjdENvbnN0cnVjdC5qc1wiO1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gX2NvbnN0cnVjdChQYXJlbnQsIGFyZ3MsIENsYXNzKSB7XG4gIGlmIChpc05hdGl2ZVJlZmxlY3RDb25zdHJ1Y3QoKSkge1xuICAgIF9jb25zdHJ1Y3QgPSBSZWZsZWN0LmNvbnN0cnVjdDtcbiAgfSBlbHNlIHtcbiAgICBfY29uc3RydWN0ID0gZnVuY3Rpb24gX2NvbnN0cnVjdChQYXJlbnQsIGFyZ3MsIENsYXNzKSB7XG4gICAgICB2YXIgYSA9IFtudWxsXTtcbiAgICAgIGEucHVzaC5hcHBseShhLCBhcmdzKTtcbiAgICAgIHZhciBDb25zdHJ1Y3RvciA9IEZ1bmN0aW9uLmJpbmQuYXBwbHkoUGFyZW50LCBhKTtcbiAgICAgIHZhciBpbnN0YW5jZSA9IG5ldyBDb25zdHJ1Y3RvcigpO1xuICAgICAgaWYgKENsYXNzKSBzZXRQcm90b3R5cGVPZihpbnN0YW5jZSwgQ2xhc3MucHJvdG90eXBlKTtcbiAgICAgIHJldHVybiBpbnN0YW5jZTtcbiAgICB9O1xuICB9XG5cbiAgcmV0dXJuIF9jb25zdHJ1Y3QuYXBwbHkobnVsbCwgYXJndW1lbnRzKTtcbn0iLCJpbXBvcnQgZ2V0UHJvdG90eXBlT2YgZnJvbSBcIi4vZ2V0UHJvdG90eXBlT2YuanNcIjtcbmltcG9ydCBzZXRQcm90b3R5cGVPZiBmcm9tIFwiLi9zZXRQcm90b3R5cGVPZi5qc1wiO1xuaW1wb3J0IGlzTmF0aXZlRnVuY3Rpb24gZnJvbSBcIi4vaXNOYXRpdmVGdW5jdGlvbi5qc1wiO1xuaW1wb3J0IGNvbnN0cnVjdCBmcm9tIFwiLi9jb25zdHJ1Y3QuanNcIjtcbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIF93cmFwTmF0aXZlU3VwZXIoQ2xhc3MpIHtcbiAgdmFyIF9jYWNoZSA9IHR5cGVvZiBNYXAgPT09IFwiZnVuY3Rpb25cIiA/IG5ldyBNYXAoKSA6IHVuZGVmaW5lZDtcblxuICBfd3JhcE5hdGl2ZVN1cGVyID0gZnVuY3Rpb24gX3dyYXBOYXRpdmVTdXBlcihDbGFzcykge1xuICAgIGlmIChDbGFzcyA9PT0gbnVsbCB8fCAhaXNOYXRpdmVGdW5jdGlvbihDbGFzcykpIHJldHVybiBDbGFzcztcblxuICAgIGlmICh0eXBlb2YgQ2xhc3MgIT09IFwiZnVuY3Rpb25cIikge1xuICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcihcIlN1cGVyIGV4cHJlc3Npb24gbXVzdCBlaXRoZXIgYmUgbnVsbCBvciBhIGZ1bmN0aW9uXCIpO1xuICAgIH1cblxuICAgIGlmICh0eXBlb2YgX2NhY2hlICE9PSBcInVuZGVmaW5lZFwiKSB7XG4gICAgICBpZiAoX2NhY2hlLmhhcyhDbGFzcykpIHJldHVybiBfY2FjaGUuZ2V0KENsYXNzKTtcblxuICAgICAgX2NhY2hlLnNldChDbGFzcywgV3JhcHBlcik7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gV3JhcHBlcigpIHtcbiAgICAgIHJldHVybiBjb25zdHJ1Y3QoQ2xhc3MsIGFyZ3VtZW50cywgZ2V0UHJvdG90eXBlT2YodGhpcykuY29uc3RydWN0b3IpO1xuICAgIH1cblxuICAgIFdyYXBwZXIucHJvdG90eXBlID0gT2JqZWN0LmNyZWF0ZShDbGFzcy5wcm90b3R5cGUsIHtcbiAgICAgIGNvbnN0cnVjdG9yOiB7XG4gICAgICAgIHZhbHVlOiBXcmFwcGVyLFxuICAgICAgICBlbnVtZXJhYmxlOiBmYWxzZSxcbiAgICAgICAgd3JpdGFibGU6IHRydWUsXG4gICAgICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZVxuICAgICAgfVxuICAgIH0pO1xuICAgIHJldHVybiBzZXRQcm90b3R5cGVPZihXcmFwcGVyLCBDbGFzcyk7XG4gIH07XG5cbiAgcmV0dXJuIF93cmFwTmF0aXZlU3VwZXIoQ2xhc3MpO1xufSIsImV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIF90YWdnZWRUZW1wbGF0ZUxpdGVyYWxMb29zZShzdHJpbmdzLCByYXcpIHtcbiAgaWYgKCFyYXcpIHtcbiAgICByYXcgPSBzdHJpbmdzLnNsaWNlKDApO1xuICB9XG5cbiAgc3RyaW5ncy5yYXcgPSByYXc7XG4gIHJldHVybiBzdHJpbmdzO1xufSIsImltcG9ydCBfZXh0ZW5kcyBmcm9tICdAYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9leHRlbmRzJztcbmltcG9ydCBfYXNzZXJ0VGhpc0luaXRpYWxpemVkIGZyb20gJ0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL2Fzc2VydFRoaXNJbml0aWFsaXplZCc7XG5pbXBvcnQgX2luaGVyaXRzTG9vc2UgZnJvbSAnQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vaW5oZXJpdHNMb29zZSc7XG5pbXBvcnQgX3dyYXBOYXRpdmVTdXBlciBmcm9tICdAYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS93cmFwTmF0aXZlU3VwZXInO1xuaW1wb3J0IF90YWdnZWRUZW1wbGF0ZUxpdGVyYWxMb29zZSBmcm9tICdAYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS90YWdnZWRUZW1wbGF0ZUxpdGVyYWxMb29zZSc7XG5cbmZ1bmN0aW9uIGxhc3QoKSB7XG4gIHZhciBfcmVmO1xuXG4gIHJldHVybiBfcmVmID0gYXJndW1lbnRzLmxlbmd0aCAtIDEsIF9yZWYgPCAwIHx8IGFyZ3VtZW50cy5sZW5ndGggPD0gX3JlZiA/IHVuZGVmaW5lZCA6IGFyZ3VtZW50c1tfcmVmXTtcbn1cblxuZnVuY3Rpb24gbmVnYXRpb24oYSkge1xuICByZXR1cm4gLWE7XG59XG5cbmZ1bmN0aW9uIGFkZGl0aW9uKGEsIGIpIHtcbiAgcmV0dXJuIGEgKyBiO1xufVxuXG5mdW5jdGlvbiBzdWJ0cmFjdGlvbihhLCBiKSB7XG4gIHJldHVybiBhIC0gYjtcbn1cblxuZnVuY3Rpb24gbXVsdGlwbGljYXRpb24oYSwgYikge1xuICByZXR1cm4gYSAqIGI7XG59XG5cbmZ1bmN0aW9uIGRpdmlzaW9uKGEsIGIpIHtcbiAgcmV0dXJuIGEgLyBiO1xufVxuXG5mdW5jdGlvbiBmYWN0b3JpYWwoYSkge1xuICBpZiAoYSAlIDEgfHwgISgrYSA+PSAwKSkgcmV0dXJuIE5hTjtcbiAgaWYgKGEgPiAxNzApIHJldHVybiBJbmZpbml0eTtlbHNlIGlmIChhID09PSAwKSByZXR1cm4gMTtlbHNlIHtcbiAgICByZXR1cm4gYSAqIGZhY3RvcmlhbChhIC0gMSk7XG4gIH1cbn1cblxuZnVuY3Rpb24gcG93ZXIoYSwgYikge1xuICByZXR1cm4gTWF0aC5wb3coYSwgYik7XG59XG5cbmZ1bmN0aW9uIHNxcnQoYSkge1xuICByZXR1cm4gTWF0aC5zcXJ0KGEpO1xufVxuXG5mdW5jdGlvbiBtYXgoKSB7XG4gIHJldHVybiBNYXRoLm1heC5hcHBseShNYXRoLCBhcmd1bWVudHMpO1xufVxuXG5mdW5jdGlvbiBtaW4oKSB7XG4gIHJldHVybiBNYXRoLm1pbi5hcHBseShNYXRoLCBhcmd1bWVudHMpO1xufVxuXG5mdW5jdGlvbiBjb21tYSgpIHtcbiAgcmV0dXJuIEFycmF5Lm9mLmFwcGx5KEFycmF5LCBhcmd1bWVudHMpO1xufVxuXG52YXIgZGVmYXVsdE1hdGhTeW1ib2xzID0ge1xuICBzeW1ib2xzOiB7XG4gICAgJyEnOiB7XG4gICAgICBwb3N0Zml4OiB7XG4gICAgICAgIHN5bWJvbDogJyEnLFxuICAgICAgICBmOiBmYWN0b3JpYWwsXG4gICAgICAgIG5vdGF0aW9uOiAncG9zdGZpeCcsXG4gICAgICAgIHByZWNlZGVuY2U6IDYsXG4gICAgICAgIHJpZ2h0VG9MZWZ0OiAwLFxuICAgICAgICBhcmdDb3VudDogMVxuICAgICAgfSxcbiAgICAgIHN5bWJvbDogJyEnLFxuICAgICAgcmVnU3ltYm9sOiAnISdcbiAgICB9LFxuICAgICdeJzoge1xuICAgICAgaW5maXg6IHtcbiAgICAgICAgc3ltYm9sOiAnXicsXG4gICAgICAgIGY6IHBvd2VyLFxuICAgICAgICBub3RhdGlvbjogJ2luZml4JyxcbiAgICAgICAgcHJlY2VkZW5jZTogNSxcbiAgICAgICAgcmlnaHRUb0xlZnQ6IDEsXG4gICAgICAgIGFyZ0NvdW50OiAyXG4gICAgICB9LFxuICAgICAgc3ltYm9sOiAnXicsXG4gICAgICByZWdTeW1ib2w6ICdcXFxcXidcbiAgICB9LFxuICAgICcqJzoge1xuICAgICAgaW5maXg6IHtcbiAgICAgICAgc3ltYm9sOiAnKicsXG4gICAgICAgIGY6IG11bHRpcGxpY2F0aW9uLFxuICAgICAgICBub3RhdGlvbjogJ2luZml4JyxcbiAgICAgICAgcHJlY2VkZW5jZTogNCxcbiAgICAgICAgcmlnaHRUb0xlZnQ6IDAsXG4gICAgICAgIGFyZ0NvdW50OiAyXG4gICAgICB9LFxuICAgICAgc3ltYm9sOiAnKicsXG4gICAgICByZWdTeW1ib2w6ICdcXFxcKidcbiAgICB9LFxuICAgICcvJzoge1xuICAgICAgaW5maXg6IHtcbiAgICAgICAgc3ltYm9sOiAnLycsXG4gICAgICAgIGY6IGRpdmlzaW9uLFxuICAgICAgICBub3RhdGlvbjogJ2luZml4JyxcbiAgICAgICAgcHJlY2VkZW5jZTogNCxcbiAgICAgICAgcmlnaHRUb0xlZnQ6IDAsXG4gICAgICAgIGFyZ0NvdW50OiAyXG4gICAgICB9LFxuICAgICAgc3ltYm9sOiAnLycsXG4gICAgICByZWdTeW1ib2w6ICcvJ1xuICAgIH0sXG4gICAgJysnOiB7XG4gICAgICBpbmZpeDoge1xuICAgICAgICBzeW1ib2w6ICcrJyxcbiAgICAgICAgZjogYWRkaXRpb24sXG4gICAgICAgIG5vdGF0aW9uOiAnaW5maXgnLFxuICAgICAgICBwcmVjZWRlbmNlOiAyLFxuICAgICAgICByaWdodFRvTGVmdDogMCxcbiAgICAgICAgYXJnQ291bnQ6IDJcbiAgICAgIH0sXG4gICAgICBwcmVmaXg6IHtcbiAgICAgICAgc3ltYm9sOiAnKycsXG4gICAgICAgIGY6IGxhc3QsXG4gICAgICAgIG5vdGF0aW9uOiAncHJlZml4JyxcbiAgICAgICAgcHJlY2VkZW5jZTogMyxcbiAgICAgICAgcmlnaHRUb0xlZnQ6IDAsXG4gICAgICAgIGFyZ0NvdW50OiAxXG4gICAgICB9LFxuICAgICAgc3ltYm9sOiAnKycsXG4gICAgICByZWdTeW1ib2w6ICdcXFxcKydcbiAgICB9LFxuICAgICctJzoge1xuICAgICAgaW5maXg6IHtcbiAgICAgICAgc3ltYm9sOiAnLScsXG4gICAgICAgIGY6IHN1YnRyYWN0aW9uLFxuICAgICAgICBub3RhdGlvbjogJ2luZml4JyxcbiAgICAgICAgcHJlY2VkZW5jZTogMixcbiAgICAgICAgcmlnaHRUb0xlZnQ6IDAsXG4gICAgICAgIGFyZ0NvdW50OiAyXG4gICAgICB9LFxuICAgICAgcHJlZml4OiB7XG4gICAgICAgIHN5bWJvbDogJy0nLFxuICAgICAgICBmOiBuZWdhdGlvbixcbiAgICAgICAgbm90YXRpb246ICdwcmVmaXgnLFxuICAgICAgICBwcmVjZWRlbmNlOiAzLFxuICAgICAgICByaWdodFRvTGVmdDogMCxcbiAgICAgICAgYXJnQ291bnQ6IDFcbiAgICAgIH0sXG4gICAgICBzeW1ib2w6ICctJyxcbiAgICAgIHJlZ1N5bWJvbDogJy0nXG4gICAgfSxcbiAgICAnLCc6IHtcbiAgICAgIGluZml4OiB7XG4gICAgICAgIHN5bWJvbDogJywnLFxuICAgICAgICBmOiBjb21tYSxcbiAgICAgICAgbm90YXRpb246ICdpbmZpeCcsXG4gICAgICAgIHByZWNlZGVuY2U6IDEsXG4gICAgICAgIHJpZ2h0VG9MZWZ0OiAwLFxuICAgICAgICBhcmdDb3VudDogMlxuICAgICAgfSxcbiAgICAgIHN5bWJvbDogJywnLFxuICAgICAgcmVnU3ltYm9sOiAnLCdcbiAgICB9LFxuICAgICcoJzoge1xuICAgICAgcHJlZml4OiB7XG4gICAgICAgIHN5bWJvbDogJygnLFxuICAgICAgICBmOiBsYXN0LFxuICAgICAgICBub3RhdGlvbjogJ3ByZWZpeCcsXG4gICAgICAgIHByZWNlZGVuY2U6IDAsXG4gICAgICAgIHJpZ2h0VG9MZWZ0OiAwLFxuICAgICAgICBhcmdDb3VudDogMVxuICAgICAgfSxcbiAgICAgIHN5bWJvbDogJygnLFxuICAgICAgcmVnU3ltYm9sOiAnXFxcXCgnXG4gICAgfSxcbiAgICAnKSc6IHtcbiAgICAgIHBvc3RmaXg6IHtcbiAgICAgICAgc3ltYm9sOiAnKScsXG4gICAgICAgIGY6IHVuZGVmaW5lZCxcbiAgICAgICAgbm90YXRpb246ICdwb3N0Zml4JyxcbiAgICAgICAgcHJlY2VkZW5jZTogMCxcbiAgICAgICAgcmlnaHRUb0xlZnQ6IDAsXG4gICAgICAgIGFyZ0NvdW50OiAxXG4gICAgICB9LFxuICAgICAgc3ltYm9sOiAnKScsXG4gICAgICByZWdTeW1ib2w6ICdcXFxcKSdcbiAgICB9LFxuICAgIG1pbjoge1xuICAgICAgZnVuYzoge1xuICAgICAgICBzeW1ib2w6ICdtaW4nLFxuICAgICAgICBmOiBtaW4sXG4gICAgICAgIG5vdGF0aW9uOiAnZnVuYycsXG4gICAgICAgIHByZWNlZGVuY2U6IDAsXG4gICAgICAgIHJpZ2h0VG9MZWZ0OiAwLFxuICAgICAgICBhcmdDb3VudDogMVxuICAgICAgfSxcbiAgICAgIHN5bWJvbDogJ21pbicsXG4gICAgICByZWdTeW1ib2w6ICdtaW5cXFxcYidcbiAgICB9LFxuICAgIG1heDoge1xuICAgICAgZnVuYzoge1xuICAgICAgICBzeW1ib2w6ICdtYXgnLFxuICAgICAgICBmOiBtYXgsXG4gICAgICAgIG5vdGF0aW9uOiAnZnVuYycsXG4gICAgICAgIHByZWNlZGVuY2U6IDAsXG4gICAgICAgIHJpZ2h0VG9MZWZ0OiAwLFxuICAgICAgICBhcmdDb3VudDogMVxuICAgICAgfSxcbiAgICAgIHN5bWJvbDogJ21heCcsXG4gICAgICByZWdTeW1ib2w6ICdtYXhcXFxcYidcbiAgICB9LFxuICAgIHNxcnQ6IHtcbiAgICAgIGZ1bmM6IHtcbiAgICAgICAgc3ltYm9sOiAnc3FydCcsXG4gICAgICAgIGY6IHNxcnQsXG4gICAgICAgIG5vdGF0aW9uOiAnZnVuYycsXG4gICAgICAgIHByZWNlZGVuY2U6IDAsXG4gICAgICAgIHJpZ2h0VG9MZWZ0OiAwLFxuICAgICAgICBhcmdDb3VudDogMVxuICAgICAgfSxcbiAgICAgIHN5bWJvbDogJ3NxcnQnLFxuICAgICAgcmVnU3ltYm9sOiAnc3FydFxcXFxiJ1xuICAgIH1cbiAgfVxufTtcblxuLy8gYmFzZWQgb24gaHR0cHM6Ly9naXRodWIuY29tL3N0eWxlZC1jb21wb25lbnRzL3N0eWxlZC1jb21wb25lbnRzL2Jsb2IvZmNmNmYzODA0YzU3YTE0ZGQ3OTg0ZGZhYjdiYzA2ZWUyZWRjYTA0NC9zcmMvdXRpbHMvZXJyb3IuanNcblxuLyoqXG4gKiBQYXJzZSBlcnJvcnMubWQgYW5kIHR1cm4gaXQgaW50byBhIHNpbXBsZSBoYXNoIG9mIGNvZGU6IG1lc3NhZ2VcbiAqIEBwcml2YXRlXG4gKi9cbnZhciBFUlJPUlMgPSB7XG4gIFwiMVwiOiBcIlBhc3NlZCBpbnZhbGlkIGFyZ3VtZW50cyB0byBoc2wsIHBsZWFzZSBwYXNzIG11bHRpcGxlIG51bWJlcnMgZS5nLiBoc2woMzYwLCAwLjc1LCAwLjQpIG9yIGFuIG9iamVjdCBlLmcuIHJnYih7IGh1ZTogMjU1LCBzYXR1cmF0aW9uOiAwLjQsIGxpZ2h0bmVzczogMC43NSB9KS5cXG5cXG5cIixcbiAgXCIyXCI6IFwiUGFzc2VkIGludmFsaWQgYXJndW1lbnRzIHRvIGhzbGEsIHBsZWFzZSBwYXNzIG11bHRpcGxlIG51bWJlcnMgZS5nLiBoc2xhKDM2MCwgMC43NSwgMC40LCAwLjcpIG9yIGFuIG9iamVjdCBlLmcuIHJnYih7IGh1ZTogMjU1LCBzYXR1cmF0aW9uOiAwLjQsIGxpZ2h0bmVzczogMC43NSwgYWxwaGE6IDAuNyB9KS5cXG5cXG5cIixcbiAgXCIzXCI6IFwiUGFzc2VkIGFuIGluY29ycmVjdCBhcmd1bWVudCB0byBhIGNvbG9yIGZ1bmN0aW9uLCBwbGVhc2UgcGFzcyBhIHN0cmluZyByZXByZXNlbnRhdGlvbiBvZiBhIGNvbG9yLlxcblxcblwiLFxuICBcIjRcIjogXCJDb3VsZG4ndCBnZW5lcmF0ZSB2YWxpZCByZ2Igc3RyaW5nIGZyb20gJXMsIGl0IHJldHVybmVkICVzLlxcblxcblwiLFxuICBcIjVcIjogXCJDb3VsZG4ndCBwYXJzZSB0aGUgY29sb3Igc3RyaW5nLiBQbGVhc2UgcHJvdmlkZSB0aGUgY29sb3IgYXMgYSBzdHJpbmcgaW4gaGV4LCByZ2IsIHJnYmEsIGhzbCBvciBoc2xhIG5vdGF0aW9uLlxcblxcblwiLFxuICBcIjZcIjogXCJQYXNzZWQgaW52YWxpZCBhcmd1bWVudHMgdG8gcmdiLCBwbGVhc2UgcGFzcyBtdWx0aXBsZSBudW1iZXJzIGUuZy4gcmdiKDI1NSwgMjA1LCAxMDApIG9yIGFuIG9iamVjdCBlLmcuIHJnYih7IHJlZDogMjU1LCBncmVlbjogMjA1LCBibHVlOiAxMDAgfSkuXFxuXFxuXCIsXG4gIFwiN1wiOiBcIlBhc3NlZCBpbnZhbGlkIGFyZ3VtZW50cyB0byByZ2JhLCBwbGVhc2UgcGFzcyBtdWx0aXBsZSBudW1iZXJzIGUuZy4gcmdiKDI1NSwgMjA1LCAxMDAsIDAuNzUpIG9yIGFuIG9iamVjdCBlLmcuIHJnYih7IHJlZDogMjU1LCBncmVlbjogMjA1LCBibHVlOiAxMDAsIGFscGhhOiAwLjc1IH0pLlxcblxcblwiLFxuICBcIjhcIjogXCJQYXNzZWQgaW52YWxpZCBhcmd1bWVudCB0byB0b0NvbG9yU3RyaW5nLCBwbGVhc2UgcGFzcyBhIFJnYkNvbG9yLCBSZ2JhQ29sb3IsIEhzbENvbG9yIG9yIEhzbGFDb2xvciBvYmplY3QuXFxuXFxuXCIsXG4gIFwiOVwiOiBcIlBsZWFzZSBwcm92aWRlIGEgbnVtYmVyIG9mIHN0ZXBzIHRvIHRoZSBtb2R1bGFyU2NhbGUgaGVscGVyLlxcblxcblwiLFxuICBcIjEwXCI6IFwiUGxlYXNlIHBhc3MgYSBudW1iZXIgb3Igb25lIG9mIHRoZSBwcmVkZWZpbmVkIHNjYWxlcyB0byB0aGUgbW9kdWxhclNjYWxlIGhlbHBlciBhcyB0aGUgcmF0aW8uXFxuXFxuXCIsXG4gIFwiMTFcIjogXCJJbnZhbGlkIHZhbHVlIHBhc3NlZCBhcyBiYXNlIHRvIG1vZHVsYXJTY2FsZSwgZXhwZWN0ZWQgbnVtYmVyIG9yIGVtIHN0cmluZyBidXQgZ290IFxcXCIlc1xcXCJcXG5cXG5cIixcbiAgXCIxMlwiOiBcIkV4cGVjdGVkIGEgc3RyaW5nIGVuZGluZyBpbiBcXFwicHhcXFwiIG9yIGEgbnVtYmVyIHBhc3NlZCBhcyB0aGUgZmlyc3QgYXJndW1lbnQgdG8gJXMoKSwgZ290IFxcXCIlc1xcXCIgaW5zdGVhZC5cXG5cXG5cIixcbiAgXCIxM1wiOiBcIkV4cGVjdGVkIGEgc3RyaW5nIGVuZGluZyBpbiBcXFwicHhcXFwiIG9yIGEgbnVtYmVyIHBhc3NlZCBhcyB0aGUgc2Vjb25kIGFyZ3VtZW50IHRvICVzKCksIGdvdCBcXFwiJXNcXFwiIGluc3RlYWQuXFxuXFxuXCIsXG4gIFwiMTRcIjogXCJQYXNzZWQgaW52YWxpZCBwaXhlbCB2YWx1ZSAoXFxcIiVzXFxcIikgdG8gJXMoKSwgcGxlYXNlIHBhc3MgYSB2YWx1ZSBsaWtlIFxcXCIxMnB4XFxcIiBvciAxMi5cXG5cXG5cIixcbiAgXCIxNVwiOiBcIlBhc3NlZCBpbnZhbGlkIGJhc2UgdmFsdWUgKFxcXCIlc1xcXCIpIHRvICVzKCksIHBsZWFzZSBwYXNzIGEgdmFsdWUgbGlrZSBcXFwiMTJweFxcXCIgb3IgMTIuXFxuXFxuXCIsXG4gIFwiMTZcIjogXCJZb3UgbXVzdCBwcm92aWRlIGEgdGVtcGxhdGUgdG8gdGhpcyBtZXRob2QuXFxuXFxuXCIsXG4gIFwiMTdcIjogXCJZb3UgcGFzc2VkIGFuIHVuc3VwcG9ydGVkIHNlbGVjdG9yIHN0YXRlIHRvIHRoaXMgbWV0aG9kLlxcblxcblwiLFxuICBcIjE4XCI6IFwibWluU2NyZWVuIGFuZCBtYXhTY3JlZW4gbXVzdCBiZSBwcm92aWRlZCBhcyBzdHJpbmdpZmllZCBudW1iZXJzIHdpdGggdGhlIHNhbWUgdW5pdHMuXFxuXFxuXCIsXG4gIFwiMTlcIjogXCJmcm9tU2l6ZSBhbmQgdG9TaXplIG11c3QgYmUgcHJvdmlkZWQgYXMgc3RyaW5naWZpZWQgbnVtYmVycyB3aXRoIHRoZSBzYW1lIHVuaXRzLlxcblxcblwiLFxuICBcIjIwXCI6IFwiZXhwZWN0cyBlaXRoZXIgYW4gYXJyYXkgb2Ygb2JqZWN0cyBvciBhIHNpbmdsZSBvYmplY3Qgd2l0aCB0aGUgcHJvcGVydGllcyBwcm9wLCBmcm9tU2l6ZSwgYW5kIHRvU2l6ZS5cXG5cXG5cIixcbiAgXCIyMVwiOiBcImV4cGVjdHMgdGhlIG9iamVjdHMgaW4gdGhlIGZpcnN0IGFyZ3VtZW50IGFycmF5IHRvIGhhdmUgdGhlIHByb3BlcnRpZXMgYHByb3BgLCBgZnJvbVNpemVgLCBhbmQgYHRvU2l6ZWAuXFxuXFxuXCIsXG4gIFwiMjJcIjogXCJleHBlY3RzIHRoZSBmaXJzdCBhcmd1bWVudCBvYmplY3QgdG8gaGF2ZSB0aGUgcHJvcGVydGllcyBgcHJvcGAsIGBmcm9tU2l6ZWAsIGFuZCBgdG9TaXplYC5cXG5cXG5cIixcbiAgXCIyM1wiOiBcImZvbnRGYWNlIGV4cGVjdHMgYSBuYW1lIG9mIGEgZm9udC1mYW1pbHkuXFxuXFxuXCIsXG4gIFwiMjRcIjogXCJmb250RmFjZSBleHBlY3RzIGVpdGhlciB0aGUgcGF0aCB0byB0aGUgZm9udCBmaWxlKHMpIG9yIGEgbmFtZSBvZiBhIGxvY2FsIGNvcHkuXFxuXFxuXCIsXG4gIFwiMjVcIjogXCJmb250RmFjZSBleHBlY3RzIGxvY2FsRm9udHMgdG8gYmUgYW4gYXJyYXkuXFxuXFxuXCIsXG4gIFwiMjZcIjogXCJmb250RmFjZSBleHBlY3RzIGZpbGVGb3JtYXRzIHRvIGJlIGFuIGFycmF5LlxcblxcblwiLFxuICBcIjI3XCI6IFwicmFkaWFsR3JhZGllbnQgcmVxdXJpZXMgYXQgbGVhc3QgMiBjb2xvci1zdG9wcyB0byBwcm9wZXJseSByZW5kZXIuXFxuXFxuXCIsXG4gIFwiMjhcIjogXCJQbGVhc2Ugc3VwcGx5IGEgZmlsZW5hbWUgdG8gcmV0aW5hSW1hZ2UoKSBhcyB0aGUgZmlyc3QgYXJndW1lbnQuXFxuXFxuXCIsXG4gIFwiMjlcIjogXCJQYXNzZWQgaW52YWxpZCBhcmd1bWVudCB0byB0cmlhbmdsZSwgcGxlYXNlIHBhc3MgY29ycmVjdCBwb2ludGluZ0RpcmVjdGlvbiBlLmcuICdyaWdodCcuXFxuXFxuXCIsXG4gIFwiMzBcIjogXCJQYXNzZWQgYW4gaW52YWxpZCB2YWx1ZSB0byBgaGVpZ2h0YCBvciBgd2lkdGhgLiBQbGVhc2UgcHJvdmlkZSBhIHBpeGVsIGJhc2VkIHVuaXQuXFxuXFxuXCIsXG4gIFwiMzFcIjogXCJUaGUgYW5pbWF0aW9uIHNob3J0aGFuZCBvbmx5IHRha2VzIDggYXJndW1lbnRzLiBTZWUgdGhlIHNwZWNpZmljYXRpb24gZm9yIG1vcmUgaW5mb3JtYXRpb246IGh0dHA6Ly9tZG4uaW8vYW5pbWF0aW9uXFxuXFxuXCIsXG4gIFwiMzJcIjogXCJUbyBwYXNzIG11bHRpcGxlIGFuaW1hdGlvbnMgcGxlYXNlIHN1cHBseSB0aGVtIGluIGFycmF5cywgZS5nLiBhbmltYXRpb24oWydyb3RhdGUnLCAnMnMnXSwgWydtb3ZlJywgJzFzJ10pXFxuVG8gcGFzcyBhIHNpbmdsZSBhbmltYXRpb24gcGxlYXNlIHN1cHBseSB0aGVtIGluIHNpbXBsZSB2YWx1ZXMsIGUuZy4gYW5pbWF0aW9uKCdyb3RhdGUnLCAnMnMnKVxcblxcblwiLFxuICBcIjMzXCI6IFwiVGhlIGFuaW1hdGlvbiBzaG9ydGhhbmQgYXJyYXlzIGNhbiBvbmx5IGhhdmUgOCBlbGVtZW50cy4gU2VlIHRoZSBzcGVjaWZpY2F0aW9uIGZvciBtb3JlIGluZm9ybWF0aW9uOiBodHRwOi8vbWRuLmlvL2FuaW1hdGlvblxcblxcblwiLFxuICBcIjM0XCI6IFwiYm9yZGVyUmFkaXVzIGV4cGVjdHMgYSByYWRpdXMgdmFsdWUgYXMgYSBzdHJpbmcgb3IgbnVtYmVyIGFzIHRoZSBzZWNvbmQgYXJndW1lbnQuXFxuXFxuXCIsXG4gIFwiMzVcIjogXCJib3JkZXJSYWRpdXMgZXhwZWN0cyBvbmUgb2YgXFxcInRvcFxcXCIsIFxcXCJib3R0b21cXFwiLCBcXFwibGVmdFxcXCIgb3IgXFxcInJpZ2h0XFxcIiBhcyB0aGUgZmlyc3QgYXJndW1lbnQuXFxuXFxuXCIsXG4gIFwiMzZcIjogXCJQcm9wZXJ0eSBtdXN0IGJlIGEgc3RyaW5nIHZhbHVlLlxcblxcblwiLFxuICBcIjM3XCI6IFwiU3ludGF4IEVycm9yIGF0ICVzLlxcblxcblwiLFxuICBcIjM4XCI6IFwiRm9ybXVsYSBjb250YWlucyBhIGZ1bmN0aW9uIHRoYXQgbmVlZHMgcGFyZW50aGVzZXMgYXQgJXMuXFxuXFxuXCIsXG4gIFwiMzlcIjogXCJGb3JtdWxhIGlzIG1pc3NpbmcgY2xvc2luZyBwYXJlbnRoZXNpcyBhdCAlcy5cXG5cXG5cIixcbiAgXCI0MFwiOiBcIkZvcm11bGEgaGFzIHRvbyBtYW55IGNsb3NpbmcgcGFyZW50aGVzZXMgYXQgJXMuXFxuXFxuXCIsXG4gIFwiNDFcIjogXCJBbGwgdmFsdWVzIGluIGEgZm9ybXVsYSBtdXN0IGhhdmUgdGhlIHNhbWUgdW5pdCBvciBiZSB1bml0bGVzcy5cXG5cXG5cIixcbiAgXCI0MlwiOiBcIlBsZWFzZSBwcm92aWRlIGEgbnVtYmVyIG9mIHN0ZXBzIHRvIHRoZSBtb2R1bGFyU2NhbGUgaGVscGVyLlxcblxcblwiLFxuICBcIjQzXCI6IFwiUGxlYXNlIHBhc3MgYSBudW1iZXIgb3Igb25lIG9mIHRoZSBwcmVkZWZpbmVkIHNjYWxlcyB0byB0aGUgbW9kdWxhclNjYWxlIGhlbHBlciBhcyB0aGUgcmF0aW8uXFxuXFxuXCIsXG4gIFwiNDRcIjogXCJJbnZhbGlkIHZhbHVlIHBhc3NlZCBhcyBiYXNlIHRvIG1vZHVsYXJTY2FsZSwgZXhwZWN0ZWQgbnVtYmVyIG9yIGVtL3JlbSBzdHJpbmcgYnV0IGdvdCAlcy5cXG5cXG5cIixcbiAgXCI0NVwiOiBcIlBhc3NlZCBpbnZhbGlkIGFyZ3VtZW50IHRvIGhzbFRvQ29sb3JTdHJpbmcsIHBsZWFzZSBwYXNzIGEgSHNsQ29sb3Igb3IgSHNsYUNvbG9yIG9iamVjdC5cXG5cXG5cIixcbiAgXCI0NlwiOiBcIlBhc3NlZCBpbnZhbGlkIGFyZ3VtZW50IHRvIHJnYlRvQ29sb3JTdHJpbmcsIHBsZWFzZSBwYXNzIGEgUmdiQ29sb3Igb3IgUmdiYUNvbG9yIG9iamVjdC5cXG5cXG5cIixcbiAgXCI0N1wiOiBcIm1pblNjcmVlbiBhbmQgbWF4U2NyZWVuIG11c3QgYmUgcHJvdmlkZWQgYXMgc3RyaW5naWZpZWQgbnVtYmVycyB3aXRoIHRoZSBzYW1lIHVuaXRzLlxcblxcblwiLFxuICBcIjQ4XCI6IFwiZnJvbVNpemUgYW5kIHRvU2l6ZSBtdXN0IGJlIHByb3ZpZGVkIGFzIHN0cmluZ2lmaWVkIG51bWJlcnMgd2l0aCB0aGUgc2FtZSB1bml0cy5cXG5cXG5cIixcbiAgXCI0OVwiOiBcIkV4cGVjdHMgZWl0aGVyIGFuIGFycmF5IG9mIG9iamVjdHMgb3IgYSBzaW5nbGUgb2JqZWN0IHdpdGggdGhlIHByb3BlcnRpZXMgcHJvcCwgZnJvbVNpemUsIGFuZCB0b1NpemUuXFxuXFxuXCIsXG4gIFwiNTBcIjogXCJFeHBlY3RzIHRoZSBvYmplY3RzIGluIHRoZSBmaXJzdCBhcmd1bWVudCBhcnJheSB0byBoYXZlIHRoZSBwcm9wZXJ0aWVzIHByb3AsIGZyb21TaXplLCBhbmQgdG9TaXplLlxcblxcblwiLFxuICBcIjUxXCI6IFwiRXhwZWN0cyB0aGUgZmlyc3QgYXJndW1lbnQgb2JqZWN0IHRvIGhhdmUgdGhlIHByb3BlcnRpZXMgcHJvcCwgZnJvbVNpemUsIGFuZCB0b1NpemUuXFxuXFxuXCIsXG4gIFwiNTJcIjogXCJmb250RmFjZSBleHBlY3RzIGVpdGhlciB0aGUgcGF0aCB0byB0aGUgZm9udCBmaWxlKHMpIG9yIGEgbmFtZSBvZiBhIGxvY2FsIGNvcHkuXFxuXFxuXCIsXG4gIFwiNTNcIjogXCJmb250RmFjZSBleHBlY3RzIGxvY2FsRm9udHMgdG8gYmUgYW4gYXJyYXkuXFxuXFxuXCIsXG4gIFwiNTRcIjogXCJmb250RmFjZSBleHBlY3RzIGZpbGVGb3JtYXRzIHRvIGJlIGFuIGFycmF5LlxcblxcblwiLFxuICBcIjU1XCI6IFwiZm9udEZhY2UgZXhwZWN0cyBhIG5hbWUgb2YgYSBmb250LWZhbWlseS5cXG5cXG5cIixcbiAgXCI1NlwiOiBcImxpbmVhckdyYWRpZW50IHJlcXVyaWVzIGF0IGxlYXN0IDIgY29sb3Itc3RvcHMgdG8gcHJvcGVybHkgcmVuZGVyLlxcblxcblwiLFxuICBcIjU3XCI6IFwicmFkaWFsR3JhZGllbnQgcmVxdXJpZXMgYXQgbGVhc3QgMiBjb2xvci1zdG9wcyB0byBwcm9wZXJseSByZW5kZXIuXFxuXFxuXCIsXG4gIFwiNThcIjogXCJQbGVhc2Ugc3VwcGx5IGEgZmlsZW5hbWUgdG8gcmV0aW5hSW1hZ2UoKSBhcyB0aGUgZmlyc3QgYXJndW1lbnQuXFxuXFxuXCIsXG4gIFwiNTlcIjogXCJQYXNzZWQgaW52YWxpZCBhcmd1bWVudCB0byB0cmlhbmdsZSwgcGxlYXNlIHBhc3MgY29ycmVjdCBwb2ludGluZ0RpcmVjdGlvbiBlLmcuICdyaWdodCcuXFxuXFxuXCIsXG4gIFwiNjBcIjogXCJQYXNzZWQgYW4gaW52YWxpZCB2YWx1ZSB0byBgaGVpZ2h0YCBvciBgd2lkdGhgLiBQbGVhc2UgcHJvdmlkZSBhIHBpeGVsIGJhc2VkIHVuaXQuXFxuXFxuXCIsXG4gIFwiNjFcIjogXCJQcm9wZXJ0eSBtdXN0IGJlIGEgc3RyaW5nIHZhbHVlLlxcblxcblwiLFxuICBcIjYyXCI6IFwiYm9yZGVyUmFkaXVzIGV4cGVjdHMgYSByYWRpdXMgdmFsdWUgYXMgYSBzdHJpbmcgb3IgbnVtYmVyIGFzIHRoZSBzZWNvbmQgYXJndW1lbnQuXFxuXFxuXCIsXG4gIFwiNjNcIjogXCJib3JkZXJSYWRpdXMgZXhwZWN0cyBvbmUgb2YgXFxcInRvcFxcXCIsIFxcXCJib3R0b21cXFwiLCBcXFwibGVmdFxcXCIgb3IgXFxcInJpZ2h0XFxcIiBhcyB0aGUgZmlyc3QgYXJndW1lbnQuXFxuXFxuXCIsXG4gIFwiNjRcIjogXCJUaGUgYW5pbWF0aW9uIHNob3J0aGFuZCBvbmx5IHRha2VzIDggYXJndW1lbnRzLiBTZWUgdGhlIHNwZWNpZmljYXRpb24gZm9yIG1vcmUgaW5mb3JtYXRpb246IGh0dHA6Ly9tZG4uaW8vYW5pbWF0aW9uLlxcblxcblwiLFxuICBcIjY1XCI6IFwiVG8gcGFzcyBtdWx0aXBsZSBhbmltYXRpb25zIHBsZWFzZSBzdXBwbHkgdGhlbSBpbiBhcnJheXMsIGUuZy4gYW5pbWF0aW9uKFsncm90YXRlJywgJzJzJ10sIFsnbW92ZScsICcxcyddKVxcXFxuVG8gcGFzcyBhIHNpbmdsZSBhbmltYXRpb24gcGxlYXNlIHN1cHBseSB0aGVtIGluIHNpbXBsZSB2YWx1ZXMsIGUuZy4gYW5pbWF0aW9uKCdyb3RhdGUnLCAnMnMnKS5cXG5cXG5cIixcbiAgXCI2NlwiOiBcIlRoZSBhbmltYXRpb24gc2hvcnRoYW5kIGFycmF5cyBjYW4gb25seSBoYXZlIDggZWxlbWVudHMuIFNlZSB0aGUgc3BlY2lmaWNhdGlvbiBmb3IgbW9yZSBpbmZvcm1hdGlvbjogaHR0cDovL21kbi5pby9hbmltYXRpb24uXFxuXFxuXCIsXG4gIFwiNjdcIjogXCJZb3UgbXVzdCBwcm92aWRlIGEgdGVtcGxhdGUgdG8gdGhpcyBtZXRob2QuXFxuXFxuXCIsXG4gIFwiNjhcIjogXCJZb3UgcGFzc2VkIGFuIHVuc3VwcG9ydGVkIHNlbGVjdG9yIHN0YXRlIHRvIHRoaXMgbWV0aG9kLlxcblxcblwiLFxuICBcIjY5XCI6IFwiRXhwZWN0ZWQgYSBzdHJpbmcgZW5kaW5nIGluIFxcXCJweFxcXCIgb3IgYSBudW1iZXIgcGFzc2VkIGFzIHRoZSBmaXJzdCBhcmd1bWVudCB0byAlcygpLCBnb3QgJXMgaW5zdGVhZC5cXG5cXG5cIixcbiAgXCI3MFwiOiBcIkV4cGVjdGVkIGEgc3RyaW5nIGVuZGluZyBpbiBcXFwicHhcXFwiIG9yIGEgbnVtYmVyIHBhc3NlZCBhcyB0aGUgc2Vjb25kIGFyZ3VtZW50IHRvICVzKCksIGdvdCAlcyBpbnN0ZWFkLlxcblxcblwiLFxuICBcIjcxXCI6IFwiUGFzc2VkIGludmFsaWQgcGl4ZWwgdmFsdWUgJXMgdG8gJXMoKSwgcGxlYXNlIHBhc3MgYSB2YWx1ZSBsaWtlIFxcXCIxMnB4XFxcIiBvciAxMi5cXG5cXG5cIixcbiAgXCI3MlwiOiBcIlBhc3NlZCBpbnZhbGlkIGJhc2UgdmFsdWUgJXMgdG8gJXMoKSwgcGxlYXNlIHBhc3MgYSB2YWx1ZSBsaWtlIFxcXCIxMnB4XFxcIiBvciAxMi5cXG5cXG5cIixcbiAgXCI3M1wiOiBcIlBsZWFzZSBwcm92aWRlIGEgdmFsaWQgQ1NTIHZhcmlhYmxlLlxcblxcblwiLFxuICBcIjc0XCI6IFwiQ1NTIHZhcmlhYmxlIG5vdCBmb3VuZC5cXG5cXG5cIixcbiAgXCI3NVwiOiBcImZyb21TaXplIGFuZCB0b1NpemUgbXVzdCBiZSBwcm92aWRlZCBhcyBzdHJpbmdpZmllZCBudW1iZXJzIHdpdGggdGhlIHNhbWUgdW5pdHMgYXMgbWluU2NyZWVuIGFuZCBtYXhTY3JlZW4uXFxuXCJcbn07XG4vKipcbiAqIHN1cGVyIGJhc2ljIHZlcnNpb24gb2Ygc3ByaW50ZlxuICogQHByaXZhdGVcbiAqL1xuXG5mdW5jdGlvbiBmb3JtYXQoKSB7XG4gIGZvciAodmFyIF9sZW4gPSBhcmd1bWVudHMubGVuZ3RoLCBhcmdzID0gbmV3IEFycmF5KF9sZW4pLCBfa2V5ID0gMDsgX2tleSA8IF9sZW47IF9rZXkrKykge1xuICAgIGFyZ3NbX2tleV0gPSBhcmd1bWVudHNbX2tleV07XG4gIH1cblxuICB2YXIgYSA9IGFyZ3NbMF07XG4gIHZhciBiID0gW107XG4gIHZhciBjO1xuXG4gIGZvciAoYyA9IDE7IGMgPCBhcmdzLmxlbmd0aDsgYyArPSAxKSB7XG4gICAgYi5wdXNoKGFyZ3NbY10pO1xuICB9XG5cbiAgYi5mb3JFYWNoKGZ1bmN0aW9uIChkKSB7XG4gICAgYSA9IGEucmVwbGFjZSgvJVthLXpdLywgZCk7XG4gIH0pO1xuICByZXR1cm4gYTtcbn1cbi8qKlxuICogQ3JlYXRlIGFuIGVycm9yIGZpbGUgb3V0IG9mIGVycm9ycy5tZCBmb3IgZGV2ZWxvcG1lbnQgYW5kIGEgc2ltcGxlIHdlYiBsaW5rIHRvIHRoZSBmdWxsIGVycm9yc1xuICogaW4gcHJvZHVjdGlvbiBtb2RlLlxuICogQHByaXZhdGVcbiAqL1xuXG5cbnZhciBQb2xpc2hlZEVycm9yID0gLyojX19QVVJFX18qL2Z1bmN0aW9uIChfRXJyb3IpIHtcbiAgX2luaGVyaXRzTG9vc2UoUG9saXNoZWRFcnJvciwgX0Vycm9yKTtcblxuICBmdW5jdGlvbiBQb2xpc2hlZEVycm9yKGNvZGUpIHtcbiAgICB2YXIgX3RoaXM7XG5cbiAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgPT09ICdwcm9kdWN0aW9uJykge1xuICAgICAgX3RoaXMgPSBfRXJyb3IuY2FsbCh0aGlzLCBcIkFuIGVycm9yIG9jY3VycmVkLiBTZWUgaHR0cHM6Ly9naXRodWIuY29tL3N0eWxlZC1jb21wb25lbnRzL3BvbGlzaGVkL2Jsb2IvbWFpbi9zcmMvaW50ZXJuYWxIZWxwZXJzL2Vycm9ycy5tZCNcIiArIGNvZGUgKyBcIiBmb3IgbW9yZSBpbmZvcm1hdGlvbi5cIikgfHwgdGhpcztcbiAgICB9IGVsc2Uge1xuICAgICAgZm9yICh2YXIgX2xlbjIgPSBhcmd1bWVudHMubGVuZ3RoLCBhcmdzID0gbmV3IEFycmF5KF9sZW4yID4gMSA/IF9sZW4yIC0gMSA6IDApLCBfa2V5MiA9IDE7IF9rZXkyIDwgX2xlbjI7IF9rZXkyKyspIHtcbiAgICAgICAgYXJnc1tfa2V5MiAtIDFdID0gYXJndW1lbnRzW19rZXkyXTtcbiAgICAgIH1cblxuICAgICAgX3RoaXMgPSBfRXJyb3IuY2FsbCh0aGlzLCBmb3JtYXQuYXBwbHkodm9pZCAwLCBbRVJST1JTW2NvZGVdXS5jb25jYXQoYXJncykpKSB8fCB0aGlzO1xuICAgIH1cblxuICAgIHJldHVybiBfYXNzZXJ0VGhpc0luaXRpYWxpemVkKF90aGlzKTtcbiAgfVxuXG4gIHJldHVybiBQb2xpc2hlZEVycm9yO1xufSggLyojX19QVVJFX18qL193cmFwTmF0aXZlU3VwZXIoRXJyb3IpKTtcblxudmFyIHVuaXRSZWdFeHAgPSAvKCg/IVxcdylhfG5hfGhjfG1jfGRnfG1lW3JdP3x4ZXxuaSg/IVthLXpBLVpdKXxtbXxjcHx0cHx4cHxxKD8hcyl8aHZ8eGFtdnxuaW12fHd2fHNtfHMoPyFcXER8JCl8Z2VkfGRhcmc/fG5ydXQpL2c7IC8vIE1lcmdlcyBhZGRpdGlvbmFsIG1hdGggZnVuY3Rpb25hbGl0eSBpbnRvIHRoZSBkZWZhdWx0cy5cblxuZnVuY3Rpb24gbWVyZ2VTeW1ib2xNYXBzKGFkZGl0aW9uYWxTeW1ib2xzKSB7XG4gIHZhciBzeW1ib2xNYXAgPSB7fTtcbiAgc3ltYm9sTWFwLnN5bWJvbHMgPSBhZGRpdGlvbmFsU3ltYm9scyA/IF9leHRlbmRzKHt9LCBkZWZhdWx0TWF0aFN5bWJvbHMuc3ltYm9scywgYWRkaXRpb25hbFN5bWJvbHMuc3ltYm9scykgOiBfZXh0ZW5kcyh7fSwgZGVmYXVsdE1hdGhTeW1ib2xzLnN5bWJvbHMpO1xuICByZXR1cm4gc3ltYm9sTWFwO1xufVxuXG5mdW5jdGlvbiBleGVjKG9wZXJhdG9ycywgdmFsdWVzKSB7XG4gIHZhciBfcmVmO1xuXG4gIHZhciBvcCA9IG9wZXJhdG9ycy5wb3AoKTtcbiAgdmFsdWVzLnB1c2gob3AuZi5hcHBseShvcCwgKF9yZWYgPSBbXSkuY29uY2F0LmFwcGx5KF9yZWYsIHZhbHVlcy5zcGxpY2UoLW9wLmFyZ0NvdW50KSkpKTtcbiAgcmV0dXJuIG9wLnByZWNlZGVuY2U7XG59XG5cbmZ1bmN0aW9uIGNhbGN1bGF0ZShleHByZXNzaW9uLCBhZGRpdGlvbmFsU3ltYm9scykge1xuICB2YXIgc3ltYm9sTWFwID0gbWVyZ2VTeW1ib2xNYXBzKGFkZGl0aW9uYWxTeW1ib2xzKTtcbiAgdmFyIG1hdGNoO1xuICB2YXIgb3BlcmF0b3JzID0gW3N5bWJvbE1hcC5zeW1ib2xzWycoJ10ucHJlZml4XTtcbiAgdmFyIHZhbHVlcyA9IFtdO1xuICB2YXIgcGF0dGVybiA9IG5ldyBSZWdFeHAoIC8vIFBhdHRlcm4gZm9yIG51bWJlcnNcbiAgXCJcXFxcZCsoPzpcXFxcLlxcXFxkKyk/fFwiICsgLy8gLi4uYW5kIHBhdHRlcm5zIGZvciBpbmRpdmlkdWFsIG9wZXJhdG9ycy9mdW5jdGlvbiBuYW1lc1xuICBPYmplY3Qua2V5cyhzeW1ib2xNYXAuc3ltYm9scykubWFwKGZ1bmN0aW9uIChrZXkpIHtcbiAgICByZXR1cm4gc3ltYm9sTWFwLnN5bWJvbHNba2V5XTtcbiAgfSkgLy8gbG9uZ2VyIHN5bWJvbHMgc2hvdWxkIGJlIGxpc3RlZCBmaXJzdFxuICAvLyAkRmxvd0ZpeE1lXG4gIC5zb3J0KGZ1bmN0aW9uIChhLCBiKSB7XG4gICAgcmV0dXJuIGIuc3ltYm9sLmxlbmd0aCAtIGEuc3ltYm9sLmxlbmd0aDtcbiAgfSkgLy8gJEZsb3dGaXhNZVxuICAubWFwKGZ1bmN0aW9uICh2YWwpIHtcbiAgICByZXR1cm4gdmFsLnJlZ1N5bWJvbDtcbiAgfSkuam9pbignfCcpICsgXCJ8KFxcXFxTKVwiLCAnZycpO1xuICBwYXR0ZXJuLmxhc3RJbmRleCA9IDA7IC8vIFJlc2V0IHJlZ3VsYXIgZXhwcmVzc2lvbiBvYmplY3RcblxuICB2YXIgYWZ0ZXJWYWx1ZSA9IGZhbHNlO1xuXG4gIGRvIHtcbiAgICBtYXRjaCA9IHBhdHRlcm4uZXhlYyhleHByZXNzaW9uKTtcblxuICAgIHZhciBfcmVmMiA9IG1hdGNoIHx8IFsnKScsIHVuZGVmaW5lZF0sXG4gICAgICAgIHRva2VuID0gX3JlZjJbMF0sXG4gICAgICAgIGJhZCA9IF9yZWYyWzFdO1xuXG4gICAgdmFyIG5vdE51bWJlciA9IHN5bWJvbE1hcC5zeW1ib2xzW3Rva2VuXTtcbiAgICB2YXIgbm90TmV3VmFsdWUgPSBub3ROdW1iZXIgJiYgIW5vdE51bWJlci5wcmVmaXggJiYgIW5vdE51bWJlci5mdW5jO1xuICAgIHZhciBub3RBZnRlclZhbHVlID0gIW5vdE51bWJlciB8fCAhbm90TnVtYmVyLnBvc3RmaXggJiYgIW5vdE51bWJlci5pbmZpeDsgLy8gQ2hlY2sgZm9yIHN5bnRheCBlcnJvcnM6XG5cbiAgICBpZiAoYmFkIHx8IChhZnRlclZhbHVlID8gbm90QWZ0ZXJWYWx1ZSA6IG5vdE5ld1ZhbHVlKSkge1xuICAgICAgdGhyb3cgbmV3IFBvbGlzaGVkRXJyb3IoMzcsIG1hdGNoID8gbWF0Y2guaW5kZXggOiBleHByZXNzaW9uLmxlbmd0aCwgZXhwcmVzc2lvbik7XG4gICAgfVxuXG4gICAgaWYgKGFmdGVyVmFsdWUpIHtcbiAgICAgIC8vIFdlIGVpdGhlciBoYXZlIGFuIGluZml4IG9yIHBvc3RmaXggb3BlcmF0b3IgKHRoZXkgc2hvdWxkIGJlIG11dHVhbGx5IGV4Y2x1c2l2ZSlcbiAgICAgIHZhciBjdXJyID0gbm90TnVtYmVyLnBvc3RmaXggfHwgbm90TnVtYmVyLmluZml4O1xuXG4gICAgICBkbyB7XG4gICAgICAgIHZhciBwcmV2ID0gb3BlcmF0b3JzW29wZXJhdG9ycy5sZW5ndGggLSAxXTtcbiAgICAgICAgaWYgKChjdXJyLnByZWNlZGVuY2UgLSBwcmV2LnByZWNlZGVuY2UgfHwgcHJldi5yaWdodFRvTGVmdCkgPiAwKSBicmVhazsgLy8gQXBwbHkgcHJldmlvdXMgb3BlcmF0b3IsIHNpbmNlIGl0IGhhcyBwcmVjZWRlbmNlIG92ZXIgY3VycmVudCBvbmVcbiAgICAgIH0gd2hpbGUgKGV4ZWMob3BlcmF0b3JzLCB2YWx1ZXMpKTsgLy8gRXhpdCBsb29wIGFmdGVyIGV4ZWN1dGluZyBhbiBvcGVuaW5nIHBhcmVudGhlc2lzIG9yIGZ1bmN0aW9uXG5cblxuICAgICAgYWZ0ZXJWYWx1ZSA9IGN1cnIubm90YXRpb24gPT09ICdwb3N0Zml4JztcblxuICAgICAgaWYgKGN1cnIuc3ltYm9sICE9PSAnKScpIHtcbiAgICAgICAgb3BlcmF0b3JzLnB1c2goY3Vycik7IC8vIFBvc3RmaXggYWx3YXlzIGhhcyBwcmVjZWRlbmNlIG92ZXIgYW55IG9wZXJhdG9yIHRoYXQgZm9sbG93cyBhZnRlciBpdFxuXG4gICAgICAgIGlmIChhZnRlclZhbHVlKSBleGVjKG9wZXJhdG9ycywgdmFsdWVzKTtcbiAgICAgIH1cbiAgICB9IGVsc2UgaWYgKG5vdE51bWJlcikge1xuICAgICAgLy8gcHJlZml4IG9wZXJhdG9yIG9yIGZ1bmN0aW9uXG4gICAgICBvcGVyYXRvcnMucHVzaChub3ROdW1iZXIucHJlZml4IHx8IG5vdE51bWJlci5mdW5jKTtcblxuICAgICAgaWYgKG5vdE51bWJlci5mdW5jKSB7XG4gICAgICAgIC8vIFJlcXVpcmUgYW4gb3BlbmluZyBwYXJlbnRoZXNpc1xuICAgICAgICBtYXRjaCA9IHBhdHRlcm4uZXhlYyhleHByZXNzaW9uKTtcblxuICAgICAgICBpZiAoIW1hdGNoIHx8IG1hdGNoWzBdICE9PSAnKCcpIHtcbiAgICAgICAgICB0aHJvdyBuZXcgUG9saXNoZWRFcnJvcigzOCwgbWF0Y2ggPyBtYXRjaC5pbmRleCA6IGV4cHJlc3Npb24ubGVuZ3RoLCBleHByZXNzaW9uKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICAvLyBudW1iZXJcbiAgICAgIHZhbHVlcy5wdXNoKCt0b2tlbik7XG4gICAgICBhZnRlclZhbHVlID0gdHJ1ZTtcbiAgICB9XG4gIH0gd2hpbGUgKG1hdGNoICYmIG9wZXJhdG9ycy5sZW5ndGgpO1xuXG4gIGlmIChvcGVyYXRvcnMubGVuZ3RoKSB7XG4gICAgdGhyb3cgbmV3IFBvbGlzaGVkRXJyb3IoMzksIG1hdGNoID8gbWF0Y2guaW5kZXggOiBleHByZXNzaW9uLmxlbmd0aCwgZXhwcmVzc2lvbik7XG4gIH0gZWxzZSBpZiAobWF0Y2gpIHtcbiAgICB0aHJvdyBuZXcgUG9saXNoZWRFcnJvcig0MCwgbWF0Y2ggPyBtYXRjaC5pbmRleCA6IGV4cHJlc3Npb24ubGVuZ3RoLCBleHByZXNzaW9uKTtcbiAgfSBlbHNlIHtcbiAgICByZXR1cm4gdmFsdWVzLnBvcCgpO1xuICB9XG59XG5cbmZ1bmN0aW9uIHJldmVyc2VTdHJpbmcoc3RyKSB7XG4gIHJldHVybiBzdHIuc3BsaXQoJycpLnJldmVyc2UoKS5qb2luKCcnKTtcbn1cbi8qKlxuICogSGVscGVyIGZvciBkb2luZyBtYXRoIHdpdGggQ1NTIFVuaXRzLiBBY2NlcHRzIGEgZm9ybXVsYSBhcyBhIHN0cmluZy4gQWxsIHZhbHVlcyBpbiB0aGUgZm9ybXVsYSBtdXN0IGhhdmUgdGhlIHNhbWUgdW5pdCAob3IgYmUgdW5pdGxlc3MpLiBTdXBwb3J0cyBjb21wbGV4IGZvcm11bGFzIHV0bGl6aWluZyBhZGRpdGlvbiwgc3VidHJhY3Rpb24sIG11bHRpcGxpY2F0aW9uLCBkaXZpc2lvbiwgc3F1YXJlIHJvb3QsIHBvd2VycywgZmFjdG9yaWFsLCBtaW4sIG1heCwgYXMgd2VsbCBhcyBwYXJlbnRoZXNlcyBmb3Igb3JkZXIgb2Ygb3BlcmF0aW9uLlxuICpcbiAqSW4gY2FzZXMgd2hlcmUgeW91IG5lZWQgdG8gZG8gY2FsY3VsYXRpb25zIHdpdGggbWl4ZWQgdW5pdHMgd2hlcmUgb25lIHVuaXQgaXMgYSBbcmVsYXRpdmUgbGVuZ3RoIHVuaXRdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0NTUy9sZW5ndGgjUmVsYXRpdmVfbGVuZ3RoX3VuaXRzKSwgeW91IHdpbGwgd2FudCB0byB1c2UgW0NTUyBDYWxjXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9DU1MvY2FsYykuXG4gKlxuICogKndhcm5pbmcqIFdoaWxlIHdlJ3ZlIGRvbmUgZXZlcnl0aGluZyBwb3NzaWJsZSB0byBlbnN1cmUgbWF0aCBzYWZlbHkgZXZhbHV0ZXMgZm9ybXVsYXMgZXhwcmVzc2VkIGFzIHN0cmluZ3MsIHlvdSBzaG91bGQgYWx3YXlzIHVzZSBleHRyZW1lIGNhdXRpb24gd2hlbiBwYXNzaW5nIGBtYXRoYCB1c2VyIHByb3ZpZGVkIHZhbHVlcy5cbiAqIEBleGFtcGxlXG4gKiAvLyBTdHlsZXMgYXMgb2JqZWN0IHVzYWdlXG4gKiBjb25zdCBzdHlsZXMgPSB7XG4gKiAgIGZvbnRTaXplOiBtYXRoKCcxMnJlbSArIDhyZW0nKSxcbiAqICAgZm9udFNpemU6IG1hdGgoJygxMnB4ICsgMnB4KSAqIDMnKSxcbiAqICAgZm9udFNpemU6IG1hdGgoJzNweF4yICsgc3FydCg0KScpLFxuICogfVxuICpcbiAqIC8vIHN0eWxlZC1jb21wb25lbnRzIHVzYWdlXG4gKiBjb25zdCBkaXYgPSBzdHlsZWQuZGl2YFxuICogICBmb250U2l6ZTogJHttYXRoKCcxMnJlbSArIDhyZW0nKX07XG4gKiAgIGZvbnRTaXplOiAke21hdGgoJygxMnB4ICsgMnB4KSAqIDMnKX07XG4gKiAgIGZvbnRTaXplOiAke21hdGgoJzNweF4yICsgc3FydCg0KScpfTtcbiAqIGBcbiAqXG4gKiAvLyBDU1MgYXMgSlMgT3V0cHV0XG4gKlxuICogZGl2OiB7XG4gKiAgIGZvbnRTaXplOiAnMjByZW0nLFxuICogICBmb250U2l6ZTogJzQycHgnLFxuICogICBmb250U2l6ZTogJzExcHgnLFxuICogfVxuICovXG5cblxuZnVuY3Rpb24gbWF0aChmb3JtdWxhLCBhZGRpdGlvbmFsU3ltYm9scykge1xuICB2YXIgcmV2ZXJzZWRGb3JtdWxhID0gcmV2ZXJzZVN0cmluZyhmb3JtdWxhKTtcbiAgdmFyIGZvcm11bGFNYXRjaCA9IHJldmVyc2VkRm9ybXVsYS5tYXRjaCh1bml0UmVnRXhwKTsgLy8gQ2hlY2sgdGhhdCBhbGwgdW5pdHMgYXJlIHRoZSBzYW1lXG5cbiAgaWYgKGZvcm11bGFNYXRjaCAmJiAhZm9ybXVsYU1hdGNoLmV2ZXJ5KGZ1bmN0aW9uICh1bml0KSB7XG4gICAgcmV0dXJuIHVuaXQgPT09IGZvcm11bGFNYXRjaFswXTtcbiAgfSkpIHtcbiAgICB0aHJvdyBuZXcgUG9saXNoZWRFcnJvcig0MSk7XG4gIH1cblxuICB2YXIgY2xlYW5Gb3JtdWxhID0gcmV2ZXJzZVN0cmluZyhyZXZlcnNlZEZvcm11bGEucmVwbGFjZSh1bml0UmVnRXhwLCAnJykpO1xuICByZXR1cm4gXCJcIiArIGNhbGN1bGF0ZShjbGVhbkZvcm11bGEsIGFkZGl0aW9uYWxTeW1ib2xzKSArIChmb3JtdWxhTWF0Y2ggPyByZXZlcnNlU3RyaW5nKGZvcm11bGFNYXRjaFswXSkgOiAnJyk7XG59XG5cbnZhciBjc3NWYXJpYWJsZVJlZ2V4ID0gLy0tW1xcU10qL2c7XG4vKipcbiAqIEZldGNoZXMgdGhlIHZhbHVlIG9mIGEgcGFzc2VkIENTUyBWYXJpYWJsZS5cbiAqXG4gKiBQYXNzdGhyb3VnaCBjYW4gYmUgZW5hYmxlZCAob2ZmIGJ5IGRlZmF1bHQpIGZvciB3aGVuIHlvdSBhcmUgdW5zdXJlIG9mIHRoZSBpbnB1dCBhbmQgd2FudCBub24tdmFyaWFibGUgdmFsdWVzIHRvIGJlIHJldHVybmVkIGluc3RlYWQgb2YgYW4gZXJyb3IuXG4gKlxuICogQGV4YW1wbGVcbiAqIC8vIFN0eWxlcyBhcyBvYmplY3QgdXNhZ2VcbiAqIGNvbnN0IHN0eWxlcyA9IHtcbiAqICAgJ2JhY2tncm91bmQnOiBjc3NWYXIoJy0tYmFja2dyb3VuZC1jb2xvcicpLFxuICogfVxuICpcbiAqIC8vIHN0eWxlZC1jb21wb25lbnRzIHVzYWdlXG4gKiBjb25zdCBkaXYgPSBzdHlsZWQuZGl2YFxuICogICBiYWNrZ3JvdW5kOiAke2Nzc1ZhcignLS1iYWNrZ3JvdW5kLWNvbG9yJyl9O1xuICogYFxuICpcbiAqIC8vIENTUyBpbiBKUyBPdXRwdXRcbiAqXG4gKiBlbGVtZW50IHtcbiAqICAgJ2JhY2tncm91bmQnOiAncmVkJ1xuICogfVxuICovXG5cbmZ1bmN0aW9uIGNzc1Zhcihjc3NWYXJpYWJsZSwgcGFzc1Rocm91Z2gpIHtcbiAgaWYgKCFjc3NWYXJpYWJsZSB8fCAhY3NzVmFyaWFibGUubWF0Y2goY3NzVmFyaWFibGVSZWdleCkpIHtcbiAgICBpZiAocGFzc1Rocm91Z2gpIHJldHVybiBjc3NWYXJpYWJsZTtcbiAgICB0aHJvdyBuZXcgUG9saXNoZWRFcnJvcig3Myk7XG4gIH1cblxuICB2YXIgdmFyaWFibGVWYWx1ZTtcbiAgLyogZXNsaW50LWRpc2FibGUgKi9cblxuICAvKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAqL1xuXG4gIGlmICh0eXBlb2YgZG9jdW1lbnQgIT09ICd1bmRlZmluZWQnICYmIGRvY3VtZW50LmRvY3VtZW50RWxlbWVudCAhPT0gbnVsbCkge1xuICAgIHZhcmlhYmxlVmFsdWUgPSBnZXRDb21wdXRlZFN0eWxlKGRvY3VtZW50LmRvY3VtZW50RWxlbWVudCkuZ2V0UHJvcGVydHlWYWx1ZShjc3NWYXJpYWJsZSk7XG4gIH1cbiAgLyogZXNsaW50LWVuYWJsZSAqL1xuXG5cbiAgaWYgKHZhcmlhYmxlVmFsdWUpIHtcbiAgICByZXR1cm4gdmFyaWFibGVWYWx1ZS50cmltKCk7XG4gIH0gZWxzZSB7XG4gICAgdGhyb3cgbmV3IFBvbGlzaGVkRXJyb3IoNzQpO1xuICB9XG59XG5cbi8vIEBwcml2YXRlXG5mdW5jdGlvbiBjYXBpdGFsaXplU3RyaW5nKHN0cmluZykge1xuICByZXR1cm4gc3RyaW5nLmNoYXJBdCgwKS50b1VwcGVyQ2FzZSgpICsgc3RyaW5nLnNsaWNlKDEpO1xufVxuXG52YXIgcG9zaXRpb25NYXAgPSBbJ1RvcCcsICdSaWdodCcsICdCb3R0b20nLCAnTGVmdCddO1xuXG5mdW5jdGlvbiBnZW5lcmF0ZVByb3BlcnR5KHByb3BlcnR5LCBwb3NpdGlvbikge1xuICBpZiAoIXByb3BlcnR5KSByZXR1cm4gcG9zaXRpb24udG9Mb3dlckNhc2UoKTtcbiAgdmFyIHNwbGl0UHJvcGVydHkgPSBwcm9wZXJ0eS5zcGxpdCgnLScpO1xuXG4gIGlmIChzcGxpdFByb3BlcnR5Lmxlbmd0aCA+IDEpIHtcbiAgICBzcGxpdFByb3BlcnR5LnNwbGljZSgxLCAwLCBwb3NpdGlvbik7XG4gICAgcmV0dXJuIHNwbGl0UHJvcGVydHkucmVkdWNlKGZ1bmN0aW9uIChhY2MsIHZhbCkge1xuICAgICAgcmV0dXJuIFwiXCIgKyBhY2MgKyBjYXBpdGFsaXplU3RyaW5nKHZhbCk7XG4gICAgfSk7XG4gIH1cblxuICB2YXIgam9pbmVkUHJvcGVydHkgPSBwcm9wZXJ0eS5yZXBsYWNlKC8oW2Etel0pKFtBLVpdKS9nLCBcIiQxXCIgKyBwb3NpdGlvbiArIFwiJDJcIik7XG4gIHJldHVybiBwcm9wZXJ0eSA9PT0gam9pbmVkUHJvcGVydHkgPyBcIlwiICsgcHJvcGVydHkgKyBwb3NpdGlvbiA6IGpvaW5lZFByb3BlcnR5O1xufVxuXG5mdW5jdGlvbiBnZW5lcmF0ZVN0eWxlcyhwcm9wZXJ0eSwgdmFsdWVzV2l0aERlZmF1bHRzKSB7XG4gIHZhciBzdHlsZXMgPSB7fTtcblxuICBmb3IgKHZhciBpID0gMDsgaSA8IHZhbHVlc1dpdGhEZWZhdWx0cy5sZW5ndGg7IGkgKz0gMSkge1xuICAgIGlmICh2YWx1ZXNXaXRoRGVmYXVsdHNbaV0gfHwgdmFsdWVzV2l0aERlZmF1bHRzW2ldID09PSAwKSB7XG4gICAgICBzdHlsZXNbZ2VuZXJhdGVQcm9wZXJ0eShwcm9wZXJ0eSwgcG9zaXRpb25NYXBbaV0pXSA9IHZhbHVlc1dpdGhEZWZhdWx0c1tpXTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gc3R5bGVzO1xufVxuLyoqXG4gKiBFbmFibGVzIHNob3J0aGFuZCBmb3IgZGlyZWN0aW9uLWJhc2VkIHByb3BlcnRpZXMuIEl0IGFjY2VwdHMgYSBwcm9wZXJ0eSAoaHlwaGVuYXRlZCBvciBjYW1lbENhc2VkKSBhbmQgdXAgdG8gZm91ciB2YWx1ZXMgdGhhdCBtYXAgdG8gdG9wLCByaWdodCwgYm90dG9tLCBhbmQgbGVmdCwgcmVzcGVjdGl2ZWx5LiBZb3UgY2FuIG9wdGlvbmFsbHkgcGFzcyBhbiBlbXB0eSBzdHJpbmcgdG8gZ2V0IG9ubHkgdGhlIGRpcmVjdGlvbmFsIHZhbHVlcyBhcyBwcm9wZXJ0aWVzLiBZb3UgY2FuIGFsc28gb3B0aW9uYWxseSBwYXNzIGEgbnVsbCBhcmd1bWVudCBmb3IgYSBkaXJlY3Rpb25hbCB2YWx1ZSB0byBpZ25vcmUgaXQuXG4gKiBAZXhhbXBsZVxuICogLy8gU3R5bGVzIGFzIG9iamVjdCB1c2FnZVxuICogY29uc3Qgc3R5bGVzID0ge1xuICogICAuLi5kaXJlY3Rpb25hbFByb3BlcnR5KCdwYWRkaW5nJywgJzEycHgnLCAnMjRweCcsICczNnB4JywgJzQ4cHgnKVxuICogfVxuICpcbiAqIC8vIHN0eWxlZC1jb21wb25lbnRzIHVzYWdlXG4gKiBjb25zdCBkaXYgPSBzdHlsZWQuZGl2YFxuICogICAke2RpcmVjdGlvbmFsUHJvcGVydHkoJ3BhZGRpbmcnLCAnMTJweCcsICcyNHB4JywgJzM2cHgnLCAnNDhweCcpfVxuICogYFxuICpcbiAqIC8vIENTUyBhcyBKUyBPdXRwdXRcbiAqXG4gKiBkaXYge1xuICogICAncGFkZGluZ1RvcCc6ICcxMnB4JyxcbiAqICAgJ3BhZGRpbmdSaWdodCc6ICcyNHB4JyxcbiAqICAgJ3BhZGRpbmdCb3R0b20nOiAnMzZweCcsXG4gKiAgICdwYWRkaW5nTGVmdCc6ICc0OHB4J1xuICogfVxuICovXG5cblxuZnVuY3Rpb24gZGlyZWN0aW9uYWxQcm9wZXJ0eShwcm9wZXJ0eSkge1xuICBmb3IgKHZhciBfbGVuID0gYXJndW1lbnRzLmxlbmd0aCwgdmFsdWVzID0gbmV3IEFycmF5KF9sZW4gPiAxID8gX2xlbiAtIDEgOiAwKSwgX2tleSA9IDE7IF9rZXkgPCBfbGVuOyBfa2V5KyspIHtcbiAgICB2YWx1ZXNbX2tleSAtIDFdID0gYXJndW1lbnRzW19rZXldO1xuICB9XG5cbiAgLy8gIHByZXR0aWVyLWlnbm9yZVxuICB2YXIgZmlyc3RWYWx1ZSA9IHZhbHVlc1swXSxcbiAgICAgIF92YWx1ZXMkID0gdmFsdWVzWzFdLFxuICAgICAgc2Vjb25kVmFsdWUgPSBfdmFsdWVzJCA9PT0gdm9pZCAwID8gZmlyc3RWYWx1ZSA6IF92YWx1ZXMkLFxuICAgICAgX3ZhbHVlcyQyID0gdmFsdWVzWzJdLFxuICAgICAgdGhpcmRWYWx1ZSA9IF92YWx1ZXMkMiA9PT0gdm9pZCAwID8gZmlyc3RWYWx1ZSA6IF92YWx1ZXMkMixcbiAgICAgIF92YWx1ZXMkMyA9IHZhbHVlc1szXSxcbiAgICAgIGZvdXJ0aFZhbHVlID0gX3ZhbHVlcyQzID09PSB2b2lkIDAgPyBzZWNvbmRWYWx1ZSA6IF92YWx1ZXMkMztcbiAgdmFyIHZhbHVlc1dpdGhEZWZhdWx0cyA9IFtmaXJzdFZhbHVlLCBzZWNvbmRWYWx1ZSwgdGhpcmRWYWx1ZSwgZm91cnRoVmFsdWVdO1xuICByZXR1cm4gZ2VuZXJhdGVTdHlsZXMocHJvcGVydHksIHZhbHVlc1dpdGhEZWZhdWx0cyk7XG59XG5cbi8qKlxuICogQ2hlY2sgaWYgYSBzdHJpbmcgZW5kcyB3aXRoIHNvbWV0aGluZ1xuICogQHByaXZhdGVcbiAqL1xuZnVuY3Rpb24gZW5kc1dpdGgoc3RyaW5nLCBzdWZmaXgpIHtcbiAgcmV0dXJuIHN0cmluZy5zdWJzdHIoLXN1ZmZpeC5sZW5ndGgpID09PSBzdWZmaXg7XG59XG5cbnZhciBjc3NSZWdleCA9IC9eKFsrLV0/KD86XFxkK3xcXGQqXFwuXFxkKykpKFthLXpdKnwlKSQvO1xuLyoqXG4gKiBSZXR1cm5zIGEgZ2l2ZW4gQ1NTIHZhbHVlIG1pbnVzIGl0cyB1bml0IG9mIG1lYXN1cmUuXG4gKlxuICogQGRlcHJlY2F0ZWQgLSBzdHJpcFVuaXQncyB1bml0UmV0dXJuIGZ1bmN0aW9uYWxpdHkgaGFzIGJlZW4gbWFya2VkIGZvciBkZXByZWNhdGlvbiBpbiBwb2xpc2hlZCA0LjAuIEl0J3MgZnVuY3Rpb25hbGl0eSBoYXMgYmVlbiBiZWVuIG1vdmVkIHRvIGdldFZhbHVlQW5kVW5pdC5cbiAqXG4gKiBAZXhhbXBsZVxuICogLy8gU3R5bGVzIGFzIG9iamVjdCB1c2FnZVxuICogY29uc3Qgc3R5bGVzID0ge1xuICogICAnLS1kaW1lbnNpb24nOiBzdHJpcFVuaXQoJzEwMHB4JylcbiAqIH1cbiAqXG4gKiAvLyBzdHlsZWQtY29tcG9uZW50cyB1c2FnZVxuICogY29uc3QgZGl2ID0gc3R5bGVkLmRpdmBcbiAqICAgLS1kaW1lbnNpb246ICR7c3RyaXBVbml0KCcxMDBweCcpfTtcbiAqIGBcbiAqXG4gKiAvLyBDU1MgaW4gSlMgT3V0cHV0XG4gKlxuICogZWxlbWVudCB7XG4gKiAgICctLWRpbWVuc2lvbic6IDEwMFxuICogfVxuICovXG5cbmZ1bmN0aW9uIHN0cmlwVW5pdCh2YWx1ZSwgdW5pdFJldHVybikge1xuICBpZiAodHlwZW9mIHZhbHVlICE9PSAnc3RyaW5nJykgcmV0dXJuIHVuaXRSZXR1cm4gPyBbdmFsdWUsIHVuZGVmaW5lZF0gOiB2YWx1ZTtcbiAgdmFyIG1hdGNoZWRWYWx1ZSA9IHZhbHVlLm1hdGNoKGNzc1JlZ2V4KTtcblxuICBpZiAodW5pdFJldHVybikge1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1jb25zb2xlXG4gICAgY29uc29sZS53YXJuKFwic3RyaXBVbml0J3MgdW5pdFJldHVybiBmdW5jdGlvbmFsaXR5IGhhcyBiZWVuIG1hcmtlZCBmb3IgZGVwcmVjYXRpb24gaW4gcG9saXNoZWQgNC4wLiBJdCdzIGZ1bmN0aW9uYWxpdHkgaGFzIGJlZW4gYmVlbiBtb3ZlZCB0byBnZXRWYWx1ZUFuZFVuaXQuXCIpO1xuICAgIGlmIChtYXRjaGVkVmFsdWUpIHJldHVybiBbcGFyc2VGbG9hdCh2YWx1ZSksIG1hdGNoZWRWYWx1ZVsyXV07XG4gICAgcmV0dXJuIFt2YWx1ZSwgdW5kZWZpbmVkXTtcbiAgfVxuXG4gIGlmIChtYXRjaGVkVmFsdWUpIHJldHVybiBwYXJzZUZsb2F0KHZhbHVlKTtcbiAgcmV0dXJuIHZhbHVlO1xufVxuXG4vKipcbiAqIEZhY3RvcnkgZnVuY3Rpb24gdGhhdCBjcmVhdGVzIHBpeGVsLXRvLXggY29udmVydGVyc1xuICogQHByaXZhdGVcbiAqL1xuXG52YXIgcHh0b0ZhY3RvcnkgPSBmdW5jdGlvbiBweHRvRmFjdG9yeSh0bykge1xuICByZXR1cm4gZnVuY3Rpb24gKHB4dmFsLCBiYXNlKSB7XG4gICAgaWYgKGJhc2UgPT09IHZvaWQgMCkge1xuICAgICAgYmFzZSA9ICcxNnB4JztcbiAgICB9XG5cbiAgICB2YXIgbmV3UHh2YWwgPSBweHZhbDtcbiAgICB2YXIgbmV3QmFzZSA9IGJhc2U7XG5cbiAgICBpZiAodHlwZW9mIHB4dmFsID09PSAnc3RyaW5nJykge1xuICAgICAgaWYgKCFlbmRzV2l0aChweHZhbCwgJ3B4JykpIHtcbiAgICAgICAgdGhyb3cgbmV3IFBvbGlzaGVkRXJyb3IoNjksIHRvLCBweHZhbCk7XG4gICAgICB9XG5cbiAgICAgIG5ld1B4dmFsID0gc3RyaXBVbml0KHB4dmFsKTtcbiAgICB9XG5cbiAgICBpZiAodHlwZW9mIGJhc2UgPT09ICdzdHJpbmcnKSB7XG4gICAgICBpZiAoIWVuZHNXaXRoKGJhc2UsICdweCcpKSB7XG4gICAgICAgIHRocm93IG5ldyBQb2xpc2hlZEVycm9yKDcwLCB0bywgYmFzZSk7XG4gICAgICB9XG5cbiAgICAgIG5ld0Jhc2UgPSBzdHJpcFVuaXQoYmFzZSk7XG4gICAgfVxuXG4gICAgaWYgKHR5cGVvZiBuZXdQeHZhbCA9PT0gJ3N0cmluZycpIHtcbiAgICAgIHRocm93IG5ldyBQb2xpc2hlZEVycm9yKDcxLCBweHZhbCwgdG8pO1xuICAgIH1cblxuICAgIGlmICh0eXBlb2YgbmV3QmFzZSA9PT0gJ3N0cmluZycpIHtcbiAgICAgIHRocm93IG5ldyBQb2xpc2hlZEVycm9yKDcyLCBiYXNlLCB0byk7XG4gICAgfVxuXG4gICAgcmV0dXJuIFwiXCIgKyBuZXdQeHZhbCAvIG5ld0Jhc2UgKyB0bztcbiAgfTtcbn07XG5cbi8qKlxuICogQ29udmVydCBwaXhlbCB2YWx1ZSB0byBlbXMuIFRoZSBkZWZhdWx0IGJhc2UgdmFsdWUgaXMgMTZweCwgYnV0IGNhbiBiZSBjaGFuZ2VkIGJ5IHBhc3NpbmcgYVxuICogc2Vjb25kIGFyZ3VtZW50IHRvIHRoZSBmdW5jdGlvbi5cbiAqIEBmdW5jdGlvblxuICogQHBhcmFtIHtzdHJpbmd8bnVtYmVyfSBweHZhbFxuICogQHBhcmFtIHtzdHJpbmd8bnVtYmVyfSBbYmFzZT0nMTZweCddXG4gKiBAZXhhbXBsZVxuICogLy8gU3R5bGVzIGFzIG9iamVjdCB1c2FnZVxuICogY29uc3Qgc3R5bGVzID0ge1xuICogICAnaGVpZ2h0JzogZW0oJzE2cHgnKVxuICogfVxuICpcbiAqIC8vIHN0eWxlZC1jb21wb25lbnRzIHVzYWdlXG4gKiBjb25zdCBkaXYgPSBzdHlsZWQuZGl2YFxuICogICBoZWlnaHQ6ICR7ZW0oJzE2cHgnKX1cbiAqIGBcbiAqXG4gKiAvLyBDU1MgaW4gSlMgT3V0cHV0XG4gKlxuICogZWxlbWVudCB7XG4gKiAgICdoZWlnaHQnOiAnMWVtJ1xuICogfVxuICovXG5cbnZhciBlbSA9IC8qI19fUFVSRV9fKi9weHRvRmFjdG9yeSgnZW0nKTtcblxudmFyIGNzc1JlZ2V4JDEgPSAvXihbKy1dPyg/OlxcZCt8XFxkKlxcLlxcZCspKShbYS16XSp8JSkkLztcbi8qKlxuICogUmV0dXJucyBhIGdpdmVuIENTUyB2YWx1ZSBhbmQgaXRzIHVuaXQgYXMgZWxlbWVudHMgb2YgYW4gYXJyYXkuXG4gKlxuICogQGV4YW1wbGVcbiAqIC8vIFN0eWxlcyBhcyBvYmplY3QgdXNhZ2VcbiAqIGNvbnN0IHN0eWxlcyA9IHtcbiAqICAgJy0tZGltZW5zaW9uJzogZ2V0VmFsdWVBbmRVbml0KCcxMDBweCcpWzBdLFxuICogICAnLS11bml0JzogZ2V0VmFsdWVBbmRVbml0KCcxMDBweCcpWzFdLFxuICogfVxuICpcbiAqIC8vIHN0eWxlZC1jb21wb25lbnRzIHVzYWdlXG4gKiBjb25zdCBkaXYgPSBzdHlsZWQuZGl2YFxuICogICAtLWRpbWVuc2lvbjogJHtnZXRWYWx1ZUFuZFVuaXQoJzEwMHB4JylbMF19O1xuICogICAtLXVuaXQ6ICR7Z2V0VmFsdWVBbmRVbml0KCcxMDBweCcpWzFdfTtcbiAqIGBcbiAqXG4gKiAvLyBDU1MgaW4gSlMgT3V0cHV0XG4gKlxuICogZWxlbWVudCB7XG4gKiAgICctLWRpbWVuc2lvbic6IDEwMCxcbiAqICAgJy0tdW5pdCc6ICdweCcsXG4gKiB9XG4gKi9cblxuZnVuY3Rpb24gZ2V0VmFsdWVBbmRVbml0KHZhbHVlKSB7XG4gIGlmICh0eXBlb2YgdmFsdWUgIT09ICdzdHJpbmcnKSByZXR1cm4gW3ZhbHVlLCAnJ107XG4gIHZhciBtYXRjaGVkVmFsdWUgPSB2YWx1ZS5tYXRjaChjc3NSZWdleCQxKTtcbiAgaWYgKG1hdGNoZWRWYWx1ZSkgcmV0dXJuIFtwYXJzZUZsb2F0KHZhbHVlKSwgbWF0Y2hlZFZhbHVlWzJdXTtcbiAgcmV0dXJuIFt2YWx1ZSwgdW5kZWZpbmVkXTtcbn1cblxudmFyIHJhdGlvTmFtZXMgPSB7XG4gIG1pbm9yU2Vjb25kOiAxLjA2NyxcbiAgbWFqb3JTZWNvbmQ6IDEuMTI1LFxuICBtaW5vclRoaXJkOiAxLjIsXG4gIG1ham9yVGhpcmQ6IDEuMjUsXG4gIHBlcmZlY3RGb3VydGg6IDEuMzMzLFxuICBhdWdGb3VydGg6IDEuNDE0LFxuICBwZXJmZWN0RmlmdGg6IDEuNSxcbiAgbWlub3JTaXh0aDogMS42LFxuICBnb2xkZW5TZWN0aW9uOiAxLjYxOCxcbiAgbWFqb3JTaXh0aDogMS42NjcsXG4gIG1pbm9yU2V2ZW50aDogMS43NzgsXG4gIG1ham9yU2V2ZW50aDogMS44NzUsXG4gIG9jdGF2ZTogMixcbiAgbWFqb3JUZW50aDogMi41LFxuICBtYWpvckVsZXZlbnRoOiAyLjY2NyxcbiAgbWFqb3JUd2VsZnRoOiAzLFxuICBkb3VibGVPY3RhdmU6IDRcbn07XG5cbmZ1bmN0aW9uIGdldFJhdGlvKHJhdGlvTmFtZSkge1xuICByZXR1cm4gcmF0aW9OYW1lc1tyYXRpb05hbWVdO1xufVxuLyoqXG4gKiBFc3RhYmxpc2ggY29uc2lzdGVudCBtZWFzdXJlbWVudHMgYW5kIHNwYWNpYWwgcmVsYXRpb25zaGlwcyB0aHJvdWdob3V0IHlvdXIgcHJvamVjdHMgYnkgaW5jcmVtZW50aW5nIGFuIGVtIG9yIHJlbSB2YWx1ZSB1cCBvciBkb3duIGEgZGVmaW5lZCBzY2FsZS4gV2UgcHJvdmlkZSBhIGxpc3Qgb2YgY29tbW9ubHkgdXNlZCBzY2FsZXMgYXMgcHJlLWRlZmluZWQgdmFyaWFibGVzLlxuICogQGV4YW1wbGVcbiAqIC8vIFN0eWxlcyBhcyBvYmplY3QgdXNhZ2VcbiAqIGNvbnN0IHN0eWxlcyA9IHtcbiAqICAgIC8vIEluY3JlbWVudCB0d28gc3RlcHMgdXAgdGhlIGRlZmF1bHQgc2NhbGVcbiAqICAgJ2ZvbnRTaXplJzogbW9kdWxhclNjYWxlKDIpXG4gKiB9XG4gKlxuICogLy8gc3R5bGVkLWNvbXBvbmVudHMgdXNhZ2VcbiAqIGNvbnN0IGRpdiA9IHN0eWxlZC5kaXZgXG4gKiAgICAvLyBJbmNyZW1lbnQgdHdvIHN0ZXBzIHVwIHRoZSBkZWZhdWx0IHNjYWxlXG4gKiAgIGZvbnRTaXplOiAke21vZHVsYXJTY2FsZSgyKX1cbiAqIGBcbiAqXG4gKiAvLyBDU1MgaW4gSlMgT3V0cHV0XG4gKlxuICogZWxlbWVudCB7XG4gKiAgICdmb250U2l6ZSc6ICcxLjc3Njg5ZW0nXG4gKiB9XG4gKi9cblxuXG5mdW5jdGlvbiBtb2R1bGFyU2NhbGUoc3RlcHMsIGJhc2UsIHJhdGlvKSB7XG4gIGlmIChiYXNlID09PSB2b2lkIDApIHtcbiAgICBiYXNlID0gJzFlbSc7XG4gIH1cblxuICBpZiAocmF0aW8gPT09IHZvaWQgMCkge1xuICAgIHJhdGlvID0gMS4zMzM7XG4gIH1cblxuICBpZiAodHlwZW9mIHN0ZXBzICE9PSAnbnVtYmVyJykge1xuICAgIHRocm93IG5ldyBQb2xpc2hlZEVycm9yKDQyKTtcbiAgfVxuXG4gIGlmICh0eXBlb2YgcmF0aW8gPT09ICdzdHJpbmcnICYmICFyYXRpb05hbWVzW3JhdGlvXSkge1xuICAgIHRocm93IG5ldyBQb2xpc2hlZEVycm9yKDQzKTtcbiAgfVxuXG4gIHZhciBfcmVmID0gdHlwZW9mIGJhc2UgPT09ICdzdHJpbmcnID8gZ2V0VmFsdWVBbmRVbml0KGJhc2UpIDogW2Jhc2UsICcnXSxcbiAgICAgIHJlYWxCYXNlID0gX3JlZlswXSxcbiAgICAgIHVuaXQgPSBfcmVmWzFdO1xuXG4gIHZhciByZWFsUmF0aW8gPSB0eXBlb2YgcmF0aW8gPT09ICdzdHJpbmcnID8gZ2V0UmF0aW8ocmF0aW8pIDogcmF0aW87XG5cbiAgaWYgKHR5cGVvZiByZWFsQmFzZSA9PT0gJ3N0cmluZycpIHtcbiAgICB0aHJvdyBuZXcgUG9saXNoZWRFcnJvcig0NCwgYmFzZSk7XG4gIH1cblxuICByZXR1cm4gXCJcIiArIHJlYWxCYXNlICogTWF0aC5wb3cocmVhbFJhdGlvLCBzdGVwcykgKyAodW5pdCB8fCAnJyk7XG59XG5cbi8qKlxuICogQ29udmVydCBwaXhlbCB2YWx1ZSB0byByZW1zLiBUaGUgZGVmYXVsdCBiYXNlIHZhbHVlIGlzIDE2cHgsIGJ1dCBjYW4gYmUgY2hhbmdlZCBieSBwYXNzaW5nIGFcbiAqIHNlY29uZCBhcmd1bWVudCB0byB0aGUgZnVuY3Rpb24uXG4gKiBAZnVuY3Rpb25cbiAqIEBwYXJhbSB7c3RyaW5nfG51bWJlcn0gcHh2YWxcbiAqIEBwYXJhbSB7c3RyaW5nfG51bWJlcn0gW2Jhc2U9JzE2cHgnXVxuICogQGV4YW1wbGVcbiAqIC8vIFN0eWxlcyBhcyBvYmplY3QgdXNhZ2VcbiAqIGNvbnN0IHN0eWxlcyA9IHtcbiAqICAgJ2hlaWdodCc6IHJlbSgnMTZweCcpXG4gKiB9XG4gKlxuICogLy8gc3R5bGVkLWNvbXBvbmVudHMgdXNhZ2VcbiAqIGNvbnN0IGRpdiA9IHN0eWxlZC5kaXZgXG4gKiAgIGhlaWdodDogJHtyZW0oJzE2cHgnKX1cbiAqIGBcbiAqXG4gKiAvLyBDU1MgaW4gSlMgT3V0cHV0XG4gKlxuICogZWxlbWVudCB7XG4gKiAgICdoZWlnaHQnOiAnMXJlbSdcbiAqIH1cbiAqL1xuXG52YXIgcmVtID0gLyojX19QVVJFX18qL3B4dG9GYWN0b3J5KCdyZW0nKTtcblxuLyoqXG4gKiBSZXR1cm5zIGEgQ1NTIGNhbGMgZm9ybXVsYSBmb3IgbGluZWFyIGludGVycG9sYXRpb24gb2YgYSBwcm9wZXJ0eSBiZXR3ZWVuIHR3byB2YWx1ZXMuIEFjY2VwdHMgb3B0aW9uYWwgbWluU2NyZWVuIChkZWZhdWx0cyB0byAnMzIwcHgnKSBhbmQgbWF4U2NyZWVuIChkZWZhdWx0cyB0byAnMTIwMHB4JykuXG4gKlxuICogQGV4YW1wbGVcbiAqIC8vIFN0eWxlcyBhcyBvYmplY3QgdXNhZ2VcbiAqIGNvbnN0IHN0eWxlcyA9IHtcbiAqICAgZm9udFNpemU6IGJldHdlZW4oJzIwcHgnLCAnMTAwcHgnLCAnNDAwcHgnLCAnMTAwMHB4JyksXG4gKiAgIGZvbnRTaXplOiBiZXR3ZWVuKCcyMHB4JywgJzEwMHB4JylcbiAqIH1cbiAqXG4gKiAvLyBzdHlsZWQtY29tcG9uZW50cyB1c2FnZVxuICogY29uc3QgZGl2ID0gc3R5bGVkLmRpdmBcbiAqICAgZm9udFNpemU6ICR7YmV0d2VlbignMjBweCcsICcxMDBweCcsICc0MDBweCcsICcxMDAwcHgnKX07XG4gKiAgIGZvbnRTaXplOiAke2JldHdlZW4oJzIwcHgnLCAnMTAwcHgnKX1cbiAqIGBcbiAqXG4gKiAvLyBDU1MgYXMgSlMgT3V0cHV0XG4gKlxuICogaDE6IHtcbiAqICAgJ2ZvbnRTaXplJzogJ2NhbGMoLTMzLjMzMzMzMzMzMzMzMzM0cHggKyAxMy4zMzMzMzMzMzMzMzMzMzR2dyknLFxuICogICAnZm9udFNpemUnOiAnY2FsYygtOS4wOTA5MDkwOTA5MDkwOTNweCArIDkuMDkwOTA5MDkwOTA5MDkydncpJ1xuICogfVxuICovXG5cbmZ1bmN0aW9uIGJldHdlZW4oZnJvbVNpemUsIHRvU2l6ZSwgbWluU2NyZWVuLCBtYXhTY3JlZW4pIHtcbiAgaWYgKG1pblNjcmVlbiA9PT0gdm9pZCAwKSB7XG4gICAgbWluU2NyZWVuID0gJzMyMHB4JztcbiAgfVxuXG4gIGlmIChtYXhTY3JlZW4gPT09IHZvaWQgMCkge1xuICAgIG1heFNjcmVlbiA9ICcxMjAwcHgnO1xuICB9XG5cbiAgdmFyIF9nZXRWYWx1ZUFuZFVuaXQgPSBnZXRWYWx1ZUFuZFVuaXQoZnJvbVNpemUpLFxuICAgICAgdW5pdGxlc3NGcm9tU2l6ZSA9IF9nZXRWYWx1ZUFuZFVuaXRbMF0sXG4gICAgICBmcm9tU2l6ZVVuaXQgPSBfZ2V0VmFsdWVBbmRVbml0WzFdO1xuXG4gIHZhciBfZ2V0VmFsdWVBbmRVbml0MiA9IGdldFZhbHVlQW5kVW5pdCh0b1NpemUpLFxuICAgICAgdW5pdGxlc3NUb1NpemUgPSBfZ2V0VmFsdWVBbmRVbml0MlswXSxcbiAgICAgIHRvU2l6ZVVuaXQgPSBfZ2V0VmFsdWVBbmRVbml0MlsxXTtcblxuICB2YXIgX2dldFZhbHVlQW5kVW5pdDMgPSBnZXRWYWx1ZUFuZFVuaXQobWluU2NyZWVuKSxcbiAgICAgIHVuaXRsZXNzTWluU2NyZWVuID0gX2dldFZhbHVlQW5kVW5pdDNbMF0sXG4gICAgICBtaW5TY3JlZW5Vbml0ID0gX2dldFZhbHVlQW5kVW5pdDNbMV07XG5cbiAgdmFyIF9nZXRWYWx1ZUFuZFVuaXQ0ID0gZ2V0VmFsdWVBbmRVbml0KG1heFNjcmVlbiksXG4gICAgICB1bml0bGVzc01heFNjcmVlbiA9IF9nZXRWYWx1ZUFuZFVuaXQ0WzBdLFxuICAgICAgbWF4U2NyZWVuVW5pdCA9IF9nZXRWYWx1ZUFuZFVuaXQ0WzFdO1xuXG4gIGlmICh0eXBlb2YgdW5pdGxlc3NNaW5TY3JlZW4gIT09ICdudW1iZXInIHx8IHR5cGVvZiB1bml0bGVzc01heFNjcmVlbiAhPT0gJ251bWJlcicgfHwgIW1pblNjcmVlblVuaXQgfHwgIW1heFNjcmVlblVuaXQgfHwgbWluU2NyZWVuVW5pdCAhPT0gbWF4U2NyZWVuVW5pdCkge1xuICAgIHRocm93IG5ldyBQb2xpc2hlZEVycm9yKDQ3KTtcbiAgfVxuXG4gIGlmICh0eXBlb2YgdW5pdGxlc3NGcm9tU2l6ZSAhPT0gJ251bWJlcicgfHwgdHlwZW9mIHVuaXRsZXNzVG9TaXplICE9PSAnbnVtYmVyJyB8fCBmcm9tU2l6ZVVuaXQgIT09IHRvU2l6ZVVuaXQpIHtcbiAgICB0aHJvdyBuZXcgUG9saXNoZWRFcnJvcig0OCk7XG4gIH1cblxuICBpZiAoZnJvbVNpemVVbml0ICE9PSBtaW5TY3JlZW5Vbml0IHx8IHRvU2l6ZVVuaXQgIT09IG1heFNjcmVlblVuaXQpIHtcbiAgICB0aHJvdyBuZXcgUG9saXNoZWRFcnJvcig3NSk7XG4gIH1cblxuICB2YXIgc2xvcGUgPSAodW5pdGxlc3NGcm9tU2l6ZSAtIHVuaXRsZXNzVG9TaXplKSAvICh1bml0bGVzc01pblNjcmVlbiAtIHVuaXRsZXNzTWF4U2NyZWVuKTtcbiAgdmFyIGJhc2UgPSB1bml0bGVzc1RvU2l6ZSAtIHNsb3BlICogdW5pdGxlc3NNYXhTY3JlZW47XG4gIHJldHVybiBcImNhbGMoXCIgKyBiYXNlLnRvRml4ZWQoMikgKyAoZnJvbVNpemVVbml0IHx8ICcnKSArIFwiICsgXCIgKyAoMTAwICogc2xvcGUpLnRvRml4ZWQoMikgKyBcInZ3KVwiO1xufVxuXG4vKipcbiAqIENTUyB0byBjb250YWluIGEgZmxvYXQgKGNyZWRpdCB0byBDU1NNb2pvKS5cbiAqXG4gKiBAZXhhbXBsZVxuICogLy8gU3R5bGVzIGFzIG9iamVjdCB1c2FnZVxuICogY29uc3Qgc3R5bGVzID0ge1xuICogICAgLi4uY2xlYXJGaXgoKSxcbiAqIH1cbiAqXG4gKiAvLyBzdHlsZWQtY29tcG9uZW50cyB1c2FnZVxuICogY29uc3QgZGl2ID0gc3R5bGVkLmRpdmBcbiAqICAgJHtjbGVhckZpeCgpfVxuICogYFxuICpcbiAqIC8vIENTUyBhcyBKUyBPdXRwdXRcbiAqXG4gKiAnJjo6YWZ0ZXInOiB7XG4gKiAgICdjbGVhcic6ICdib3RoJyxcbiAqICAgJ2NvbnRlbnQnOiAnXCJcIicsXG4gKiAgICdkaXNwbGF5JzogJ3RhYmxlJ1xuICogfVxuICovXG5mdW5jdGlvbiBjbGVhckZpeChwYXJlbnQpIHtcbiAgdmFyIF9yZWY7XG5cbiAgaWYgKHBhcmVudCA9PT0gdm9pZCAwKSB7XG4gICAgcGFyZW50ID0gJyYnO1xuICB9XG5cbiAgdmFyIHBzZXVkb1NlbGVjdG9yID0gcGFyZW50ICsgXCI6OmFmdGVyXCI7XG4gIHJldHVybiBfcmVmID0ge30sIF9yZWZbcHNldWRvU2VsZWN0b3JdID0ge1xuICAgIGNsZWFyOiAnYm90aCcsXG4gICAgY29udGVudDogJ1wiXCInLFxuICAgIGRpc3BsYXk6ICd0YWJsZSdcbiAgfSwgX3JlZjtcbn1cblxuLyoqXG4gKiBDU1MgdG8gZnVsbHkgY292ZXIgYW4gYXJlYS4gQ2FuIG9wdGlvbmFsbHkgYmUgcGFzc2VkIGFuIG9mZnNldCB0byBhY3QgYXMgYSBcInBhZGRpbmdcIi5cbiAqXG4gKiBAZXhhbXBsZVxuICogLy8gU3R5bGVzIGFzIG9iamVjdCB1c2FnZVxuICogY29uc3Qgc3R5bGVzID0ge1xuICogICAuLi5jb3ZlcigpXG4gKiB9XG4gKlxuICogLy8gc3R5bGVkLWNvbXBvbmVudHMgdXNhZ2VcbiAqIGNvbnN0IGRpdiA9IHN0eWxlZC5kaXZgXG4gKiAgICR7Y292ZXIoKX1cbiAqIGBcbiAqXG4gKiAvLyBDU1MgYXMgSlMgT3V0cHV0XG4gKlxuICogZGl2OiB7XG4gKiAgICdwb3NpdGlvbic6ICdhYnNvbHV0ZScsXG4gKiAgICd0b3AnOiAnMCcsXG4gKiAgICdyaWdodDogJzAnLFxuICogICAnYm90dG9tJzogJzAnLFxuICogICAnbGVmdDogJzAnXG4gKiB9XG4gKi9cbmZ1bmN0aW9uIGNvdmVyKG9mZnNldCkge1xuICBpZiAob2Zmc2V0ID09PSB2b2lkIDApIHtcbiAgICBvZmZzZXQgPSAwO1xuICB9XG5cbiAgcmV0dXJuIHtcbiAgICBwb3NpdGlvbjogJ2Fic29sdXRlJyxcbiAgICB0b3A6IG9mZnNldCxcbiAgICByaWdodDogb2Zmc2V0LFxuICAgIGJvdHRvbTogb2Zmc2V0LFxuICAgIGxlZnQ6IG9mZnNldFxuICB9O1xufVxuXG4vKipcbiAqIENTUyB0byByZXByZXNlbnQgdHJ1bmNhdGVkIHRleHQgd2l0aCBhbiBlbGxpcHNpcy5cbiAqXG4gKiBAZXhhbXBsZVxuICogLy8gU3R5bGVzIGFzIG9iamVjdCB1c2FnZVxuICogY29uc3Qgc3R5bGVzID0ge1xuICogICAuLi5lbGxpcHNpcygnMjUwcHgnKVxuICogfVxuICpcbiAqIC8vIHN0eWxlZC1jb21wb25lbnRzIHVzYWdlXG4gKiBjb25zdCBkaXYgPSBzdHlsZWQuZGl2YFxuICogICAke2VsbGlwc2lzKCcyNTBweCcpfVxuICogYFxuICpcbiAqIC8vIENTUyBhcyBKUyBPdXRwdXRcbiAqXG4gKiBkaXY6IHtcbiAqICAgJ2Rpc3BsYXknOiAnaW5saW5lLWJsb2NrJyxcbiAqICAgJ21heFdpZHRoJzogJzI1MHB4JyxcbiAqICAgJ292ZXJmbG93JzogJ2hpZGRlbicsXG4gKiAgICd0ZXh0T3ZlcmZsb3cnOiAnZWxsaXBzaXMnLFxuICogICAnd2hpdGVTcGFjZSc6ICdub3dyYXAnLFxuICogICAnd29yZFdyYXAnOiAnbm9ybWFsJ1xuICogfVxuICovXG5mdW5jdGlvbiBlbGxpcHNpcyh3aWR0aCkge1xuICBpZiAod2lkdGggPT09IHZvaWQgMCkge1xuICAgIHdpZHRoID0gJzEwMCUnO1xuICB9XG5cbiAgcmV0dXJuIHtcbiAgICBkaXNwbGF5OiAnaW5saW5lLWJsb2NrJyxcbiAgICBtYXhXaWR0aDogd2lkdGgsXG4gICAgb3ZlcmZsb3c6ICdoaWRkZW4nLFxuICAgIHRleHRPdmVyZmxvdzogJ2VsbGlwc2lzJyxcbiAgICB3aGl0ZVNwYWNlOiAnbm93cmFwJyxcbiAgICB3b3JkV3JhcDogJ25vcm1hbCdcbiAgfTtcbn1cblxuZnVuY3Rpb24gX2NyZWF0ZUZvck9mSXRlcmF0b3JIZWxwZXJMb29zZShvLCBhbGxvd0FycmF5TGlrZSkgeyB2YXIgaXQgPSB0eXBlb2YgU3ltYm9sICE9PSBcInVuZGVmaW5lZFwiICYmIG9bU3ltYm9sLml0ZXJhdG9yXSB8fCBvW1wiQEBpdGVyYXRvclwiXTsgaWYgKGl0KSByZXR1cm4gKGl0ID0gaXQuY2FsbChvKSkubmV4dC5iaW5kKGl0KTsgaWYgKEFycmF5LmlzQXJyYXkobykgfHwgKGl0ID0gX3Vuc3VwcG9ydGVkSXRlcmFibGVUb0FycmF5KG8pKSB8fCBhbGxvd0FycmF5TGlrZSAmJiBvICYmIHR5cGVvZiBvLmxlbmd0aCA9PT0gXCJudW1iZXJcIikgeyBpZiAoaXQpIG8gPSBpdDsgdmFyIGkgPSAwOyByZXR1cm4gZnVuY3Rpb24gKCkgeyBpZiAoaSA+PSBvLmxlbmd0aCkgcmV0dXJuIHsgZG9uZTogdHJ1ZSB9OyByZXR1cm4geyBkb25lOiBmYWxzZSwgdmFsdWU6IG9baSsrXSB9OyB9OyB9IHRocm93IG5ldyBUeXBlRXJyb3IoXCJJbnZhbGlkIGF0dGVtcHQgdG8gaXRlcmF0ZSBub24taXRlcmFibGUgaW5zdGFuY2UuXFxuSW4gb3JkZXIgdG8gYmUgaXRlcmFibGUsIG5vbi1hcnJheSBvYmplY3RzIG11c3QgaGF2ZSBhIFtTeW1ib2wuaXRlcmF0b3JdKCkgbWV0aG9kLlwiKTsgfVxuXG5mdW5jdGlvbiBfdW5zdXBwb3J0ZWRJdGVyYWJsZVRvQXJyYXkobywgbWluTGVuKSB7IGlmICghbykgcmV0dXJuOyBpZiAodHlwZW9mIG8gPT09IFwic3RyaW5nXCIpIHJldHVybiBfYXJyYXlMaWtlVG9BcnJheShvLCBtaW5MZW4pOyB2YXIgbiA9IE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChvKS5zbGljZSg4LCAtMSk7IGlmIChuID09PSBcIk9iamVjdFwiICYmIG8uY29uc3RydWN0b3IpIG4gPSBvLmNvbnN0cnVjdG9yLm5hbWU7IGlmIChuID09PSBcIk1hcFwiIHx8IG4gPT09IFwiU2V0XCIpIHJldHVybiBBcnJheS5mcm9tKG8pOyBpZiAobiA9PT0gXCJBcmd1bWVudHNcIiB8fCAvXig/OlVpfEkpbnQoPzo4fDE2fDMyKSg/OkNsYW1wZWQpP0FycmF5JC8udGVzdChuKSkgcmV0dXJuIF9hcnJheUxpa2VUb0FycmF5KG8sIG1pbkxlbik7IH1cblxuZnVuY3Rpb24gX2FycmF5TGlrZVRvQXJyYXkoYXJyLCBsZW4pIHsgaWYgKGxlbiA9PSBudWxsIHx8IGxlbiA+IGFyci5sZW5ndGgpIGxlbiA9IGFyci5sZW5ndGg7IGZvciAodmFyIGkgPSAwLCBhcnIyID0gbmV3IEFycmF5KGxlbik7IGkgPCBsZW47IGkrKykgeyBhcnIyW2ldID0gYXJyW2ldOyB9IHJldHVybiBhcnIyOyB9XG5cbi8qKlxuICogUmV0dXJucyBhIHNldCBvZiBtZWRpYSBxdWVyaWVzIHRoYXQgcmVzaXplcyBhIHByb3BlcnR5IChvciBzZXQgb2YgcHJvcGVydGllcykgYmV0d2VlbiBhIHByb3ZpZGVkIGZyb21TaXplIGFuZCB0b1NpemUuIEFjY2VwdHMgb3B0aW9uYWwgbWluU2NyZWVuIChkZWZhdWx0cyB0byAnMzIwcHgnKSBhbmQgbWF4U2NyZWVuIChkZWZhdWx0cyB0byAnMTIwMHB4JykgdG8gY29uc3RyYWluIHRoZSBpbnRlcnBvbGF0aW9uLlxuICpcbiAqIEBleGFtcGxlXG4gKiAvLyBTdHlsZXMgYXMgb2JqZWN0IHVzYWdlXG4gKiBjb25zdCBzdHlsZXMgPSB7XG4gKiAgIC4uLmZsdWlkUmFuZ2UoXG4gKiAgICB7XG4gKiAgICAgICAgcHJvcDogJ3BhZGRpbmcnLFxuICogICAgICAgIGZyb21TaXplOiAnMjBweCcsXG4gKiAgICAgICAgdG9TaXplOiAnMTAwcHgnLFxuICogICAgICB9LFxuICogICAgICAnNDAwcHgnLFxuICogICAgICAnMTAwMHB4JyxcbiAqICAgIClcbiAqIH1cbiAqXG4gKiAvLyBzdHlsZWQtY29tcG9uZW50cyB1c2FnZVxuICogY29uc3QgZGl2ID0gc3R5bGVkLmRpdmBcbiAqICAgJHtmbHVpZFJhbmdlKFxuICogICAgICB7XG4gKiAgICAgICAgcHJvcDogJ3BhZGRpbmcnLFxuICogICAgICAgIGZyb21TaXplOiAnMjBweCcsXG4gKiAgICAgICAgdG9TaXplOiAnMTAwcHgnLFxuICogICAgICB9LFxuICogICAgICAnNDAwcHgnLFxuICogICAgICAnMTAwMHB4JyxcbiAqICAgICl9XG4gKiBgXG4gKlxuICogLy8gQ1NTIGFzIEpTIE91dHB1dFxuICpcbiAqIGRpdjoge1xuICogICBcIkBtZWRpYSAobWluLXdpZHRoOiAxMDAwcHgpXCI6IE9iamVjdCB7XG4gKiAgICAgXCJwYWRkaW5nXCI6IFwiMTAwcHhcIixcbiAqICAgfSxcbiAqICAgXCJAbWVkaWEgKG1pbi13aWR0aDogNDAwcHgpXCI6IE9iamVjdCB7XG4gKiAgICAgXCJwYWRkaW5nXCI6IFwiY2FsYygtMzMuMzMzMzMzMzMzMzMzMzRweCArIDEzLjMzMzMzMzMzMzMzMzMzNHZ3KVwiLFxuICogICB9LFxuICogICBcInBhZGRpbmdcIjogXCIyMHB4XCIsXG4gKiB9XG4gKi9cbmZ1bmN0aW9uIGZsdWlkUmFuZ2UoY3NzUHJvcCwgbWluU2NyZWVuLCBtYXhTY3JlZW4pIHtcbiAgaWYgKG1pblNjcmVlbiA9PT0gdm9pZCAwKSB7XG4gICAgbWluU2NyZWVuID0gJzMyMHB4JztcbiAgfVxuXG4gIGlmIChtYXhTY3JlZW4gPT09IHZvaWQgMCkge1xuICAgIG1heFNjcmVlbiA9ICcxMjAwcHgnO1xuICB9XG5cbiAgaWYgKCFBcnJheS5pc0FycmF5KGNzc1Byb3ApICYmIHR5cGVvZiBjc3NQcm9wICE9PSAnb2JqZWN0JyB8fCBjc3NQcm9wID09PSBudWxsKSB7XG4gICAgdGhyb3cgbmV3IFBvbGlzaGVkRXJyb3IoNDkpO1xuICB9XG5cbiAgaWYgKEFycmF5LmlzQXJyYXkoY3NzUHJvcCkpIHtcbiAgICB2YXIgbWVkaWFRdWVyaWVzID0ge307XG4gICAgdmFyIGZhbGxiYWNrcyA9IHt9O1xuXG4gICAgZm9yICh2YXIgX2l0ZXJhdG9yID0gX2NyZWF0ZUZvck9mSXRlcmF0b3JIZWxwZXJMb29zZShjc3NQcm9wKSwgX3N0ZXA7ICEoX3N0ZXAgPSBfaXRlcmF0b3IoKSkuZG9uZTspIHtcbiAgICAgIHZhciBfZXh0ZW5kczIsIF9leHRlbmRzMztcblxuICAgICAgdmFyIG9iaiA9IF9zdGVwLnZhbHVlO1xuXG4gICAgICBpZiAoIW9iai5wcm9wIHx8ICFvYmouZnJvbVNpemUgfHwgIW9iai50b1NpemUpIHtcbiAgICAgICAgdGhyb3cgbmV3IFBvbGlzaGVkRXJyb3IoNTApO1xuICAgICAgfVxuXG4gICAgICBmYWxsYmFja3Nbb2JqLnByb3BdID0gb2JqLmZyb21TaXplO1xuICAgICAgbWVkaWFRdWVyaWVzW1wiQG1lZGlhIChtaW4td2lkdGg6IFwiICsgbWluU2NyZWVuICsgXCIpXCJdID0gX2V4dGVuZHMoe30sIG1lZGlhUXVlcmllc1tcIkBtZWRpYSAobWluLXdpZHRoOiBcIiArIG1pblNjcmVlbiArIFwiKVwiXSwgKF9leHRlbmRzMiA9IHt9LCBfZXh0ZW5kczJbb2JqLnByb3BdID0gYmV0d2VlbihvYmouZnJvbVNpemUsIG9iai50b1NpemUsIG1pblNjcmVlbiwgbWF4U2NyZWVuKSwgX2V4dGVuZHMyKSk7XG4gICAgICBtZWRpYVF1ZXJpZXNbXCJAbWVkaWEgKG1pbi13aWR0aDogXCIgKyBtYXhTY3JlZW4gKyBcIilcIl0gPSBfZXh0ZW5kcyh7fSwgbWVkaWFRdWVyaWVzW1wiQG1lZGlhIChtaW4td2lkdGg6IFwiICsgbWF4U2NyZWVuICsgXCIpXCJdLCAoX2V4dGVuZHMzID0ge30sIF9leHRlbmRzM1tvYmoucHJvcF0gPSBvYmoudG9TaXplLCBfZXh0ZW5kczMpKTtcbiAgICB9XG5cbiAgICByZXR1cm4gX2V4dGVuZHMoe30sIGZhbGxiYWNrcywgbWVkaWFRdWVyaWVzKTtcbiAgfSBlbHNlIHtcbiAgICB2YXIgX3JlZiwgX3JlZjIsIF9yZWYzO1xuXG4gICAgaWYgKCFjc3NQcm9wLnByb3AgfHwgIWNzc1Byb3AuZnJvbVNpemUgfHwgIWNzc1Byb3AudG9TaXplKSB7XG4gICAgICB0aHJvdyBuZXcgUG9saXNoZWRFcnJvcig1MSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIF9yZWYzID0ge30sIF9yZWYzW2Nzc1Byb3AucHJvcF0gPSBjc3NQcm9wLmZyb21TaXplLCBfcmVmM1tcIkBtZWRpYSAobWluLXdpZHRoOiBcIiArIG1pblNjcmVlbiArIFwiKVwiXSA9IChfcmVmID0ge30sIF9yZWZbY3NzUHJvcC5wcm9wXSA9IGJldHdlZW4oY3NzUHJvcC5mcm9tU2l6ZSwgY3NzUHJvcC50b1NpemUsIG1pblNjcmVlbiwgbWF4U2NyZWVuKSwgX3JlZiksIF9yZWYzW1wiQG1lZGlhIChtaW4td2lkdGg6IFwiICsgbWF4U2NyZWVuICsgXCIpXCJdID0gKF9yZWYyID0ge30sIF9yZWYyW2Nzc1Byb3AucHJvcF0gPSBjc3NQcm9wLnRvU2l6ZSwgX3JlZjIpLCBfcmVmMztcbiAgfVxufVxuXG52YXIgZGF0YVVSSVJlZ2V4ID0gL15cXHMqZGF0YTooW2Etel0rXFwvW2Etei1dKyg7W2Etei1dKz1bYS16LV0rKT8pPyg7Y2hhcnNldD1bYS16MC05LV0rKT8oO2Jhc2U2NCk/LFthLXowLTkhJCYnLCgpKissOz1cXC0uX346QC8/JVxcc10qXFxzKiQvaTtcbnZhciBmb3JtYXRIaW50TWFwID0ge1xuICB3b2ZmOiAnd29mZicsXG4gIHdvZmYyOiAnd29mZjInLFxuICB0dGY6ICd0cnVldHlwZScsXG4gIG90ZjogJ29wZW50eXBlJyxcbiAgZW90OiAnZW1iZWRkZWQtb3BlbnR5cGUnLFxuICBzdmc6ICdzdmcnLFxuICBzdmd6OiAnc3ZnJ1xufTtcblxuZnVuY3Rpb24gZ2VuZXJhdGVGb3JtYXRIaW50KGZvcm1hdCwgZm9ybWF0SGludCkge1xuICBpZiAoIWZvcm1hdEhpbnQpIHJldHVybiAnJztcbiAgcmV0dXJuIFwiIGZvcm1hdChcXFwiXCIgKyBmb3JtYXRIaW50TWFwW2Zvcm1hdF0gKyBcIlxcXCIpXCI7XG59XG5cbmZ1bmN0aW9uIGlzRGF0YVVSSShmb250RmlsZVBhdGgpIHtcbiAgcmV0dXJuICEhZm9udEZpbGVQYXRoLnJlcGxhY2UoL1xccysvZywgJyAnKS5tYXRjaChkYXRhVVJJUmVnZXgpO1xufVxuXG5mdW5jdGlvbiBnZW5lcmF0ZUZpbGVSZWZlcmVuY2VzKGZvbnRGaWxlUGF0aCwgZmlsZUZvcm1hdHMsIGZvcm1hdEhpbnQpIHtcbiAgaWYgKGlzRGF0YVVSSShmb250RmlsZVBhdGgpKSB7XG4gICAgcmV0dXJuIFwidXJsKFxcXCJcIiArIGZvbnRGaWxlUGF0aCArIFwiXFxcIilcIiArIGdlbmVyYXRlRm9ybWF0SGludChmaWxlRm9ybWF0c1swXSwgZm9ybWF0SGludCk7XG4gIH1cblxuICB2YXIgZmlsZUZvbnRSZWZlcmVuY2VzID0gZmlsZUZvcm1hdHMubWFwKGZ1bmN0aW9uIChmb3JtYXQpIHtcbiAgICByZXR1cm4gXCJ1cmwoXFxcIlwiICsgZm9udEZpbGVQYXRoICsgXCIuXCIgKyBmb3JtYXQgKyBcIlxcXCIpXCIgKyBnZW5lcmF0ZUZvcm1hdEhpbnQoZm9ybWF0LCBmb3JtYXRIaW50KTtcbiAgfSk7XG4gIHJldHVybiBmaWxlRm9udFJlZmVyZW5jZXMuam9pbignLCAnKTtcbn1cblxuZnVuY3Rpb24gZ2VuZXJhdGVMb2NhbFJlZmVyZW5jZXMobG9jYWxGb250cykge1xuICB2YXIgbG9jYWxGb250UmVmZXJlbmNlcyA9IGxvY2FsRm9udHMubWFwKGZ1bmN0aW9uIChmb250KSB7XG4gICAgcmV0dXJuIFwibG9jYWwoXFxcIlwiICsgZm9udCArIFwiXFxcIilcIjtcbiAgfSk7XG4gIHJldHVybiBsb2NhbEZvbnRSZWZlcmVuY2VzLmpvaW4oJywgJyk7XG59XG5cbmZ1bmN0aW9uIGdlbmVyYXRlU291cmNlcyhmb250RmlsZVBhdGgsIGxvY2FsRm9udHMsIGZpbGVGb3JtYXRzLCBmb3JtYXRIaW50KSB7XG4gIHZhciBmb250UmVmZXJlbmNlcyA9IFtdO1xuICBpZiAobG9jYWxGb250cykgZm9udFJlZmVyZW5jZXMucHVzaChnZW5lcmF0ZUxvY2FsUmVmZXJlbmNlcyhsb2NhbEZvbnRzKSk7XG5cbiAgaWYgKGZvbnRGaWxlUGF0aCkge1xuICAgIGZvbnRSZWZlcmVuY2VzLnB1c2goZ2VuZXJhdGVGaWxlUmVmZXJlbmNlcyhmb250RmlsZVBhdGgsIGZpbGVGb3JtYXRzLCBmb3JtYXRIaW50KSk7XG4gIH1cblxuICByZXR1cm4gZm9udFJlZmVyZW5jZXMuam9pbignLCAnKTtcbn1cbi8qKlxuICogQ1NTIGZvciBhIEBmb250LWZhY2UgZGVjbGFyYXRpb24uXG4gKlxuICogQGV4YW1wbGVcbiAqIC8vIFN0eWxlcyBhcyBvYmplY3QgYmFzaWMgdXNhZ2VcbiAqIGNvbnN0IHN0eWxlcyA9IHtcbiAqICAgIC4uLmZvbnRGYWNlKHtcbiAqICAgICAgJ2ZvbnRGYW1pbHknOiAnU2Fucy1Qcm8nLFxuICogICAgICAnZm9udEZpbGVQYXRoJzogJ3BhdGgvdG8vZmlsZSdcbiAqICAgIH0pXG4gKiB9XG4gKlxuICogLy8gc3R5bGVkLWNvbXBvbmVudHMgYmFzaWMgdXNhZ2VcbiAqIGNvbnN0IEdsb2JhbFN0eWxlID0gY3JlYXRlR2xvYmFsU3R5bGVgJHtcbiAqICAgZm9udEZhY2Uoe1xuICogICAgICdmb250RmFtaWx5JzogJ1NhbnMtUHJvJyxcbiAqICAgICAnZm9udEZpbGVQYXRoJzogJ3BhdGgvdG8vZmlsZSdcbiAqICAgfVxuICogKX1gXG4gKlxuICogLy8gQ1NTIGFzIEpTIE91dHB1dFxuICpcbiAqICdAZm9udC1mYWNlJzoge1xuICogICAnZm9udEZhbWlseSc6ICdTYW5zLVBybycsXG4gKiAgICdzcmMnOiAndXJsKFwicGF0aC90by9maWxlLmVvdFwiKSwgdXJsKFwicGF0aC90by9maWxlLndvZmYyXCIpLCB1cmwoXCJwYXRoL3RvL2ZpbGUud29mZlwiKSwgdXJsKFwicGF0aC90by9maWxlLnR0ZlwiKSwgdXJsKFwicGF0aC90by9maWxlLnN2Z1wiKScsXG4gKiB9XG4gKi9cblxuXG5mdW5jdGlvbiBmb250RmFjZShfcmVmKSB7XG4gIHZhciBmb250RmFtaWx5ID0gX3JlZi5mb250RmFtaWx5LFxuICAgICAgZm9udEZpbGVQYXRoID0gX3JlZi5mb250RmlsZVBhdGgsXG4gICAgICBmb250U3RyZXRjaCA9IF9yZWYuZm9udFN0cmV0Y2gsXG4gICAgICBmb250U3R5bGUgPSBfcmVmLmZvbnRTdHlsZSxcbiAgICAgIGZvbnRWYXJpYW50ID0gX3JlZi5mb250VmFyaWFudCxcbiAgICAgIGZvbnRXZWlnaHQgPSBfcmVmLmZvbnRXZWlnaHQsXG4gICAgICBfcmVmJGZpbGVGb3JtYXRzID0gX3JlZi5maWxlRm9ybWF0cyxcbiAgICAgIGZpbGVGb3JtYXRzID0gX3JlZiRmaWxlRm9ybWF0cyA9PT0gdm9pZCAwID8gWydlb3QnLCAnd29mZjInLCAnd29mZicsICd0dGYnLCAnc3ZnJ10gOiBfcmVmJGZpbGVGb3JtYXRzLFxuICAgICAgX3JlZiRmb3JtYXRIaW50ID0gX3JlZi5mb3JtYXRIaW50LFxuICAgICAgZm9ybWF0SGludCA9IF9yZWYkZm9ybWF0SGludCA9PT0gdm9pZCAwID8gZmFsc2UgOiBfcmVmJGZvcm1hdEhpbnQsXG4gICAgICBsb2NhbEZvbnRzID0gX3JlZi5sb2NhbEZvbnRzLFxuICAgICAgdW5pY29kZVJhbmdlID0gX3JlZi51bmljb2RlUmFuZ2UsXG4gICAgICBmb250RGlzcGxheSA9IF9yZWYuZm9udERpc3BsYXksXG4gICAgICBmb250VmFyaWF0aW9uU2V0dGluZ3MgPSBfcmVmLmZvbnRWYXJpYXRpb25TZXR0aW5ncyxcbiAgICAgIGZvbnRGZWF0dXJlU2V0dGluZ3MgPSBfcmVmLmZvbnRGZWF0dXJlU2V0dGluZ3M7XG4gIC8vIEVycm9yIEhhbmRsaW5nXG4gIGlmICghZm9udEZhbWlseSkgdGhyb3cgbmV3IFBvbGlzaGVkRXJyb3IoNTUpO1xuXG4gIGlmICghZm9udEZpbGVQYXRoICYmICFsb2NhbEZvbnRzKSB7XG4gICAgdGhyb3cgbmV3IFBvbGlzaGVkRXJyb3IoNTIpO1xuICB9XG5cbiAgaWYgKGxvY2FsRm9udHMgJiYgIUFycmF5LmlzQXJyYXkobG9jYWxGb250cykpIHtcbiAgICB0aHJvdyBuZXcgUG9saXNoZWRFcnJvcig1Myk7XG4gIH1cblxuICBpZiAoIUFycmF5LmlzQXJyYXkoZmlsZUZvcm1hdHMpKSB7XG4gICAgdGhyb3cgbmV3IFBvbGlzaGVkRXJyb3IoNTQpO1xuICB9XG5cbiAgdmFyIGZvbnRGYWNlRGVjbGFyYXRpb24gPSB7XG4gICAgJ0Bmb250LWZhY2UnOiB7XG4gICAgICBmb250RmFtaWx5OiBmb250RmFtaWx5LFxuICAgICAgc3JjOiBnZW5lcmF0ZVNvdXJjZXMoZm9udEZpbGVQYXRoLCBsb2NhbEZvbnRzLCBmaWxlRm9ybWF0cywgZm9ybWF0SGludCksXG4gICAgICB1bmljb2RlUmFuZ2U6IHVuaWNvZGVSYW5nZSxcbiAgICAgIGZvbnRTdHJldGNoOiBmb250U3RyZXRjaCxcbiAgICAgIGZvbnRTdHlsZTogZm9udFN0eWxlLFxuICAgICAgZm9udFZhcmlhbnQ6IGZvbnRWYXJpYW50LFxuICAgICAgZm9udFdlaWdodDogZm9udFdlaWdodCxcbiAgICAgIGZvbnREaXNwbGF5OiBmb250RGlzcGxheSxcbiAgICAgIGZvbnRWYXJpYXRpb25TZXR0aW5nczogZm9udFZhcmlhdGlvblNldHRpbmdzLFxuICAgICAgZm9udEZlYXR1cmVTZXR0aW5nczogZm9udEZlYXR1cmVTZXR0aW5nc1xuICAgIH1cbiAgfTsgLy8gUmVtb3ZlcyB1bmRlZmluZWQgZmllbGRzIGZvciBjbGVhbmVyIGNzcyBvYmplY3QuXG5cbiAgcmV0dXJuIEpTT04ucGFyc2UoSlNPTi5zdHJpbmdpZnkoZm9udEZhY2VEZWNsYXJhdGlvbikpO1xufVxuXG4vKipcbiAqIENTUyB0byBoaWRlIHRleHQgdG8gc2hvdyBhIGJhY2tncm91bmQgaW1hZ2UgaW4gYSBTRU8tZnJpZW5kbHkgd2F5LlxuICpcbiAqIEBleGFtcGxlXG4gKiAvLyBTdHlsZXMgYXMgb2JqZWN0IHVzYWdlXG4gKiBjb25zdCBzdHlsZXMgPSB7XG4gKiAgICdiYWNrZ3JvdW5kSW1hZ2UnOiAndXJsKGxvZ28ucG5nKScsXG4gKiAgIC4uLmhpZGVUZXh0KCksXG4gKiB9XG4gKlxuICogLy8gc3R5bGVkLWNvbXBvbmVudHMgdXNhZ2VcbiAqIGNvbnN0IGRpdiA9IHN0eWxlZC5kaXZgXG4gKiAgIGJhY2tncm91bmRJbWFnZTogdXJsKGxvZ28ucG5nKTtcbiAqICAgJHtoaWRlVGV4dCgpfTtcbiAqIGBcbiAqXG4gKiAvLyBDU1MgYXMgSlMgT3V0cHV0XG4gKlxuICogJ2Rpdic6IHtcbiAqICAgJ2JhY2tncm91bmRJbWFnZSc6ICd1cmwobG9nby5wbmcpJyxcbiAqICAgJ3RleHRJbmRlbnQnOiAnMTAxJScsXG4gKiAgICdvdmVyZmxvdyc6ICdoaWRkZW4nLFxuICogICAnd2hpdGVTcGFjZSc6ICdub3dyYXAnLFxuICogfVxuICovXG5mdW5jdGlvbiBoaWRlVGV4dCgpIHtcbiAgcmV0dXJuIHtcbiAgICB0ZXh0SW5kZW50OiAnMTAxJScsXG4gICAgb3ZlcmZsb3c6ICdoaWRkZW4nLFxuICAgIHdoaXRlU3BhY2U6ICdub3dyYXAnXG4gIH07XG59XG5cbi8qKlxuICogQ1NTIHRvIGhpZGUgY29udGVudCB2aXN1YWxseSBidXQgcmVtYWluIGFjY2Vzc2libGUgdG8gc2NyZWVuIHJlYWRlcnMuXG4gKiBmcm9tIFtIVE1MNSBCb2lsZXJwbGF0ZV0oaHR0cHM6Ly9naXRodWIuY29tL2g1YnAvaHRtbDUtYm9pbGVycGxhdGUvYmxvYi85YTE3NmY1N2FmMWNmZThlYzcwMzAwZGE0NjIxZmI5YjA3ZTVmYTMxL3NyYy9jc3MvbWFpbi5jc3MjTDEyMSlcbiAqXG4gKiBAZXhhbXBsZVxuICogLy8gU3R5bGVzIGFzIG9iamVjdCB1c2FnZVxuICogY29uc3Qgc3R5bGVzID0ge1xuICogICAuLi5oaWRlVmlzdWFsbHkoKSxcbiAqIH1cbiAqXG4gKiAvLyBzdHlsZWQtY29tcG9uZW50cyB1c2FnZVxuICogY29uc3QgZGl2ID0gc3R5bGVkLmRpdmBcbiAqICAgJHtoaWRlVmlzdWFsbHkoKX07XG4gKiBgXG4gKlxuICogLy8gQ1NTIGFzIEpTIE91dHB1dFxuICpcbiAqICdkaXYnOiB7XG4gKiAgICdib3JkZXInOiAnMCcsXG4gKiAgICdjbGlwJzogJ3JlY3QoMCAwIDAgMCknLFxuICogICAnaGVpZ2h0JzogJzFweCcsXG4gKiAgICdtYXJnaW4nOiAnLTFweCcsXG4gKiAgICdvdmVyZmxvdyc6ICdoaWRkZW4nLFxuICogICAncGFkZGluZyc6ICcwJyxcbiAqICAgJ3Bvc2l0aW9uJzogJ2Fic29sdXRlJyxcbiAqICAgJ3doaXRlU3BhY2UnOiAnbm93cmFwJyxcbiAqICAgJ3dpZHRoJzogJzFweCcsXG4gKiB9XG4gKi9cbmZ1bmN0aW9uIGhpZGVWaXN1YWxseSgpIHtcbiAgcmV0dXJuIHtcbiAgICBib3JkZXI6ICcwJyxcbiAgICBjbGlwOiAncmVjdCgwIDAgMCAwKScsXG4gICAgaGVpZ2h0OiAnMXB4JyxcbiAgICBtYXJnaW46ICctMXB4JyxcbiAgICBvdmVyZmxvdzogJ2hpZGRlbicsXG4gICAgcGFkZGluZzogJzAnLFxuICAgIHBvc2l0aW9uOiAnYWJzb2x1dGUnLFxuICAgIHdoaXRlU3BhY2U6ICdub3dyYXAnLFxuICAgIHdpZHRoOiAnMXB4J1xuICB9O1xufVxuXG4vKipcbiAqIEdlbmVyYXRlcyBhIG1lZGlhIHF1ZXJ5IHRvIHRhcmdldCBIaURQSSBkZXZpY2VzLlxuICpcbiAqIEBleGFtcGxlXG4gKiAvLyBTdHlsZXMgYXMgb2JqZWN0IHVzYWdlXG4gKiBjb25zdCBzdHlsZXMgPSB7XG4gKiAgW2hpRFBJKDEuNSldOiB7XG4gKiAgICB3aWR0aDogMjAwcHg7XG4gKiAgfVxuICogfVxuICpcbiAqIC8vIHN0eWxlZC1jb21wb25lbnRzIHVzYWdlXG4gKiBjb25zdCBkaXYgPSBzdHlsZWQuZGl2YFxuICogICAke2hpRFBJKDEuNSl9IHtcbiAqICAgICB3aWR0aDogMjAwcHg7XG4gKiAgIH1cbiAqIGBcbiAqXG4gKiAvLyBDU1MgYXMgSlMgT3V0cHV0XG4gKlxuICogJ0BtZWRpYSBvbmx5IHNjcmVlbiBhbmQgKC13ZWJraXQtbWluLWRldmljZS1waXhlbC1yYXRpbzogMS41KSxcbiAqICBvbmx5IHNjcmVlbiBhbmQgKG1pbi0tbW96LWRldmljZS1waXhlbC1yYXRpbzogMS41KSxcbiAqICBvbmx5IHNjcmVlbiBhbmQgKC1vLW1pbi1kZXZpY2UtcGl4ZWwtcmF0aW86IDEuNS8xKSxcbiAqICBvbmx5IHNjcmVlbiBhbmQgKG1pbi1yZXNvbHV0aW9uOiAxNDRkcGkpLFxuICogIG9ubHkgc2NyZWVuIGFuZCAobWluLXJlc29sdXRpb246IDEuNWRwcHgpJzoge1xuICogICAnd2lkdGgnOiAnMjAwcHgnLFxuICogfVxuICovXG5mdW5jdGlvbiBoaURQSShyYXRpbykge1xuICBpZiAocmF0aW8gPT09IHZvaWQgMCkge1xuICAgIHJhdGlvID0gMS4zO1xuICB9XG5cbiAgcmV0dXJuIFwiXFxuICAgIEBtZWRpYSBvbmx5IHNjcmVlbiBhbmQgKC13ZWJraXQtbWluLWRldmljZS1waXhlbC1yYXRpbzogXCIgKyByYXRpbyArIFwiKSxcXG4gICAgb25seSBzY3JlZW4gYW5kIChtaW4tLW1vei1kZXZpY2UtcGl4ZWwtcmF0aW86IFwiICsgcmF0aW8gKyBcIiksXFxuICAgIG9ubHkgc2NyZWVuIGFuZCAoLW8tbWluLWRldmljZS1waXhlbC1yYXRpbzogXCIgKyByYXRpbyArIFwiLzEpLFxcbiAgICBvbmx5IHNjcmVlbiBhbmQgKG1pbi1yZXNvbHV0aW9uOiBcIiArIE1hdGgucm91bmQocmF0aW8gKiA5NikgKyBcImRwaSksXFxuICAgIG9ubHkgc2NyZWVuIGFuZCAobWluLXJlc29sdXRpb246IFwiICsgcmF0aW8gKyBcImRwcHgpXFxuICBcIjtcbn1cblxuZnVuY3Rpb24gY29uc3RydWN0R3JhZGllbnRWYWx1ZShsaXRlcmFscykge1xuICB2YXIgdGVtcGxhdGUgPSAnJztcblxuICBmb3IgKHZhciBfbGVuID0gYXJndW1lbnRzLmxlbmd0aCwgc3Vic3RpdHV0aW9ucyA9IG5ldyBBcnJheShfbGVuID4gMSA/IF9sZW4gLSAxIDogMCksIF9rZXkgPSAxOyBfa2V5IDwgX2xlbjsgX2tleSsrKSB7XG4gICAgc3Vic3RpdHV0aW9uc1tfa2V5IC0gMV0gPSBhcmd1bWVudHNbX2tleV07XG4gIH1cblxuICBmb3IgKHZhciBpID0gMDsgaSA8IGxpdGVyYWxzLmxlbmd0aDsgaSArPSAxKSB7XG4gICAgdGVtcGxhdGUgKz0gbGl0ZXJhbHNbaV07XG5cbiAgICBpZiAoaSA9PT0gc3Vic3RpdHV0aW9ucy5sZW5ndGggLSAxICYmIHN1YnN0aXR1dGlvbnNbaV0pIHtcbiAgICAgIHZhciBkZWZpbmVkVmFsdWVzID0gc3Vic3RpdHV0aW9ucy5maWx0ZXIoZnVuY3Rpb24gKHN1YnN0aXR1dGUpIHtcbiAgICAgICAgcmV0dXJuICEhc3Vic3RpdHV0ZTtcbiAgICAgIH0pOyAvLyBBZGRzIGxlYWRpbmcgY29tYSBpZiBwcm9wZXJ0aWVzIHByZWNlZWQgY29sb3Itc3RvcHNcblxuICAgICAgaWYgKGRlZmluZWRWYWx1ZXMubGVuZ3RoID4gMSkge1xuICAgICAgICB0ZW1wbGF0ZSA9IHRlbXBsYXRlLnNsaWNlKDAsIC0xKTtcbiAgICAgICAgdGVtcGxhdGUgKz0gXCIsIFwiICsgc3Vic3RpdHV0aW9uc1tpXTsgLy8gTm8gdHJhaWxpbmcgc3BhY2UgaWYgY29sb3Itc3RvcHMgaXMgdGhlIG9ubHkgcGFyYW0gcHJvdmlkZWRcbiAgICAgIH0gZWxzZSBpZiAoZGVmaW5lZFZhbHVlcy5sZW5ndGggPT09IDEpIHtcbiAgICAgICAgdGVtcGxhdGUgKz0gXCJcIiArIHN1YnN0aXR1dGlvbnNbaV07XG4gICAgICB9XG4gICAgfSBlbHNlIGlmIChzdWJzdGl0dXRpb25zW2ldKSB7XG4gICAgICB0ZW1wbGF0ZSArPSBzdWJzdGl0dXRpb25zW2ldICsgXCIgXCI7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHRlbXBsYXRlLnRyaW0oKTtcbn1cblxudmFyIF90ZW1wbGF0ZU9iamVjdDtcblxuLyoqXG4gKiBDU1MgZm9yIGRlY2xhcmluZyBhIGxpbmVhciBncmFkaWVudCwgaW5jbHVkaW5nIGEgZmFsbGJhY2sgYmFja2dyb3VuZC1jb2xvci4gVGhlIGZhbGxiYWNrIGlzIGVpdGhlciB0aGUgZmlyc3QgY29sb3Itc3RvcCBvciBhbiBleHBsaWNpdGx5IHBhc3NlZCBmYWxsYmFjayBjb2xvci5cbiAqXG4gKiBAZXhhbXBsZVxuICogLy8gU3R5bGVzIGFzIG9iamVjdCB1c2FnZVxuICogY29uc3Qgc3R5bGVzID0ge1xuICogICAuLi5saW5lYXJHcmFkaWVudCh7XG4gICAgICAgIGNvbG9yU3RvcHM6IFsnIzAwRkZGRiAwJScsICdyZ2JhKDAsIDAsIDI1NSwgMCkgNTAlJywgJyMwMDAwRkYgOTUlJ10sXG4gICAgICAgIHRvRGlyZWN0aW9uOiAndG8gdG9wIHJpZ2h0JyxcbiAgICAgICAgZmFsbGJhY2s6ICcjRkZGJyxcbiAgICAgIH0pXG4gKiB9XG4gKlxuICogLy8gc3R5bGVkLWNvbXBvbmVudHMgdXNhZ2VcbiAqIGNvbnN0IGRpdiA9IHN0eWxlZC5kaXZgXG4gKiAgICR7bGluZWFyR3JhZGllbnQoe1xuICAgICAgICBjb2xvclN0b3BzOiBbJyMwMEZGRkYgMCUnLCAncmdiYSgwLCAwLCAyNTUsIDApIDUwJScsICcjMDAwMEZGIDk1JSddLFxuICAgICAgICB0b0RpcmVjdGlvbjogJ3RvIHRvcCByaWdodCcsXG4gICAgICAgIGZhbGxiYWNrOiAnI0ZGRicsXG4gICAgICB9KX1cbiAqYFxuICpcbiAqIC8vIENTUyBhcyBKUyBPdXRwdXRcbiAqXG4gKiBkaXY6IHtcbiAqICAgJ2JhY2tncm91bmRDb2xvcic6ICcjRkZGJyxcbiAqICAgJ2JhY2tncm91bmRJbWFnZSc6ICdsaW5lYXItZ3JhZGllbnQodG8gdG9wIHJpZ2h0LCAjMDBGRkZGIDAlLCByZ2JhKDAsIDAsIDI1NSwgMCkgNTAlLCAjMDAwMEZGIDk1JSknLFxuICogfVxuICovXG5mdW5jdGlvbiBsaW5lYXJHcmFkaWVudChfcmVmKSB7XG4gIHZhciBjb2xvclN0b3BzID0gX3JlZi5jb2xvclN0b3BzLFxuICAgICAgZmFsbGJhY2sgPSBfcmVmLmZhbGxiYWNrLFxuICAgICAgX3JlZiR0b0RpcmVjdGlvbiA9IF9yZWYudG9EaXJlY3Rpb24sXG4gICAgICB0b0RpcmVjdGlvbiA9IF9yZWYkdG9EaXJlY3Rpb24gPT09IHZvaWQgMCA/ICcnIDogX3JlZiR0b0RpcmVjdGlvbjtcblxuICBpZiAoIWNvbG9yU3RvcHMgfHwgY29sb3JTdG9wcy5sZW5ndGggPCAyKSB7XG4gICAgdGhyb3cgbmV3IFBvbGlzaGVkRXJyb3IoNTYpO1xuICB9XG5cbiAgcmV0dXJuIHtcbiAgICBiYWNrZ3JvdW5kQ29sb3I6IGZhbGxiYWNrIHx8IGNvbG9yU3RvcHNbMF0ucmVwbGFjZSgvLFxccysvZywgJywnKS5zcGxpdCgnICcpWzBdLnJlcGxhY2UoLywoPz1cXFMpL2csICcsICcpLFxuICAgIGJhY2tncm91bmRJbWFnZTogY29uc3RydWN0R3JhZGllbnRWYWx1ZShfdGVtcGxhdGVPYmplY3QgfHwgKF90ZW1wbGF0ZU9iamVjdCA9IF90YWdnZWRUZW1wbGF0ZUxpdGVyYWxMb29zZShbXCJsaW5lYXItZ3JhZGllbnQoXCIsIFwiXCIsIFwiKVwiXSkpLCB0b0RpcmVjdGlvbiwgY29sb3JTdG9wcy5qb2luKCcsICcpLnJlcGxhY2UoLywoPz1cXFMpL2csICcsICcpKVxuICB9O1xufVxuXG4vKipcbiAqIENTUyB0byBub3JtYWxpemUgYWJub3JtYWxpdGllcyBhY3Jvc3MgYnJvd3NlcnMgKG5vcm1hbGl6ZS5jc3MgdjguMC4xIHwgTUlUIExpY2Vuc2UgfCBnaXRodWIuY29tL25lY29sYXMvbm9ybWFsaXplLmNzcylcbiAqXG4gKiBAZXhhbXBsZVxuICogLy8gU3R5bGVzIGFzIG9iamVjdCB1c2FnZVxuICogY29uc3Qgc3R5bGVzID0ge1xuICogICAgLi4ubm9ybWFsaXplKCksXG4gKiB9XG4gKlxuICogLy8gc3R5bGVkLWNvbXBvbmVudHMgdXNhZ2VcbiAqIGNvbnN0IEdsb2JhbFN0eWxlID0gY3JlYXRlR2xvYmFsU3R5bGVgJHtub3JtYWxpemUoKX1gXG4gKlxuICogLy8gQ1NTIGFzIEpTIE91dHB1dFxuICpcbiAqIGh0bWwge1xuICogICBsaW5lSGVpZ2h0OiAxLjE1LFxuICogICB0ZXh0U2l6ZUFkanVzdDogMTAwJSxcbiAqIH0gLi4uXG4gKi9cbmZ1bmN0aW9uIG5vcm1hbGl6ZSgpIHtcbiAgdmFyIF9yZWY7XG5cbiAgcmV0dXJuIFsoX3JlZiA9IHtcbiAgICBodG1sOiB7XG4gICAgICBsaW5lSGVpZ2h0OiAnMS4xNScsXG4gICAgICB0ZXh0U2l6ZUFkanVzdDogJzEwMCUnXG4gICAgfSxcbiAgICBib2R5OiB7XG4gICAgICBtYXJnaW46ICcwJ1xuICAgIH0sXG4gICAgbWFpbjoge1xuICAgICAgZGlzcGxheTogJ2Jsb2NrJ1xuICAgIH0sXG4gICAgaDE6IHtcbiAgICAgIGZvbnRTaXplOiAnMmVtJyxcbiAgICAgIG1hcmdpbjogJzAuNjdlbSAwJ1xuICAgIH0sXG4gICAgaHI6IHtcbiAgICAgIGJveFNpemluZzogJ2NvbnRlbnQtYm94JyxcbiAgICAgIGhlaWdodDogJzAnLFxuICAgICAgb3ZlcmZsb3c6ICd2aXNpYmxlJ1xuICAgIH0sXG4gICAgcHJlOiB7XG4gICAgICBmb250RmFtaWx5OiAnbW9ub3NwYWNlLCBtb25vc3BhY2UnLFxuICAgICAgZm9udFNpemU6ICcxZW0nXG4gICAgfSxcbiAgICBhOiB7XG4gICAgICBiYWNrZ3JvdW5kQ29sb3I6ICd0cmFuc3BhcmVudCdcbiAgICB9LFxuICAgICdhYmJyW3RpdGxlXSc6IHtcbiAgICAgIGJvcmRlckJvdHRvbTogJ25vbmUnLFxuICAgICAgdGV4dERlY29yYXRpb246ICd1bmRlcmxpbmUnXG4gICAgfVxuICB9LCBfcmVmW1wiYixcXG4gICAgc3Ryb25nXCJdID0ge1xuICAgIGZvbnRXZWlnaHQ6ICdib2xkZXInXG4gIH0sIF9yZWZbXCJjb2RlLFxcbiAgICBrYmQsXFxuICAgIHNhbXBcIl0gPSB7XG4gICAgZm9udEZhbWlseTogJ21vbm9zcGFjZSwgbW9ub3NwYWNlJyxcbiAgICBmb250U2l6ZTogJzFlbSdcbiAgfSwgX3JlZi5zbWFsbCA9IHtcbiAgICBmb250U2l6ZTogJzgwJSdcbiAgfSwgX3JlZltcInN1YixcXG4gICAgc3VwXCJdID0ge1xuICAgIGZvbnRTaXplOiAnNzUlJyxcbiAgICBsaW5lSGVpZ2h0OiAnMCcsXG4gICAgcG9zaXRpb246ICdyZWxhdGl2ZScsXG4gICAgdmVydGljYWxBbGlnbjogJ2Jhc2VsaW5lJ1xuICB9LCBfcmVmLnN1YiA9IHtcbiAgICBib3R0b206ICctMC4yNWVtJ1xuICB9LCBfcmVmLnN1cCA9IHtcbiAgICB0b3A6ICctMC41ZW0nXG4gIH0sIF9yZWYuaW1nID0ge1xuICAgIGJvcmRlclN0eWxlOiAnbm9uZSdcbiAgfSwgX3JlZltcImJ1dHRvbixcXG4gICAgaW5wdXQsXFxuICAgIG9wdGdyb3VwLFxcbiAgICBzZWxlY3QsXFxuICAgIHRleHRhcmVhXCJdID0ge1xuICAgIGZvbnRGYW1pbHk6ICdpbmhlcml0JyxcbiAgICBmb250U2l6ZTogJzEwMCUnLFxuICAgIGxpbmVIZWlnaHQ6ICcxLjE1JyxcbiAgICBtYXJnaW46ICcwJ1xuICB9LCBfcmVmW1wiYnV0dG9uLFxcbiAgICBpbnB1dFwiXSA9IHtcbiAgICBvdmVyZmxvdzogJ3Zpc2libGUnXG4gIH0sIF9yZWZbXCJidXR0b24sXFxuICAgIHNlbGVjdFwiXSA9IHtcbiAgICB0ZXh0VHJhbnNmb3JtOiAnbm9uZSdcbiAgfSwgX3JlZltcImJ1dHRvbixcXG4gICAgaHRtbCBbdHlwZT1cXFwiYnV0dG9uXFxcIl0sXFxuICAgIFt0eXBlPVxcXCJyZXNldFxcXCJdLFxcbiAgICBbdHlwZT1cXFwic3VibWl0XFxcIl1cIl0gPSB7XG4gICAgV2Via2l0QXBwZWFyYW5jZTogJ2J1dHRvbidcbiAgfSwgX3JlZltcImJ1dHRvbjo6LW1vei1mb2N1cy1pbm5lcixcXG4gICAgW3R5cGU9XFxcImJ1dHRvblxcXCJdOjotbW96LWZvY3VzLWlubmVyLFxcbiAgICBbdHlwZT1cXFwicmVzZXRcXFwiXTo6LW1vei1mb2N1cy1pbm5lcixcXG4gICAgW3R5cGU9XFxcInN1Ym1pdFxcXCJdOjotbW96LWZvY3VzLWlubmVyXCJdID0ge1xuICAgIGJvcmRlclN0eWxlOiAnbm9uZScsXG4gICAgcGFkZGluZzogJzAnXG4gIH0sIF9yZWZbXCJidXR0b246LW1vei1mb2N1c3JpbmcsXFxuICAgIFt0eXBlPVxcXCJidXR0b25cXFwiXTotbW96LWZvY3VzcmluZyxcXG4gICAgW3R5cGU9XFxcInJlc2V0XFxcIl06LW1vei1mb2N1c3JpbmcsXFxuICAgIFt0eXBlPVxcXCJzdWJtaXRcXFwiXTotbW96LWZvY3VzcmluZ1wiXSA9IHtcbiAgICBvdXRsaW5lOiAnMXB4IGRvdHRlZCBCdXR0b25UZXh0J1xuICB9LCBfcmVmLmZpZWxkc2V0ID0ge1xuICAgIHBhZGRpbmc6ICcwLjM1ZW0gMC42MjVlbSAwLjc1ZW0nXG4gIH0sIF9yZWYubGVnZW5kID0ge1xuICAgIGJveFNpemluZzogJ2JvcmRlci1ib3gnLFxuICAgIGNvbG9yOiAnaW5oZXJpdCcsXG4gICAgZGlzcGxheTogJ3RhYmxlJyxcbiAgICBtYXhXaWR0aDogJzEwMCUnLFxuICAgIHBhZGRpbmc6ICcwJyxcbiAgICB3aGl0ZVNwYWNlOiAnbm9ybWFsJ1xuICB9LCBfcmVmLnByb2dyZXNzID0ge1xuICAgIHZlcnRpY2FsQWxpZ246ICdiYXNlbGluZSdcbiAgfSwgX3JlZi50ZXh0YXJlYSA9IHtcbiAgICBvdmVyZmxvdzogJ2F1dG8nXG4gIH0sIF9yZWZbXCJbdHlwZT1cXFwiY2hlY2tib3hcXFwiXSxcXG4gICAgW3R5cGU9XFxcInJhZGlvXFxcIl1cIl0gPSB7XG4gICAgYm94U2l6aW5nOiAnYm9yZGVyLWJveCcsXG4gICAgcGFkZGluZzogJzAnXG4gIH0sIF9yZWZbXCJbdHlwZT1cXFwibnVtYmVyXFxcIl06Oi13ZWJraXQtaW5uZXItc3Bpbi1idXR0b24sXFxuICAgIFt0eXBlPVxcXCJudW1iZXJcXFwiXTo6LXdlYmtpdC1vdXRlci1zcGluLWJ1dHRvblwiXSA9IHtcbiAgICBoZWlnaHQ6ICdhdXRvJ1xuICB9LCBfcmVmWydbdHlwZT1cInNlYXJjaFwiXSddID0ge1xuICAgIFdlYmtpdEFwcGVhcmFuY2U6ICd0ZXh0ZmllbGQnLFxuICAgIG91dGxpbmVPZmZzZXQ6ICctMnB4J1xuICB9LCBfcmVmWydbdHlwZT1cInNlYXJjaFwiXTo6LXdlYmtpdC1zZWFyY2gtZGVjb3JhdGlvbiddID0ge1xuICAgIFdlYmtpdEFwcGVhcmFuY2U6ICdub25lJ1xuICB9LCBfcmVmWyc6Oi13ZWJraXQtZmlsZS11cGxvYWQtYnV0dG9uJ10gPSB7XG4gICAgV2Via2l0QXBwZWFyYW5jZTogJ2J1dHRvbicsXG4gICAgZm9udDogJ2luaGVyaXQnXG4gIH0sIF9yZWYuZGV0YWlscyA9IHtcbiAgICBkaXNwbGF5OiAnYmxvY2snXG4gIH0sIF9yZWYuc3VtbWFyeSA9IHtcbiAgICBkaXNwbGF5OiAnbGlzdC1pdGVtJ1xuICB9LCBfcmVmLnRlbXBsYXRlID0ge1xuICAgIGRpc3BsYXk6ICdub25lJ1xuICB9LCBfcmVmWydbaGlkZGVuXSddID0ge1xuICAgIGRpc3BsYXk6ICdub25lJ1xuICB9LCBfcmVmKSwge1xuICAgICdhYmJyW3RpdGxlXSc6IHtcbiAgICAgIHRleHREZWNvcmF0aW9uOiAndW5kZXJsaW5lIGRvdHRlZCdcbiAgICB9XG4gIH1dO1xufVxuXG52YXIgX3RlbXBsYXRlT2JqZWN0JDE7XG5cbi8qKlxuICogQ1NTIGZvciBkZWNsYXJpbmcgYSByYWRpYWwgZ3JhZGllbnQsIGluY2x1ZGluZyBhIGZhbGxiYWNrIGJhY2tncm91bmQtY29sb3IuIFRoZSBmYWxsYmFjayBpcyBlaXRoZXIgdGhlIGZpcnN0IGNvbG9yLXN0b3Agb3IgYW4gZXhwbGljaXRseSBwYXNzZWQgZmFsbGJhY2sgY29sb3IuXG4gKlxuICogQGV4YW1wbGVcbiAqIC8vIFN0eWxlcyBhcyBvYmplY3QgdXNhZ2VcbiAqIGNvbnN0IHN0eWxlcyA9IHtcbiAqICAgLi4ucmFkaWFsR3JhZGllbnQoe1xuICogICAgIGNvbG9yU3RvcHM6IFsnIzAwRkZGRiAwJScsICdyZ2JhKDAsIDAsIDI1NSwgMCkgNTAlJywgJyMwMDAwRkYgOTUlJ10sXG4gKiAgICAgZXh0ZW50OiAnZmFydGhlc3QtY29ybmVyIGF0IDQ1cHggNDVweCcsXG4gKiAgICAgcG9zaXRpb246ICdjZW50ZXInLFxuICogICAgIHNoYXBlOiAnZWxsaXBzZScsXG4gKiAgIH0pXG4gKiB9XG4gKlxuICogLy8gc3R5bGVkLWNvbXBvbmVudHMgdXNhZ2VcbiAqIGNvbnN0IGRpdiA9IHN0eWxlZC5kaXZgXG4gKiAgICR7cmFkaWFsR3JhZGllbnQoe1xuICogICAgIGNvbG9yU3RvcHM6IFsnIzAwRkZGRiAwJScsICdyZ2JhKDAsIDAsIDI1NSwgMCkgNTAlJywgJyMwMDAwRkYgOTUlJ10sXG4gKiAgICAgZXh0ZW50OiAnZmFydGhlc3QtY29ybmVyIGF0IDQ1cHggNDVweCcsXG4gKiAgICAgcG9zaXRpb246ICdjZW50ZXInLFxuICogICAgIHNoYXBlOiAnZWxsaXBzZScsXG4gKiAgIH0pfVxuICpgXG4gKlxuICogLy8gQ1NTIGFzIEpTIE91dHB1dFxuICpcbiAqIGRpdjoge1xuICogICAnYmFja2dyb3VuZENvbG9yJzogJyMwMEZGRkYnLFxuICogICAnYmFja2dyb3VuZEltYWdlJzogJ3JhZGlhbC1ncmFkaWVudChjZW50ZXIgZWxsaXBzZSBmYXJ0aGVzdC1jb3JuZXIgYXQgNDVweCA0NXB4LCAjMDBGRkZGIDAlLCByZ2JhKDAsIDAsIDI1NSwgMCkgNTAlLCAjMDAwMEZGIDk1JSknLFxuICogfVxuICovXG5mdW5jdGlvbiByYWRpYWxHcmFkaWVudChfcmVmKSB7XG4gIHZhciBjb2xvclN0b3BzID0gX3JlZi5jb2xvclN0b3BzLFxuICAgICAgX3JlZiRleHRlbnQgPSBfcmVmLmV4dGVudCxcbiAgICAgIGV4dGVudCA9IF9yZWYkZXh0ZW50ID09PSB2b2lkIDAgPyAnJyA6IF9yZWYkZXh0ZW50LFxuICAgICAgZmFsbGJhY2sgPSBfcmVmLmZhbGxiYWNrLFxuICAgICAgX3JlZiRwb3NpdGlvbiA9IF9yZWYucG9zaXRpb24sXG4gICAgICBwb3NpdGlvbiA9IF9yZWYkcG9zaXRpb24gPT09IHZvaWQgMCA/ICcnIDogX3JlZiRwb3NpdGlvbixcbiAgICAgIF9yZWYkc2hhcGUgPSBfcmVmLnNoYXBlLFxuICAgICAgc2hhcGUgPSBfcmVmJHNoYXBlID09PSB2b2lkIDAgPyAnJyA6IF9yZWYkc2hhcGU7XG5cbiAgaWYgKCFjb2xvclN0b3BzIHx8IGNvbG9yU3RvcHMubGVuZ3RoIDwgMikge1xuICAgIHRocm93IG5ldyBQb2xpc2hlZEVycm9yKDU3KTtcbiAgfVxuXG4gIHJldHVybiB7XG4gICAgYmFja2dyb3VuZENvbG9yOiBmYWxsYmFjayB8fCBjb2xvclN0b3BzWzBdLnNwbGl0KCcgJylbMF0sXG4gICAgYmFja2dyb3VuZEltYWdlOiBjb25zdHJ1Y3RHcmFkaWVudFZhbHVlKF90ZW1wbGF0ZU9iamVjdCQxIHx8IChfdGVtcGxhdGVPYmplY3QkMSA9IF90YWdnZWRUZW1wbGF0ZUxpdGVyYWxMb29zZShbXCJyYWRpYWwtZ3JhZGllbnQoXCIsIFwiXCIsIFwiXCIsIFwiXCIsIFwiKVwiXSkpLCBwb3NpdGlvbiwgc2hhcGUsIGV4dGVudCwgY29sb3JTdG9wcy5qb2luKCcsICcpKVxuICB9O1xufVxuXG4vKipcbiAqIEEgaGVscGVyIHRvIGdlbmVyYXRlIGEgcmV0aW5hIGJhY2tncm91bmQgaW1hZ2UgYW5kIG5vbi1yZXRpbmFcbiAqIGJhY2tncm91bmQgaW1hZ2UuIFRoZSByZXRpbmEgYmFja2dyb3VuZCBpbWFnZSB3aWxsIG91dHB1dCB0byBhIEhpRFBJIG1lZGlhIHF1ZXJ5LiBUaGUgbWl4aW4gdXNlc1xuICogYSBfMngucG5nIGZpbGVuYW1lIHN1ZmZpeCBieSBkZWZhdWx0LlxuICpcbiAqIEBleGFtcGxlXG4gKiAvLyBTdHlsZXMgYXMgb2JqZWN0IHVzYWdlXG4gKiBjb25zdCBzdHlsZXMgPSB7XG4gKiAgLi4ucmV0aW5hSW1hZ2UoJ215LWltZycpXG4gKiB9XG4gKlxuICogLy8gc3R5bGVkLWNvbXBvbmVudHMgdXNhZ2VcbiAqIGNvbnN0IGRpdiA9IHN0eWxlZC5kaXZgXG4gKiAgICR7cmV0aW5hSW1hZ2UoJ215LWltZycpfVxuICogYFxuICpcbiAqIC8vIENTUyBhcyBKUyBPdXRwdXRcbiAqIGRpdiB7XG4gKiAgIGJhY2tncm91bmRJbWFnZTogJ3VybChteS1pbWcucG5nKScsXG4gKiAgICdAbWVkaWEgb25seSBzY3JlZW4gYW5kICgtd2Via2l0LW1pbi1kZXZpY2UtcGl4ZWwtcmF0aW86IDEuMyksXG4gKiAgICBvbmx5IHNjcmVlbiBhbmQgKG1pbi0tbW96LWRldmljZS1waXhlbC1yYXRpbzogMS4zKSxcbiAqICAgIG9ubHkgc2NyZWVuIGFuZCAoLW8tbWluLWRldmljZS1waXhlbC1yYXRpbzogMS4zLzEpLFxuICogICAgb25seSBzY3JlZW4gYW5kIChtaW4tcmVzb2x1dGlvbjogMTQ0ZHBpKSxcbiAqICAgIG9ubHkgc2NyZWVuIGFuZCAobWluLXJlc29sdXRpb246IDEuNWRwcHgpJzoge1xuICogICAgIGJhY2tncm91bmRJbWFnZTogJ3VybChteS1pbWdfMngucG5nKScsXG4gKiAgIH1cbiAqIH1cbiAqL1xuZnVuY3Rpb24gcmV0aW5hSW1hZ2UoZmlsZW5hbWUsIGJhY2tncm91bmRTaXplLCBleHRlbnNpb24sIHJldGluYUZpbGVuYW1lLCByZXRpbmFTdWZmaXgpIHtcbiAgdmFyIF9yZWY7XG5cbiAgaWYgKGV4dGVuc2lvbiA9PT0gdm9pZCAwKSB7XG4gICAgZXh0ZW5zaW9uID0gJ3BuZyc7XG4gIH1cblxuICBpZiAocmV0aW5hU3VmZml4ID09PSB2b2lkIDApIHtcbiAgICByZXRpbmFTdWZmaXggPSAnXzJ4JztcbiAgfVxuXG4gIGlmICghZmlsZW5hbWUpIHtcbiAgICB0aHJvdyBuZXcgUG9saXNoZWRFcnJvcig1OCk7XG4gIH0gLy8gUmVwbGFjZSB0aGUgZG90IGF0IHRoZSBiZWdpbm5pbmcgb2YgdGhlIHBhc3NlZCBleHRlbnNpb24gaWYgb25lIGV4aXN0c1xuXG5cbiAgdmFyIGV4dCA9IGV4dGVuc2lvbi5yZXBsYWNlKC9eXFwuLywgJycpO1xuICB2YXIgckZpbGVuYW1lID0gcmV0aW5hRmlsZW5hbWUgPyByZXRpbmFGaWxlbmFtZSArIFwiLlwiICsgZXh0IDogXCJcIiArIGZpbGVuYW1lICsgcmV0aW5hU3VmZml4ICsgXCIuXCIgKyBleHQ7XG4gIHJldHVybiBfcmVmID0ge1xuICAgIGJhY2tncm91bmRJbWFnZTogXCJ1cmwoXCIgKyBmaWxlbmFtZSArIFwiLlwiICsgZXh0ICsgXCIpXCJcbiAgfSwgX3JlZltoaURQSSgpXSA9IF9leHRlbmRzKHtcbiAgICBiYWNrZ3JvdW5kSW1hZ2U6IFwidXJsKFwiICsgckZpbGVuYW1lICsgXCIpXCJcbiAgfSwgYmFja2dyb3VuZFNpemUgPyB7XG4gICAgYmFja2dyb3VuZFNpemU6IGJhY2tncm91bmRTaXplXG4gIH0gOiB7fSksIF9yZWY7XG59XG5cbi8qIGVzbGludC1kaXNhYmxlIGtleS1zcGFjaW5nICovXG52YXIgZnVuY3Rpb25zTWFwID0ge1xuICBlYXNlSW5CYWNrOiAnY3ViaWMtYmV6aWVyKDAuNjAwLCAtMC4yODAsIDAuNzM1LCAwLjA0NSknLFxuICBlYXNlSW5DaXJjOiAnY3ViaWMtYmV6aWVyKDAuNjAwLCAgMC4wNDAsIDAuOTgwLCAwLjMzNSknLFxuICBlYXNlSW5DdWJpYzogJ2N1YmljLWJlemllcigwLjU1MCwgIDAuMDU1LCAwLjY3NSwgMC4xOTApJyxcbiAgZWFzZUluRXhwbzogJ2N1YmljLWJlemllcigwLjk1MCwgIDAuMDUwLCAwLjc5NSwgMC4wMzUpJyxcbiAgZWFzZUluUXVhZDogJ2N1YmljLWJlemllcigwLjU1MCwgIDAuMDg1LCAwLjY4MCwgMC41MzApJyxcbiAgZWFzZUluUXVhcnQ6ICdjdWJpYy1iZXppZXIoMC44OTUsICAwLjAzMCwgMC42ODUsIDAuMjIwKScsXG4gIGVhc2VJblF1aW50OiAnY3ViaWMtYmV6aWVyKDAuNzU1LCAgMC4wNTAsIDAuODU1LCAwLjA2MCknLFxuICBlYXNlSW5TaW5lOiAnY3ViaWMtYmV6aWVyKDAuNDcwLCAgMC4wMDAsIDAuNzQ1LCAwLjcxNSknLFxuICBlYXNlT3V0QmFjazogJ2N1YmljLWJlemllcigwLjE3NSwgIDAuODg1LCAwLjMyMCwgMS4yNzUpJyxcbiAgZWFzZU91dEN1YmljOiAnY3ViaWMtYmV6aWVyKDAuMjE1LCAgMC42MTAsIDAuMzU1LCAxLjAwMCknLFxuICBlYXNlT3V0Q2lyYzogJ2N1YmljLWJlemllcigwLjA3NSwgIDAuODIwLCAwLjE2NSwgMS4wMDApJyxcbiAgZWFzZU91dEV4cG86ICdjdWJpYy1iZXppZXIoMC4xOTAsICAxLjAwMCwgMC4yMjAsIDEuMDAwKScsXG4gIGVhc2VPdXRRdWFkOiAnY3ViaWMtYmV6aWVyKDAuMjUwLCAgMC40NjAsIDAuNDUwLCAwLjk0MCknLFxuICBlYXNlT3V0UXVhcnQ6ICdjdWJpYy1iZXppZXIoMC4xNjUsICAwLjg0MCwgMC40NDAsIDEuMDAwKScsXG4gIGVhc2VPdXRRdWludDogJ2N1YmljLWJlemllcigwLjIzMCwgIDEuMDAwLCAwLjMyMCwgMS4wMDApJyxcbiAgZWFzZU91dFNpbmU6ICdjdWJpYy1iZXppZXIoMC4zOTAsICAwLjU3NSwgMC41NjUsIDEuMDAwKScsXG4gIGVhc2VJbk91dEJhY2s6ICdjdWJpYy1iZXppZXIoMC42ODAsIC0wLjU1MCwgMC4yNjUsIDEuNTUwKScsXG4gIGVhc2VJbk91dENpcmM6ICdjdWJpYy1iZXppZXIoMC43ODUsICAwLjEzNSwgMC4xNTAsIDAuODYwKScsXG4gIGVhc2VJbk91dEN1YmljOiAnY3ViaWMtYmV6aWVyKDAuNjQ1LCAgMC4wNDUsIDAuMzU1LCAxLjAwMCknLFxuICBlYXNlSW5PdXRFeHBvOiAnY3ViaWMtYmV6aWVyKDEuMDAwLCAgMC4wMDAsIDAuMDAwLCAxLjAwMCknLFxuICBlYXNlSW5PdXRRdWFkOiAnY3ViaWMtYmV6aWVyKDAuNDU1LCAgMC4wMzAsIDAuNTE1LCAwLjk1NSknLFxuICBlYXNlSW5PdXRRdWFydDogJ2N1YmljLWJlemllcigwLjc3MCwgIDAuMDAwLCAwLjE3NSwgMS4wMDApJyxcbiAgZWFzZUluT3V0UXVpbnQ6ICdjdWJpYy1iZXppZXIoMC44NjAsICAwLjAwMCwgMC4wNzAsIDEuMDAwKScsXG4gIGVhc2VJbk91dFNpbmU6ICdjdWJpYy1iZXppZXIoMC40NDUsICAwLjA1MCwgMC41NTAsIDAuOTUwKSdcbn07XG4vKiBlc2xpbnQtZW5hYmxlIGtleS1zcGFjaW5nICovXG5cbmZ1bmN0aW9uIGdldFRpbWluZ0Z1bmN0aW9uKGZ1bmN0aW9uTmFtZSkge1xuICByZXR1cm4gZnVuY3Rpb25zTWFwW2Z1bmN0aW9uTmFtZV07XG59XG4vKipcbiAqIFN0cmluZyB0byByZXByZXNlbnQgY29tbW9uIGVhc2luZyBmdW5jdGlvbnMgYXMgZGVtb25zdHJhdGVkIGhlcmU6IChnaXRodWIuY29tL2phdWtpYS9lYXNpZSkuXG4gKlxuICogQGV4YW1wbGVcbiAqIC8vIFN0eWxlcyBhcyBvYmplY3QgdXNhZ2VcbiAqIGNvbnN0IHN0eWxlcyA9IHtcbiAqICAgJ3RyYW5zaXRpb25UaW1pbmdGdW5jdGlvbic6IHRpbWluZ0Z1bmN0aW9ucygnZWFzZUluUXVhZCcpXG4gKiB9XG4gKlxuICogLy8gc3R5bGVkLWNvbXBvbmVudHMgdXNhZ2VcbiAqICBjb25zdCBkaXYgPSBzdHlsZWQuZGl2YFxuICogICB0cmFuc2l0aW9uVGltaW5nRnVuY3Rpb246ICR7dGltaW5nRnVuY3Rpb25zKCdlYXNlSW5RdWFkJyl9O1xuICogYFxuICpcbiAqIC8vIENTUyBhcyBKUyBPdXRwdXRcbiAqXG4gKiAnZGl2Jzoge1xuICogICAndHJhbnNpdGlvblRpbWluZ0Z1bmN0aW9uJzogJ2N1YmljLWJlemllcigwLjU1MCwgIDAuMDg1LCAwLjY4MCwgMC41MzApJyxcbiAqIH1cbiAqL1xuXG5cbmZ1bmN0aW9uIHRpbWluZ0Z1bmN0aW9ucyh0aW1pbmdGdW5jdGlvbikge1xuICByZXR1cm4gZ2V0VGltaW5nRnVuY3Rpb24odGltaW5nRnVuY3Rpb24pO1xufVxuXG52YXIgZ2V0Qm9yZGVyV2lkdGggPSBmdW5jdGlvbiBnZXRCb3JkZXJXaWR0aChwb2ludGluZ0RpcmVjdGlvbiwgaGVpZ2h0LCB3aWR0aCkge1xuICB2YXIgZnVsbFdpZHRoID0gXCJcIiArIHdpZHRoWzBdICsgKHdpZHRoWzFdIHx8ICcnKTtcbiAgdmFyIGhhbGZXaWR0aCA9IFwiXCIgKyB3aWR0aFswXSAvIDIgKyAod2lkdGhbMV0gfHwgJycpO1xuICB2YXIgZnVsbEhlaWdodCA9IFwiXCIgKyBoZWlnaHRbMF0gKyAoaGVpZ2h0WzFdIHx8ICcnKTtcbiAgdmFyIGhhbGZIZWlnaHQgPSBcIlwiICsgaGVpZ2h0WzBdIC8gMiArIChoZWlnaHRbMV0gfHwgJycpO1xuXG4gIHN3aXRjaCAocG9pbnRpbmdEaXJlY3Rpb24pIHtcbiAgICBjYXNlICd0b3AnOlxuICAgICAgcmV0dXJuIFwiMCBcIiArIGhhbGZXaWR0aCArIFwiIFwiICsgZnVsbEhlaWdodCArIFwiIFwiICsgaGFsZldpZHRoO1xuXG4gICAgY2FzZSAndG9wTGVmdCc6XG4gICAgICByZXR1cm4gZnVsbFdpZHRoICsgXCIgXCIgKyBmdWxsSGVpZ2h0ICsgXCIgMCAwXCI7XG5cbiAgICBjYXNlICdsZWZ0JzpcbiAgICAgIHJldHVybiBoYWxmSGVpZ2h0ICsgXCIgXCIgKyBmdWxsV2lkdGggKyBcIiBcIiArIGhhbGZIZWlnaHQgKyBcIiAwXCI7XG5cbiAgICBjYXNlICdib3R0b21MZWZ0JzpcbiAgICAgIHJldHVybiBmdWxsV2lkdGggKyBcIiAwIDAgXCIgKyBmdWxsSGVpZ2h0O1xuXG4gICAgY2FzZSAnYm90dG9tJzpcbiAgICAgIHJldHVybiBmdWxsSGVpZ2h0ICsgXCIgXCIgKyBoYWxmV2lkdGggKyBcIiAwIFwiICsgaGFsZldpZHRoO1xuXG4gICAgY2FzZSAnYm90dG9tUmlnaHQnOlxuICAgICAgcmV0dXJuIFwiMCAwIFwiICsgZnVsbFdpZHRoICsgXCIgXCIgKyBmdWxsSGVpZ2h0O1xuXG4gICAgY2FzZSAncmlnaHQnOlxuICAgICAgcmV0dXJuIGhhbGZIZWlnaHQgKyBcIiAwIFwiICsgaGFsZkhlaWdodCArIFwiIFwiICsgZnVsbFdpZHRoO1xuXG4gICAgY2FzZSAndG9wUmlnaHQnOlxuICAgIGRlZmF1bHQ6XG4gICAgICByZXR1cm4gXCIwIFwiICsgZnVsbFdpZHRoICsgXCIgXCIgKyBmdWxsSGVpZ2h0ICsgXCIgMFwiO1xuICB9XG59O1xuXG52YXIgZ2V0Qm9yZGVyQ29sb3IgPSBmdW5jdGlvbiBnZXRCb3JkZXJDb2xvcihwb2ludGluZ0RpcmVjdGlvbiwgZm9yZWdyb3VuZENvbG9yKSB7XG4gIHN3aXRjaCAocG9pbnRpbmdEaXJlY3Rpb24pIHtcbiAgICBjYXNlICd0b3AnOlxuICAgIGNhc2UgJ2JvdHRvbVJpZ2h0JzpcbiAgICAgIHJldHVybiB7XG4gICAgICAgIGJvcmRlckJvdHRvbUNvbG9yOiBmb3JlZ3JvdW5kQ29sb3JcbiAgICAgIH07XG5cbiAgICBjYXNlICdyaWdodCc6XG4gICAgY2FzZSAnYm90dG9tTGVmdCc6XG4gICAgICByZXR1cm4ge1xuICAgICAgICBib3JkZXJMZWZ0Q29sb3I6IGZvcmVncm91bmRDb2xvclxuICAgICAgfTtcblxuICAgIGNhc2UgJ2JvdHRvbSc6XG4gICAgY2FzZSAndG9wTGVmdCc6XG4gICAgICByZXR1cm4ge1xuICAgICAgICBib3JkZXJUb3BDb2xvcjogZm9yZWdyb3VuZENvbG9yXG4gICAgICB9O1xuXG4gICAgY2FzZSAnbGVmdCc6XG4gICAgY2FzZSAndG9wUmlnaHQnOlxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgYm9yZGVyUmlnaHRDb2xvcjogZm9yZWdyb3VuZENvbG9yXG4gICAgICB9O1xuXG4gICAgZGVmYXVsdDpcbiAgICAgIHRocm93IG5ldyBQb2xpc2hlZEVycm9yKDU5KTtcbiAgfVxufTtcbi8qKlxuICogQ1NTIHRvIHJlcHJlc2VudCB0cmlhbmdsZSB3aXRoIGFueSBwb2ludGluZyBkaXJlY3Rpb24gd2l0aCBhbiBvcHRpb25hbCBiYWNrZ3JvdW5kIGNvbG9yLlxuICpcbiAqIEBleGFtcGxlXG4gKiAvLyBTdHlsZXMgYXMgb2JqZWN0IHVzYWdlXG4gKlxuICogY29uc3Qgc3R5bGVzID0ge1xuICogICAuLi50cmlhbmdsZSh7IHBvaW50aW5nRGlyZWN0aW9uOiAncmlnaHQnLCB3aWR0aDogJzEwMHB4JywgaGVpZ2h0OiAnMTAwcHgnLCBmb3JlZ3JvdW5kQ29sb3I6ICdyZWQnIH0pXG4gKiB9XG4gKlxuICpcbiAqIC8vIHN0eWxlZC1jb21wb25lbnRzIHVzYWdlXG4gKiBjb25zdCBkaXYgPSBzdHlsZWQuZGl2YFxuICogICAke3RyaWFuZ2xlKHsgcG9pbnRpbmdEaXJlY3Rpb246ICdyaWdodCcsIHdpZHRoOiAnMTAwcHgnLCBoZWlnaHQ6ICcxMDBweCcsIGZvcmVncm91bmRDb2xvcjogJ3JlZCcgfSl9XG4gKlxuICpcbiAqIC8vIENTUyBhcyBKUyBPdXRwdXRcbiAqXG4gKiBkaXY6IHtcbiAqICAnYm9yZGVyQ29sb3InOiAndHJhbnNwYXJlbnQgdHJhbnNwYXJlbnQgdHJhbnNwYXJlbnQgcmVkJyxcbiAqICAnYm9yZGVyU3R5bGUnOiAnc29saWQnLFxuICogICdib3JkZXJXaWR0aCc6ICc1MHB4IDAgNTBweCAxMDBweCcsXG4gKiAgJ2hlaWdodCc6ICcwJyxcbiAqICAnd2lkdGgnOiAnMCcsXG4gKiB9XG4gKi9cblxuXG5mdW5jdGlvbiB0cmlhbmdsZShfcmVmKSB7XG4gIHZhciBwb2ludGluZ0RpcmVjdGlvbiA9IF9yZWYucG9pbnRpbmdEaXJlY3Rpb24sXG4gICAgICBoZWlnaHQgPSBfcmVmLmhlaWdodCxcbiAgICAgIHdpZHRoID0gX3JlZi53aWR0aCxcbiAgICAgIGZvcmVncm91bmRDb2xvciA9IF9yZWYuZm9yZWdyb3VuZENvbG9yLFxuICAgICAgX3JlZiRiYWNrZ3JvdW5kQ29sb3IgPSBfcmVmLmJhY2tncm91bmRDb2xvcixcbiAgICAgIGJhY2tncm91bmRDb2xvciA9IF9yZWYkYmFja2dyb3VuZENvbG9yID09PSB2b2lkIDAgPyAndHJhbnNwYXJlbnQnIDogX3JlZiRiYWNrZ3JvdW5kQ29sb3I7XG4gIHZhciB3aWR0aEFuZFVuaXQgPSBnZXRWYWx1ZUFuZFVuaXQod2lkdGgpO1xuICB2YXIgaGVpZ2h0QW5kVW5pdCA9IGdldFZhbHVlQW5kVW5pdChoZWlnaHQpO1xuXG4gIGlmIChpc05hTihoZWlnaHRBbmRVbml0WzBdKSB8fCBpc05hTih3aWR0aEFuZFVuaXRbMF0pKSB7XG4gICAgdGhyb3cgbmV3IFBvbGlzaGVkRXJyb3IoNjApO1xuICB9XG5cbiAgcmV0dXJuIF9leHRlbmRzKHtcbiAgICB3aWR0aDogJzAnLFxuICAgIGhlaWdodDogJzAnLFxuICAgIGJvcmRlckNvbG9yOiBiYWNrZ3JvdW5kQ29sb3JcbiAgfSwgZ2V0Qm9yZGVyQ29sb3IocG9pbnRpbmdEaXJlY3Rpb24sIGZvcmVncm91bmRDb2xvciksIHtcbiAgICBib3JkZXJTdHlsZTogJ3NvbGlkJyxcbiAgICBib3JkZXJXaWR0aDogZ2V0Qm9yZGVyV2lkdGgocG9pbnRpbmdEaXJlY3Rpb24sIGhlaWdodEFuZFVuaXQsIHdpZHRoQW5kVW5pdClcbiAgfSk7XG59XG5cbi8qKlxuICogUHJvdmlkZXMgYW4gZWFzeSB3YXkgdG8gY2hhbmdlIHRoZSBgd29yZFdyYXBgIHByb3BlcnR5LlxuICpcbiAqIEBleGFtcGxlXG4gKiAvLyBTdHlsZXMgYXMgb2JqZWN0IHVzYWdlXG4gKiBjb25zdCBzdHlsZXMgPSB7XG4gKiAgIC4uLndvcmRXcmFwKCdicmVhay13b3JkJylcbiAqIH1cbiAqXG4gKiAvLyBzdHlsZWQtY29tcG9uZW50cyB1c2FnZVxuICogY29uc3QgZGl2ID0gc3R5bGVkLmRpdmBcbiAqICAgJHt3b3JkV3JhcCgnYnJlYWstd29yZCcpfVxuICogYFxuICpcbiAqIC8vIENTUyBhcyBKUyBPdXRwdXRcbiAqXG4gKiBjb25zdCBzdHlsZXMgPSB7XG4gKiAgIG92ZXJmbG93V3JhcDogJ2JyZWFrLXdvcmQnLFxuICogICB3b3JkV3JhcDogJ2JyZWFrLXdvcmQnLFxuICogICB3b3JkQnJlYWs6ICdicmVhay1hbGwnLFxuICogfVxuICovXG5mdW5jdGlvbiB3b3JkV3JhcCh3cmFwKSB7XG4gIGlmICh3cmFwID09PSB2b2lkIDApIHtcbiAgICB3cmFwID0gJ2JyZWFrLXdvcmQnO1xuICB9XG5cbiAgdmFyIHdvcmRCcmVhayA9IHdyYXAgPT09ICdicmVhay13b3JkJyA/ICdicmVhay1hbGwnIDogd3JhcDtcbiAgcmV0dXJuIHtcbiAgICBvdmVyZmxvd1dyYXA6IHdyYXAsXG4gICAgd29yZFdyYXA6IHdyYXAsXG4gICAgd29yZEJyZWFrOiB3b3JkQnJlYWtcbiAgfTtcbn1cblxuZnVuY3Rpb24gY29sb3JUb0ludChjb2xvcikge1xuICByZXR1cm4gTWF0aC5yb3VuZChjb2xvciAqIDI1NSk7XG59XG5cbmZ1bmN0aW9uIGNvbnZlcnRUb0ludChyZWQsIGdyZWVuLCBibHVlKSB7XG4gIHJldHVybiBjb2xvclRvSW50KHJlZCkgKyBcIixcIiArIGNvbG9yVG9JbnQoZ3JlZW4pICsgXCIsXCIgKyBjb2xvclRvSW50KGJsdWUpO1xufVxuXG5mdW5jdGlvbiBoc2xUb1JnYihodWUsIHNhdHVyYXRpb24sIGxpZ2h0bmVzcywgY29udmVydCkge1xuICBpZiAoY29udmVydCA9PT0gdm9pZCAwKSB7XG4gICAgY29udmVydCA9IGNvbnZlcnRUb0ludDtcbiAgfVxuXG4gIGlmIChzYXR1cmF0aW9uID09PSAwKSB7XG4gICAgLy8gYWNocm9tYXRpY1xuICAgIHJldHVybiBjb252ZXJ0KGxpZ2h0bmVzcywgbGlnaHRuZXNzLCBsaWdodG5lc3MpO1xuICB9IC8vIGZvcm11bGFlIGZyb20gaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvSFNMX2FuZF9IU1ZcblxuXG4gIHZhciBodWVQcmltZSA9IChodWUgJSAzNjAgKyAzNjApICUgMzYwIC8gNjA7XG4gIHZhciBjaHJvbWEgPSAoMSAtIE1hdGguYWJzKDIgKiBsaWdodG5lc3MgLSAxKSkgKiBzYXR1cmF0aW9uO1xuICB2YXIgc2Vjb25kQ29tcG9uZW50ID0gY2hyb21hICogKDEgLSBNYXRoLmFicyhodWVQcmltZSAlIDIgLSAxKSk7XG4gIHZhciByZWQgPSAwO1xuICB2YXIgZ3JlZW4gPSAwO1xuICB2YXIgYmx1ZSA9IDA7XG5cbiAgaWYgKGh1ZVByaW1lID49IDAgJiYgaHVlUHJpbWUgPCAxKSB7XG4gICAgcmVkID0gY2hyb21hO1xuICAgIGdyZWVuID0gc2Vjb25kQ29tcG9uZW50O1xuICB9IGVsc2UgaWYgKGh1ZVByaW1lID49IDEgJiYgaHVlUHJpbWUgPCAyKSB7XG4gICAgcmVkID0gc2Vjb25kQ29tcG9uZW50O1xuICAgIGdyZWVuID0gY2hyb21hO1xuICB9IGVsc2UgaWYgKGh1ZVByaW1lID49IDIgJiYgaHVlUHJpbWUgPCAzKSB7XG4gICAgZ3JlZW4gPSBjaHJvbWE7XG4gICAgYmx1ZSA9IHNlY29uZENvbXBvbmVudDtcbiAgfSBlbHNlIGlmIChodWVQcmltZSA+PSAzICYmIGh1ZVByaW1lIDwgNCkge1xuICAgIGdyZWVuID0gc2Vjb25kQ29tcG9uZW50O1xuICAgIGJsdWUgPSBjaHJvbWE7XG4gIH0gZWxzZSBpZiAoaHVlUHJpbWUgPj0gNCAmJiBodWVQcmltZSA8IDUpIHtcbiAgICByZWQgPSBzZWNvbmRDb21wb25lbnQ7XG4gICAgYmx1ZSA9IGNocm9tYTtcbiAgfSBlbHNlIGlmIChodWVQcmltZSA+PSA1ICYmIGh1ZVByaW1lIDwgNikge1xuICAgIHJlZCA9IGNocm9tYTtcbiAgICBibHVlID0gc2Vjb25kQ29tcG9uZW50O1xuICB9XG5cbiAgdmFyIGxpZ2h0bmVzc01vZGlmaWNhdGlvbiA9IGxpZ2h0bmVzcyAtIGNocm9tYSAvIDI7XG4gIHZhciBmaW5hbFJlZCA9IHJlZCArIGxpZ2h0bmVzc01vZGlmaWNhdGlvbjtcbiAgdmFyIGZpbmFsR3JlZW4gPSBncmVlbiArIGxpZ2h0bmVzc01vZGlmaWNhdGlvbjtcbiAgdmFyIGZpbmFsQmx1ZSA9IGJsdWUgKyBsaWdodG5lc3NNb2RpZmljYXRpb247XG4gIHJldHVybiBjb252ZXJ0KGZpbmFsUmVkLCBmaW5hbEdyZWVuLCBmaW5hbEJsdWUpO1xufVxuXG52YXIgbmFtZWRDb2xvck1hcCA9IHtcbiAgYWxpY2VibHVlOiAnZjBmOGZmJyxcbiAgYW50aXF1ZXdoaXRlOiAnZmFlYmQ3JyxcbiAgYXF1YTogJzAwZmZmZicsXG4gIGFxdWFtYXJpbmU6ICc3ZmZmZDQnLFxuICBhenVyZTogJ2YwZmZmZicsXG4gIGJlaWdlOiAnZjVmNWRjJyxcbiAgYmlzcXVlOiAnZmZlNGM0JyxcbiAgYmxhY2s6ICcwMDAnLFxuICBibGFuY2hlZGFsbW9uZDogJ2ZmZWJjZCcsXG4gIGJsdWU6ICcwMDAwZmYnLFxuICBibHVldmlvbGV0OiAnOGEyYmUyJyxcbiAgYnJvd246ICdhNTJhMmEnLFxuICBidXJseXdvb2Q6ICdkZWI4ODcnLFxuICBjYWRldGJsdWU6ICc1ZjllYTAnLFxuICBjaGFydHJldXNlOiAnN2ZmZjAwJyxcbiAgY2hvY29sYXRlOiAnZDI2OTFlJyxcbiAgY29yYWw6ICdmZjdmNTAnLFxuICBjb3JuZmxvd2VyYmx1ZTogJzY0OTVlZCcsXG4gIGNvcm5zaWxrOiAnZmZmOGRjJyxcbiAgY3JpbXNvbjogJ2RjMTQzYycsXG4gIGN5YW46ICcwMGZmZmYnLFxuICBkYXJrYmx1ZTogJzAwMDA4YicsXG4gIGRhcmtjeWFuOiAnMDA4YjhiJyxcbiAgZGFya2dvbGRlbnJvZDogJ2I4ODYwYicsXG4gIGRhcmtncmF5OiAnYTlhOWE5JyxcbiAgZGFya2dyZWVuOiAnMDA2NDAwJyxcbiAgZGFya2dyZXk6ICdhOWE5YTknLFxuICBkYXJra2hha2k6ICdiZGI3NmInLFxuICBkYXJrbWFnZW50YTogJzhiMDA4YicsXG4gIGRhcmtvbGl2ZWdyZWVuOiAnNTU2YjJmJyxcbiAgZGFya29yYW5nZTogJ2ZmOGMwMCcsXG4gIGRhcmtvcmNoaWQ6ICc5OTMyY2MnLFxuICBkYXJrcmVkOiAnOGIwMDAwJyxcbiAgZGFya3NhbG1vbjogJ2U5OTY3YScsXG4gIGRhcmtzZWFncmVlbjogJzhmYmM4ZicsXG4gIGRhcmtzbGF0ZWJsdWU6ICc0ODNkOGInLFxuICBkYXJrc2xhdGVncmF5OiAnMmY0ZjRmJyxcbiAgZGFya3NsYXRlZ3JleTogJzJmNGY0ZicsXG4gIGRhcmt0dXJxdW9pc2U6ICcwMGNlZDEnLFxuICBkYXJrdmlvbGV0OiAnOTQwMGQzJyxcbiAgZGVlcHBpbms6ICdmZjE0OTMnLFxuICBkZWVwc2t5Ymx1ZTogJzAwYmZmZicsXG4gIGRpbWdyYXk6ICc2OTY5NjknLFxuICBkaW1ncmV5OiAnNjk2OTY5JyxcbiAgZG9kZ2VyYmx1ZTogJzFlOTBmZicsXG4gIGZpcmVicmljazogJ2IyMjIyMicsXG4gIGZsb3JhbHdoaXRlOiAnZmZmYWYwJyxcbiAgZm9yZXN0Z3JlZW46ICcyMjhiMjInLFxuICBmdWNoc2lhOiAnZmYwMGZmJyxcbiAgZ2FpbnNib3JvOiAnZGNkY2RjJyxcbiAgZ2hvc3R3aGl0ZTogJ2Y4ZjhmZicsXG4gIGdvbGQ6ICdmZmQ3MDAnLFxuICBnb2xkZW5yb2Q6ICdkYWE1MjAnLFxuICBncmF5OiAnODA4MDgwJyxcbiAgZ3JlZW46ICcwMDgwMDAnLFxuICBncmVlbnllbGxvdzogJ2FkZmYyZicsXG4gIGdyZXk6ICc4MDgwODAnLFxuICBob25leWRldzogJ2YwZmZmMCcsXG4gIGhvdHBpbms6ICdmZjY5YjQnLFxuICBpbmRpYW5yZWQ6ICdjZDVjNWMnLFxuICBpbmRpZ286ICc0YjAwODInLFxuICBpdm9yeTogJ2ZmZmZmMCcsXG4gIGtoYWtpOiAnZjBlNjhjJyxcbiAgbGF2ZW5kZXI6ICdlNmU2ZmEnLFxuICBsYXZlbmRlcmJsdXNoOiAnZmZmMGY1JyxcbiAgbGF3bmdyZWVuOiAnN2NmYzAwJyxcbiAgbGVtb25jaGlmZm9uOiAnZmZmYWNkJyxcbiAgbGlnaHRibHVlOiAnYWRkOGU2JyxcbiAgbGlnaHRjb3JhbDogJ2YwODA4MCcsXG4gIGxpZ2h0Y3lhbjogJ2UwZmZmZicsXG4gIGxpZ2h0Z29sZGVucm9keWVsbG93OiAnZmFmYWQyJyxcbiAgbGlnaHRncmF5OiAnZDNkM2QzJyxcbiAgbGlnaHRncmVlbjogJzkwZWU5MCcsXG4gIGxpZ2h0Z3JleTogJ2QzZDNkMycsXG4gIGxpZ2h0cGluazogJ2ZmYjZjMScsXG4gIGxpZ2h0c2FsbW9uOiAnZmZhMDdhJyxcbiAgbGlnaHRzZWFncmVlbjogJzIwYjJhYScsXG4gIGxpZ2h0c2t5Ymx1ZTogJzg3Y2VmYScsXG4gIGxpZ2h0c2xhdGVncmF5OiAnNzg5JyxcbiAgbGlnaHRzbGF0ZWdyZXk6ICc3ODknLFxuICBsaWdodHN0ZWVsYmx1ZTogJ2IwYzRkZScsXG4gIGxpZ2h0eWVsbG93OiAnZmZmZmUwJyxcbiAgbGltZTogJzBmMCcsXG4gIGxpbWVncmVlbjogJzMyY2QzMicsXG4gIGxpbmVuOiAnZmFmMGU2JyxcbiAgbWFnZW50YTogJ2YwZicsXG4gIG1hcm9vbjogJzgwMDAwMCcsXG4gIG1lZGl1bWFxdWFtYXJpbmU6ICc2NmNkYWEnLFxuICBtZWRpdW1ibHVlOiAnMDAwMGNkJyxcbiAgbWVkaXVtb3JjaGlkOiAnYmE1NWQzJyxcbiAgbWVkaXVtcHVycGxlOiAnOTM3MGRiJyxcbiAgbWVkaXVtc2VhZ3JlZW46ICczY2IzNzEnLFxuICBtZWRpdW1zbGF0ZWJsdWU6ICc3YjY4ZWUnLFxuICBtZWRpdW1zcHJpbmdncmVlbjogJzAwZmE5YScsXG4gIG1lZGl1bXR1cnF1b2lzZTogJzQ4ZDFjYycsXG4gIG1lZGl1bXZpb2xldHJlZDogJ2M3MTU4NScsXG4gIG1pZG5pZ2h0Ymx1ZTogJzE5MTk3MCcsXG4gIG1pbnRjcmVhbTogJ2Y1ZmZmYScsXG4gIG1pc3R5cm9zZTogJ2ZmZTRlMScsXG4gIG1vY2Nhc2luOiAnZmZlNGI1JyxcbiAgbmF2YWpvd2hpdGU6ICdmZmRlYWQnLFxuICBuYXZ5OiAnMDAwMDgwJyxcbiAgb2xkbGFjZTogJ2ZkZjVlNicsXG4gIG9saXZlOiAnODA4MDAwJyxcbiAgb2xpdmVkcmFiOiAnNmI4ZTIzJyxcbiAgb3JhbmdlOiAnZmZhNTAwJyxcbiAgb3JhbmdlcmVkOiAnZmY0NTAwJyxcbiAgb3JjaGlkOiAnZGE3MGQ2JyxcbiAgcGFsZWdvbGRlbnJvZDogJ2VlZThhYScsXG4gIHBhbGVncmVlbjogJzk4ZmI5OCcsXG4gIHBhbGV0dXJxdW9pc2U6ICdhZmVlZWUnLFxuICBwYWxldmlvbGV0cmVkOiAnZGI3MDkzJyxcbiAgcGFwYXlhd2hpcDogJ2ZmZWZkNScsXG4gIHBlYWNocHVmZjogJ2ZmZGFiOScsXG4gIHBlcnU6ICdjZDg1M2YnLFxuICBwaW5rOiAnZmZjMGNiJyxcbiAgcGx1bTogJ2RkYTBkZCcsXG4gIHBvd2RlcmJsdWU6ICdiMGUwZTYnLFxuICBwdXJwbGU6ICc4MDAwODAnLFxuICByZWJlY2NhcHVycGxlOiAnNjM5JyxcbiAgcmVkOiAnZjAwJyxcbiAgcm9zeWJyb3duOiAnYmM4ZjhmJyxcbiAgcm95YWxibHVlOiAnNDE2OWUxJyxcbiAgc2FkZGxlYnJvd246ICc4YjQ1MTMnLFxuICBzYWxtb246ICdmYTgwNzInLFxuICBzYW5keWJyb3duOiAnZjRhNDYwJyxcbiAgc2VhZ3JlZW46ICcyZThiNTcnLFxuICBzZWFzaGVsbDogJ2ZmZjVlZScsXG4gIHNpZW5uYTogJ2EwNTIyZCcsXG4gIHNpbHZlcjogJ2MwYzBjMCcsXG4gIHNreWJsdWU6ICc4N2NlZWInLFxuICBzbGF0ZWJsdWU6ICc2YTVhY2QnLFxuICBzbGF0ZWdyYXk6ICc3MDgwOTAnLFxuICBzbGF0ZWdyZXk6ICc3MDgwOTAnLFxuICBzbm93OiAnZmZmYWZhJyxcbiAgc3ByaW5nZ3JlZW46ICcwMGZmN2YnLFxuICBzdGVlbGJsdWU6ICc0NjgyYjQnLFxuICB0YW46ICdkMmI0OGMnLFxuICB0ZWFsOiAnMDA4MDgwJyxcbiAgdGhpc3RsZTogJ2Q4YmZkOCcsXG4gIHRvbWF0bzogJ2ZmNjM0NycsXG4gIHR1cnF1b2lzZTogJzQwZTBkMCcsXG4gIHZpb2xldDogJ2VlODJlZScsXG4gIHdoZWF0OiAnZjVkZWIzJyxcbiAgd2hpdGU6ICdmZmYnLFxuICB3aGl0ZXNtb2tlOiAnZjVmNWY1JyxcbiAgeWVsbG93OiAnZmYwJyxcbiAgeWVsbG93Z3JlZW46ICc5YWNkMzInXG59O1xuLyoqXG4gKiBDaGVja3MgaWYgYSBzdHJpbmcgaXMgYSBDU1MgbmFtZWQgY29sb3IgYW5kIHJldHVybnMgaXRzIGVxdWl2YWxlbnQgaGV4IHZhbHVlLCBvdGhlcndpc2UgcmV0dXJucyB0aGUgb3JpZ2luYWwgY29sb3IuXG4gKiBAcHJpdmF0ZVxuICovXG5cbmZ1bmN0aW9uIG5hbWVUb0hleChjb2xvcikge1xuICBpZiAodHlwZW9mIGNvbG9yICE9PSAnc3RyaW5nJykgcmV0dXJuIGNvbG9yO1xuICB2YXIgbm9ybWFsaXplZENvbG9yTmFtZSA9IGNvbG9yLnRvTG93ZXJDYXNlKCk7XG4gIHJldHVybiBuYW1lZENvbG9yTWFwW25vcm1hbGl6ZWRDb2xvck5hbWVdID8gXCIjXCIgKyBuYW1lZENvbG9yTWFwW25vcm1hbGl6ZWRDb2xvck5hbWVdIDogY29sb3I7XG59XG5cbnZhciBoZXhSZWdleCA9IC9eI1thLWZBLUYwLTldezZ9JC87XG52YXIgaGV4UmdiYVJlZ2V4ID0gL14jW2EtZkEtRjAtOV17OH0kLztcbnZhciByZWR1Y2VkSGV4UmVnZXggPSAvXiNbYS1mQS1GMC05XXszfSQvO1xudmFyIHJlZHVjZWRSZ2JhSGV4UmVnZXggPSAvXiNbYS1mQS1GMC05XXs0fSQvO1xudmFyIHJnYlJlZ2V4ID0gL15yZ2JcXChcXHMqKFxcZHsxLDN9KVxccyosXFxzKihcXGR7MSwzfSlcXHMqLFxccyooXFxkezEsM30pXFxzKlxcKSQvaTtcbnZhciByZ2JhUmVnZXggPSAvXnJnYmFcXChcXHMqKFxcZHsxLDN9KVxccyosXFxzKihcXGR7MSwzfSlcXHMqLFxccyooXFxkezEsM30pXFxzKixcXHMqKFstK10/WzAtOV0qWy5dP1swLTldKylcXHMqXFwpJC9pO1xudmFyIGhzbFJlZ2V4ID0gL15oc2xcXChcXHMqKFxcZHswLDN9Wy5dP1swLTldKylcXHMqLFxccyooXFxkezEsM31bLl0/WzAtOV0/KSVcXHMqLFxccyooXFxkezEsM31bLl0/WzAtOV0/KSVcXHMqXFwpJC9pO1xudmFyIGhzbGFSZWdleCA9IC9eaHNsYVxcKFxccyooXFxkezAsM31bLl0/WzAtOV0rKVxccyosXFxzKihcXGR7MSwzfVsuXT9bMC05XT8pJVxccyosXFxzKihcXGR7MSwzfVsuXT9bMC05XT8pJVxccyosXFxzKihbLStdP1swLTldKlsuXT9bMC05XSspXFxzKlxcKSQvaTtcbi8qKlxuICogUmV0dXJucyBhbiBSZ2JDb2xvciBvciBSZ2JhQ29sb3Igb2JqZWN0LiBUaGlzIHV0aWxpdHkgZnVuY3Rpb24gaXMgb25seSB1c2VmdWxcbiAqIGlmIHdhbnQgdG8gZXh0cmFjdCBhIGNvbG9yIGNvbXBvbmVudC4gV2l0aCB0aGUgY29sb3IgdXRpbCBgdG9Db2xvclN0cmluZ2AgeW91XG4gKiBjYW4gY29udmVydCBhIFJnYkNvbG9yIG9yIFJnYmFDb2xvciBvYmplY3QgYmFjayB0byBhIHN0cmluZy5cbiAqXG4gKiBAZXhhbXBsZVxuICogLy8gQXNzaWducyBgeyByZWQ6IDI1NSwgZ3JlZW46IDAsIGJsdWU6IDAgfWAgdG8gY29sb3IxXG4gKiBjb25zdCBjb2xvcjEgPSBwYXJzZVRvUmdiKCdyZ2IoMjU1LCAwLCAwKScpO1xuICogLy8gQXNzaWducyBgeyByZWQ6IDkyLCBncmVlbjogMTAyLCBibHVlOiAxMTIsIGFscGhhOiAwLjc1IH1gIHRvIGNvbG9yMlxuICogY29uc3QgY29sb3IyID0gcGFyc2VUb1JnYignaHNsYSgyMTAsIDEwJSwgNDAlLCAwLjc1KScpO1xuICovXG5cbmZ1bmN0aW9uIHBhcnNlVG9SZ2IoY29sb3IpIHtcbiAgaWYgKHR5cGVvZiBjb2xvciAhPT0gJ3N0cmluZycpIHtcbiAgICB0aHJvdyBuZXcgUG9saXNoZWRFcnJvcigzKTtcbiAgfVxuXG4gIHZhciBub3JtYWxpemVkQ29sb3IgPSBuYW1lVG9IZXgoY29sb3IpO1xuXG4gIGlmIChub3JtYWxpemVkQ29sb3IubWF0Y2goaGV4UmVnZXgpKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIHJlZDogcGFyc2VJbnQoXCJcIiArIG5vcm1hbGl6ZWRDb2xvclsxXSArIG5vcm1hbGl6ZWRDb2xvclsyXSwgMTYpLFxuICAgICAgZ3JlZW46IHBhcnNlSW50KFwiXCIgKyBub3JtYWxpemVkQ29sb3JbM10gKyBub3JtYWxpemVkQ29sb3JbNF0sIDE2KSxcbiAgICAgIGJsdWU6IHBhcnNlSW50KFwiXCIgKyBub3JtYWxpemVkQ29sb3JbNV0gKyBub3JtYWxpemVkQ29sb3JbNl0sIDE2KVxuICAgIH07XG4gIH1cblxuICBpZiAobm9ybWFsaXplZENvbG9yLm1hdGNoKGhleFJnYmFSZWdleCkpIHtcbiAgICB2YXIgYWxwaGEgPSBwYXJzZUZsb2F0KChwYXJzZUludChcIlwiICsgbm9ybWFsaXplZENvbG9yWzddICsgbm9ybWFsaXplZENvbG9yWzhdLCAxNikgLyAyNTUpLnRvRml4ZWQoMikpO1xuICAgIHJldHVybiB7XG4gICAgICByZWQ6IHBhcnNlSW50KFwiXCIgKyBub3JtYWxpemVkQ29sb3JbMV0gKyBub3JtYWxpemVkQ29sb3JbMl0sIDE2KSxcbiAgICAgIGdyZWVuOiBwYXJzZUludChcIlwiICsgbm9ybWFsaXplZENvbG9yWzNdICsgbm9ybWFsaXplZENvbG9yWzRdLCAxNiksXG4gICAgICBibHVlOiBwYXJzZUludChcIlwiICsgbm9ybWFsaXplZENvbG9yWzVdICsgbm9ybWFsaXplZENvbG9yWzZdLCAxNiksXG4gICAgICBhbHBoYTogYWxwaGFcbiAgICB9O1xuICB9XG5cbiAgaWYgKG5vcm1hbGl6ZWRDb2xvci5tYXRjaChyZWR1Y2VkSGV4UmVnZXgpKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIHJlZDogcGFyc2VJbnQoXCJcIiArIG5vcm1hbGl6ZWRDb2xvclsxXSArIG5vcm1hbGl6ZWRDb2xvclsxXSwgMTYpLFxuICAgICAgZ3JlZW46IHBhcnNlSW50KFwiXCIgKyBub3JtYWxpemVkQ29sb3JbMl0gKyBub3JtYWxpemVkQ29sb3JbMl0sIDE2KSxcbiAgICAgIGJsdWU6IHBhcnNlSW50KFwiXCIgKyBub3JtYWxpemVkQ29sb3JbM10gKyBub3JtYWxpemVkQ29sb3JbM10sIDE2KVxuICAgIH07XG4gIH1cblxuICBpZiAobm9ybWFsaXplZENvbG9yLm1hdGNoKHJlZHVjZWRSZ2JhSGV4UmVnZXgpKSB7XG4gICAgdmFyIF9hbHBoYSA9IHBhcnNlRmxvYXQoKHBhcnNlSW50KFwiXCIgKyBub3JtYWxpemVkQ29sb3JbNF0gKyBub3JtYWxpemVkQ29sb3JbNF0sIDE2KSAvIDI1NSkudG9GaXhlZCgyKSk7XG5cbiAgICByZXR1cm4ge1xuICAgICAgcmVkOiBwYXJzZUludChcIlwiICsgbm9ybWFsaXplZENvbG9yWzFdICsgbm9ybWFsaXplZENvbG9yWzFdLCAxNiksXG4gICAgICBncmVlbjogcGFyc2VJbnQoXCJcIiArIG5vcm1hbGl6ZWRDb2xvclsyXSArIG5vcm1hbGl6ZWRDb2xvclsyXSwgMTYpLFxuICAgICAgYmx1ZTogcGFyc2VJbnQoXCJcIiArIG5vcm1hbGl6ZWRDb2xvclszXSArIG5vcm1hbGl6ZWRDb2xvclszXSwgMTYpLFxuICAgICAgYWxwaGE6IF9hbHBoYVxuICAgIH07XG4gIH1cblxuICB2YXIgcmdiTWF0Y2hlZCA9IHJnYlJlZ2V4LmV4ZWMobm9ybWFsaXplZENvbG9yKTtcblxuICBpZiAocmdiTWF0Y2hlZCkge1xuICAgIHJldHVybiB7XG4gICAgICByZWQ6IHBhcnNlSW50KFwiXCIgKyByZ2JNYXRjaGVkWzFdLCAxMCksXG4gICAgICBncmVlbjogcGFyc2VJbnQoXCJcIiArIHJnYk1hdGNoZWRbMl0sIDEwKSxcbiAgICAgIGJsdWU6IHBhcnNlSW50KFwiXCIgKyByZ2JNYXRjaGVkWzNdLCAxMClcbiAgICB9O1xuICB9XG5cbiAgdmFyIHJnYmFNYXRjaGVkID0gcmdiYVJlZ2V4LmV4ZWMobm9ybWFsaXplZENvbG9yLnN1YnN0cmluZygwLCA1MCkpO1xuXG4gIGlmIChyZ2JhTWF0Y2hlZCkge1xuICAgIHJldHVybiB7XG4gICAgICByZWQ6IHBhcnNlSW50KFwiXCIgKyByZ2JhTWF0Y2hlZFsxXSwgMTApLFxuICAgICAgZ3JlZW46IHBhcnNlSW50KFwiXCIgKyByZ2JhTWF0Y2hlZFsyXSwgMTApLFxuICAgICAgYmx1ZTogcGFyc2VJbnQoXCJcIiArIHJnYmFNYXRjaGVkWzNdLCAxMCksXG4gICAgICBhbHBoYTogcGFyc2VGbG9hdChcIlwiICsgcmdiYU1hdGNoZWRbNF0pXG4gICAgfTtcbiAgfVxuXG4gIHZhciBoc2xNYXRjaGVkID0gaHNsUmVnZXguZXhlYyhub3JtYWxpemVkQ29sb3IpO1xuXG4gIGlmIChoc2xNYXRjaGVkKSB7XG4gICAgdmFyIGh1ZSA9IHBhcnNlSW50KFwiXCIgKyBoc2xNYXRjaGVkWzFdLCAxMCk7XG4gICAgdmFyIHNhdHVyYXRpb24gPSBwYXJzZUludChcIlwiICsgaHNsTWF0Y2hlZFsyXSwgMTApIC8gMTAwO1xuICAgIHZhciBsaWdodG5lc3MgPSBwYXJzZUludChcIlwiICsgaHNsTWF0Y2hlZFszXSwgMTApIC8gMTAwO1xuICAgIHZhciByZ2JDb2xvclN0cmluZyA9IFwicmdiKFwiICsgaHNsVG9SZ2IoaHVlLCBzYXR1cmF0aW9uLCBsaWdodG5lc3MpICsgXCIpXCI7XG4gICAgdmFyIGhzbFJnYk1hdGNoZWQgPSByZ2JSZWdleC5leGVjKHJnYkNvbG9yU3RyaW5nKTtcblxuICAgIGlmICghaHNsUmdiTWF0Y2hlZCkge1xuICAgICAgdGhyb3cgbmV3IFBvbGlzaGVkRXJyb3IoNCwgbm9ybWFsaXplZENvbG9yLCByZ2JDb2xvclN0cmluZyk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHtcbiAgICAgIHJlZDogcGFyc2VJbnQoXCJcIiArIGhzbFJnYk1hdGNoZWRbMV0sIDEwKSxcbiAgICAgIGdyZWVuOiBwYXJzZUludChcIlwiICsgaHNsUmdiTWF0Y2hlZFsyXSwgMTApLFxuICAgICAgYmx1ZTogcGFyc2VJbnQoXCJcIiArIGhzbFJnYk1hdGNoZWRbM10sIDEwKVxuICAgIH07XG4gIH1cblxuICB2YXIgaHNsYU1hdGNoZWQgPSBoc2xhUmVnZXguZXhlYyhub3JtYWxpemVkQ29sb3Iuc3Vic3RyaW5nKDAsIDUwKSk7XG5cbiAgaWYgKGhzbGFNYXRjaGVkKSB7XG4gICAgdmFyIF9odWUgPSBwYXJzZUludChcIlwiICsgaHNsYU1hdGNoZWRbMV0sIDEwKTtcblxuICAgIHZhciBfc2F0dXJhdGlvbiA9IHBhcnNlSW50KFwiXCIgKyBoc2xhTWF0Y2hlZFsyXSwgMTApIC8gMTAwO1xuXG4gICAgdmFyIF9saWdodG5lc3MgPSBwYXJzZUludChcIlwiICsgaHNsYU1hdGNoZWRbM10sIDEwKSAvIDEwMDtcblxuICAgIHZhciBfcmdiQ29sb3JTdHJpbmcgPSBcInJnYihcIiArIGhzbFRvUmdiKF9odWUsIF9zYXR1cmF0aW9uLCBfbGlnaHRuZXNzKSArIFwiKVwiO1xuXG4gICAgdmFyIF9oc2xSZ2JNYXRjaGVkID0gcmdiUmVnZXguZXhlYyhfcmdiQ29sb3JTdHJpbmcpO1xuXG4gICAgaWYgKCFfaHNsUmdiTWF0Y2hlZCkge1xuICAgICAgdGhyb3cgbmV3IFBvbGlzaGVkRXJyb3IoNCwgbm9ybWFsaXplZENvbG9yLCBfcmdiQ29sb3JTdHJpbmcpO1xuICAgIH1cblxuICAgIHJldHVybiB7XG4gICAgICByZWQ6IHBhcnNlSW50KFwiXCIgKyBfaHNsUmdiTWF0Y2hlZFsxXSwgMTApLFxuICAgICAgZ3JlZW46IHBhcnNlSW50KFwiXCIgKyBfaHNsUmdiTWF0Y2hlZFsyXSwgMTApLFxuICAgICAgYmx1ZTogcGFyc2VJbnQoXCJcIiArIF9oc2xSZ2JNYXRjaGVkWzNdLCAxMCksXG4gICAgICBhbHBoYTogcGFyc2VGbG9hdChcIlwiICsgaHNsYU1hdGNoZWRbNF0pXG4gICAgfTtcbiAgfVxuXG4gIHRocm93IG5ldyBQb2xpc2hlZEVycm9yKDUpO1xufVxuXG5mdW5jdGlvbiByZ2JUb0hzbChjb2xvcikge1xuICAvLyBtYWtlIHN1cmUgcmdiIGFyZSBjb250YWluZWQgaW4gYSBzZXQgb2YgWzAsIDI1NV1cbiAgdmFyIHJlZCA9IGNvbG9yLnJlZCAvIDI1NTtcbiAgdmFyIGdyZWVuID0gY29sb3IuZ3JlZW4gLyAyNTU7XG4gIHZhciBibHVlID0gY29sb3IuYmx1ZSAvIDI1NTtcbiAgdmFyIG1heCA9IE1hdGgubWF4KHJlZCwgZ3JlZW4sIGJsdWUpO1xuICB2YXIgbWluID0gTWF0aC5taW4ocmVkLCBncmVlbiwgYmx1ZSk7XG4gIHZhciBsaWdodG5lc3MgPSAobWF4ICsgbWluKSAvIDI7XG5cbiAgaWYgKG1heCA9PT0gbWluKSB7XG4gICAgLy8gYWNocm9tYXRpY1xuICAgIGlmIChjb2xvci5hbHBoYSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICBodWU6IDAsXG4gICAgICAgIHNhdHVyYXRpb246IDAsXG4gICAgICAgIGxpZ2h0bmVzczogbGlnaHRuZXNzLFxuICAgICAgICBhbHBoYTogY29sb3IuYWxwaGFcbiAgICAgIH07XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIGh1ZTogMCxcbiAgICAgICAgc2F0dXJhdGlvbjogMCxcbiAgICAgICAgbGlnaHRuZXNzOiBsaWdodG5lc3NcbiAgICAgIH07XG4gICAgfVxuICB9XG5cbiAgdmFyIGh1ZTtcbiAgdmFyIGRlbHRhID0gbWF4IC0gbWluO1xuICB2YXIgc2F0dXJhdGlvbiA9IGxpZ2h0bmVzcyA+IDAuNSA/IGRlbHRhIC8gKDIgLSBtYXggLSBtaW4pIDogZGVsdGEgLyAobWF4ICsgbWluKTtcblxuICBzd2l0Y2ggKG1heCkge1xuICAgIGNhc2UgcmVkOlxuICAgICAgaHVlID0gKGdyZWVuIC0gYmx1ZSkgLyBkZWx0YSArIChncmVlbiA8IGJsdWUgPyA2IDogMCk7XG4gICAgICBicmVhaztcblxuICAgIGNhc2UgZ3JlZW46XG4gICAgICBodWUgPSAoYmx1ZSAtIHJlZCkgLyBkZWx0YSArIDI7XG4gICAgICBicmVhaztcblxuICAgIGRlZmF1bHQ6XG4gICAgICAvLyBibHVlIGNhc2VcbiAgICAgIGh1ZSA9IChyZWQgLSBncmVlbikgLyBkZWx0YSArIDQ7XG4gICAgICBicmVhaztcbiAgfVxuXG4gIGh1ZSAqPSA2MDtcblxuICBpZiAoY29sb3IuYWxwaGEgIT09IHVuZGVmaW5lZCkge1xuICAgIHJldHVybiB7XG4gICAgICBodWU6IGh1ZSxcbiAgICAgIHNhdHVyYXRpb246IHNhdHVyYXRpb24sXG4gICAgICBsaWdodG5lc3M6IGxpZ2h0bmVzcyxcbiAgICAgIGFscGhhOiBjb2xvci5hbHBoYVxuICAgIH07XG4gIH1cblxuICByZXR1cm4ge1xuICAgIGh1ZTogaHVlLFxuICAgIHNhdHVyYXRpb246IHNhdHVyYXRpb24sXG4gICAgbGlnaHRuZXNzOiBsaWdodG5lc3NcbiAgfTtcbn1cblxuLyoqXG4gKiBSZXR1cm5zIGFuIEhzbENvbG9yIG9yIEhzbGFDb2xvciBvYmplY3QuIFRoaXMgdXRpbGl0eSBmdW5jdGlvbiBpcyBvbmx5IHVzZWZ1bFxuICogaWYgd2FudCB0byBleHRyYWN0IGEgY29sb3IgY29tcG9uZW50LiBXaXRoIHRoZSBjb2xvciB1dGlsIGB0b0NvbG9yU3RyaW5nYCB5b3VcbiAqIGNhbiBjb252ZXJ0IGEgSHNsQ29sb3Igb3IgSHNsYUNvbG9yIG9iamVjdCBiYWNrIHRvIGEgc3RyaW5nLlxuICpcbiAqIEBleGFtcGxlXG4gKiAvLyBBc3NpZ25zIGB7IGh1ZTogMCwgc2F0dXJhdGlvbjogMSwgbGlnaHRuZXNzOiAwLjUgfWAgdG8gY29sb3IxXG4gKiBjb25zdCBjb2xvcjEgPSBwYXJzZVRvSHNsKCdyZ2IoMjU1LCAwLCAwKScpO1xuICogLy8gQXNzaWducyBgeyBodWU6IDEyOCwgc2F0dXJhdGlvbjogMSwgbGlnaHRuZXNzOiAwLjUsIGFscGhhOiAwLjc1IH1gIHRvIGNvbG9yMlxuICogY29uc3QgY29sb3IyID0gcGFyc2VUb0hzbCgnaHNsYSgxMjgsIDEwMCUsIDUwJSwgMC43NSknKTtcbiAqL1xuZnVuY3Rpb24gcGFyc2VUb0hzbChjb2xvcikge1xuICAvLyBOb3RlOiBBdCBhIGxhdGVyIHN0YWdlIHdlIGNhbiBvcHRpbWl6ZSB0aGlzIGZ1bmN0aW9uIGFzIHJpZ2h0IG5vdyBhIGhzbFxuICAvLyBjb2xvciB3b3VsZCBiZSBwYXJzZWQgY29udmVydGVkIHRvIHJnYiB2YWx1ZXMgYW5kIGNvbnZlcnRlZCBiYWNrIHRvIGhzbC5cbiAgcmV0dXJuIHJnYlRvSHNsKHBhcnNlVG9SZ2IoY29sb3IpKTtcbn1cblxuLyoqXG4gKiBSZWR1Y2VzIGhleCB2YWx1ZXMgaWYgcG9zc2libGUgZS5nLiAjZmY4ODY2IHRvICNmODZcbiAqIEBwcml2YXRlXG4gKi9cbnZhciByZWR1Y2VIZXhWYWx1ZSA9IGZ1bmN0aW9uIHJlZHVjZUhleFZhbHVlKHZhbHVlKSB7XG4gIGlmICh2YWx1ZS5sZW5ndGggPT09IDcgJiYgdmFsdWVbMV0gPT09IHZhbHVlWzJdICYmIHZhbHVlWzNdID09PSB2YWx1ZVs0XSAmJiB2YWx1ZVs1XSA9PT0gdmFsdWVbNl0pIHtcbiAgICByZXR1cm4gXCIjXCIgKyB2YWx1ZVsxXSArIHZhbHVlWzNdICsgdmFsdWVbNV07XG4gIH1cblxuICByZXR1cm4gdmFsdWU7XG59O1xuXG5mdW5jdGlvbiBudW1iZXJUb0hleCh2YWx1ZSkge1xuICB2YXIgaGV4ID0gdmFsdWUudG9TdHJpbmcoMTYpO1xuICByZXR1cm4gaGV4Lmxlbmd0aCA9PT0gMSA/IFwiMFwiICsgaGV4IDogaGV4O1xufVxuXG5mdW5jdGlvbiBjb2xvclRvSGV4KGNvbG9yKSB7XG4gIHJldHVybiBudW1iZXJUb0hleChNYXRoLnJvdW5kKGNvbG9yICogMjU1KSk7XG59XG5cbmZ1bmN0aW9uIGNvbnZlcnRUb0hleChyZWQsIGdyZWVuLCBibHVlKSB7XG4gIHJldHVybiByZWR1Y2VIZXhWYWx1ZShcIiNcIiArIGNvbG9yVG9IZXgocmVkKSArIGNvbG9yVG9IZXgoZ3JlZW4pICsgY29sb3JUb0hleChibHVlKSk7XG59XG5cbmZ1bmN0aW9uIGhzbFRvSGV4KGh1ZSwgc2F0dXJhdGlvbiwgbGlnaHRuZXNzKSB7XG4gIHJldHVybiBoc2xUb1JnYihodWUsIHNhdHVyYXRpb24sIGxpZ2h0bmVzcywgY29udmVydFRvSGV4KTtcbn1cblxuLyoqXG4gKiBSZXR1cm5zIGEgc3RyaW5nIHZhbHVlIGZvciB0aGUgY29sb3IuIFRoZSByZXR1cm5lZCByZXN1bHQgaXMgdGhlIHNtYWxsZXN0IHBvc3NpYmxlIGhleCBub3RhdGlvbi5cbiAqXG4gKiBAZXhhbXBsZVxuICogLy8gU3R5bGVzIGFzIG9iamVjdCB1c2FnZVxuICogY29uc3Qgc3R5bGVzID0ge1xuICogICBiYWNrZ3JvdW5kOiBoc2woMzU5LCAwLjc1LCAwLjQpLFxuICogICBiYWNrZ3JvdW5kOiBoc2woeyBodWU6IDM2MCwgc2F0dXJhdGlvbjogMC43NSwgbGlnaHRuZXNzOiAwLjQgfSksXG4gKiB9XG4gKlxuICogLy8gc3R5bGVkLWNvbXBvbmVudHMgdXNhZ2VcbiAqIGNvbnN0IGRpdiA9IHN0eWxlZC5kaXZgXG4gKiAgIGJhY2tncm91bmQ6ICR7aHNsKDM1OSwgMC43NSwgMC40KX07XG4gKiAgIGJhY2tncm91bmQ6ICR7aHNsKHsgaHVlOiAzNjAsIHNhdHVyYXRpb246IDAuNzUsIGxpZ2h0bmVzczogMC40IH0pfTtcbiAqIGBcbiAqXG4gKiAvLyBDU1MgaW4gSlMgT3V0cHV0XG4gKlxuICogZWxlbWVudCB7XG4gKiAgIGJhY2tncm91bmQ6IFwiI2IzMTkxY1wiO1xuICogICBiYWNrZ3JvdW5kOiBcIiNiMzE5MWNcIjtcbiAqIH1cbiAqL1xuZnVuY3Rpb24gaHNsKHZhbHVlLCBzYXR1cmF0aW9uLCBsaWdodG5lc3MpIHtcbiAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ251bWJlcicgJiYgdHlwZW9mIHNhdHVyYXRpb24gPT09ICdudW1iZXInICYmIHR5cGVvZiBsaWdodG5lc3MgPT09ICdudW1iZXInKSB7XG4gICAgcmV0dXJuIGhzbFRvSGV4KHZhbHVlLCBzYXR1cmF0aW9uLCBsaWdodG5lc3MpO1xuICB9IGVsc2UgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ29iamVjdCcgJiYgc2F0dXJhdGlvbiA9PT0gdW5kZWZpbmVkICYmIGxpZ2h0bmVzcyA9PT0gdW5kZWZpbmVkKSB7XG4gICAgcmV0dXJuIGhzbFRvSGV4KHZhbHVlLmh1ZSwgdmFsdWUuc2F0dXJhdGlvbiwgdmFsdWUubGlnaHRuZXNzKTtcbiAgfVxuXG4gIHRocm93IG5ldyBQb2xpc2hlZEVycm9yKDEpO1xufVxuXG4vKipcbiAqIFJldHVybnMgYSBzdHJpbmcgdmFsdWUgZm9yIHRoZSBjb2xvci4gVGhlIHJldHVybmVkIHJlc3VsdCBpcyB0aGUgc21hbGxlc3QgcG9zc2libGUgcmdiYSBvciBoZXggbm90YXRpb24uXG4gKlxuICogQGV4YW1wbGVcbiAqIC8vIFN0eWxlcyBhcyBvYmplY3QgdXNhZ2VcbiAqIGNvbnN0IHN0eWxlcyA9IHtcbiAqICAgYmFja2dyb3VuZDogaHNsYSgzNTksIDAuNzUsIDAuNCwgMC43KSxcbiAqICAgYmFja2dyb3VuZDogaHNsYSh7IGh1ZTogMzYwLCBzYXR1cmF0aW9uOiAwLjc1LCBsaWdodG5lc3M6IDAuNCwgYWxwaGE6IDAsNyB9KSxcbiAqICAgYmFja2dyb3VuZDogaHNsYSgzNTksIDAuNzUsIDAuNCwgMSksXG4gKiB9XG4gKlxuICogLy8gc3R5bGVkLWNvbXBvbmVudHMgdXNhZ2VcbiAqIGNvbnN0IGRpdiA9IHN0eWxlZC5kaXZgXG4gKiAgIGJhY2tncm91bmQ6ICR7aHNsYSgzNTksIDAuNzUsIDAuNCwgMC43KX07XG4gKiAgIGJhY2tncm91bmQ6ICR7aHNsYSh7IGh1ZTogMzYwLCBzYXR1cmF0aW9uOiAwLjc1LCBsaWdodG5lc3M6IDAuNCwgYWxwaGE6IDAsNyB9KX07XG4gKiAgIGJhY2tncm91bmQ6ICR7aHNsYSgzNTksIDAuNzUsIDAuNCwgMSl9O1xuICogYFxuICpcbiAqIC8vIENTUyBpbiBKUyBPdXRwdXRcbiAqXG4gKiBlbGVtZW50IHtcbiAqICAgYmFja2dyb3VuZDogXCJyZ2JhKDE3OSwyNSwyOCwwLjcpXCI7XG4gKiAgIGJhY2tncm91bmQ6IFwicmdiYSgxNzksMjUsMjgsMC43KVwiO1xuICogICBiYWNrZ3JvdW5kOiBcIiNiMzE5MWNcIjtcbiAqIH1cbiAqL1xuZnVuY3Rpb24gaHNsYSh2YWx1ZSwgc2F0dXJhdGlvbiwgbGlnaHRuZXNzLCBhbHBoYSkge1xuICBpZiAodHlwZW9mIHZhbHVlID09PSAnbnVtYmVyJyAmJiB0eXBlb2Ygc2F0dXJhdGlvbiA9PT0gJ251bWJlcicgJiYgdHlwZW9mIGxpZ2h0bmVzcyA9PT0gJ251bWJlcicgJiYgdHlwZW9mIGFscGhhID09PSAnbnVtYmVyJykge1xuICAgIHJldHVybiBhbHBoYSA+PSAxID8gaHNsVG9IZXgodmFsdWUsIHNhdHVyYXRpb24sIGxpZ2h0bmVzcykgOiBcInJnYmEoXCIgKyBoc2xUb1JnYih2YWx1ZSwgc2F0dXJhdGlvbiwgbGlnaHRuZXNzKSArIFwiLFwiICsgYWxwaGEgKyBcIilcIjtcbiAgfSBlbHNlIGlmICh0eXBlb2YgdmFsdWUgPT09ICdvYmplY3QnICYmIHNhdHVyYXRpb24gPT09IHVuZGVmaW5lZCAmJiBsaWdodG5lc3MgPT09IHVuZGVmaW5lZCAmJiBhbHBoYSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgcmV0dXJuIHZhbHVlLmFscGhhID49IDEgPyBoc2xUb0hleCh2YWx1ZS5odWUsIHZhbHVlLnNhdHVyYXRpb24sIHZhbHVlLmxpZ2h0bmVzcykgOiBcInJnYmEoXCIgKyBoc2xUb1JnYih2YWx1ZS5odWUsIHZhbHVlLnNhdHVyYXRpb24sIHZhbHVlLmxpZ2h0bmVzcykgKyBcIixcIiArIHZhbHVlLmFscGhhICsgXCIpXCI7XG4gIH1cblxuICB0aHJvdyBuZXcgUG9saXNoZWRFcnJvcigyKTtcbn1cblxuLyoqXG4gKiBSZXR1cm5zIGEgc3RyaW5nIHZhbHVlIGZvciB0aGUgY29sb3IuIFRoZSByZXR1cm5lZCByZXN1bHQgaXMgdGhlIHNtYWxsZXN0IHBvc3NpYmxlIGhleCBub3RhdGlvbi5cbiAqXG4gKiBAZXhhbXBsZVxuICogLy8gU3R5bGVzIGFzIG9iamVjdCB1c2FnZVxuICogY29uc3Qgc3R5bGVzID0ge1xuICogICBiYWNrZ3JvdW5kOiByZ2IoMjU1LCAyMDUsIDEwMCksXG4gKiAgIGJhY2tncm91bmQ6IHJnYih7IHJlZDogMjU1LCBncmVlbjogMjA1LCBibHVlOiAxMDAgfSksXG4gKiB9XG4gKlxuICogLy8gc3R5bGVkLWNvbXBvbmVudHMgdXNhZ2VcbiAqIGNvbnN0IGRpdiA9IHN0eWxlZC5kaXZgXG4gKiAgIGJhY2tncm91bmQ6ICR7cmdiKDI1NSwgMjA1LCAxMDApfTtcbiAqICAgYmFja2dyb3VuZDogJHtyZ2IoeyByZWQ6IDI1NSwgZ3JlZW46IDIwNSwgYmx1ZTogMTAwIH0pfTtcbiAqIGBcbiAqXG4gKiAvLyBDU1MgaW4gSlMgT3V0cHV0XG4gKlxuICogZWxlbWVudCB7XG4gKiAgIGJhY2tncm91bmQ6IFwiI2ZmY2Q2NFwiO1xuICogICBiYWNrZ3JvdW5kOiBcIiNmZmNkNjRcIjtcbiAqIH1cbiAqL1xuZnVuY3Rpb24gcmdiKHZhbHVlLCBncmVlbiwgYmx1ZSkge1xuICBpZiAodHlwZW9mIHZhbHVlID09PSAnbnVtYmVyJyAmJiB0eXBlb2YgZ3JlZW4gPT09ICdudW1iZXInICYmIHR5cGVvZiBibHVlID09PSAnbnVtYmVyJykge1xuICAgIHJldHVybiByZWR1Y2VIZXhWYWx1ZShcIiNcIiArIG51bWJlclRvSGV4KHZhbHVlKSArIG51bWJlclRvSGV4KGdyZWVuKSArIG51bWJlclRvSGV4KGJsdWUpKTtcbiAgfSBlbHNlIGlmICh0eXBlb2YgdmFsdWUgPT09ICdvYmplY3QnICYmIGdyZWVuID09PSB1bmRlZmluZWQgJiYgYmx1ZSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgcmV0dXJuIHJlZHVjZUhleFZhbHVlKFwiI1wiICsgbnVtYmVyVG9IZXgodmFsdWUucmVkKSArIG51bWJlclRvSGV4KHZhbHVlLmdyZWVuKSArIG51bWJlclRvSGV4KHZhbHVlLmJsdWUpKTtcbiAgfVxuXG4gIHRocm93IG5ldyBQb2xpc2hlZEVycm9yKDYpO1xufVxuXG4vKipcbiAqIFJldHVybnMgYSBzdHJpbmcgdmFsdWUgZm9yIHRoZSBjb2xvci4gVGhlIHJldHVybmVkIHJlc3VsdCBpcyB0aGUgc21hbGxlc3QgcG9zc2libGUgcmdiYSBvciBoZXggbm90YXRpb24uXG4gKlxuICogQ2FuIGFsc28gYmUgdXNlZCB0byBmYWRlIGEgY29sb3IgYnkgcGFzc2luZyBhIGhleCB2YWx1ZSBvciBuYW1lZCBDU1MgY29sb3IgYWxvbmcgd2l0aCBhbiBhbHBoYSB2YWx1ZS5cbiAqXG4gKiBAZXhhbXBsZVxuICogLy8gU3R5bGVzIGFzIG9iamVjdCB1c2FnZVxuICogY29uc3Qgc3R5bGVzID0ge1xuICogICBiYWNrZ3JvdW5kOiByZ2JhKDI1NSwgMjA1LCAxMDAsIDAuNyksXG4gKiAgIGJhY2tncm91bmQ6IHJnYmEoeyByZWQ6IDI1NSwgZ3JlZW46IDIwNSwgYmx1ZTogMTAwLCBhbHBoYTogMC43IH0pLFxuICogICBiYWNrZ3JvdW5kOiByZ2JhKDI1NSwgMjA1LCAxMDAsIDEpLFxuICogICBiYWNrZ3JvdW5kOiByZ2JhKCcjZmZmZmZmJywgMC40KSxcbiAqICAgYmFja2dyb3VuZDogcmdiYSgnYmxhY2snLCAwLjcpLFxuICogfVxuICpcbiAqIC8vIHN0eWxlZC1jb21wb25lbnRzIHVzYWdlXG4gKiBjb25zdCBkaXYgPSBzdHlsZWQuZGl2YFxuICogICBiYWNrZ3JvdW5kOiAke3JnYmEoMjU1LCAyMDUsIDEwMCwgMC43KX07XG4gKiAgIGJhY2tncm91bmQ6ICR7cmdiYSh7IHJlZDogMjU1LCBncmVlbjogMjA1LCBibHVlOiAxMDAsIGFscGhhOiAwLjcgfSl9O1xuICogICBiYWNrZ3JvdW5kOiAke3JnYmEoMjU1LCAyMDUsIDEwMCwgMSl9O1xuICogICBiYWNrZ3JvdW5kOiAke3JnYmEoJyNmZmZmZmYnLCAwLjQpfTtcbiAqICAgYmFja2dyb3VuZDogJHtyZ2JhKCdibGFjaycsIDAuNyl9O1xuICogYFxuICpcbiAqIC8vIENTUyBpbiBKUyBPdXRwdXRcbiAqXG4gKiBlbGVtZW50IHtcbiAqICAgYmFja2dyb3VuZDogXCJyZ2JhKDI1NSwyMDUsMTAwLDAuNylcIjtcbiAqICAgYmFja2dyb3VuZDogXCJyZ2JhKDI1NSwyMDUsMTAwLDAuNylcIjtcbiAqICAgYmFja2dyb3VuZDogXCIjZmZjZDY0XCI7XG4gKiAgIGJhY2tncm91bmQ6IFwicmdiYSgyNTUsMjU1LDI1NSwwLjQpXCI7XG4gKiAgIGJhY2tncm91bmQ6IFwicmdiYSgwLDAsMCwwLjcpXCI7XG4gKiB9XG4gKi9cbmZ1bmN0aW9uIHJnYmEoZmlyc3RWYWx1ZSwgc2Vjb25kVmFsdWUsIHRoaXJkVmFsdWUsIGZvdXJ0aFZhbHVlKSB7XG4gIGlmICh0eXBlb2YgZmlyc3RWYWx1ZSA9PT0gJ3N0cmluZycgJiYgdHlwZW9mIHNlY29uZFZhbHVlID09PSAnbnVtYmVyJykge1xuICAgIHZhciByZ2JWYWx1ZSA9IHBhcnNlVG9SZ2IoZmlyc3RWYWx1ZSk7XG4gICAgcmV0dXJuIFwicmdiYShcIiArIHJnYlZhbHVlLnJlZCArIFwiLFwiICsgcmdiVmFsdWUuZ3JlZW4gKyBcIixcIiArIHJnYlZhbHVlLmJsdWUgKyBcIixcIiArIHNlY29uZFZhbHVlICsgXCIpXCI7XG4gIH0gZWxzZSBpZiAodHlwZW9mIGZpcnN0VmFsdWUgPT09ICdudW1iZXInICYmIHR5cGVvZiBzZWNvbmRWYWx1ZSA9PT0gJ251bWJlcicgJiYgdHlwZW9mIHRoaXJkVmFsdWUgPT09ICdudW1iZXInICYmIHR5cGVvZiBmb3VydGhWYWx1ZSA9PT0gJ251bWJlcicpIHtcbiAgICByZXR1cm4gZm91cnRoVmFsdWUgPj0gMSA/IHJnYihmaXJzdFZhbHVlLCBzZWNvbmRWYWx1ZSwgdGhpcmRWYWx1ZSkgOiBcInJnYmEoXCIgKyBmaXJzdFZhbHVlICsgXCIsXCIgKyBzZWNvbmRWYWx1ZSArIFwiLFwiICsgdGhpcmRWYWx1ZSArIFwiLFwiICsgZm91cnRoVmFsdWUgKyBcIilcIjtcbiAgfSBlbHNlIGlmICh0eXBlb2YgZmlyc3RWYWx1ZSA9PT0gJ29iamVjdCcgJiYgc2Vjb25kVmFsdWUgPT09IHVuZGVmaW5lZCAmJiB0aGlyZFZhbHVlID09PSB1bmRlZmluZWQgJiYgZm91cnRoVmFsdWUgPT09IHVuZGVmaW5lZCkge1xuICAgIHJldHVybiBmaXJzdFZhbHVlLmFscGhhID49IDEgPyByZ2IoZmlyc3RWYWx1ZS5yZWQsIGZpcnN0VmFsdWUuZ3JlZW4sIGZpcnN0VmFsdWUuYmx1ZSkgOiBcInJnYmEoXCIgKyBmaXJzdFZhbHVlLnJlZCArIFwiLFwiICsgZmlyc3RWYWx1ZS5ncmVlbiArIFwiLFwiICsgZmlyc3RWYWx1ZS5ibHVlICsgXCIsXCIgKyBmaXJzdFZhbHVlLmFscGhhICsgXCIpXCI7XG4gIH1cblxuICB0aHJvdyBuZXcgUG9saXNoZWRFcnJvcig3KTtcbn1cblxudmFyIGlzUmdiID0gZnVuY3Rpb24gaXNSZ2IoY29sb3IpIHtcbiAgcmV0dXJuIHR5cGVvZiBjb2xvci5yZWQgPT09ICdudW1iZXInICYmIHR5cGVvZiBjb2xvci5ncmVlbiA9PT0gJ251bWJlcicgJiYgdHlwZW9mIGNvbG9yLmJsdWUgPT09ICdudW1iZXInICYmICh0eXBlb2YgY29sb3IuYWxwaGEgIT09ICdudW1iZXInIHx8IHR5cGVvZiBjb2xvci5hbHBoYSA9PT0gJ3VuZGVmaW5lZCcpO1xufTtcblxudmFyIGlzUmdiYSA9IGZ1bmN0aW9uIGlzUmdiYShjb2xvcikge1xuICByZXR1cm4gdHlwZW9mIGNvbG9yLnJlZCA9PT0gJ251bWJlcicgJiYgdHlwZW9mIGNvbG9yLmdyZWVuID09PSAnbnVtYmVyJyAmJiB0eXBlb2YgY29sb3IuYmx1ZSA9PT0gJ251bWJlcicgJiYgdHlwZW9mIGNvbG9yLmFscGhhID09PSAnbnVtYmVyJztcbn07XG5cbnZhciBpc0hzbCA9IGZ1bmN0aW9uIGlzSHNsKGNvbG9yKSB7XG4gIHJldHVybiB0eXBlb2YgY29sb3IuaHVlID09PSAnbnVtYmVyJyAmJiB0eXBlb2YgY29sb3Iuc2F0dXJhdGlvbiA9PT0gJ251bWJlcicgJiYgdHlwZW9mIGNvbG9yLmxpZ2h0bmVzcyA9PT0gJ251bWJlcicgJiYgKHR5cGVvZiBjb2xvci5hbHBoYSAhPT0gJ251bWJlcicgfHwgdHlwZW9mIGNvbG9yLmFscGhhID09PSAndW5kZWZpbmVkJyk7XG59O1xuXG52YXIgaXNIc2xhID0gZnVuY3Rpb24gaXNIc2xhKGNvbG9yKSB7XG4gIHJldHVybiB0eXBlb2YgY29sb3IuaHVlID09PSAnbnVtYmVyJyAmJiB0eXBlb2YgY29sb3Iuc2F0dXJhdGlvbiA9PT0gJ251bWJlcicgJiYgdHlwZW9mIGNvbG9yLmxpZ2h0bmVzcyA9PT0gJ251bWJlcicgJiYgdHlwZW9mIGNvbG9yLmFscGhhID09PSAnbnVtYmVyJztcbn07XG4vKipcbiAqIENvbnZlcnRzIGEgUmdiQ29sb3IsIFJnYmFDb2xvciwgSHNsQ29sb3Igb3IgSHNsYUNvbG9yIG9iamVjdCB0byBhIGNvbG9yIHN0cmluZy5cbiAqIFRoaXMgdXRpbCBpcyB1c2VmdWwgaW4gY2FzZSB5b3Ugb25seSBrbm93IG9uIHJ1bnRpbWUgd2hpY2ggY29sb3Igb2JqZWN0IGlzXG4gKiB1c2VkLiBPdGhlcndpc2Ugd2UgcmVjb21tZW5kIHRvIHJlbHkgb24gYHJnYmAsIGByZ2JhYCwgYGhzbGAgb3IgYGhzbGFgLlxuICpcbiAqIEBleGFtcGxlXG4gKiAvLyBTdHlsZXMgYXMgb2JqZWN0IHVzYWdlXG4gKiBjb25zdCBzdHlsZXMgPSB7XG4gKiAgIGJhY2tncm91bmQ6IHRvQ29sb3JTdHJpbmcoeyByZWQ6IDI1NSwgZ3JlZW46IDIwNSwgYmx1ZTogMTAwIH0pLFxuICogICBiYWNrZ3JvdW5kOiB0b0NvbG9yU3RyaW5nKHsgcmVkOiAyNTUsIGdyZWVuOiAyMDUsIGJsdWU6IDEwMCwgYWxwaGE6IDAuNzIgfSksXG4gKiAgIGJhY2tncm91bmQ6IHRvQ29sb3JTdHJpbmcoeyBodWU6IDI0MCwgc2F0dXJhdGlvbjogMSwgbGlnaHRuZXNzOiAwLjUgfSksXG4gKiAgIGJhY2tncm91bmQ6IHRvQ29sb3JTdHJpbmcoeyBodWU6IDM2MCwgc2F0dXJhdGlvbjogMC43NSwgbGlnaHRuZXNzOiAwLjQsIGFscGhhOiAwLjcyIH0pLFxuICogfVxuICpcbiAqIC8vIHN0eWxlZC1jb21wb25lbnRzIHVzYWdlXG4gKiBjb25zdCBkaXYgPSBzdHlsZWQuZGl2YFxuICogICBiYWNrZ3JvdW5kOiAke3RvQ29sb3JTdHJpbmcoeyByZWQ6IDI1NSwgZ3JlZW46IDIwNSwgYmx1ZTogMTAwIH0pfTtcbiAqICAgYmFja2dyb3VuZDogJHt0b0NvbG9yU3RyaW5nKHsgcmVkOiAyNTUsIGdyZWVuOiAyMDUsIGJsdWU6IDEwMCwgYWxwaGE6IDAuNzIgfSl9O1xuICogICBiYWNrZ3JvdW5kOiAke3RvQ29sb3JTdHJpbmcoeyBodWU6IDI0MCwgc2F0dXJhdGlvbjogMSwgbGlnaHRuZXNzOiAwLjUgfSl9O1xuICogICBiYWNrZ3JvdW5kOiAke3RvQ29sb3JTdHJpbmcoeyBodWU6IDM2MCwgc2F0dXJhdGlvbjogMC43NSwgbGlnaHRuZXNzOiAwLjQsIGFscGhhOiAwLjcyIH0pfTtcbiAqIGBcbiAqXG4gKiAvLyBDU1MgaW4gSlMgT3V0cHV0XG4gKiBlbGVtZW50IHtcbiAqICAgYmFja2dyb3VuZDogXCIjZmZjZDY0XCI7XG4gKiAgIGJhY2tncm91bmQ6IFwicmdiYSgyNTUsMjA1LDEwMCwwLjcyKVwiO1xuICogICBiYWNrZ3JvdW5kOiBcIiMwMGZcIjtcbiAqICAgYmFja2dyb3VuZDogXCJyZ2JhKDE3OSwyNSwyNSwwLjcyKVwiO1xuICogfVxuICovXG5cblxuZnVuY3Rpb24gdG9Db2xvclN0cmluZyhjb2xvcikge1xuICBpZiAodHlwZW9mIGNvbG9yICE9PSAnb2JqZWN0JykgdGhyb3cgbmV3IFBvbGlzaGVkRXJyb3IoOCk7XG4gIGlmIChpc1JnYmEoY29sb3IpKSByZXR1cm4gcmdiYShjb2xvcik7XG4gIGlmIChpc1JnYihjb2xvcikpIHJldHVybiByZ2IoY29sb3IpO1xuICBpZiAoaXNIc2xhKGNvbG9yKSkgcmV0dXJuIGhzbGEoY29sb3IpO1xuICBpZiAoaXNIc2woY29sb3IpKSByZXR1cm4gaHNsKGNvbG9yKTtcbiAgdGhyb3cgbmV3IFBvbGlzaGVkRXJyb3IoOCk7XG59XG5cbi8vIFR5cGUgZGVmaW5pdGlvbnMgdGFrZW4gZnJvbSBodHRwczovL2dpdGh1Yi5jb20vZ2NhbnRpL2Zsb3ctc3RhdGljLWxhbmQvYmxvYi9tYXN0ZXIvc3JjL0Z1bi5qc1xuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXVudXNlZC12YXJzXG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tdW51c2VkLXZhcnNcbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1yZWRlY2xhcmVcbmZ1bmN0aW9uIGN1cnJpZWQoZiwgbGVuZ3RoLCBhY2MpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uIGZuKCkge1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBwcmVmZXItcmVzdC1wYXJhbXNcbiAgICB2YXIgY29tYmluZWQgPSBhY2MuY29uY2F0KEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGFyZ3VtZW50cykpO1xuICAgIHJldHVybiBjb21iaW5lZC5sZW5ndGggPj0gbGVuZ3RoID8gZi5hcHBseSh0aGlzLCBjb21iaW5lZCkgOiBjdXJyaWVkKGYsIGxlbmd0aCwgY29tYmluZWQpO1xuICB9O1xufSAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tcmVkZWNsYXJlXG5cblxuZnVuY3Rpb24gY3VycnkoZikge1xuICAvLyBlc2xpbnQtZGlzYWJsZS1saW5lIG5vLXJlZGVjbGFyZVxuICByZXR1cm4gY3VycmllZChmLCBmLmxlbmd0aCwgW10pO1xufVxuXG4vKipcbiAqIENoYW5nZXMgdGhlIGh1ZSBvZiB0aGUgY29sb3IuIEh1ZSBpcyBhIG51bWJlciBiZXR3ZWVuIDAgdG8gMzYwLiBUaGUgZmlyc3RcbiAqIGFyZ3VtZW50IGZvciBhZGp1c3RIdWUgaXMgdGhlIGFtb3VudCBvZiBkZWdyZWVzIHRoZSBjb2xvciBpcyByb3RhdGVkIGFyb3VuZFxuICogdGhlIGNvbG9yIHdoZWVsLCBhbHdheXMgcHJvZHVjaW5nIGEgcG9zaXRpdmUgaHVlIHZhbHVlLlxuICpcbiAqIEBleGFtcGxlXG4gKiAvLyBTdHlsZXMgYXMgb2JqZWN0IHVzYWdlXG4gKiBjb25zdCBzdHlsZXMgPSB7XG4gKiAgIGJhY2tncm91bmQ6IGFkanVzdEh1ZSgxODAsICcjNDQ4JyksXG4gKiAgIGJhY2tncm91bmQ6IGFkanVzdEh1ZSgnMTgwJywgJ3JnYmEoMTAxLDEwMCwyMDUsMC43KScpLFxuICogfVxuICpcbiAqIC8vIHN0eWxlZC1jb21wb25lbnRzIHVzYWdlXG4gKiBjb25zdCBkaXYgPSBzdHlsZWQuZGl2YFxuICogICBiYWNrZ3JvdW5kOiAke2FkanVzdEh1ZSgxODAsICcjNDQ4Jyl9O1xuICogICBiYWNrZ3JvdW5kOiAke2FkanVzdEh1ZSgnMTgwJywgJ3JnYmEoMTAxLDEwMCwyMDUsMC43KScpfTtcbiAqIGBcbiAqXG4gKiAvLyBDU1MgaW4gSlMgT3V0cHV0XG4gKiBlbGVtZW50IHtcbiAqICAgYmFja2dyb3VuZDogXCIjODg4ODQ0XCI7XG4gKiAgIGJhY2tncm91bmQ6IFwicmdiYSgxMzYsMTM2LDY4LDAuNylcIjtcbiAqIH1cbiAqL1xuXG5mdW5jdGlvbiBhZGp1c3RIdWUoZGVncmVlLCBjb2xvcikge1xuICBpZiAoY29sb3IgPT09ICd0cmFuc3BhcmVudCcpIHJldHVybiBjb2xvcjtcbiAgdmFyIGhzbENvbG9yID0gcGFyc2VUb0hzbChjb2xvcik7XG4gIHJldHVybiB0b0NvbG9yU3RyaW5nKF9leHRlbmRzKHt9LCBoc2xDb2xvciwge1xuICAgIGh1ZTogaHNsQ29sb3IuaHVlICsgcGFyc2VGbG9hdChkZWdyZWUpXG4gIH0pKTtcbn0gLy8gcHJldHRpZXItaWdub3JlXG5cblxudmFyIGN1cnJpZWRBZGp1c3RIdWUgPSAvKiNfX1BVUkVfXyovY3Vycnlcbi8qIDo6PG51bWJlciB8IHN0cmluZywgc3RyaW5nLCBzdHJpbmc+ICovXG4oYWRqdXN0SHVlKTtcblxuLyoqXG4gKiBSZXR1cm5zIHRoZSBjb21wbGVtZW50IG9mIHRoZSBwcm92aWRlZCBjb2xvci4gVGhpcyBpcyBpZGVudGljYWwgdG8gYWRqdXN0SHVlKDE4MCwgPGNvbG9yPikuXG4gKlxuICogQGV4YW1wbGVcbiAqIC8vIFN0eWxlcyBhcyBvYmplY3QgdXNhZ2VcbiAqIGNvbnN0IHN0eWxlcyA9IHtcbiAqICAgYmFja2dyb3VuZDogY29tcGxlbWVudCgnIzQ0OCcpLFxuICogICBiYWNrZ3JvdW5kOiBjb21wbGVtZW50KCdyZ2JhKDIwNCwyMDUsMTAwLDAuNyknKSxcbiAqIH1cbiAqXG4gKiAvLyBzdHlsZWQtY29tcG9uZW50cyB1c2FnZVxuICogY29uc3QgZGl2ID0gc3R5bGVkLmRpdmBcbiAqICAgYmFja2dyb3VuZDogJHtjb21wbGVtZW50KCcjNDQ4Jyl9O1xuICogICBiYWNrZ3JvdW5kOiAke2NvbXBsZW1lbnQoJ3JnYmEoMjA0LDIwNSwxMDAsMC43KScpfTtcbiAqIGBcbiAqXG4gKiAvLyBDU1MgaW4gSlMgT3V0cHV0XG4gKiBlbGVtZW50IHtcbiAqICAgYmFja2dyb3VuZDogXCIjODg0XCI7XG4gKiAgIGJhY2tncm91bmQ6IFwicmdiYSgxNTMsMTUzLDE1MywwLjcpXCI7XG4gKiB9XG4gKi9cblxuZnVuY3Rpb24gY29tcGxlbWVudChjb2xvcikge1xuICBpZiAoY29sb3IgPT09ICd0cmFuc3BhcmVudCcpIHJldHVybiBjb2xvcjtcbiAgdmFyIGhzbENvbG9yID0gcGFyc2VUb0hzbChjb2xvcik7XG4gIHJldHVybiB0b0NvbG9yU3RyaW5nKF9leHRlbmRzKHt9LCBoc2xDb2xvciwge1xuICAgIGh1ZTogKGhzbENvbG9yLmh1ZSArIDE4MCkgJSAzNjBcbiAgfSkpO1xufVxuXG5mdW5jdGlvbiBndWFyZChsb3dlckJvdW5kYXJ5LCB1cHBlckJvdW5kYXJ5LCB2YWx1ZSkge1xuICByZXR1cm4gTWF0aC5tYXgobG93ZXJCb3VuZGFyeSwgTWF0aC5taW4odXBwZXJCb3VuZGFyeSwgdmFsdWUpKTtcbn1cblxuLyoqXG4gKiBSZXR1cm5zIGEgc3RyaW5nIHZhbHVlIGZvciB0aGUgZGFya2VuZWQgY29sb3IuXG4gKlxuICogQGV4YW1wbGVcbiAqIC8vIFN0eWxlcyBhcyBvYmplY3QgdXNhZ2VcbiAqIGNvbnN0IHN0eWxlcyA9IHtcbiAqICAgYmFja2dyb3VuZDogZGFya2VuKDAuMiwgJyNGRkNENjQnKSxcbiAqICAgYmFja2dyb3VuZDogZGFya2VuKCcwLjInLCAncmdiYSgyNTUsMjA1LDEwMCwwLjcpJyksXG4gKiB9XG4gKlxuICogLy8gc3R5bGVkLWNvbXBvbmVudHMgdXNhZ2VcbiAqIGNvbnN0IGRpdiA9IHN0eWxlZC5kaXZgXG4gKiAgIGJhY2tncm91bmQ6ICR7ZGFya2VuKDAuMiwgJyNGRkNENjQnKX07XG4gKiAgIGJhY2tncm91bmQ6ICR7ZGFya2VuKCcwLjInLCAncmdiYSgyNTUsMjA1LDEwMCwwLjcpJyl9O1xuICogYFxuICpcbiAqIC8vIENTUyBpbiBKUyBPdXRwdXRcbiAqXG4gKiBlbGVtZW50IHtcbiAqICAgYmFja2dyb3VuZDogXCIjZmZiZDMxXCI7XG4gKiAgIGJhY2tncm91bmQ6IFwicmdiYSgyNTUsMTg5LDQ5LDAuNylcIjtcbiAqIH1cbiAqL1xuXG5mdW5jdGlvbiBkYXJrZW4oYW1vdW50LCBjb2xvcikge1xuICBpZiAoY29sb3IgPT09ICd0cmFuc3BhcmVudCcpIHJldHVybiBjb2xvcjtcbiAgdmFyIGhzbENvbG9yID0gcGFyc2VUb0hzbChjb2xvcik7XG4gIHJldHVybiB0b0NvbG9yU3RyaW5nKF9leHRlbmRzKHt9LCBoc2xDb2xvciwge1xuICAgIGxpZ2h0bmVzczogZ3VhcmQoMCwgMSwgaHNsQ29sb3IubGlnaHRuZXNzIC0gcGFyc2VGbG9hdChhbW91bnQpKVxuICB9KSk7XG59IC8vIHByZXR0aWVyLWlnbm9yZVxuXG5cbnZhciBjdXJyaWVkRGFya2VuID0gLyojX19QVVJFX18qL2N1cnJ5XG4vKiA6OjxudW1iZXIgfCBzdHJpbmcsIHN0cmluZywgc3RyaW5nPiAqL1xuKGRhcmtlbik7XG5cbi8qKlxuICogRGVjcmVhc2VzIHRoZSBpbnRlbnNpdHkgb2YgYSBjb2xvci4gSXRzIHJhbmdlIGlzIGJldHdlZW4gMCB0byAxLiBUaGUgZmlyc3RcbiAqIGFyZ3VtZW50IG9mIHRoZSBkZXNhdHVyYXRlIGZ1bmN0aW9uIGlzIHRoZSBhbW91bnQgYnkgaG93IG11Y2ggdGhlIGNvbG9yXG4gKiBpbnRlbnNpdHkgc2hvdWxkIGJlIGRlY3JlYXNlZC5cbiAqXG4gKiBAZXhhbXBsZVxuICogLy8gU3R5bGVzIGFzIG9iamVjdCB1c2FnZVxuICogY29uc3Qgc3R5bGVzID0ge1xuICogICBiYWNrZ3JvdW5kOiBkZXNhdHVyYXRlKDAuMiwgJyNDQ0NENjQnKSxcbiAqICAgYmFja2dyb3VuZDogZGVzYXR1cmF0ZSgnMC4yJywgJ3JnYmEoMjA0LDIwNSwxMDAsMC43KScpLFxuICogfVxuICpcbiAqIC8vIHN0eWxlZC1jb21wb25lbnRzIHVzYWdlXG4gKiBjb25zdCBkaXYgPSBzdHlsZWQuZGl2YFxuICogICBiYWNrZ3JvdW5kOiAke2Rlc2F0dXJhdGUoMC4yLCAnI0NDQ0Q2NCcpfTtcbiAqICAgYmFja2dyb3VuZDogJHtkZXNhdHVyYXRlKCcwLjInLCAncmdiYSgyMDQsMjA1LDEwMCwwLjcpJyl9O1xuICogYFxuICpcbiAqIC8vIENTUyBpbiBKUyBPdXRwdXRcbiAqIGVsZW1lbnQge1xuICogICBiYWNrZ3JvdW5kOiBcIiNiOGI5NzlcIjtcbiAqICAgYmFja2dyb3VuZDogXCJyZ2JhKDE4NCwxODUsMTIxLDAuNylcIjtcbiAqIH1cbiAqL1xuXG5mdW5jdGlvbiBkZXNhdHVyYXRlKGFtb3VudCwgY29sb3IpIHtcbiAgaWYgKGNvbG9yID09PSAndHJhbnNwYXJlbnQnKSByZXR1cm4gY29sb3I7XG4gIHZhciBoc2xDb2xvciA9IHBhcnNlVG9Ic2woY29sb3IpO1xuICByZXR1cm4gdG9Db2xvclN0cmluZyhfZXh0ZW5kcyh7fSwgaHNsQ29sb3IsIHtcbiAgICBzYXR1cmF0aW9uOiBndWFyZCgwLCAxLCBoc2xDb2xvci5zYXR1cmF0aW9uIC0gcGFyc2VGbG9hdChhbW91bnQpKVxuICB9KSk7XG59IC8vIHByZXR0aWVyLWlnbm9yZVxuXG5cbnZhciBjdXJyaWVkRGVzYXR1cmF0ZSA9IC8qI19fUFVSRV9fKi9jdXJyeVxuLyogOjo8bnVtYmVyIHwgc3RyaW5nLCBzdHJpbmcsIHN0cmluZz4gKi9cbihkZXNhdHVyYXRlKTtcblxuLyoqXG4gKiBSZXR1cm5zIGEgbnVtYmVyIChmbG9hdCkgcmVwcmVzZW50aW5nIHRoZSBsdW1pbmFuY2Ugb2YgYSBjb2xvci5cbiAqXG4gKiBAZXhhbXBsZVxuICogLy8gU3R5bGVzIGFzIG9iamVjdCB1c2FnZVxuICogY29uc3Qgc3R5bGVzID0ge1xuICogICBiYWNrZ3JvdW5kOiBnZXRMdW1pbmFuY2UoJyNDQ0NENjQnKSA+PSBnZXRMdW1pbmFuY2UoJyMwMDAwZmYnKSA/ICcjQ0NDRDY0JyA6ICcjMDAwMGZmJyxcbiAqICAgYmFja2dyb3VuZDogZ2V0THVtaW5hbmNlKCdyZ2JhKDU4LCAxMzMsIDI1NSwgMSknKSA+PSBnZXRMdW1pbmFuY2UoJ3JnYmEoMjU1LCA1NywgMTQ5LCAxKScpID9cbiAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAncmdiYSg1OCwgMTMzLCAyNTUsIDEpJyA6XG4gKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3JnYmEoMjU1LCA1NywgMTQ5LCAxKScsXG4gKiB9XG4gKlxuICogLy8gc3R5bGVkLWNvbXBvbmVudHMgdXNhZ2VcbiAqIGNvbnN0IGRpdiA9IHN0eWxlZC5kaXZgXG4gKiAgIGJhY2tncm91bmQ6ICR7Z2V0THVtaW5hbmNlKCcjQ0NDRDY0JykgPj0gZ2V0THVtaW5hbmNlKCcjMDAwMGZmJykgPyAnI0NDQ0Q2NCcgOiAnIzAwMDBmZid9O1xuICogICBiYWNrZ3JvdW5kOiAke2dldEx1bWluYW5jZSgncmdiYSg1OCwgMTMzLCAyNTUsIDEpJykgPj0gZ2V0THVtaW5hbmNlKCdyZ2JhKDI1NSwgNTcsIDE0OSwgMSknKSA/XG4gKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3JnYmEoNTgsIDEzMywgMjU1LCAxKScgOlxuICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICdyZ2JhKDI1NSwgNTcsIDE0OSwgMSknfTtcbiAqXG4gKiAvLyBDU1MgaW4gSlMgT3V0cHV0XG4gKlxuICogZGl2IHtcbiAqICAgYmFja2dyb3VuZDogXCIjQ0NDRDY0XCI7XG4gKiAgIGJhY2tncm91bmQ6IFwicmdiYSg1OCwgMTMzLCAyNTUsIDEpXCI7XG4gKiB9XG4gKi9cblxuZnVuY3Rpb24gZ2V0THVtaW5hbmNlKGNvbG9yKSB7XG4gIGlmIChjb2xvciA9PT0gJ3RyYW5zcGFyZW50JykgcmV0dXJuIDA7XG4gIHZhciByZ2JDb2xvciA9IHBhcnNlVG9SZ2IoY29sb3IpO1xuXG4gIHZhciBfT2JqZWN0JGtleXMkbWFwID0gT2JqZWN0LmtleXMocmdiQ29sb3IpLm1hcChmdW5jdGlvbiAoa2V5KSB7XG4gICAgdmFyIGNoYW5uZWwgPSByZ2JDb2xvcltrZXldIC8gMjU1O1xuICAgIHJldHVybiBjaGFubmVsIDw9IDAuMDM5MjggPyBjaGFubmVsIC8gMTIuOTIgOiBNYXRoLnBvdygoY2hhbm5lbCArIDAuMDU1KSAvIDEuMDU1LCAyLjQpO1xuICB9KSxcbiAgICAgIHIgPSBfT2JqZWN0JGtleXMkbWFwWzBdLFxuICAgICAgZyA9IF9PYmplY3Qka2V5cyRtYXBbMV0sXG4gICAgICBiID0gX09iamVjdCRrZXlzJG1hcFsyXTtcblxuICByZXR1cm4gcGFyc2VGbG9hdCgoMC4yMTI2ICogciArIDAuNzE1MiAqIGcgKyAwLjA3MjIgKiBiKS50b0ZpeGVkKDMpKTtcbn1cblxuLyoqXG4gKiBSZXR1cm5zIHRoZSBjb250cmFzdCByYXRpbyBiZXR3ZWVuIHR3byBjb2xvcnMgYmFzZWQgb25cbiAqIFtXMydzIHJlY29tbWVuZGVkIGVxdWF0aW9uIGZvciBjYWxjdWxhdGluZyBjb250cmFzdF0oaHR0cDovL3d3dy53My5vcmcvVFIvV0NBRzIwLyNjb250cmFzdC1yYXRpb2RlZikuXG4gKlxuICogQGV4YW1wbGVcbiAqIGNvbnN0IGNvbnRyYXN0UmF0aW8gPSBnZXRDb250cmFzdCgnIzQ0NCcsICcjZmZmJyk7XG4gKi9cblxuZnVuY3Rpb24gZ2V0Q29udHJhc3QoY29sb3IxLCBjb2xvcjIpIHtcbiAgdmFyIGx1bWluYW5jZTEgPSBnZXRMdW1pbmFuY2UoY29sb3IxKTtcbiAgdmFyIGx1bWluYW5jZTIgPSBnZXRMdW1pbmFuY2UoY29sb3IyKTtcbiAgcmV0dXJuIHBhcnNlRmxvYXQoKGx1bWluYW5jZTEgPiBsdW1pbmFuY2UyID8gKGx1bWluYW5jZTEgKyAwLjA1KSAvIChsdW1pbmFuY2UyICsgMC4wNSkgOiAobHVtaW5hbmNlMiArIDAuMDUpIC8gKGx1bWluYW5jZTEgKyAwLjA1KSkudG9GaXhlZCgyKSk7XG59XG5cbi8qKlxuICogQ29udmVydHMgdGhlIGNvbG9yIHRvIGEgZ3JheXNjYWxlLCBieSByZWR1Y2luZyBpdHMgc2F0dXJhdGlvbiB0byAwLlxuICpcbiAqIEBleGFtcGxlXG4gKiAvLyBTdHlsZXMgYXMgb2JqZWN0IHVzYWdlXG4gKiBjb25zdCBzdHlsZXMgPSB7XG4gKiAgIGJhY2tncm91bmQ6IGdyYXlzY2FsZSgnI0NDQ0Q2NCcpLFxuICogICBiYWNrZ3JvdW5kOiBncmF5c2NhbGUoJ3JnYmEoMjA0LDIwNSwxMDAsMC43KScpLFxuICogfVxuICpcbiAqIC8vIHN0eWxlZC1jb21wb25lbnRzIHVzYWdlXG4gKiBjb25zdCBkaXYgPSBzdHlsZWQuZGl2YFxuICogICBiYWNrZ3JvdW5kOiAke2dyYXlzY2FsZSgnI0NDQ0Q2NCcpfTtcbiAqICAgYmFja2dyb3VuZDogJHtncmF5c2NhbGUoJ3JnYmEoMjA0LDIwNSwxMDAsMC43KScpfTtcbiAqIGBcbiAqXG4gKiAvLyBDU1MgaW4gSlMgT3V0cHV0XG4gKiBlbGVtZW50IHtcbiAqICAgYmFja2dyb3VuZDogXCIjOTk5XCI7XG4gKiAgIGJhY2tncm91bmQ6IFwicmdiYSgxNTMsMTUzLDE1MywwLjcpXCI7XG4gKiB9XG4gKi9cblxuZnVuY3Rpb24gZ3JheXNjYWxlKGNvbG9yKSB7XG4gIGlmIChjb2xvciA9PT0gJ3RyYW5zcGFyZW50JykgcmV0dXJuIGNvbG9yO1xuICByZXR1cm4gdG9Db2xvclN0cmluZyhfZXh0ZW5kcyh7fSwgcGFyc2VUb0hzbChjb2xvciksIHtcbiAgICBzYXR1cmF0aW9uOiAwXG4gIH0pKTtcbn1cblxuLyoqXG4gKiBDb252ZXJ0cyBhIEhzbENvbG9yIG9yIEhzbGFDb2xvciBvYmplY3QgdG8gYSBjb2xvciBzdHJpbmcuXG4gKiBUaGlzIHV0aWwgaXMgdXNlZnVsIGluIGNhc2UgeW91IG9ubHkga25vdyBvbiBydW50aW1lIHdoaWNoIGNvbG9yIG9iamVjdCBpc1xuICogdXNlZC4gT3RoZXJ3aXNlIHdlIHJlY29tbWVuZCB0byByZWx5IG9uIGBoc2xgIG9yIGBoc2xhYC5cbiAqXG4gKiBAZXhhbXBsZVxuICogLy8gU3R5bGVzIGFzIG9iamVjdCB1c2FnZVxuICogY29uc3Qgc3R5bGVzID0ge1xuICogICBiYWNrZ3JvdW5kOiBoc2xUb0NvbG9yU3RyaW5nKHsgaHVlOiAyNDAsIHNhdHVyYXRpb246IDEsIGxpZ2h0bmVzczogMC41IH0pLFxuICogICBiYWNrZ3JvdW5kOiBoc2xUb0NvbG9yU3RyaW5nKHsgaHVlOiAzNjAsIHNhdHVyYXRpb246IDAuNzUsIGxpZ2h0bmVzczogMC40LCBhbHBoYTogMC43MiB9KSxcbiAqIH1cbiAqXG4gKiAvLyBzdHlsZWQtY29tcG9uZW50cyB1c2FnZVxuICogY29uc3QgZGl2ID0gc3R5bGVkLmRpdmBcbiAqICAgYmFja2dyb3VuZDogJHtoc2xUb0NvbG9yU3RyaW5nKHsgaHVlOiAyNDAsIHNhdHVyYXRpb246IDEsIGxpZ2h0bmVzczogMC41IH0pfTtcbiAqICAgYmFja2dyb3VuZDogJHtoc2xUb0NvbG9yU3RyaW5nKHsgaHVlOiAzNjAsIHNhdHVyYXRpb246IDAuNzUsIGxpZ2h0bmVzczogMC40LCBhbHBoYTogMC43MiB9KX07XG4gKiBgXG4gKlxuICogLy8gQ1NTIGluIEpTIE91dHB1dFxuICogZWxlbWVudCB7XG4gKiAgIGJhY2tncm91bmQ6IFwiIzAwZlwiO1xuICogICBiYWNrZ3JvdW5kOiBcInJnYmEoMTc5LDI1LDI1LDAuNzIpXCI7XG4gKiB9XG4gKi9cbmZ1bmN0aW9uIGhzbFRvQ29sb3JTdHJpbmcoY29sb3IpIHtcbiAgaWYgKHR5cGVvZiBjb2xvciA9PT0gJ29iamVjdCcgJiYgdHlwZW9mIGNvbG9yLmh1ZSA9PT0gJ251bWJlcicgJiYgdHlwZW9mIGNvbG9yLnNhdHVyYXRpb24gPT09ICdudW1iZXInICYmIHR5cGVvZiBjb2xvci5saWdodG5lc3MgPT09ICdudW1iZXInKSB7XG4gICAgaWYgKGNvbG9yLmFscGhhICYmIHR5cGVvZiBjb2xvci5hbHBoYSA9PT0gJ251bWJlcicpIHtcbiAgICAgIHJldHVybiBoc2xhKHtcbiAgICAgICAgaHVlOiBjb2xvci5odWUsXG4gICAgICAgIHNhdHVyYXRpb246IGNvbG9yLnNhdHVyYXRpb24sXG4gICAgICAgIGxpZ2h0bmVzczogY29sb3IubGlnaHRuZXNzLFxuICAgICAgICBhbHBoYTogY29sb3IuYWxwaGFcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIHJldHVybiBoc2woe1xuICAgICAgaHVlOiBjb2xvci5odWUsXG4gICAgICBzYXR1cmF0aW9uOiBjb2xvci5zYXR1cmF0aW9uLFxuICAgICAgbGlnaHRuZXNzOiBjb2xvci5saWdodG5lc3NcbiAgICB9KTtcbiAgfVxuXG4gIHRocm93IG5ldyBQb2xpc2hlZEVycm9yKDQ1KTtcbn1cblxuLyoqXG4gKiBJbnZlcnRzIHRoZSByZWQsIGdyZWVuIGFuZCBibHVlIHZhbHVlcyBvZiBhIGNvbG9yLlxuICpcbiAqIEBleGFtcGxlXG4gKiAvLyBTdHlsZXMgYXMgb2JqZWN0IHVzYWdlXG4gKiBjb25zdCBzdHlsZXMgPSB7XG4gKiAgIGJhY2tncm91bmQ6IGludmVydCgnI0NDQ0Q2NCcpLFxuICogICBiYWNrZ3JvdW5kOiBpbnZlcnQoJ3JnYmEoMTAxLDEwMCwyMDUsMC43KScpLFxuICogfVxuICpcbiAqIC8vIHN0eWxlZC1jb21wb25lbnRzIHVzYWdlXG4gKiBjb25zdCBkaXYgPSBzdHlsZWQuZGl2YFxuICogICBiYWNrZ3JvdW5kOiAke2ludmVydCgnI0NDQ0Q2NCcpfTtcbiAqICAgYmFja2dyb3VuZDogJHtpbnZlcnQoJ3JnYmEoMTAxLDEwMCwyMDUsMC43KScpfTtcbiAqIGBcbiAqXG4gKiAvLyBDU1MgaW4gSlMgT3V0cHV0XG4gKlxuICogZWxlbWVudCB7XG4gKiAgIGJhY2tncm91bmQ6IFwiIzMzMzI5YlwiO1xuICogICBiYWNrZ3JvdW5kOiBcInJnYmEoMTU0LDE1NSw1MCwwLjcpXCI7XG4gKiB9XG4gKi9cblxuZnVuY3Rpb24gaW52ZXJ0KGNvbG9yKSB7XG4gIGlmIChjb2xvciA9PT0gJ3RyYW5zcGFyZW50JykgcmV0dXJuIGNvbG9yOyAvLyBwYXJzZSBjb2xvciBzdHJpbmcgdG8gcmdiXG5cbiAgdmFyIHZhbHVlID0gcGFyc2VUb1JnYihjb2xvcik7XG4gIHJldHVybiB0b0NvbG9yU3RyaW5nKF9leHRlbmRzKHt9LCB2YWx1ZSwge1xuICAgIHJlZDogMjU1IC0gdmFsdWUucmVkLFxuICAgIGdyZWVuOiAyNTUgLSB2YWx1ZS5ncmVlbixcbiAgICBibHVlOiAyNTUgLSB2YWx1ZS5ibHVlXG4gIH0pKTtcbn1cblxuLyoqXG4gKiBSZXR1cm5zIGEgc3RyaW5nIHZhbHVlIGZvciB0aGUgbGlnaHRlbmVkIGNvbG9yLlxuICpcbiAqIEBleGFtcGxlXG4gKiAvLyBTdHlsZXMgYXMgb2JqZWN0IHVzYWdlXG4gKiBjb25zdCBzdHlsZXMgPSB7XG4gKiAgIGJhY2tncm91bmQ6IGxpZ2h0ZW4oMC4yLCAnI0NDQ0Q2NCcpLFxuICogICBiYWNrZ3JvdW5kOiBsaWdodGVuKCcwLjInLCAncmdiYSgyMDQsMjA1LDEwMCwwLjcpJyksXG4gKiB9XG4gKlxuICogLy8gc3R5bGVkLWNvbXBvbmVudHMgdXNhZ2VcbiAqIGNvbnN0IGRpdiA9IHN0eWxlZC5kaXZgXG4gKiAgIGJhY2tncm91bmQ6ICR7bGlnaHRlbigwLjIsICcjRkZDRDY0Jyl9O1xuICogICBiYWNrZ3JvdW5kOiAke2xpZ2h0ZW4oJzAuMicsICdyZ2JhKDIwNCwyMDUsMTAwLDAuNyknKX07XG4gKiBgXG4gKlxuICogLy8gQ1NTIGluIEpTIE91dHB1dFxuICpcbiAqIGVsZW1lbnQge1xuICogICBiYWNrZ3JvdW5kOiBcIiNlNWU2YjFcIjtcbiAqICAgYmFja2dyb3VuZDogXCJyZ2JhKDIyOSwyMzAsMTc3LDAuNylcIjtcbiAqIH1cbiAqL1xuXG5mdW5jdGlvbiBsaWdodGVuKGFtb3VudCwgY29sb3IpIHtcbiAgaWYgKGNvbG9yID09PSAndHJhbnNwYXJlbnQnKSByZXR1cm4gY29sb3I7XG4gIHZhciBoc2xDb2xvciA9IHBhcnNlVG9Ic2woY29sb3IpO1xuICByZXR1cm4gdG9Db2xvclN0cmluZyhfZXh0ZW5kcyh7fSwgaHNsQ29sb3IsIHtcbiAgICBsaWdodG5lc3M6IGd1YXJkKDAsIDEsIGhzbENvbG9yLmxpZ2h0bmVzcyArIHBhcnNlRmxvYXQoYW1vdW50KSlcbiAgfSkpO1xufSAvLyBwcmV0dGllci1pZ25vcmVcblxuXG52YXIgY3VycmllZExpZ2h0ZW4gPSAvKiNfX1BVUkVfXyovY3Vycnlcbi8qIDo6PG51bWJlciB8IHN0cmluZywgc3RyaW5nLCBzdHJpbmc+ICovXG4obGlnaHRlbik7XG5cbi8qKlxuICogRGV0ZXJtaW5lcyB3aGljaCBjb250cmFzdCBndWlkZWxpbmVzIGhhdmUgYmVlbiBtZXQgZm9yIHR3byBjb2xvcnMuXG4gKiBCYXNlZCBvbiB0aGUgW2NvbnRyYXN0IGNhbGN1bGF0aW9ucyByZWNvbW1lbmRlZCBieSBXM10oaHR0cHM6Ly93d3cudzMub3JnL1dBSS9XQ0FHMjEvVW5kZXJzdGFuZGluZy9jb250cmFzdC1lbmhhbmNlZC5odG1sKS5cbiAqXG4gKiBAZXhhbXBsZVxuICogY29uc3Qgc2NvcmVzID0gbWVldHNDb250cmFzdEd1aWRlbGluZXMoJyM0NDQnLCAnI2ZmZicpO1xuICovXG5mdW5jdGlvbiBtZWV0c0NvbnRyYXN0R3VpZGVsaW5lcyhjb2xvcjEsIGNvbG9yMikge1xuICB2YXIgY29udHJhc3RSYXRpbyA9IGdldENvbnRyYXN0KGNvbG9yMSwgY29sb3IyKTtcbiAgcmV0dXJuIHtcbiAgICBBQTogY29udHJhc3RSYXRpbyA+PSA0LjUsXG4gICAgQUFMYXJnZTogY29udHJhc3RSYXRpbyA+PSAzLFxuICAgIEFBQTogY29udHJhc3RSYXRpbyA+PSA3LFxuICAgIEFBQUxhcmdlOiBjb250cmFzdFJhdGlvID49IDQuNVxuICB9O1xufVxuXG4vKipcbiAqIE1peGVzIHRoZSB0d28gcHJvdmlkZWQgY29sb3JzIHRvZ2V0aGVyIGJ5IGNhbGN1bGF0aW5nIHRoZSBhdmVyYWdlIG9mIGVhY2ggb2YgdGhlIFJHQiBjb21wb25lbnRzIHdlaWdodGVkIHRvIHRoZSBmaXJzdCBjb2xvciBieSB0aGUgcHJvdmlkZWQgd2VpZ2h0LlxuICpcbiAqIEBleGFtcGxlXG4gKiAvLyBTdHlsZXMgYXMgb2JqZWN0IHVzYWdlXG4gKiBjb25zdCBzdHlsZXMgPSB7XG4gKiAgIGJhY2tncm91bmQ6IG1peCgwLjUsICcjZjAwJywgJyMwMGYnKVxuICogICBiYWNrZ3JvdW5kOiBtaXgoMC4yNSwgJyNmMDAnLCAnIzAwZicpXG4gKiAgIGJhY2tncm91bmQ6IG1peCgnMC41JywgJ3JnYmEoMjU1LCAwLCAwLCAwLjUpJywgJyMwMGYnKVxuICogfVxuICpcbiAqIC8vIHN0eWxlZC1jb21wb25lbnRzIHVzYWdlXG4gKiBjb25zdCBkaXYgPSBzdHlsZWQuZGl2YFxuICogICBiYWNrZ3JvdW5kOiAke21peCgwLjUsICcjZjAwJywgJyMwMGYnKX07XG4gKiAgIGJhY2tncm91bmQ6ICR7bWl4KDAuMjUsICcjZjAwJywgJyMwMGYnKX07XG4gKiAgIGJhY2tncm91bmQ6ICR7bWl4KCcwLjUnLCAncmdiYSgyNTUsIDAsIDAsIDAuNSknLCAnIzAwZicpfTtcbiAqIGBcbiAqXG4gKiAvLyBDU1MgaW4gSlMgT3V0cHV0XG4gKlxuICogZWxlbWVudCB7XG4gKiAgIGJhY2tncm91bmQ6IFwiIzdmMDA3ZlwiO1xuICogICBiYWNrZ3JvdW5kOiBcIiMzZjAwYmZcIjtcbiAqICAgYmFja2dyb3VuZDogXCJyZ2JhKDYzLCAwLCAxOTEsIDAuNzUpXCI7XG4gKiB9XG4gKi9cblxuZnVuY3Rpb24gbWl4KHdlaWdodCwgY29sb3IsIG90aGVyQ29sb3IpIHtcbiAgaWYgKGNvbG9yID09PSAndHJhbnNwYXJlbnQnKSByZXR1cm4gb3RoZXJDb2xvcjtcbiAgaWYgKG90aGVyQ29sb3IgPT09ICd0cmFuc3BhcmVudCcpIHJldHVybiBjb2xvcjtcbiAgaWYgKHdlaWdodCA9PT0gMCkgcmV0dXJuIG90aGVyQ29sb3I7XG4gIHZhciBwYXJzZWRDb2xvcjEgPSBwYXJzZVRvUmdiKGNvbG9yKTtcblxuICB2YXIgY29sb3IxID0gX2V4dGVuZHMoe30sIHBhcnNlZENvbG9yMSwge1xuICAgIGFscGhhOiB0eXBlb2YgcGFyc2VkQ29sb3IxLmFscGhhID09PSAnbnVtYmVyJyA/IHBhcnNlZENvbG9yMS5hbHBoYSA6IDFcbiAgfSk7XG5cbiAgdmFyIHBhcnNlZENvbG9yMiA9IHBhcnNlVG9SZ2Iob3RoZXJDb2xvcik7XG5cbiAgdmFyIGNvbG9yMiA9IF9leHRlbmRzKHt9LCBwYXJzZWRDb2xvcjIsIHtcbiAgICBhbHBoYTogdHlwZW9mIHBhcnNlZENvbG9yMi5hbHBoYSA9PT0gJ251bWJlcicgPyBwYXJzZWRDb2xvcjIuYWxwaGEgOiAxXG4gIH0pOyAvLyBUaGUgZm9ybXVsYSBpcyBjb3BpZWQgZnJvbSB0aGUgb3JpZ2luYWwgU2FzcyBpbXBsZW1lbnRhdGlvbjpcbiAgLy8gaHR0cDovL3Nhc3MtbGFuZy5jb20vZG9jdW1lbnRhdGlvbi9TYXNzL1NjcmlwdC9GdW5jdGlvbnMuaHRtbCNtaXgtaW5zdGFuY2VfbWV0aG9kXG5cblxuICB2YXIgYWxwaGFEZWx0YSA9IGNvbG9yMS5hbHBoYSAtIGNvbG9yMi5hbHBoYTtcbiAgdmFyIHggPSBwYXJzZUZsb2F0KHdlaWdodCkgKiAyIC0gMTtcbiAgdmFyIHkgPSB4ICogYWxwaGFEZWx0YSA9PT0gLTEgPyB4IDogeCArIGFscGhhRGVsdGE7XG4gIHZhciB6ID0gMSArIHggKiBhbHBoYURlbHRhO1xuICB2YXIgd2VpZ2h0MSA9ICh5IC8geiArIDEpIC8gMi4wO1xuICB2YXIgd2VpZ2h0MiA9IDEgLSB3ZWlnaHQxO1xuICB2YXIgbWl4ZWRDb2xvciA9IHtcbiAgICByZWQ6IE1hdGguZmxvb3IoY29sb3IxLnJlZCAqIHdlaWdodDEgKyBjb2xvcjIucmVkICogd2VpZ2h0MiksXG4gICAgZ3JlZW46IE1hdGguZmxvb3IoY29sb3IxLmdyZWVuICogd2VpZ2h0MSArIGNvbG9yMi5ncmVlbiAqIHdlaWdodDIpLFxuICAgIGJsdWU6IE1hdGguZmxvb3IoY29sb3IxLmJsdWUgKiB3ZWlnaHQxICsgY29sb3IyLmJsdWUgKiB3ZWlnaHQyKSxcbiAgICBhbHBoYTogY29sb3IxLmFscGhhICogKHBhcnNlRmxvYXQod2VpZ2h0KSAvIDEuMCkgKyBjb2xvcjIuYWxwaGEgKiAoMSAtIHBhcnNlRmxvYXQod2VpZ2h0KSAvIDEuMClcbiAgfTtcbiAgcmV0dXJuIHJnYmEobWl4ZWRDb2xvcik7XG59IC8vIHByZXR0aWVyLWlnbm9yZVxuXG5cbnZhciBjdXJyaWVkTWl4ID0gLyojX19QVVJFX18qL2N1cnJ5XG4vKiA6OjxudW1iZXIgfCBzdHJpbmcsIHN0cmluZywgc3RyaW5nLCBzdHJpbmc+ICovXG4obWl4KTtcblxuLyoqXG4gKiBJbmNyZWFzZXMgdGhlIG9wYWNpdHkgb2YgYSBjb2xvci4gSXRzIHJhbmdlIGZvciB0aGUgYW1vdW50IGlzIGJldHdlZW4gMCB0byAxLlxuICpcbiAqXG4gKiBAZXhhbXBsZVxuICogLy8gU3R5bGVzIGFzIG9iamVjdCB1c2FnZVxuICogY29uc3Qgc3R5bGVzID0ge1xuICogICBiYWNrZ3JvdW5kOiBvcGFjaWZ5KDAuMSwgJ3JnYmEoMjU1LCAyNTUsIDI1NSwgMC45KScpO1xuICogICBiYWNrZ3JvdW5kOiBvcGFjaWZ5KDAuMiwgJ2hzbGEoMCwgMCUsIDEwMCUsIDAuNSknKSxcbiAqICAgYmFja2dyb3VuZDogb3BhY2lmeSgnMC41JywgJ3JnYmEoMjU1LCAwLCAwLCAwLjIpJyksXG4gKiB9XG4gKlxuICogLy8gc3R5bGVkLWNvbXBvbmVudHMgdXNhZ2VcbiAqIGNvbnN0IGRpdiA9IHN0eWxlZC5kaXZgXG4gKiAgIGJhY2tncm91bmQ6ICR7b3BhY2lmeSgwLjEsICdyZ2JhKDI1NSwgMjU1LCAyNTUsIDAuOSknKX07XG4gKiAgIGJhY2tncm91bmQ6ICR7b3BhY2lmeSgwLjIsICdoc2xhKDAsIDAlLCAxMDAlLCAwLjUpJyl9LFxuICogICBiYWNrZ3JvdW5kOiAke29wYWNpZnkoJzAuNScsICdyZ2JhKDI1NSwgMCwgMCwgMC4yKScpfSxcbiAqIGBcbiAqXG4gKiAvLyBDU1MgaW4gSlMgT3V0cHV0XG4gKlxuICogZWxlbWVudCB7XG4gKiAgIGJhY2tncm91bmQ6IFwiI2ZmZlwiO1xuICogICBiYWNrZ3JvdW5kOiBcInJnYmEoMjU1LDI1NSwyNTUsMC43KVwiO1xuICogICBiYWNrZ3JvdW5kOiBcInJnYmEoMjU1LDAsMCwwLjcpXCI7XG4gKiB9XG4gKi9cblxuZnVuY3Rpb24gb3BhY2lmeShhbW91bnQsIGNvbG9yKSB7XG4gIGlmIChjb2xvciA9PT0gJ3RyYW5zcGFyZW50JykgcmV0dXJuIGNvbG9yO1xuICB2YXIgcGFyc2VkQ29sb3IgPSBwYXJzZVRvUmdiKGNvbG9yKTtcbiAgdmFyIGFscGhhID0gdHlwZW9mIHBhcnNlZENvbG9yLmFscGhhID09PSAnbnVtYmVyJyA/IHBhcnNlZENvbG9yLmFscGhhIDogMTtcblxuICB2YXIgY29sb3JXaXRoQWxwaGEgPSBfZXh0ZW5kcyh7fSwgcGFyc2VkQ29sb3IsIHtcbiAgICBhbHBoYTogZ3VhcmQoMCwgMSwgKGFscGhhICogMTAwICsgcGFyc2VGbG9hdChhbW91bnQpICogMTAwKSAvIDEwMClcbiAgfSk7XG5cbiAgcmV0dXJuIHJnYmEoY29sb3JXaXRoQWxwaGEpO1xufSAvLyBwcmV0dGllci1pZ25vcmVcblxuXG52YXIgY3VycmllZE9wYWNpZnkgPSAvKiNfX1BVUkVfXyovY3Vycnlcbi8qIDo6PG51bWJlciB8IHN0cmluZywgc3RyaW5nLCBzdHJpbmc+ICovXG4ob3BhY2lmeSk7XG5cbnZhciBkZWZhdWx0UmV0dXJuSWZMaWdodENvbG9yID0gJyMwMDAnO1xudmFyIGRlZmF1bHRSZXR1cm5JZkRhcmtDb2xvciA9ICcjZmZmJztcbi8qKlxuICogUmV0dXJucyBibGFjayBvciB3aGl0ZSAob3Igb3B0aW9uYWwgcGFzc2VkIGNvbG9ycykgZm9yIGJlc3RcbiAqIGNvbnRyYXN0IGRlcGVuZGluZyBvbiB0aGUgbHVtaW5vc2l0eSBvZiB0aGUgZ2l2ZW4gY29sb3IuXG4gKiBXaGVuIHBhc3NpbmcgY3VzdG9tIHJldHVybiBjb2xvcnMsIHN0cmljdCBtb2RlIGVuc3VyZXMgdGhhdCB0aGVcbiAqIHJldHVybiBjb2xvciBhbHdheXMgbWVldHMgb3IgZXhjZWVkcyBXQ0FHIGxldmVsIEFBIG9yIGdyZWF0ZXIuIElmIHRoaXMgdGVzdFxuICogZmFpbHMsIHRoZSBkZWZhdWx0IHJldHVybiBjb2xvciAoYmxhY2sgb3Igd2hpdGUpIGlzIHJldHVybmVkIGluIHBsYWNlIG9mIHRoZVxuICogY3VzdG9tIHJldHVybiBjb2xvci4gWW91IGNhbiBvcHRpb25hbGx5IHR1cm4gb2ZmIHN0cmljdCBtb2RlLlxuICpcbiAqIEZvbGxvd3MgW1czQyBzcGVjcyBmb3IgcmVhZGFiaWxpdHldKGh0dHBzOi8vd3d3LnczLm9yZy9UUi9XQ0FHMjAtVEVDSFMvRzE4Lmh0bWwpLlxuICpcbiAqIEBleGFtcGxlXG4gKiAvLyBTdHlsZXMgYXMgb2JqZWN0IHVzYWdlXG4gKiBjb25zdCBzdHlsZXMgPSB7XG4gKiAgIGNvbG9yOiByZWFkYWJsZUNvbG9yKCcjMDAwJyksXG4gKiAgIGNvbG9yOiByZWFkYWJsZUNvbG9yKCdibGFjaycsICcjMDAxJywgJyNmZjgnKSxcbiAqICAgY29sb3I6IHJlYWRhYmxlQ29sb3IoJ3doaXRlJywgJyMwMDEnLCAnI2ZmOCcpLFxuICogICBjb2xvcjogcmVhZGFibGVDb2xvcigncmVkJywgJyMzMzMnLCAnI2RkZCcsIHRydWUpXG4gKiB9XG4gKlxuICogLy8gc3R5bGVkLWNvbXBvbmVudHMgdXNhZ2VcbiAqIGNvbnN0IGRpdiA9IHN0eWxlZC5kaXZgXG4gKiAgIGNvbG9yOiAke3JlYWRhYmxlQ29sb3IoJyMwMDAnKX07XG4gKiAgIGNvbG9yOiAke3JlYWRhYmxlQ29sb3IoJ2JsYWNrJywgJyMwMDEnLCAnI2ZmOCcpfTtcbiAqICAgY29sb3I6ICR7cmVhZGFibGVDb2xvcignd2hpdGUnLCAnIzAwMScsICcjZmY4Jyl9O1xuICogICBjb2xvcjogJHtyZWFkYWJsZUNvbG9yKCdyZWQnLCAnIzMzMycsICcjZGRkJywgdHJ1ZSl9O1xuICogYFxuICpcbiAqIC8vIENTUyBpbiBKUyBPdXRwdXRcbiAqIGVsZW1lbnQge1xuICogICBjb2xvcjogXCIjZmZmXCI7XG4gKiAgIGNvbG9yOiBcIiNmZjhcIjtcbiAqICAgY29sb3I6IFwiIzAwMVwiO1xuICogICBjb2xvcjogXCIjMDAwXCI7XG4gKiB9XG4gKi9cblxuZnVuY3Rpb24gcmVhZGFibGVDb2xvcihjb2xvciwgcmV0dXJuSWZMaWdodENvbG9yLCByZXR1cm5JZkRhcmtDb2xvciwgc3RyaWN0KSB7XG4gIGlmIChyZXR1cm5JZkxpZ2h0Q29sb3IgPT09IHZvaWQgMCkge1xuICAgIHJldHVybklmTGlnaHRDb2xvciA9IGRlZmF1bHRSZXR1cm5JZkxpZ2h0Q29sb3I7XG4gIH1cblxuICBpZiAocmV0dXJuSWZEYXJrQ29sb3IgPT09IHZvaWQgMCkge1xuICAgIHJldHVybklmRGFya0NvbG9yID0gZGVmYXVsdFJldHVybklmRGFya0NvbG9yO1xuICB9XG5cbiAgaWYgKHN0cmljdCA9PT0gdm9pZCAwKSB7XG4gICAgc3RyaWN0ID0gdHJ1ZTtcbiAgfVxuXG4gIHZhciBpc0NvbG9yTGlnaHQgPSBnZXRMdW1pbmFuY2UoY29sb3IpID4gMC4xNzk7XG4gIHZhciBwcmVmZXJyZWRSZXR1cm5Db2xvciA9IGlzQ29sb3JMaWdodCA/IHJldHVybklmTGlnaHRDb2xvciA6IHJldHVybklmRGFya0NvbG9yO1xuXG4gIGlmICghc3RyaWN0IHx8IGdldENvbnRyYXN0KGNvbG9yLCBwcmVmZXJyZWRSZXR1cm5Db2xvcikgPj0gNC41KSB7XG4gICAgcmV0dXJuIHByZWZlcnJlZFJldHVybkNvbG9yO1xuICB9XG5cbiAgcmV0dXJuIGlzQ29sb3JMaWdodCA/IGRlZmF1bHRSZXR1cm5JZkxpZ2h0Q29sb3IgOiBkZWZhdWx0UmV0dXJuSWZEYXJrQ29sb3I7XG59XG5cbi8qKlxuICogQ29udmVydHMgYSBSZ2JDb2xvciBvciBSZ2JhQ29sb3Igb2JqZWN0IHRvIGEgY29sb3Igc3RyaW5nLlxuICogVGhpcyB1dGlsIGlzIHVzZWZ1bCBpbiBjYXNlIHlvdSBvbmx5IGtub3cgb24gcnVudGltZSB3aGljaCBjb2xvciBvYmplY3QgaXNcbiAqIHVzZWQuIE90aGVyd2lzZSB3ZSByZWNvbW1lbmQgdG8gcmVseSBvbiBgcmdiYCBvciBgcmdiYWAuXG4gKlxuICogQGV4YW1wbGVcbiAqIC8vIFN0eWxlcyBhcyBvYmplY3QgdXNhZ2VcbiAqIGNvbnN0IHN0eWxlcyA9IHtcbiAqICAgYmFja2dyb3VuZDogcmdiVG9Db2xvclN0cmluZyh7IHJlZDogMjU1LCBncmVlbjogMjA1LCBibHVlOiAxMDAgfSksXG4gKiAgIGJhY2tncm91bmQ6IHJnYlRvQ29sb3JTdHJpbmcoeyByZWQ6IDI1NSwgZ3JlZW46IDIwNSwgYmx1ZTogMTAwLCBhbHBoYTogMC43MiB9KSxcbiAqIH1cbiAqXG4gKiAvLyBzdHlsZWQtY29tcG9uZW50cyB1c2FnZVxuICogY29uc3QgZGl2ID0gc3R5bGVkLmRpdmBcbiAqICAgYmFja2dyb3VuZDogJHtyZ2JUb0NvbG9yU3RyaW5nKHsgcmVkOiAyNTUsIGdyZWVuOiAyMDUsIGJsdWU6IDEwMCB9KX07XG4gKiAgIGJhY2tncm91bmQ6ICR7cmdiVG9Db2xvclN0cmluZyh7IHJlZDogMjU1LCBncmVlbjogMjA1LCBibHVlOiAxMDAsIGFscGhhOiAwLjcyIH0pfTtcbiAqIGBcbiAqXG4gKiAvLyBDU1MgaW4gSlMgT3V0cHV0XG4gKiBlbGVtZW50IHtcbiAqICAgYmFja2dyb3VuZDogXCIjZmZjZDY0XCI7XG4gKiAgIGJhY2tncm91bmQ6IFwicmdiYSgyNTUsMjA1LDEwMCwwLjcyKVwiO1xuICogfVxuICovXG5mdW5jdGlvbiByZ2JUb0NvbG9yU3RyaW5nKGNvbG9yKSB7XG4gIGlmICh0eXBlb2YgY29sb3IgPT09ICdvYmplY3QnICYmIHR5cGVvZiBjb2xvci5yZWQgPT09ICdudW1iZXInICYmIHR5cGVvZiBjb2xvci5ncmVlbiA9PT0gJ251bWJlcicgJiYgdHlwZW9mIGNvbG9yLmJsdWUgPT09ICdudW1iZXInKSB7XG4gICAgaWYgKHR5cGVvZiBjb2xvci5hbHBoYSA9PT0gJ251bWJlcicpIHtcbiAgICAgIHJldHVybiByZ2JhKHtcbiAgICAgICAgcmVkOiBjb2xvci5yZWQsXG4gICAgICAgIGdyZWVuOiBjb2xvci5ncmVlbixcbiAgICAgICAgYmx1ZTogY29sb3IuYmx1ZSxcbiAgICAgICAgYWxwaGE6IGNvbG9yLmFscGhhXG4gICAgICB9KTtcbiAgICB9XG5cbiAgICByZXR1cm4gcmdiKHtcbiAgICAgIHJlZDogY29sb3IucmVkLFxuICAgICAgZ3JlZW46IGNvbG9yLmdyZWVuLFxuICAgICAgYmx1ZTogY29sb3IuYmx1ZVxuICAgIH0pO1xuICB9XG5cbiAgdGhyb3cgbmV3IFBvbGlzaGVkRXJyb3IoNDYpO1xufVxuXG4vKipcbiAqIEluY3JlYXNlcyB0aGUgaW50ZW5zaXR5IG9mIGEgY29sb3IuIEl0cyByYW5nZSBpcyBiZXR3ZWVuIDAgdG8gMS4gVGhlIGZpcnN0XG4gKiBhcmd1bWVudCBvZiB0aGUgc2F0dXJhdGUgZnVuY3Rpb24gaXMgdGhlIGFtb3VudCBieSBob3cgbXVjaCB0aGUgY29sb3JcbiAqIGludGVuc2l0eSBzaG91bGQgYmUgaW5jcmVhc2VkLlxuICpcbiAqIEBleGFtcGxlXG4gKiAvLyBTdHlsZXMgYXMgb2JqZWN0IHVzYWdlXG4gKiBjb25zdCBzdHlsZXMgPSB7XG4gKiAgIGJhY2tncm91bmQ6IHNhdHVyYXRlKDAuMiwgJyNDQ0NENjQnKSxcbiAqICAgYmFja2dyb3VuZDogc2F0dXJhdGUoJzAuMicsICdyZ2JhKDIwNCwyMDUsMTAwLDAuNyknKSxcbiAqIH1cbiAqXG4gKiAvLyBzdHlsZWQtY29tcG9uZW50cyB1c2FnZVxuICogY29uc3QgZGl2ID0gc3R5bGVkLmRpdmBcbiAqICAgYmFja2dyb3VuZDogJHtzYXR1cmF0ZSgwLjIsICcjRkZDRDY0Jyl9O1xuICogICBiYWNrZ3JvdW5kOiAke3NhdHVyYXRlKCcwLjInLCAncmdiYSgyMDQsMjA1LDEwMCwwLjcpJyl9O1xuICogYFxuICpcbiAqIC8vIENTUyBpbiBKUyBPdXRwdXRcbiAqXG4gKiBlbGVtZW50IHtcbiAqICAgYmFja2dyb3VuZDogXCIjZTBlMjUwXCI7XG4gKiAgIGJhY2tncm91bmQ6IFwicmdiYSgyMjQsMjI2LDgwLDAuNylcIjtcbiAqIH1cbiAqL1xuXG5mdW5jdGlvbiBzYXR1cmF0ZShhbW91bnQsIGNvbG9yKSB7XG4gIGlmIChjb2xvciA9PT0gJ3RyYW5zcGFyZW50JykgcmV0dXJuIGNvbG9yO1xuICB2YXIgaHNsQ29sb3IgPSBwYXJzZVRvSHNsKGNvbG9yKTtcbiAgcmV0dXJuIHRvQ29sb3JTdHJpbmcoX2V4dGVuZHMoe30sIGhzbENvbG9yLCB7XG4gICAgc2F0dXJhdGlvbjogZ3VhcmQoMCwgMSwgaHNsQ29sb3Iuc2F0dXJhdGlvbiArIHBhcnNlRmxvYXQoYW1vdW50KSlcbiAgfSkpO1xufSAvLyBwcmV0dGllci1pZ25vcmVcblxuXG52YXIgY3VycmllZFNhdHVyYXRlID0gLyojX19QVVJFX18qL2N1cnJ5XG4vKiA6OjxudW1iZXIgfCBzdHJpbmcsIHN0cmluZywgc3RyaW5nPiAqL1xuKHNhdHVyYXRlKTtcblxuLyoqXG4gKiBTZXRzIHRoZSBodWUgb2YgYSBjb2xvciB0byB0aGUgcHJvdmlkZWQgdmFsdWUuIFRoZSBodWUgcmFuZ2UgY2FuIGJlXG4gKiBmcm9tIDAgYW5kIDM1OS5cbiAqXG4gKiBAZXhhbXBsZVxuICogLy8gU3R5bGVzIGFzIG9iamVjdCB1c2FnZVxuICogY29uc3Qgc3R5bGVzID0ge1xuICogICBiYWNrZ3JvdW5kOiBzZXRIdWUoNDIsICcjQ0NDRDY0JyksXG4gKiAgIGJhY2tncm91bmQ6IHNldEh1ZSgnMjQ0JywgJ3JnYmEoMjA0LDIwNSwxMDAsMC43KScpLFxuICogfVxuICpcbiAqIC8vIHN0eWxlZC1jb21wb25lbnRzIHVzYWdlXG4gKiBjb25zdCBkaXYgPSBzdHlsZWQuZGl2YFxuICogICBiYWNrZ3JvdW5kOiAke3NldEh1ZSg0MiwgJyNDQ0NENjQnKX07XG4gKiAgIGJhY2tncm91bmQ6ICR7c2V0SHVlKCcyNDQnLCAncmdiYSgyMDQsMjA1LDEwMCwwLjcpJyl9O1xuICogYFxuICpcbiAqIC8vIENTUyBpbiBKUyBPdXRwdXRcbiAqIGVsZW1lbnQge1xuICogICBiYWNrZ3JvdW5kOiBcIiNjZGFlNjRcIjtcbiAqICAgYmFja2dyb3VuZDogXCJyZ2JhKDEwNywxMDAsMjA1LDAuNylcIjtcbiAqIH1cbiAqL1xuXG5mdW5jdGlvbiBzZXRIdWUoaHVlLCBjb2xvcikge1xuICBpZiAoY29sb3IgPT09ICd0cmFuc3BhcmVudCcpIHJldHVybiBjb2xvcjtcbiAgcmV0dXJuIHRvQ29sb3JTdHJpbmcoX2V4dGVuZHMoe30sIHBhcnNlVG9Ic2woY29sb3IpLCB7XG4gICAgaHVlOiBwYXJzZUZsb2F0KGh1ZSlcbiAgfSkpO1xufSAvLyBwcmV0dGllci1pZ25vcmVcblxuXG52YXIgY3VycmllZFNldEh1ZSA9IC8qI19fUFVSRV9fKi9jdXJyeVxuLyogOjo8bnVtYmVyIHwgc3RyaW5nLCBzdHJpbmcsIHN0cmluZz4gKi9cbihzZXRIdWUpO1xuXG4vKipcbiAqIFNldHMgdGhlIGxpZ2h0bmVzcyBvZiBhIGNvbG9yIHRvIHRoZSBwcm92aWRlZCB2YWx1ZS4gVGhlIGxpZ2h0bmVzcyByYW5nZSBjYW4gYmVcbiAqIGZyb20gMCBhbmQgMS5cbiAqXG4gKiBAZXhhbXBsZVxuICogLy8gU3R5bGVzIGFzIG9iamVjdCB1c2FnZVxuICogY29uc3Qgc3R5bGVzID0ge1xuICogICBiYWNrZ3JvdW5kOiBzZXRMaWdodG5lc3MoMC4yLCAnI0NDQ0Q2NCcpLFxuICogICBiYWNrZ3JvdW5kOiBzZXRMaWdodG5lc3MoJzAuNzUnLCAncmdiYSgyMDQsMjA1LDEwMCwwLjcpJyksXG4gKiB9XG4gKlxuICogLy8gc3R5bGVkLWNvbXBvbmVudHMgdXNhZ2VcbiAqIGNvbnN0IGRpdiA9IHN0eWxlZC5kaXZgXG4gKiAgIGJhY2tncm91bmQ6ICR7c2V0TGlnaHRuZXNzKDAuMiwgJyNDQ0NENjQnKX07XG4gKiAgIGJhY2tncm91bmQ6ICR7c2V0TGlnaHRuZXNzKCcwLjc1JywgJ3JnYmEoMjA0LDIwNSwxMDAsMC43KScpfTtcbiAqIGBcbiAqXG4gKiAvLyBDU1MgaW4gSlMgT3V0cHV0XG4gKiBlbGVtZW50IHtcbiAqICAgYmFja2dyb3VuZDogXCIjNGQ0ZDE5XCI7XG4gKiAgIGJhY2tncm91bmQ6IFwicmdiYSgyMjMsMjI0LDE1OSwwLjcpXCI7XG4gKiB9XG4gKi9cblxuZnVuY3Rpb24gc2V0TGlnaHRuZXNzKGxpZ2h0bmVzcywgY29sb3IpIHtcbiAgaWYgKGNvbG9yID09PSAndHJhbnNwYXJlbnQnKSByZXR1cm4gY29sb3I7XG4gIHJldHVybiB0b0NvbG9yU3RyaW5nKF9leHRlbmRzKHt9LCBwYXJzZVRvSHNsKGNvbG9yKSwge1xuICAgIGxpZ2h0bmVzczogcGFyc2VGbG9hdChsaWdodG5lc3MpXG4gIH0pKTtcbn0gLy8gcHJldHRpZXItaWdub3JlXG5cblxudmFyIGN1cnJpZWRTZXRMaWdodG5lc3MgPSAvKiNfX1BVUkVfXyovY3Vycnlcbi8qIDo6PG51bWJlciB8IHN0cmluZywgc3RyaW5nLCBzdHJpbmc+ICovXG4oc2V0TGlnaHRuZXNzKTtcblxuLyoqXG4gKiBTZXRzIHRoZSBzYXR1cmF0aW9uIG9mIGEgY29sb3IgdG8gdGhlIHByb3ZpZGVkIHZhbHVlLiBUaGUgc2F0dXJhdGlvbiByYW5nZSBjYW4gYmVcbiAqIGZyb20gMCBhbmQgMS5cbiAqXG4gKiBAZXhhbXBsZVxuICogLy8gU3R5bGVzIGFzIG9iamVjdCB1c2FnZVxuICogY29uc3Qgc3R5bGVzID0ge1xuICogICBiYWNrZ3JvdW5kOiBzZXRTYXR1cmF0aW9uKDAuMiwgJyNDQ0NENjQnKSxcbiAqICAgYmFja2dyb3VuZDogc2V0U2F0dXJhdGlvbignMC43NScsICdyZ2JhKDIwNCwyMDUsMTAwLDAuNyknKSxcbiAqIH1cbiAqXG4gKiAvLyBzdHlsZWQtY29tcG9uZW50cyB1c2FnZVxuICogY29uc3QgZGl2ID0gc3R5bGVkLmRpdmBcbiAqICAgYmFja2dyb3VuZDogJHtzZXRTYXR1cmF0aW9uKDAuMiwgJyNDQ0NENjQnKX07XG4gKiAgIGJhY2tncm91bmQ6ICR7c2V0U2F0dXJhdGlvbignMC43NScsICdyZ2JhKDIwNCwyMDUsMTAwLDAuNyknKX07XG4gKiBgXG4gKlxuICogLy8gQ1NTIGluIEpTIE91dHB1dFxuICogZWxlbWVudCB7XG4gKiAgIGJhY2tncm91bmQ6IFwiI2FkYWQ4NFwiO1xuICogICBiYWNrZ3JvdW5kOiBcInJnYmEoMjI4LDIyOSw3NiwwLjcpXCI7XG4gKiB9XG4gKi9cblxuZnVuY3Rpb24gc2V0U2F0dXJhdGlvbihzYXR1cmF0aW9uLCBjb2xvcikge1xuICBpZiAoY29sb3IgPT09ICd0cmFuc3BhcmVudCcpIHJldHVybiBjb2xvcjtcbiAgcmV0dXJuIHRvQ29sb3JTdHJpbmcoX2V4dGVuZHMoe30sIHBhcnNlVG9Ic2woY29sb3IpLCB7XG4gICAgc2F0dXJhdGlvbjogcGFyc2VGbG9hdChzYXR1cmF0aW9uKVxuICB9KSk7XG59IC8vIHByZXR0aWVyLWlnbm9yZVxuXG5cbnZhciBjdXJyaWVkU2V0U2F0dXJhdGlvbiA9IC8qI19fUFVSRV9fKi9jdXJyeVxuLyogOjo8bnVtYmVyIHwgc3RyaW5nLCBzdHJpbmcsIHN0cmluZz4gKi9cbihzZXRTYXR1cmF0aW9uKTtcblxuLyoqXG4gKiBTaGFkZXMgYSBjb2xvciBieSBtaXhpbmcgaXQgd2l0aCBibGFjay4gYHNoYWRlYCBjYW4gcHJvZHVjZVxuICogaHVlIHNoaWZ0cywgd2hlcmUgYXMgYGRhcmtlbmAgbWFuaXB1bGF0ZXMgdGhlIGx1bWluYW5jZSBjaGFubmVsIGFuZCB0aGVyZWZvcmVcbiAqIGRvZXNuJ3QgcHJvZHVjZSBodWUgc2hpZnRzLlxuICpcbiAqIEBleGFtcGxlXG4gKiAvLyBTdHlsZXMgYXMgb2JqZWN0IHVzYWdlXG4gKiBjb25zdCBzdHlsZXMgPSB7XG4gKiAgIGJhY2tncm91bmQ6IHNoYWRlKDAuMjUsICcjMDBmJylcbiAqIH1cbiAqXG4gKiAvLyBzdHlsZWQtY29tcG9uZW50cyB1c2FnZVxuICogY29uc3QgZGl2ID0gc3R5bGVkLmRpdmBcbiAqICAgYmFja2dyb3VuZDogJHtzaGFkZSgwLjI1LCAnIzAwZicpfTtcbiAqIGBcbiAqXG4gKiAvLyBDU1MgaW4gSlMgT3V0cHV0XG4gKlxuICogZWxlbWVudCB7XG4gKiAgIGJhY2tncm91bmQ6IFwiIzAwMDAzZlwiO1xuICogfVxuICovXG5cbmZ1bmN0aW9uIHNoYWRlKHBlcmNlbnRhZ2UsIGNvbG9yKSB7XG4gIGlmIChjb2xvciA9PT0gJ3RyYW5zcGFyZW50JykgcmV0dXJuIGNvbG9yO1xuICByZXR1cm4gY3VycmllZE1peChwYXJzZUZsb2F0KHBlcmNlbnRhZ2UpLCAncmdiKDAsIDAsIDApJywgY29sb3IpO1xufSAvLyBwcmV0dGllci1pZ25vcmVcblxuXG52YXIgY3VycmllZFNoYWRlID0gLyojX19QVVJFX18qL2N1cnJ5XG4vKiA6OjxudW1iZXIgfCBzdHJpbmcsIHN0cmluZywgc3RyaW5nPiAqL1xuKHNoYWRlKTtcblxuLyoqXG4gKiBUaW50cyBhIGNvbG9yIGJ5IG1peGluZyBpdCB3aXRoIHdoaXRlLiBgdGludGAgY2FuIHByb2R1Y2VcbiAqIGh1ZSBzaGlmdHMsIHdoZXJlIGFzIGBsaWdodGVuYCBtYW5pcHVsYXRlcyB0aGUgbHVtaW5hbmNlIGNoYW5uZWwgYW5kIHRoZXJlZm9yZVxuICogZG9lc24ndCBwcm9kdWNlIGh1ZSBzaGlmdHMuXG4gKlxuICogQGV4YW1wbGVcbiAqIC8vIFN0eWxlcyBhcyBvYmplY3QgdXNhZ2VcbiAqIGNvbnN0IHN0eWxlcyA9IHtcbiAqICAgYmFja2dyb3VuZDogdGludCgwLjI1LCAnIzAwZicpXG4gKiB9XG4gKlxuICogLy8gc3R5bGVkLWNvbXBvbmVudHMgdXNhZ2VcbiAqIGNvbnN0IGRpdiA9IHN0eWxlZC5kaXZgXG4gKiAgIGJhY2tncm91bmQ6ICR7dGludCgwLjI1LCAnIzAwZicpfTtcbiAqIGBcbiAqXG4gKiAvLyBDU1MgaW4gSlMgT3V0cHV0XG4gKlxuICogZWxlbWVudCB7XG4gKiAgIGJhY2tncm91bmQ6IFwiI2JmYmZmZlwiO1xuICogfVxuICovXG5cbmZ1bmN0aW9uIHRpbnQocGVyY2VudGFnZSwgY29sb3IpIHtcbiAgaWYgKGNvbG9yID09PSAndHJhbnNwYXJlbnQnKSByZXR1cm4gY29sb3I7XG4gIHJldHVybiBjdXJyaWVkTWl4KHBhcnNlRmxvYXQocGVyY2VudGFnZSksICdyZ2IoMjU1LCAyNTUsIDI1NSknLCBjb2xvcik7XG59IC8vIHByZXR0aWVyLWlnbm9yZVxuXG5cbnZhciBjdXJyaWVkVGludCA9IC8qI19fUFVSRV9fKi9jdXJyeVxuLyogOjo8bnVtYmVyIHwgc3RyaW5nLCBzdHJpbmcsIHN0cmluZz4gKi9cbih0aW50KTtcblxuLyoqXG4gKiBEZWNyZWFzZXMgdGhlIG9wYWNpdHkgb2YgYSBjb2xvci4gSXRzIHJhbmdlIGZvciB0aGUgYW1vdW50IGlzIGJldHdlZW4gMCB0byAxLlxuICpcbiAqXG4gKiBAZXhhbXBsZVxuICogLy8gU3R5bGVzIGFzIG9iamVjdCB1c2FnZVxuICogY29uc3Qgc3R5bGVzID0ge1xuICogICBiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudGl6ZSgwLjEsICcjZmZmJyk7XG4gKiAgIGJhY2tncm91bmQ6IHRyYW5zcGFyZW50aXplKDAuMiwgJ2hzbCgwLCAwJSwgMTAwJSknKSxcbiAqICAgYmFja2dyb3VuZDogdHJhbnNwYXJlbnRpemUoJzAuNScsICdyZ2JhKDI1NSwgMCwgMCwgMC44KScpLFxuICogfVxuICpcbiAqIC8vIHN0eWxlZC1jb21wb25lbnRzIHVzYWdlXG4gKiBjb25zdCBkaXYgPSBzdHlsZWQuZGl2YFxuICogICBiYWNrZ3JvdW5kOiAke3RyYW5zcGFyZW50aXplKDAuMSwgJyNmZmYnKX07XG4gKiAgIGJhY2tncm91bmQ6ICR7dHJhbnNwYXJlbnRpemUoMC4yLCAnaHNsKDAsIDAlLCAxMDAlKScpfSxcbiAqICAgYmFja2dyb3VuZDogJHt0cmFuc3BhcmVudGl6ZSgnMC41JywgJ3JnYmEoMjU1LCAwLCAwLCAwLjgpJyl9LFxuICogYFxuICpcbiAqIC8vIENTUyBpbiBKUyBPdXRwdXRcbiAqXG4gKiBlbGVtZW50IHtcbiAqICAgYmFja2dyb3VuZDogXCJyZ2JhKDI1NSwyNTUsMjU1LDAuOSlcIjtcbiAqICAgYmFja2dyb3VuZDogXCJyZ2JhKDI1NSwyNTUsMjU1LDAuOClcIjtcbiAqICAgYmFja2dyb3VuZDogXCJyZ2JhKDI1NSwwLDAsMC4zKVwiO1xuICogfVxuICovXG5cbmZ1bmN0aW9uIHRyYW5zcGFyZW50aXplKGFtb3VudCwgY29sb3IpIHtcbiAgaWYgKGNvbG9yID09PSAndHJhbnNwYXJlbnQnKSByZXR1cm4gY29sb3I7XG4gIHZhciBwYXJzZWRDb2xvciA9IHBhcnNlVG9SZ2IoY29sb3IpO1xuICB2YXIgYWxwaGEgPSB0eXBlb2YgcGFyc2VkQ29sb3IuYWxwaGEgPT09ICdudW1iZXInID8gcGFyc2VkQ29sb3IuYWxwaGEgOiAxO1xuXG4gIHZhciBjb2xvcldpdGhBbHBoYSA9IF9leHRlbmRzKHt9LCBwYXJzZWRDb2xvciwge1xuICAgIGFscGhhOiBndWFyZCgwLCAxLCArKGFscGhhICogMTAwIC0gcGFyc2VGbG9hdChhbW91bnQpICogMTAwKS50b0ZpeGVkKDIpIC8gMTAwKVxuICB9KTtcblxuICByZXR1cm4gcmdiYShjb2xvcldpdGhBbHBoYSk7XG59IC8vIHByZXR0aWVyLWlnbm9yZVxuXG5cbnZhciBjdXJyaWVkVHJhbnNwYXJlbnRpemUgPSAvKiNfX1BVUkVfXyovY3Vycnlcbi8qIDo6PG51bWJlciB8IHN0cmluZywgc3RyaW5nLCBzdHJpbmc+ICovXG4odHJhbnNwYXJlbnRpemUpO1xuXG4vKipcbiAqIFNob3J0aGFuZCBmb3IgZWFzaWx5IHNldHRpbmcgdGhlIGFuaW1hdGlvbiBwcm9wZXJ0eS4gQWxsb3dzIGVpdGhlciBtdWx0aXBsZSBhcnJheXMgd2l0aCBhbmltYXRpb25zXG4gKiBvciBhIHNpbmdsZSBhbmltYXRpb24gc3ByZWFkIG92ZXIgdGhlIGFyZ3VtZW50cy5cbiAqIEBleGFtcGxlXG4gKiAvLyBTdHlsZXMgYXMgb2JqZWN0IHVzYWdlXG4gKiBjb25zdCBzdHlsZXMgPSB7XG4gKiAgIC4uLmFuaW1hdGlvbihbJ3JvdGF0ZScsICcxcycsICdlYXNlLWluLW91dCddLCBbJ2NvbG9yY2hhbmdlJywgJzJzJ10pXG4gKiB9XG4gKlxuICogLy8gc3R5bGVkLWNvbXBvbmVudHMgdXNhZ2VcbiAqIGNvbnN0IGRpdiA9IHN0eWxlZC5kaXZgXG4gKiAgICR7YW5pbWF0aW9uKFsncm90YXRlJywgJzFzJywgJ2Vhc2UtaW4tb3V0J10sIFsnY29sb3JjaGFuZ2UnLCAnMnMnXSl9XG4gKiBgXG4gKlxuICogLy8gQ1NTIGFzIEpTIE91dHB1dFxuICpcbiAqIGRpdiB7XG4gKiAgICdhbmltYXRpb24nOiAncm90YXRlIDFzIGVhc2UtaW4tb3V0LCBjb2xvcmNoYW5nZSAycydcbiAqIH1cbiAqIEBleGFtcGxlXG4gKiAvLyBTdHlsZXMgYXMgb2JqZWN0IHVzYWdlXG4gKiBjb25zdCBzdHlsZXMgPSB7XG4gKiAgIC4uLmFuaW1hdGlvbigncm90YXRlJywgJzFzJywgJ2Vhc2UtaW4tb3V0JylcbiAqIH1cbiAqXG4gKiAvLyBzdHlsZWQtY29tcG9uZW50cyB1c2FnZVxuICogY29uc3QgZGl2ID0gc3R5bGVkLmRpdmBcbiAqICAgJHthbmltYXRpb24oJ3JvdGF0ZScsICcxcycsICdlYXNlLWluLW91dCcpfVxuICogYFxuICpcbiAqIC8vIENTUyBhcyBKUyBPdXRwdXRcbiAqXG4gKiBkaXYge1xuICogICAnYW5pbWF0aW9uJzogJ3JvdGF0ZSAxcyBlYXNlLWluLW91dCdcbiAqIH1cbiAqL1xuZnVuY3Rpb24gYW5pbWF0aW9uKCkge1xuICBmb3IgKHZhciBfbGVuID0gYXJndW1lbnRzLmxlbmd0aCwgYXJncyA9IG5ldyBBcnJheShfbGVuKSwgX2tleSA9IDA7IF9rZXkgPCBfbGVuOyBfa2V5KyspIHtcbiAgICBhcmdzW19rZXldID0gYXJndW1lbnRzW19rZXldO1xuICB9XG5cbiAgLy8gQWxsb3cgc2luZ2xlIG9yIG11bHRpcGxlIGFuaW1hdGlvbnMgcGFzc2VkXG4gIHZhciBtdWx0aU1vZGUgPSBBcnJheS5pc0FycmF5KGFyZ3NbMF0pO1xuXG4gIGlmICghbXVsdGlNb2RlICYmIGFyZ3MubGVuZ3RoID4gOCkge1xuICAgIHRocm93IG5ldyBQb2xpc2hlZEVycm9yKDY0KTtcbiAgfVxuXG4gIHZhciBjb2RlID0gYXJncy5tYXAoZnVuY3Rpb24gKGFyZykge1xuICAgIGlmIChtdWx0aU1vZGUgJiYgIUFycmF5LmlzQXJyYXkoYXJnKSB8fCAhbXVsdGlNb2RlICYmIEFycmF5LmlzQXJyYXkoYXJnKSkge1xuICAgICAgdGhyb3cgbmV3IFBvbGlzaGVkRXJyb3IoNjUpO1xuICAgIH1cblxuICAgIGlmIChBcnJheS5pc0FycmF5KGFyZykgJiYgYXJnLmxlbmd0aCA+IDgpIHtcbiAgICAgIHRocm93IG5ldyBQb2xpc2hlZEVycm9yKDY2KTtcbiAgICB9XG5cbiAgICByZXR1cm4gQXJyYXkuaXNBcnJheShhcmcpID8gYXJnLmpvaW4oJyAnKSA6IGFyZztcbiAgfSkuam9pbignLCAnKTtcbiAgcmV0dXJuIHtcbiAgICBhbmltYXRpb246IGNvZGVcbiAgfTtcbn1cblxuLyoqXG4gKiBTaG9ydGhhbmQgdGhhdCBhY2NlcHRzIGFueSBudW1iZXIgb2YgYmFja2dyb3VuZEltYWdlIHZhbHVlcyBhcyBwYXJhbWV0ZXJzIGZvciBjcmVhdGluZyBhIHNpbmdsZSBiYWNrZ3JvdW5kIHN0YXRlbWVudC5cbiAqIEBleGFtcGxlXG4gKiAvLyBTdHlsZXMgYXMgb2JqZWN0IHVzYWdlXG4gKiBjb25zdCBzdHlsZXMgPSB7XG4gKiAgIC4uLmJhY2tncm91bmRJbWFnZXMoJ3VybChcIi9pbWFnZS9iYWNrZ3JvdW5kLmpwZ1wiKScsICdsaW5lYXItZ3JhZGllbnQocmVkLCBncmVlbiknKVxuICogfVxuICpcbiAqIC8vIHN0eWxlZC1jb21wb25lbnRzIHVzYWdlXG4gKiBjb25zdCBkaXYgPSBzdHlsZWQuZGl2YFxuICogICAke2JhY2tncm91bmRJbWFnZXMoJ3VybChcIi9pbWFnZS9iYWNrZ3JvdW5kLmpwZ1wiKScsICdsaW5lYXItZ3JhZGllbnQocmVkLCBncmVlbiknKX1cbiAqIGBcbiAqXG4gKiAvLyBDU1MgYXMgSlMgT3V0cHV0XG4gKlxuICogZGl2IHtcbiAqICAgJ2JhY2tncm91bmRJbWFnZSc6ICd1cmwoXCIvaW1hZ2UvYmFja2dyb3VuZC5qcGdcIiksIGxpbmVhci1ncmFkaWVudChyZWQsIGdyZWVuKSdcbiAqIH1cbiAqL1xuZnVuY3Rpb24gYmFja2dyb3VuZEltYWdlcygpIHtcbiAgZm9yICh2YXIgX2xlbiA9IGFyZ3VtZW50cy5sZW5ndGgsIHByb3BlcnRpZXMgPSBuZXcgQXJyYXkoX2xlbiksIF9rZXkgPSAwOyBfa2V5IDwgX2xlbjsgX2tleSsrKSB7XG4gICAgcHJvcGVydGllc1tfa2V5XSA9IGFyZ3VtZW50c1tfa2V5XTtcbiAgfVxuXG4gIHJldHVybiB7XG4gICAgYmFja2dyb3VuZEltYWdlOiBwcm9wZXJ0aWVzLmpvaW4oJywgJylcbiAgfTtcbn1cblxuLyoqXG4gKiBTaG9ydGhhbmQgdGhhdCBhY2NlcHRzIGFueSBudW1iZXIgb2YgYmFja2dyb3VuZCB2YWx1ZXMgYXMgcGFyYW1ldGVycyBmb3IgY3JlYXRpbmcgYSBzaW5nbGUgYmFja2dyb3VuZCBzdGF0ZW1lbnQuXG4gKiBAZXhhbXBsZVxuICogLy8gU3R5bGVzIGFzIG9iamVjdCB1c2FnZVxuICogY29uc3Qgc3R5bGVzID0ge1xuICogICAuLi5iYWNrZ3JvdW5kcygndXJsKFwiL2ltYWdlL2JhY2tncm91bmQuanBnXCIpJywgJ2xpbmVhci1ncmFkaWVudChyZWQsIGdyZWVuKScsICdjZW50ZXIgbm8tcmVwZWF0JylcbiAqIH1cbiAqXG4gKiAvLyBzdHlsZWQtY29tcG9uZW50cyB1c2FnZVxuICogY29uc3QgZGl2ID0gc3R5bGVkLmRpdmBcbiAqICAgJHtiYWNrZ3JvdW5kcygndXJsKFwiL2ltYWdlL2JhY2tncm91bmQuanBnXCIpJywgJ2xpbmVhci1ncmFkaWVudChyZWQsIGdyZWVuKScsICdjZW50ZXIgbm8tcmVwZWF0Jyl9XG4gKiBgXG4gKlxuICogLy8gQ1NTIGFzIEpTIE91dHB1dFxuICpcbiAqIGRpdiB7XG4gKiAgICdiYWNrZ3JvdW5kJzogJ3VybChcIi9pbWFnZS9iYWNrZ3JvdW5kLmpwZ1wiKSwgbGluZWFyLWdyYWRpZW50KHJlZCwgZ3JlZW4pLCBjZW50ZXIgbm8tcmVwZWF0J1xuICogfVxuICovXG5mdW5jdGlvbiBiYWNrZ3JvdW5kcygpIHtcbiAgZm9yICh2YXIgX2xlbiA9IGFyZ3VtZW50cy5sZW5ndGgsIHByb3BlcnRpZXMgPSBuZXcgQXJyYXkoX2xlbiksIF9rZXkgPSAwOyBfa2V5IDwgX2xlbjsgX2tleSsrKSB7XG4gICAgcHJvcGVydGllc1tfa2V5XSA9IGFyZ3VtZW50c1tfa2V5XTtcbiAgfVxuXG4gIHJldHVybiB7XG4gICAgYmFja2dyb3VuZDogcHJvcGVydGllcy5qb2luKCcsICcpXG4gIH07XG59XG5cbnZhciBzaWRlTWFwID0gWyd0b3AnLCAncmlnaHQnLCAnYm90dG9tJywgJ2xlZnQnXTtcbi8qKlxuICogU2hvcnRoYW5kIGZvciB0aGUgYm9yZGVyIHByb3BlcnR5IHRoYXQgc3BsaXRzIG91dCBpbmRpdmlkdWFsIHByb3BlcnRpZXMgZm9yIHVzZSB3aXRoIHRvb2xzIGxpa2UgRmVsYSBhbmQgU3R5bGV0cm9uLiBBIHNpZGUga2V5d29yZCBjYW4gb3B0aW9uYWxseSBiZSBwYXNzZWQgdG8gdGFyZ2V0IG9ubHkgb25lIHNpZGUncyBib3JkZXIgcHJvcGVydGllcy5cbiAqXG4gKiBAZXhhbXBsZVxuICogLy8gU3R5bGVzIGFzIG9iamVjdCB1c2FnZVxuICogY29uc3Qgc3R5bGVzID0ge1xuICogICAuLi5ib3JkZXIoJzFweCcsICdzb2xpZCcsICdyZWQnKVxuICogfVxuICpcbiAqIC8vIHN0eWxlZC1jb21wb25lbnRzIHVzYWdlXG4gKiBjb25zdCBkaXYgPSBzdHlsZWQuZGl2YFxuICogICAke2JvcmRlcignMXB4JywgJ3NvbGlkJywgJ3JlZCcpfVxuICogYFxuICpcbiAqIC8vIENTUyBhcyBKUyBPdXRwdXRcbiAqXG4gKiBkaXYge1xuICogICAnYm9yZGVyQ29sb3InOiAncmVkJyxcbiAqICAgJ2JvcmRlclN0eWxlJzogJ3NvbGlkJyxcbiAqICAgJ2JvcmRlcldpZHRoJzogYDFweGAsXG4gKiB9XG4gKlxuICogLy8gU3R5bGVzIGFzIG9iamVjdCB1c2FnZVxuICogY29uc3Qgc3R5bGVzID0ge1xuICogICAuLi5ib3JkZXIoJ3RvcCcsICcxcHgnLCAnc29saWQnLCAncmVkJylcbiAqIH1cbiAqXG4gKiAvLyBzdHlsZWQtY29tcG9uZW50cyB1c2FnZVxuICogY29uc3QgZGl2ID0gc3R5bGVkLmRpdmBcbiAqICAgJHtib3JkZXIoJ3RvcCcsICcxcHgnLCAnc29saWQnLCAncmVkJyl9XG4gKiBgXG4gKlxuICogLy8gQ1NTIGFzIEpTIE91dHB1dFxuICpcbiAqIGRpdiB7XG4gKiAgICdib3JkZXJUb3BDb2xvcic6ICdyZWQnLFxuICogICAnYm9yZGVyVG9wU3R5bGUnOiAnc29saWQnLFxuICogICAnYm9yZGVyVG9wV2lkdGgnOiBgMXB4YCxcbiAqIH1cbiAqL1xuXG5mdW5jdGlvbiBib3JkZXIoc2lkZUtleXdvcmQpIHtcbiAgZm9yICh2YXIgX2xlbiA9IGFyZ3VtZW50cy5sZW5ndGgsIHZhbHVlcyA9IG5ldyBBcnJheShfbGVuID4gMSA/IF9sZW4gLSAxIDogMCksIF9rZXkgPSAxOyBfa2V5IDwgX2xlbjsgX2tleSsrKSB7XG4gICAgdmFsdWVzW19rZXkgLSAxXSA9IGFyZ3VtZW50c1tfa2V5XTtcbiAgfVxuXG4gIGlmICh0eXBlb2Ygc2lkZUtleXdvcmQgPT09ICdzdHJpbmcnICYmIHNpZGVNYXAuaW5kZXhPZihzaWRlS2V5d29yZCkgPj0gMCkge1xuICAgIHZhciBfcmVmO1xuXG4gICAgcmV0dXJuIF9yZWYgPSB7fSwgX3JlZltcImJvcmRlclwiICsgY2FwaXRhbGl6ZVN0cmluZyhzaWRlS2V5d29yZCkgKyBcIldpZHRoXCJdID0gdmFsdWVzWzBdLCBfcmVmW1wiYm9yZGVyXCIgKyBjYXBpdGFsaXplU3RyaW5nKHNpZGVLZXl3b3JkKSArIFwiU3R5bGVcIl0gPSB2YWx1ZXNbMV0sIF9yZWZbXCJib3JkZXJcIiArIGNhcGl0YWxpemVTdHJpbmcoc2lkZUtleXdvcmQpICsgXCJDb2xvclwiXSA9IHZhbHVlc1syXSwgX3JlZjtcbiAgfSBlbHNlIHtcbiAgICB2YWx1ZXMudW5zaGlmdChzaWRlS2V5d29yZCk7XG4gICAgcmV0dXJuIHtcbiAgICAgIGJvcmRlcldpZHRoOiB2YWx1ZXNbMF0sXG4gICAgICBib3JkZXJTdHlsZTogdmFsdWVzWzFdLFxuICAgICAgYm9yZGVyQ29sb3I6IHZhbHVlc1syXVxuICAgIH07XG4gIH1cbn1cblxuLyoqXG4gKiBTaG9ydGhhbmQgdGhhdCBhY2NlcHRzIHVwIHRvIGZvdXIgdmFsdWVzLCBpbmNsdWRpbmcgbnVsbCB0byBza2lwIGEgdmFsdWUsIGFuZCBtYXBzIHRoZW0gdG8gdGhlaXIgcmVzcGVjdGl2ZSBkaXJlY3Rpb25zLlxuICogQGV4YW1wbGVcbiAqIC8vIFN0eWxlcyBhcyBvYmplY3QgdXNhZ2VcbiAqIGNvbnN0IHN0eWxlcyA9IHtcbiAqICAgLi4uYm9yZGVyQ29sb3IoJ3JlZCcsICdncmVlbicsICdibHVlJywgJ3llbGxvdycpXG4gKiB9XG4gKlxuICogLy8gc3R5bGVkLWNvbXBvbmVudHMgdXNhZ2VcbiAqIGNvbnN0IGRpdiA9IHN0eWxlZC5kaXZgXG4gKiAgICR7Ym9yZGVyQ29sb3IoJ3JlZCcsICdncmVlbicsICdibHVlJywgJ3llbGxvdycpfVxuICogYFxuICpcbiAqIC8vIENTUyBhcyBKUyBPdXRwdXRcbiAqXG4gKiBkaXYge1xuICogICAnYm9yZGVyVG9wQ29sb3InOiAncmVkJyxcbiAqICAgJ2JvcmRlclJpZ2h0Q29sb3InOiAnZ3JlZW4nLFxuICogICAnYm9yZGVyQm90dG9tQ29sb3InOiAnYmx1ZScsXG4gKiAgICdib3JkZXJMZWZ0Q29sb3InOiAneWVsbG93J1xuICogfVxuICovXG5mdW5jdGlvbiBib3JkZXJDb2xvcigpIHtcbiAgZm9yICh2YXIgX2xlbiA9IGFyZ3VtZW50cy5sZW5ndGgsIHZhbHVlcyA9IG5ldyBBcnJheShfbGVuKSwgX2tleSA9IDA7IF9rZXkgPCBfbGVuOyBfa2V5KyspIHtcbiAgICB2YWx1ZXNbX2tleV0gPSBhcmd1bWVudHNbX2tleV07XG4gIH1cblxuICByZXR1cm4gZGlyZWN0aW9uYWxQcm9wZXJ0eS5hcHBseSh2b2lkIDAsIFsnYm9yZGVyQ29sb3InXS5jb25jYXQodmFsdWVzKSk7XG59XG5cbi8qKlxuICogU2hvcnRoYW5kIHRoYXQgYWNjZXB0cyBhIHZhbHVlIGZvciBzaWRlIGFuZCBhIHZhbHVlIGZvciByYWRpdXMgYW5kIGFwcGxpZXMgdGhlIHJhZGl1cyB2YWx1ZSB0byBib3RoIGNvcm5lcnMgb2YgdGhlIHNpZGUuXG4gKiBAZXhhbXBsZVxuICogLy8gU3R5bGVzIGFzIG9iamVjdCB1c2FnZVxuICogY29uc3Qgc3R5bGVzID0ge1xuICogICAuLi5ib3JkZXJSYWRpdXMoJ3RvcCcsICc1cHgnKVxuICogfVxuICpcbiAqIC8vIHN0eWxlZC1jb21wb25lbnRzIHVzYWdlXG4gKiBjb25zdCBkaXYgPSBzdHlsZWQuZGl2YFxuICogICAke2JvcmRlclJhZGl1cygndG9wJywgJzVweCcpfVxuICogYFxuICpcbiAqIC8vIENTUyBhcyBKUyBPdXRwdXRcbiAqXG4gKiBkaXYge1xuICogICAnYm9yZGVyVG9wUmlnaHRSYWRpdXMnOiAnNXB4JyxcbiAqICAgJ2JvcmRlclRvcExlZnRSYWRpdXMnOiAnNXB4JyxcbiAqIH1cbiAqL1xuZnVuY3Rpb24gYm9yZGVyUmFkaXVzKHNpZGUsIHJhZGl1cykge1xuICB2YXIgdXBwZXJjYXNlU2lkZSA9IGNhcGl0YWxpemVTdHJpbmcoc2lkZSk7XG5cbiAgaWYgKCFyYWRpdXMgJiYgcmFkaXVzICE9PSAwKSB7XG4gICAgdGhyb3cgbmV3IFBvbGlzaGVkRXJyb3IoNjIpO1xuICB9XG5cbiAgaWYgKHVwcGVyY2FzZVNpZGUgPT09ICdUb3AnIHx8IHVwcGVyY2FzZVNpZGUgPT09ICdCb3R0b20nKSB7XG4gICAgdmFyIF9yZWY7XG5cbiAgICByZXR1cm4gX3JlZiA9IHt9LCBfcmVmW1wiYm9yZGVyXCIgKyB1cHBlcmNhc2VTaWRlICsgXCJSaWdodFJhZGl1c1wiXSA9IHJhZGl1cywgX3JlZltcImJvcmRlclwiICsgdXBwZXJjYXNlU2lkZSArIFwiTGVmdFJhZGl1c1wiXSA9IHJhZGl1cywgX3JlZjtcbiAgfVxuXG4gIGlmICh1cHBlcmNhc2VTaWRlID09PSAnTGVmdCcgfHwgdXBwZXJjYXNlU2lkZSA9PT0gJ1JpZ2h0Jykge1xuICAgIHZhciBfcmVmMjtcblxuICAgIHJldHVybiBfcmVmMiA9IHt9LCBfcmVmMltcImJvcmRlclRvcFwiICsgdXBwZXJjYXNlU2lkZSArIFwiUmFkaXVzXCJdID0gcmFkaXVzLCBfcmVmMltcImJvcmRlckJvdHRvbVwiICsgdXBwZXJjYXNlU2lkZSArIFwiUmFkaXVzXCJdID0gcmFkaXVzLCBfcmVmMjtcbiAgfVxuXG4gIHRocm93IG5ldyBQb2xpc2hlZEVycm9yKDYzKTtcbn1cblxuLyoqXG4gKiBTaG9ydGhhbmQgdGhhdCBhY2NlcHRzIHVwIHRvIGZvdXIgdmFsdWVzLCBpbmNsdWRpbmcgbnVsbCB0byBza2lwIGEgdmFsdWUsIGFuZCBtYXBzIHRoZW0gdG8gdGhlaXIgcmVzcGVjdGl2ZSBkaXJlY3Rpb25zLlxuICogQGV4YW1wbGVcbiAqIC8vIFN0eWxlcyBhcyBvYmplY3QgdXNhZ2VcbiAqIGNvbnN0IHN0eWxlcyA9IHtcbiAqICAgLi4uYm9yZGVyU3R5bGUoJ3NvbGlkJywgJ2Rhc2hlZCcsICdkb3R0ZWQnLCAnZG91YmxlJylcbiAqIH1cbiAqXG4gKiAvLyBzdHlsZWQtY29tcG9uZW50cyB1c2FnZVxuICogY29uc3QgZGl2ID0gc3R5bGVkLmRpdmBcbiAqICAgJHtib3JkZXJTdHlsZSgnc29saWQnLCAnZGFzaGVkJywgJ2RvdHRlZCcsICdkb3VibGUnKX1cbiAqIGBcbiAqXG4gKiAvLyBDU1MgYXMgSlMgT3V0cHV0XG4gKlxuICogZGl2IHtcbiAqICAgJ2JvcmRlclRvcFN0eWxlJzogJ3NvbGlkJyxcbiAqICAgJ2JvcmRlclJpZ2h0U3R5bGUnOiAnZGFzaGVkJyxcbiAqICAgJ2JvcmRlckJvdHRvbVN0eWxlJzogJ2RvdHRlZCcsXG4gKiAgICdib3JkZXJMZWZ0U3R5bGUnOiAnZG91YmxlJ1xuICogfVxuICovXG5mdW5jdGlvbiBib3JkZXJTdHlsZSgpIHtcbiAgZm9yICh2YXIgX2xlbiA9IGFyZ3VtZW50cy5sZW5ndGgsIHZhbHVlcyA9IG5ldyBBcnJheShfbGVuKSwgX2tleSA9IDA7IF9rZXkgPCBfbGVuOyBfa2V5KyspIHtcbiAgICB2YWx1ZXNbX2tleV0gPSBhcmd1bWVudHNbX2tleV07XG4gIH1cblxuICByZXR1cm4gZGlyZWN0aW9uYWxQcm9wZXJ0eS5hcHBseSh2b2lkIDAsIFsnYm9yZGVyU3R5bGUnXS5jb25jYXQodmFsdWVzKSk7XG59XG5cbi8qKlxuICogU2hvcnRoYW5kIHRoYXQgYWNjZXB0cyB1cCB0byBmb3VyIHZhbHVlcywgaW5jbHVkaW5nIG51bGwgdG8gc2tpcCBhIHZhbHVlLCBhbmQgbWFwcyB0aGVtIHRvIHRoZWlyIHJlc3BlY3RpdmUgZGlyZWN0aW9ucy5cbiAqIEBleGFtcGxlXG4gKiAvLyBTdHlsZXMgYXMgb2JqZWN0IHVzYWdlXG4gKiBjb25zdCBzdHlsZXMgPSB7XG4gKiAgIC4uLmJvcmRlcldpZHRoKCcxMnB4JywgJzI0cHgnLCAnMzZweCcsICc0OHB4JylcbiAqIH1cbiAqXG4gKiAvLyBzdHlsZWQtY29tcG9uZW50cyB1c2FnZVxuICogY29uc3QgZGl2ID0gc3R5bGVkLmRpdmBcbiAqICAgJHtib3JkZXJXaWR0aCgnMTJweCcsICcyNHB4JywgJzM2cHgnLCAnNDhweCcpfVxuICogYFxuICpcbiAqIC8vIENTUyBhcyBKUyBPdXRwdXRcbiAqXG4gKiBkaXYge1xuICogICAnYm9yZGVyVG9wV2lkdGgnOiAnMTJweCcsXG4gKiAgICdib3JkZXJSaWdodFdpZHRoJzogJzI0cHgnLFxuICogICAnYm9yZGVyQm90dG9tV2lkdGgnOiAnMzZweCcsXG4gKiAgICdib3JkZXJMZWZ0V2lkdGgnOiAnNDhweCdcbiAqIH1cbiAqL1xuZnVuY3Rpb24gYm9yZGVyV2lkdGgoKSB7XG4gIGZvciAodmFyIF9sZW4gPSBhcmd1bWVudHMubGVuZ3RoLCB2YWx1ZXMgPSBuZXcgQXJyYXkoX2xlbiksIF9rZXkgPSAwOyBfa2V5IDwgX2xlbjsgX2tleSsrKSB7XG4gICAgdmFsdWVzW19rZXldID0gYXJndW1lbnRzW19rZXldO1xuICB9XG5cbiAgcmV0dXJuIGRpcmVjdGlvbmFsUHJvcGVydHkuYXBwbHkodm9pZCAwLCBbJ2JvcmRlcldpZHRoJ10uY29uY2F0KHZhbHVlcykpO1xufVxuXG5mdW5jdGlvbiBnZW5lcmF0ZVNlbGVjdG9ycyh0ZW1wbGF0ZSwgc3RhdGUpIHtcbiAgdmFyIHN0YXRlU3VmZml4ID0gc3RhdGUgPyBcIjpcIiArIHN0YXRlIDogJyc7XG4gIHJldHVybiB0ZW1wbGF0ZShzdGF0ZVN1ZmZpeCk7XG59XG4vKipcbiAqIEZ1bmN0aW9uIGhlbHBlciB0aGF0IGFkZHMgYW4gYXJyYXkgb2Ygc3RhdGVzIHRvIGEgdGVtcGxhdGUgb2Ygc2VsZWN0b3JzLiBVc2VkIGluIHRleHRJbnB1dHMgYW5kIGJ1dHRvbnMuXG4gKiBAcHJpdmF0ZVxuICovXG5cblxuZnVuY3Rpb24gc3RhdGVmdWxTZWxlY3RvcnMoc3RhdGVzLCB0ZW1wbGF0ZSwgc3RhdGVNYXApIHtcbiAgaWYgKCF0ZW1wbGF0ZSkgdGhyb3cgbmV3IFBvbGlzaGVkRXJyb3IoNjcpO1xuICBpZiAoc3RhdGVzLmxlbmd0aCA9PT0gMCkgcmV0dXJuIGdlbmVyYXRlU2VsZWN0b3JzKHRlbXBsYXRlLCBudWxsKTtcbiAgdmFyIHNlbGVjdG9ycyA9IFtdO1xuXG4gIGZvciAodmFyIGkgPSAwOyBpIDwgc3RhdGVzLmxlbmd0aDsgaSArPSAxKSB7XG4gICAgaWYgKHN0YXRlTWFwICYmIHN0YXRlTWFwLmluZGV4T2Yoc3RhdGVzW2ldKSA8IDApIHtcbiAgICAgIHRocm93IG5ldyBQb2xpc2hlZEVycm9yKDY4KTtcbiAgICB9XG5cbiAgICBzZWxlY3RvcnMucHVzaChnZW5lcmF0ZVNlbGVjdG9ycyh0ZW1wbGF0ZSwgc3RhdGVzW2ldKSk7XG4gIH1cblxuICBzZWxlY3RvcnMgPSBzZWxlY3RvcnMuam9pbignLCcpO1xuICByZXR1cm4gc2VsZWN0b3JzO1xufVxuXG52YXIgc3RhdGVNYXAgPSBbdW5kZWZpbmVkLCBudWxsLCAnYWN0aXZlJywgJ2ZvY3VzJywgJ2hvdmVyJ107XG5cbmZ1bmN0aW9uIHRlbXBsYXRlKHN0YXRlKSB7XG4gIHJldHVybiBcImJ1dHRvblwiICsgc3RhdGUgKyBcIixcXG4gIGlucHV0W3R5cGU9XFxcImJ1dHRvblxcXCJdXCIgKyBzdGF0ZSArIFwiLFxcbiAgaW5wdXRbdHlwZT1cXFwicmVzZXRcXFwiXVwiICsgc3RhdGUgKyBcIixcXG4gIGlucHV0W3R5cGU9XFxcInN1Ym1pdFxcXCJdXCIgKyBzdGF0ZTtcbn1cbi8qKlxuICogUG9wdWxhdGVzIHNlbGVjdG9ycyB0aGF0IHRhcmdldCBhbGwgYnV0dG9ucy4gWW91IGNhbiBwYXNzIG9wdGlvbmFsIHN0YXRlcyB0byBhcHBlbmQgdG8gdGhlIHNlbGVjdG9ycy5cbiAqIEBleGFtcGxlXG4gKiAvLyBTdHlsZXMgYXMgb2JqZWN0IHVzYWdlXG4gKiBjb25zdCBzdHlsZXMgPSB7XG4gKiAgIFtidXR0b25zKCdhY3RpdmUnKV06IHtcbiAqICAgICAnYm9yZGVyJzogJ25vbmUnXG4gKiAgIH1cbiAqIH1cbiAqXG4gKiAvLyBzdHlsZWQtY29tcG9uZW50cyB1c2FnZVxuICogY29uc3QgZGl2ID0gc3R5bGVkLmRpdmBcbiAqICAgPiAke2J1dHRvbnMoJ2FjdGl2ZScpfSB7XG4gKiAgICAgYm9yZGVyOiBub25lO1xuICogICB9XG4gKiBgXG4gKlxuICogLy8gQ1NTIGluIEpTIE91dHB1dFxuICpcbiAqICAnYnV0dG9uOmFjdGl2ZSxcbiAqICAnaW5wdXRbdHlwZT1cImJ1dHRvblwiXTphY3RpdmUsXG4gKiAgJ2lucHV0W3R5cGU9XFxcInJlc2V0XFxcIl06YWN0aXZlLFxuICogICdpbnB1dFt0eXBlPVxcXCJzdWJtaXRcXFwiXTphY3RpdmU6IHtcbiAqICAgJ2JvcmRlcic6ICdub25lJ1xuICogfVxuICovXG5cblxuZnVuY3Rpb24gYnV0dG9ucygpIHtcbiAgZm9yICh2YXIgX2xlbiA9IGFyZ3VtZW50cy5sZW5ndGgsIHN0YXRlcyA9IG5ldyBBcnJheShfbGVuKSwgX2tleSA9IDA7IF9rZXkgPCBfbGVuOyBfa2V5KyspIHtcbiAgICBzdGF0ZXNbX2tleV0gPSBhcmd1bWVudHNbX2tleV07XG4gIH1cblxuICByZXR1cm4gc3RhdGVmdWxTZWxlY3RvcnMoc3RhdGVzLCB0ZW1wbGF0ZSwgc3RhdGVNYXApO1xufVxuXG4vKipcbiAqIFNob3J0aGFuZCB0aGF0IGFjY2VwdHMgdXAgdG8gZm91ciB2YWx1ZXMsIGluY2x1ZGluZyBudWxsIHRvIHNraXAgYSB2YWx1ZSwgYW5kIG1hcHMgdGhlbSB0byB0aGVpciByZXNwZWN0aXZlIGRpcmVjdGlvbnMuXG4gKiBAZXhhbXBsZVxuICogLy8gU3R5bGVzIGFzIG9iamVjdCB1c2FnZVxuICogY29uc3Qgc3R5bGVzID0ge1xuICogICAuLi5tYXJnaW4oJzEycHgnLCAnMjRweCcsICczNnB4JywgJzQ4cHgnKVxuICogfVxuICpcbiAqIC8vIHN0eWxlZC1jb21wb25lbnRzIHVzYWdlXG4gKiBjb25zdCBkaXYgPSBzdHlsZWQuZGl2YFxuICogICAke21hcmdpbignMTJweCcsICcyNHB4JywgJzM2cHgnLCAnNDhweCcpfVxuICogYFxuICpcbiAqIC8vIENTUyBhcyBKUyBPdXRwdXRcbiAqXG4gKiBkaXYge1xuICogICAnbWFyZ2luVG9wJzogJzEycHgnLFxuICogICAnbWFyZ2luUmlnaHQnOiAnMjRweCcsXG4gKiAgICdtYXJnaW5Cb3R0b20nOiAnMzZweCcsXG4gKiAgICdtYXJnaW5MZWZ0JzogJzQ4cHgnXG4gKiB9XG4gKi9cbmZ1bmN0aW9uIG1hcmdpbigpIHtcbiAgZm9yICh2YXIgX2xlbiA9IGFyZ3VtZW50cy5sZW5ndGgsIHZhbHVlcyA9IG5ldyBBcnJheShfbGVuKSwgX2tleSA9IDA7IF9rZXkgPCBfbGVuOyBfa2V5KyspIHtcbiAgICB2YWx1ZXNbX2tleV0gPSBhcmd1bWVudHNbX2tleV07XG4gIH1cblxuICByZXR1cm4gZGlyZWN0aW9uYWxQcm9wZXJ0eS5hcHBseSh2b2lkIDAsIFsnbWFyZ2luJ10uY29uY2F0KHZhbHVlcykpO1xufVxuXG4vKipcbiAqIFNob3J0aGFuZCB0aGF0IGFjY2VwdHMgdXAgdG8gZm91ciB2YWx1ZXMsIGluY2x1ZGluZyBudWxsIHRvIHNraXAgYSB2YWx1ZSwgYW5kIG1hcHMgdGhlbSB0byB0aGVpciByZXNwZWN0aXZlIGRpcmVjdGlvbnMuXG4gKiBAZXhhbXBsZVxuICogLy8gU3R5bGVzIGFzIG9iamVjdCB1c2FnZVxuICogY29uc3Qgc3R5bGVzID0ge1xuICogICAuLi5wYWRkaW5nKCcxMnB4JywgJzI0cHgnLCAnMzZweCcsICc0OHB4JylcbiAqIH1cbiAqXG4gKiAvLyBzdHlsZWQtY29tcG9uZW50cyB1c2FnZVxuICogY29uc3QgZGl2ID0gc3R5bGVkLmRpdmBcbiAqICAgJHtwYWRkaW5nKCcxMnB4JywgJzI0cHgnLCAnMzZweCcsICc0OHB4Jyl9XG4gKiBgXG4gKlxuICogLy8gQ1NTIGFzIEpTIE91dHB1dFxuICpcbiAqIGRpdiB7XG4gKiAgICdwYWRkaW5nVG9wJzogJzEycHgnLFxuICogICAncGFkZGluZ1JpZ2h0JzogJzI0cHgnLFxuICogICAncGFkZGluZ0JvdHRvbSc6ICczNnB4JyxcbiAqICAgJ3BhZGRpbmdMZWZ0JzogJzQ4cHgnXG4gKiB9XG4gKi9cbmZ1bmN0aW9uIHBhZGRpbmcoKSB7XG4gIGZvciAodmFyIF9sZW4gPSBhcmd1bWVudHMubGVuZ3RoLCB2YWx1ZXMgPSBuZXcgQXJyYXkoX2xlbiksIF9rZXkgPSAwOyBfa2V5IDwgX2xlbjsgX2tleSsrKSB7XG4gICAgdmFsdWVzW19rZXldID0gYXJndW1lbnRzW19rZXldO1xuICB9XG5cbiAgcmV0dXJuIGRpcmVjdGlvbmFsUHJvcGVydHkuYXBwbHkodm9pZCAwLCBbJ3BhZGRpbmcnXS5jb25jYXQodmFsdWVzKSk7XG59XG5cbnZhciBwb3NpdGlvbk1hcCQxID0gWydhYnNvbHV0ZScsICdmaXhlZCcsICdyZWxhdGl2ZScsICdzdGF0aWMnLCAnc3RpY2t5J107XG4vKipcbiAqIFNob3J0aGFuZCBhY2NlcHRzIHVwIHRvIGZpdmUgdmFsdWVzLCBpbmNsdWRpbmcgbnVsbCB0byBza2lwIGEgdmFsdWUsIGFuZCBtYXBzIHRoZW0gdG8gdGhlaXIgcmVzcGVjdGl2ZSBkaXJlY3Rpb25zLiBUaGUgZmlyc3QgdmFsdWUgY2FuIG9wdGlvbmFsbHkgYmUgYSBwb3NpdGlvbiBrZXl3b3JkLlxuICogQGV4YW1wbGVcbiAqIC8vIFN0eWxlcyBhcyBvYmplY3QgdXNhZ2VcbiAqIGNvbnN0IHN0eWxlcyA9IHtcbiAqICAgLi4ucG9zaXRpb24oJzEycHgnLCAnMjRweCcsICczNnB4JywgJzQ4cHgnKVxuICogfVxuICpcbiAqIC8vIHN0eWxlZC1jb21wb25lbnRzIHVzYWdlXG4gKiBjb25zdCBkaXYgPSBzdHlsZWQuZGl2YFxuICogICAke3Bvc2l0aW9uKCcxMnB4JywgJzI0cHgnLCAnMzZweCcsICc0OHB4Jyl9XG4gKiBgXG4gKlxuICogLy8gQ1NTIGFzIEpTIE91dHB1dFxuICpcbiAqIGRpdiB7XG4gKiAgICd0b3AnOiAnMTJweCcsXG4gKiAgICdyaWdodCc6ICcyNHB4JyxcbiAqICAgJ2JvdHRvbSc6ICczNnB4JyxcbiAqICAgJ2xlZnQnOiAnNDhweCdcbiAqIH1cbiAqXG4gKiAvLyBTdHlsZXMgYXMgb2JqZWN0IHVzYWdlXG4gKiBjb25zdCBzdHlsZXMgPSB7XG4gKiAgIC4uLnBvc2l0aW9uKCdhYnNvbHV0ZScsICcxMnB4JywgJzI0cHgnLCAnMzZweCcsICc0OHB4JylcbiAqIH1cbiAqXG4gKiAvLyBzdHlsZWQtY29tcG9uZW50cyB1c2FnZVxuICogY29uc3QgZGl2ID0gc3R5bGVkLmRpdmBcbiAqICAgJHtwb3NpdGlvbignYWJzb2x1dGUnLCAnMTJweCcsICcyNHB4JywgJzM2cHgnLCAnNDhweCcpfVxuICogYFxuICpcbiAqIC8vIENTUyBhcyBKUyBPdXRwdXRcbiAqXG4gKiBkaXYge1xuICogICAncG9zaXRpb24nOiAnYWJzb2x1dGUnLFxuICogICAndG9wJzogJzEycHgnLFxuICogICAncmlnaHQnOiAnMjRweCcsXG4gKiAgICdib3R0b20nOiAnMzZweCcsXG4gKiAgICdsZWZ0JzogJzQ4cHgnXG4gKiB9XG4gKi9cblxuZnVuY3Rpb24gcG9zaXRpb24oZmlyc3RWYWx1ZSkge1xuICBmb3IgKHZhciBfbGVuID0gYXJndW1lbnRzLmxlbmd0aCwgdmFsdWVzID0gbmV3IEFycmF5KF9sZW4gPiAxID8gX2xlbiAtIDEgOiAwKSwgX2tleSA9IDE7IF9rZXkgPCBfbGVuOyBfa2V5KyspIHtcbiAgICB2YWx1ZXNbX2tleSAtIDFdID0gYXJndW1lbnRzW19rZXldO1xuICB9XG5cbiAgaWYgKHBvc2l0aW9uTWFwJDEuaW5kZXhPZihmaXJzdFZhbHVlKSA+PSAwICYmIGZpcnN0VmFsdWUpIHtcbiAgICByZXR1cm4gX2V4dGVuZHMoe30sIGRpcmVjdGlvbmFsUHJvcGVydHkuYXBwbHkodm9pZCAwLCBbJyddLmNvbmNhdCh2YWx1ZXMpKSwge1xuICAgICAgcG9zaXRpb246IGZpcnN0VmFsdWVcbiAgICB9KTtcbiAgfSBlbHNlIHtcbiAgICByZXR1cm4gZGlyZWN0aW9uYWxQcm9wZXJ0eS5hcHBseSh2b2lkIDAsIFsnJywgZmlyc3RWYWx1ZV0uY29uY2F0KHZhbHVlcykpO1xuICB9XG59XG5cbi8qKlxuICogU2hvcnRoYW5kIHRvIHNldCB0aGUgaGVpZ2h0IGFuZCB3aWR0aCBwcm9wZXJ0aWVzIGluIGEgc2luZ2xlIHN0YXRlbWVudC5cbiAqIEBleGFtcGxlXG4gKiAvLyBTdHlsZXMgYXMgb2JqZWN0IHVzYWdlXG4gKiBjb25zdCBzdHlsZXMgPSB7XG4gKiAgIC4uLnNpemUoJzMwMHB4JywgJzI1MHB4JylcbiAqIH1cbiAqXG4gKiAvLyBzdHlsZWQtY29tcG9uZW50cyB1c2FnZVxuICogY29uc3QgZGl2ID0gc3R5bGVkLmRpdmBcbiAqICAgJHtzaXplKCczMDBweCcsICcyNTBweCcpfVxuICogYFxuICpcbiAqIC8vIENTUyBhcyBKUyBPdXRwdXRcbiAqXG4gKiBkaXYge1xuICogICAnaGVpZ2h0JzogJzMwMHB4JyxcbiAqICAgJ3dpZHRoJzogJzI1MHB4JyxcbiAqIH1cbiAqL1xuZnVuY3Rpb24gc2l6ZShoZWlnaHQsIHdpZHRoKSB7XG4gIGlmICh3aWR0aCA9PT0gdm9pZCAwKSB7XG4gICAgd2lkdGggPSBoZWlnaHQ7XG4gIH1cblxuICByZXR1cm4ge1xuICAgIGhlaWdodDogaGVpZ2h0LFxuICAgIHdpZHRoOiB3aWR0aFxuICB9O1xufVxuXG52YXIgc3RhdGVNYXAkMSA9IFt1bmRlZmluZWQsIG51bGwsICdhY3RpdmUnLCAnZm9jdXMnLCAnaG92ZXInXTtcblxuZnVuY3Rpb24gdGVtcGxhdGUkMShzdGF0ZSkge1xuICByZXR1cm4gXCJpbnB1dFt0eXBlPVxcXCJjb2xvclxcXCJdXCIgKyBzdGF0ZSArIFwiLFxcbiAgICBpbnB1dFt0eXBlPVxcXCJkYXRlXFxcIl1cIiArIHN0YXRlICsgXCIsXFxuICAgIGlucHV0W3R5cGU9XFxcImRhdGV0aW1lXFxcIl1cIiArIHN0YXRlICsgXCIsXFxuICAgIGlucHV0W3R5cGU9XFxcImRhdGV0aW1lLWxvY2FsXFxcIl1cIiArIHN0YXRlICsgXCIsXFxuICAgIGlucHV0W3R5cGU9XFxcImVtYWlsXFxcIl1cIiArIHN0YXRlICsgXCIsXFxuICAgIGlucHV0W3R5cGU9XFxcIm1vbnRoXFxcIl1cIiArIHN0YXRlICsgXCIsXFxuICAgIGlucHV0W3R5cGU9XFxcIm51bWJlclxcXCJdXCIgKyBzdGF0ZSArIFwiLFxcbiAgICBpbnB1dFt0eXBlPVxcXCJwYXNzd29yZFxcXCJdXCIgKyBzdGF0ZSArIFwiLFxcbiAgICBpbnB1dFt0eXBlPVxcXCJzZWFyY2hcXFwiXVwiICsgc3RhdGUgKyBcIixcXG4gICAgaW5wdXRbdHlwZT1cXFwidGVsXFxcIl1cIiArIHN0YXRlICsgXCIsXFxuICAgIGlucHV0W3R5cGU9XFxcInRleHRcXFwiXVwiICsgc3RhdGUgKyBcIixcXG4gICAgaW5wdXRbdHlwZT1cXFwidGltZVxcXCJdXCIgKyBzdGF0ZSArIFwiLFxcbiAgICBpbnB1dFt0eXBlPVxcXCJ1cmxcXFwiXVwiICsgc3RhdGUgKyBcIixcXG4gICAgaW5wdXRbdHlwZT1cXFwid2Vla1xcXCJdXCIgKyBzdGF0ZSArIFwiLFxcbiAgICBpbnB1dDpub3QoW3R5cGVdKVwiICsgc3RhdGUgKyBcIixcXG4gICAgdGV4dGFyZWFcIiArIHN0YXRlO1xufVxuLyoqXG4gKiBQb3B1bGF0ZXMgc2VsZWN0b3JzIHRoYXQgdGFyZ2V0IGFsbCB0ZXh0IGlucHV0cy4gWW91IGNhbiBwYXNzIG9wdGlvbmFsIHN0YXRlcyB0byBhcHBlbmQgdG8gdGhlIHNlbGVjdG9ycy5cbiAqIEBleGFtcGxlXG4gKiAvLyBTdHlsZXMgYXMgb2JqZWN0IHVzYWdlXG4gKiBjb25zdCBzdHlsZXMgPSB7XG4gKiAgIFt0ZXh0SW5wdXRzKCdhY3RpdmUnKV06IHtcbiAqICAgICAnYm9yZGVyJzogJ25vbmUnXG4gKiAgIH1cbiAqIH1cbiAqXG4gKiAvLyBzdHlsZWQtY29tcG9uZW50cyB1c2FnZVxuICogY29uc3QgZGl2ID0gc3R5bGVkLmRpdmBcbiAqICAgPiAke3RleHRJbnB1dHMoJ2FjdGl2ZScpfSB7XG4gKiAgICAgYm9yZGVyOiBub25lO1xuICogICB9XG4gKiBgXG4gKlxuICogLy8gQ1NTIGluIEpTIE91dHB1dFxuICpcbiAqICAnaW5wdXRbdHlwZT1cImNvbG9yXCJdOmFjdGl2ZSxcbiAqICBpbnB1dFt0eXBlPVwiZGF0ZVwiXTphY3RpdmUsXG4gKiAgaW5wdXRbdHlwZT1cImRhdGV0aW1lXCJdOmFjdGl2ZSxcbiAqICBpbnB1dFt0eXBlPVwiZGF0ZXRpbWUtbG9jYWxcIl06YWN0aXZlLFxuICogIGlucHV0W3R5cGU9XCJlbWFpbFwiXTphY3RpdmUsXG4gKiAgaW5wdXRbdHlwZT1cIm1vbnRoXCJdOmFjdGl2ZSxcbiAqICBpbnB1dFt0eXBlPVwibnVtYmVyXCJdOmFjdGl2ZSxcbiAqICBpbnB1dFt0eXBlPVwicGFzc3dvcmRcIl06YWN0aXZlLFxuICogIGlucHV0W3R5cGU9XCJzZWFyY2hcIl06YWN0aXZlLFxuICogIGlucHV0W3R5cGU9XCJ0ZWxcIl06YWN0aXZlLFxuICogIGlucHV0W3R5cGU9XCJ0ZXh0XCJdOmFjdGl2ZSxcbiAqICBpbnB1dFt0eXBlPVwidGltZVwiXTphY3RpdmUsXG4gKiAgaW5wdXRbdHlwZT1cInVybFwiXTphY3RpdmUsXG4gKiAgaW5wdXRbdHlwZT1cIndlZWtcIl06YWN0aXZlLFxuICogIGlucHV0Om5vdChbdHlwZV0pOmFjdGl2ZSxcbiAqICB0ZXh0YXJlYTphY3RpdmUnOiB7XG4gKiAgICdib3JkZXInOiAnbm9uZSdcbiAqIH1cbiAqL1xuXG5cbmZ1bmN0aW9uIHRleHRJbnB1dHMoKSB7XG4gIGZvciAodmFyIF9sZW4gPSBhcmd1bWVudHMubGVuZ3RoLCBzdGF0ZXMgPSBuZXcgQXJyYXkoX2xlbiksIF9rZXkgPSAwOyBfa2V5IDwgX2xlbjsgX2tleSsrKSB7XG4gICAgc3RhdGVzW19rZXldID0gYXJndW1lbnRzW19rZXldO1xuICB9XG5cbiAgcmV0dXJuIHN0YXRlZnVsU2VsZWN0b3JzKHN0YXRlcywgdGVtcGxhdGUkMSwgc3RhdGVNYXAkMSk7XG59XG5cbi8qKlxuICogQWNjZXB0cyBhbnkgbnVtYmVyIG9mIHRyYW5zaXRpb24gdmFsdWVzIGFzIHBhcmFtZXRlcnMgZm9yIGNyZWF0aW5nIGEgc2luZ2xlIHRyYW5zaXRpb24gc3RhdGVtZW50LiBZb3UgbWF5IGFsc28gcGFzcyBhbiBhcnJheSBvZiBwcm9wZXJ0aWVzIGFzIHRoZSBmaXJzdCBwYXJhbWV0ZXIgdGhhdCB5b3Ugd291bGQgbGlrZSB0byBhcHBseSB0aGUgc2FtZSB0cmFuc2l0aW9uIHZhbHVlcyB0byAoc2Vjb25kIHBhcmFtZXRlcikuXG4gKiBAZXhhbXBsZVxuICogLy8gU3R5bGVzIGFzIG9iamVjdCB1c2FnZVxuICogY29uc3Qgc3R5bGVzID0ge1xuICogICAuLi50cmFuc2l0aW9ucygnb3BhY2l0eSAxLjBzIGVhc2UtaW4gMHMnLCAnd2lkdGggMi4wcyBlYXNlLWluIDJzJyksXG4gKiAgIC4uLnRyYW5zaXRpb25zKFsnY29sb3InLCAnYmFja2dyb3VuZC1jb2xvciddLCAnMi4wcyBlYXNlLWluIDJzJylcbiAqIH1cbiAqXG4gKiAvLyBzdHlsZWQtY29tcG9uZW50cyB1c2FnZVxuICogY29uc3QgZGl2ID0gc3R5bGVkLmRpdmBcbiAqICAgJHt0cmFuc2l0aW9ucygnb3BhY2l0eSAxLjBzIGVhc2UtaW4gMHMnLCAnd2lkdGggMi4wcyBlYXNlLWluIDJzJyl9O1xuICogICAke3RyYW5zaXRpb25zKFsnY29sb3InLCAnYmFja2dyb3VuZC1jb2xvciddLCAnMi4wcyBlYXNlLWluIDJzJyksfTtcbiAqIGBcbiAqXG4gKiAvLyBDU1MgYXMgSlMgT3V0cHV0XG4gKlxuICogZGl2IHtcbiAqICAgJ3RyYW5zaXRpb24nOiAnb3BhY2l0eSAxLjBzIGVhc2UtaW4gMHMsIHdpZHRoIDIuMHMgZWFzZS1pbiAycydcbiAqICAgJ3RyYW5zaXRpb24nOiAnY29sb3IgMi4wcyBlYXNlLWluIDJzLCBiYWNrZ3JvdW5kLWNvbG9yIDIuMHMgZWFzZS1pbiAycycsXG4gKiB9XG4gKi9cblxuZnVuY3Rpb24gdHJhbnNpdGlvbnMoKSB7XG4gIGZvciAodmFyIF9sZW4gPSBhcmd1bWVudHMubGVuZ3RoLCBwcm9wZXJ0aWVzID0gbmV3IEFycmF5KF9sZW4pLCBfa2V5ID0gMDsgX2tleSA8IF9sZW47IF9rZXkrKykge1xuICAgIHByb3BlcnRpZXNbX2tleV0gPSBhcmd1bWVudHNbX2tleV07XG4gIH1cblxuICBpZiAoQXJyYXkuaXNBcnJheShwcm9wZXJ0aWVzWzBdKSAmJiBwcm9wZXJ0aWVzLmxlbmd0aCA9PT0gMikge1xuICAgIHZhciB2YWx1ZSA9IHByb3BlcnRpZXNbMV07XG5cbiAgICBpZiAodHlwZW9mIHZhbHVlICE9PSAnc3RyaW5nJykge1xuICAgICAgdGhyb3cgbmV3IFBvbGlzaGVkRXJyb3IoNjEpO1xuICAgIH1cblxuICAgIHZhciB0cmFuc2l0aW9uc1N0cmluZyA9IHByb3BlcnRpZXNbMF0ubWFwKGZ1bmN0aW9uIChwcm9wZXJ0eSkge1xuICAgICAgcmV0dXJuIHByb3BlcnR5ICsgXCIgXCIgKyB2YWx1ZTtcbiAgICB9KS5qb2luKCcsICcpO1xuICAgIHJldHVybiB7XG4gICAgICB0cmFuc2l0aW9uOiB0cmFuc2l0aW9uc1N0cmluZ1xuICAgIH07XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIHRyYW5zaXRpb246IHByb3BlcnRpZXMuam9pbignLCAnKVxuICAgIH07XG4gIH1cbn1cblxuZXhwb3J0IHsgY3VycmllZEFkanVzdEh1ZSBhcyBhZGp1c3RIdWUsIGFuaW1hdGlvbiwgYmFja2dyb3VuZEltYWdlcywgYmFja2dyb3VuZHMsIGJldHdlZW4sIGJvcmRlciwgYm9yZGVyQ29sb3IsIGJvcmRlclJhZGl1cywgYm9yZGVyU3R5bGUsIGJvcmRlcldpZHRoLCBidXR0b25zLCBjbGVhckZpeCwgY29tcGxlbWVudCwgY292ZXIsIGNzc1ZhciwgY3VycmllZERhcmtlbiBhcyBkYXJrZW4sIGN1cnJpZWREZXNhdHVyYXRlIGFzIGRlc2F0dXJhdGUsIGRpcmVjdGlvbmFsUHJvcGVydHksIGVsbGlwc2lzLCBlbSwgZmx1aWRSYW5nZSwgZm9udEZhY2UsIGdldENvbnRyYXN0LCBnZXRMdW1pbmFuY2UsIGdldFZhbHVlQW5kVW5pdCwgZ3JheXNjYWxlLCBoaURQSSwgaGlkZVRleHQsIGhpZGVWaXN1YWxseSwgaHNsLCBoc2xUb0NvbG9yU3RyaW5nLCBoc2xhLCBpbnZlcnQsIGN1cnJpZWRMaWdodGVuIGFzIGxpZ2h0ZW4sIGxpbmVhckdyYWRpZW50LCBtYXJnaW4sIG1hdGgsIG1lZXRzQ29udHJhc3RHdWlkZWxpbmVzLCBjdXJyaWVkTWl4IGFzIG1peCwgbW9kdWxhclNjYWxlLCBub3JtYWxpemUsIGN1cnJpZWRPcGFjaWZ5IGFzIG9wYWNpZnksIHBhZGRpbmcsIHBhcnNlVG9Ic2wsIHBhcnNlVG9SZ2IsIHBvc2l0aW9uLCByYWRpYWxHcmFkaWVudCwgcmVhZGFibGVDb2xvciwgcmVtLCByZXRpbmFJbWFnZSwgcmdiLCByZ2JUb0NvbG9yU3RyaW5nLCByZ2JhLCBjdXJyaWVkU2F0dXJhdGUgYXMgc2F0dXJhdGUsIGN1cnJpZWRTZXRIdWUgYXMgc2V0SHVlLCBjdXJyaWVkU2V0TGlnaHRuZXNzIGFzIHNldExpZ2h0bmVzcywgY3VycmllZFNldFNhdHVyYXRpb24gYXMgc2V0U2F0dXJhdGlvbiwgY3VycmllZFNoYWRlIGFzIHNoYWRlLCBzaXplLCBzdHJpcFVuaXQsIHRleHRJbnB1dHMsIHRpbWluZ0Z1bmN0aW9ucywgY3VycmllZFRpbnQgYXMgdGludCwgdG9Db2xvclN0cmluZywgdHJhbnNpdGlvbnMsIGN1cnJpZWRUcmFuc3BhcmVudGl6ZSBhcyB0cmFuc3BhcmVudGl6ZSwgdHJpYW5nbGUsIHdvcmRXcmFwIH07XG4iLCJpbXBvcnQgKiBhcyBSZWFjdCBmcm9tICdyZWFjdCc7XG5pbXBvcnQgeyB1c2VTdGF0ZSwgdXNlRWZmZWN0LCBGQyB9IGZyb20gJ3JlYWN0JztcbmltcG9ydCB7IEkxOG4gfSBmcm9tICdyZWFjdC1yZWR1eC1pMThuJztcbmltcG9ydCAqIGFzIF8gZnJvbSAndW5kZXJzY29yZSc7XG5pbXBvcnQgc3R5bGVkLCB7IGNzcyB9IGZyb20gJ3N0eWxlZC1jb21wb25lbnRzJztcbmltcG9ydCB7IGRhcmtlbiB9IGZyb20gJ3BvbGlzaGVkJztcbmltcG9ydCB7IHRleHRDb2xvciwgYmFja2dyb3VuZENvbG9yLCBib3JkZXJDb2xvciB9IGZyb20gJy4vdGhlbWVDb2xvcic7XG5pbXBvcnQgeyBUUkFOU0xBVEVfTE9DQUxFX0tFWSB9IGZyb20gJ0Bjb25zdGFudHMvdHJhbnNsYXRpb24uY29uc3RhbnRzJztcbmltcG9ydCB7IFByb2R1Y3RTa3VJbmZvRW50aXR5LCBQcm9kdWN0U2t1R3JvdXBFbnRpdHkgfSBmcm9tICcuLi8uLi8uLi9tb2RlbHMvc2FsZVBhZ2UubW9kZWwnO1xuXG5pbnRlcmZhY2UgT3B0aW9uUHJvcHMge1xuICAgIGlzU2t1U3RvY2tVcGRhdGVkOiBib29sZWFuO1xuICAgIGxldmVsOiBudW1iZXI7XG4gICAgb3B0aW9uTmFtZTogc3RyaW5nO1xuICAgIG9wdGlvbkxpc3Q6IGFueTtcbiAgICBzZWxlY3RlZEtleTogc3RyaW5nO1xuICAgIG9uU2VsZWN0T3B0aW9uOiAoZSkgPT4gdm9pZDtcbn1cbmludGVyZmFjZSBTa3VHcm91cFByb3BzIHtcbiAgICBza3VHcm91cExldmVsMTogUHJvZHVjdFNrdUdyb3VwRW50aXR5O1xuICAgIHNrdUdyb3VwTGV2ZWwyOiBQcm9kdWN0U2t1R3JvdXBFbnRpdHk7XG59XG5pbnRlcmZhY2UgR3JvdXBPcHRpb25Qcm9wcyB7XG4gICAgbWF4U2t1TGV2ZWw6IG51bWJlcjtcbiAgICBza3VJbmZvTGlzdDogUHJvZHVjdFNrdUluZm9FbnRpdHlbXTtcbiAgICBza3VHcm91cDogU2t1R3JvdXBQcm9wcztcbiAgICB1cGRhdGVTZWxlY3RlZFNrdUlkPzogKGlkKSA9PiB2b2lkO1xuICAgIHVwZGF0ZVByb2R1Y3RTdG9jaz86IChza3VJbmZvTGlzdCkgPT4gdm9pZDtcbn1cblxuaW50ZXJmYWNlIElTa3VPcHRpb24ge1xuICAgIGFjdGl2ZWQ/OiBib29sZWFuO1xuICAgIGRpc2FibGVkPzogYm9vbGVhbjtcbiAgICBoaWRkZW4/OiBib29sZWFuO1xufVxuXG4vKipcbiAqIOWPluW+l1NLVSBJROaWueazlVxuICogQHBhcmFtIHNrdUluZm9MaXN0XG4gKiBAcGFyYW0gY3VycmVudEtleVxuICovXG5jb25zdCBnZXRTa3VJZCA9IChza3VJbmZvTGlzdDogUHJvZHVjdFNrdUluZm9FbnRpdHlbXSwgY3VycmVudEtleTogc3RyaW5nKTogbnVtYmVyID0+IHtcbiAgICBjb25zdCBrZXlzID0gY3VycmVudEtleS5zcGxpdCgnOycpO1xuICAgIGlmIChrZXlzWzFdID09PSAnJykge1xuICAgICAgICBjdXJyZW50S2V5ID0ga2V5c1swXTtcbiAgICB9XG4gICAgbGV0IHNrdUl0ZW0gPSBfLmZpbmQoc2t1SW5mb0xpc3QsIChpdGVtKSA9PiBpdGVtLnNrdUtleSA9PT0gY3VycmVudEtleSk7XG4gICAgcmV0dXJuIChza3VJdGVtICYmIHNrdUl0ZW0uc2t1SWQpIHx8IDA7XG59O1xuLyoqXG4gKiDmmK/lkKbpl5zoga9TS1VcbiAqL1xuY29uc3QgaXNSZWxhdGVkU2t1ID0gKGxldmVsOiBudW1iZXIsIHNrdUtleVBhcnQ6IHN0cmluZywgY29tYmluZWRTa3VLZXk6IHN0cmluZyk6IGJvb2xlYW4gPT4ge1xuICAgIHJldHVybiBsZXZlbCA9PT0gMiA/IGNvbWJpbmVkU2t1S2V5LnNwbGl0KCc7JylbMV0gPT09IHNrdUtleVBhcnQgOiBjb21iaW5lZFNrdUtleS5zcGxpdCgnOycpWzBdID09PSBza3VLZXlQYXJ0O1xufTtcbi8qKlxuICog6JmV55CGc2t16aCF55uu6aGv56S6ICjpirfllK7kuK3jgIHplovllZ/kuK0pXG4gKi9cbmNvbnN0IGdldFNrdURpc3BsYXlMaXN0ID0gKFxuICAgIHNrdUluZm9MaXN0OiBQcm9kdWN0U2t1SW5mb0VudGl0eVtdLFxuICAgIHNrdUdyb3VwTGlzdDogUHJvZHVjdFNrdUdyb3VwRW50aXR5LFxuICAgIG1heFNrdUxldmVsOiBudW1iZXIsXG4gICAgbGV2ZWw6IG51bWJlcixcbiAgICBzZWxlY3RlZFNrdUtleTogc3RyaW5nLFxuICAgIHNlbGVjdGVkU2t1S2V5TGV2ZWwyOiBzdHJpbmdcbikgPT4ge1xuICAgIGxldCBza3VEaXNwbGF5TGlzdDtcbiAgICBpZiAobWF4U2t1TGV2ZWwgPT09IDEpIHtcbiAgICAgICAgLy8g55W2U0tV5Y+q5pyJ5LiA6ZqO5bGkXG4gICAgICAgIHNrdURpc3BsYXlMaXN0ID0gc2t1R3JvdXBMaXN0LnNrdUtleUxpc3QubWFwKChza3VJdGVtKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBtYXRjaEl0ZW0gPSBfLmZpbmQoc2t1SW5mb0xpc3QsIChza3VJbmZvOiBhbnkpID0+IHtcbiAgICAgICAgICAgICAgICByZXR1cm4gc2t1SW5mby5za3VLZXkgPT09IHNrdUl0ZW0uc2t1S2V5O1xuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICByZXR1cm4geyBpc1Nob3c6IG1hdGNoSXRlbS5pc1Nob3csIGlzU2VsbGluZzogbWF0Y2hJdGVtLnNlbGxpbmdRdHkgPiAwLCAuLi5za3VJdGVtIH07XG4gICAgICAgIH0pO1xuICAgIH0gZWxzZSBpZiAobWF4U2t1TGV2ZWwgPT09IDIpIHtcbiAgICAgICAgc2t1RGlzcGxheUxpc3QgPSBza3VHcm91cExpc3Quc2t1S2V5TGlzdC5tYXAoKHNrdUl0ZW0pID0+IHtcbiAgICAgICAgICAgIGxldCBpc1Nob3cgPSBmYWxzZTtcbiAgICAgICAgICAgIGxldCBpc1NlbGxpbmcgPSBmYWxzZTtcbiAgICAgICAgICAgIGlmIChsZXZlbCA9PT0gMSAmJiBzZWxlY3RlZFNrdUtleUxldmVsMiAhPT0gJycpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBtYXRjaGVkU2t1SXRlbSA9IF8uZmluZChza3VJbmZvTGlzdCwgKHNrdUluZm8pID0+IHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGAke3NrdUl0ZW0uc2t1S2V5fTske3NlbGVjdGVkU2t1S2V5TGV2ZWwyfWAgPT09IHNrdUluZm8uc2t1S2V5O1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIGlzU2VsbGluZyA9IG1hdGNoZWRTa3VJdGVtICYmIG1hdGNoZWRTa3VJdGVtLnNlbGxpbmdRdHkgPiAwO1xuICAgICAgICAgICAgICAgIGlzU2hvdyA9IG1hdGNoZWRTa3VJdGVtICYmIG1hdGNoZWRTa3VJdGVtLmlzU2hvdztcbiAgICAgICAgICAgIH0gZWxzZSBpZiAobGV2ZWwgPT09IDIgJiYgc2VsZWN0ZWRTa3VLZXkgIT09ICcnKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgbWF0Y2hlZFNrdUl0ZW0gPSBfLmZpbmQoc2t1SW5mb0xpc3QsIChza3VJbmZvKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBgJHtzZWxlY3RlZFNrdUtleX07JHtza3VJdGVtLnNrdUtleX1gID09PSBza3VJbmZvLnNrdUtleTtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICBpc1NlbGxpbmcgPSBtYXRjaGVkU2t1SXRlbSAmJiBtYXRjaGVkU2t1SXRlbS5zZWxsaW5nUXR5ID4gMDtcbiAgICAgICAgICAgICAgICBpc1Nob3cgPSBtYXRjaGVkU2t1SXRlbSAmJiBtYXRjaGVkU2t1SXRlbS5pc1Nob3c7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKHNlbGVjdGVkU2t1S2V5ID09PSAnJyB8fCBzZWxlY3RlZFNrdUtleUxldmVsMiA9PT0gJycpIHtcbiAgICAgICAgICAgICAgICBsZXQgcmVsYXRlZFNrdUl0ZW1zID0gW107XG4gICAgICAgICAgICAgICAgcmVsYXRlZFNrdUl0ZW1zID0gXy5maWx0ZXIoc2t1SW5mb0xpc3QsIChza3VJbmZvKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBpc1JlbGF0ZWRTa3UobGV2ZWwsIHNrdUl0ZW0uc2t1S2V5LCBza3VJbmZvLnNrdUtleSkgPT09IHRydWU7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgY29uc3QgbWF0Y2hlZFNlbGxpbmdJdGVtID0gXy5maW5kKHJlbGF0ZWRTa3VJdGVtcywgKHNrdUluZm8pID0+IHNrdUluZm8uc2VsbGluZ1F0eSA+IDApO1xuICAgICAgICAgICAgICAgIGNvbnN0IG1hdGNoZWRTaG93SXRlbSA9IF8uZmluZChyZWxhdGVkU2t1SXRlbXMsIChza3VJbmZvKSA9PiBza3VJbmZvLmlzU2hvdyA9PT0gdHJ1ZSk7XG5cbiAgICAgICAgICAgICAgICBpc1NlbGxpbmcgPSAobWF0Y2hlZFNlbGxpbmdJdGVtICYmIG1hdGNoZWRTZWxsaW5nSXRlbS5zZWxsaW5nUXR5ID4gMCkgfHwgZmFsc2U7XG4gICAgICAgICAgICAgICAgaXNTaG93ID0gKG1hdGNoZWRTaG93SXRlbSAmJiBtYXRjaGVkU2hvd0l0ZW0uaXNTaG93KSB8fCBmYWxzZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiB7IGlzU2hvdywgaXNTZWxsaW5nLCAuLi5za3VJdGVtIH07XG4gICAgICAgIH0pO1xuICAgIH1cbiAgICByZXR1cm4gc2t1RGlzcGxheUxpc3Q7XG59O1xuLyoqXG4gKiDlj5blvpfpl5zoga/pgbjpoIXlj6/llK7nmoRrZXnlgLxcbiAqIEBwYXJhbSBvcHRpb25MaXN0XG4gKi9cbmNvbnN0IGdldFNlbGxpbmdTa3VLZXkgPSAob3B0aW9uTGlzdCkgPT4ge1xuICAgIGxldCBza3VLZXkgPSAnJztcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IG9wdGlvbkxpc3QubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgaWYgKG9wdGlvbkxpc3RbaV0uaXNTZWxsaW5nKSB7XG4gICAgICAgICAgICBza3VLZXkgPSBvcHRpb25MaXN0W2ldLnNrdUtleTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgfVxuICAgIHJldHVybiBza3VLZXk7XG59O1xuXG4vLyBzdHlsZVxuY29uc3QgZGlzYWJsZWRTa3VPcHRpb24gPSAoKSA9PiB7XG4gICAgcmV0dXJuIGNzc2BcbiAgICAgICAgYmFja2dyb3VuZDogI2YwZjBmMDtcbiAgICAgICAgY3Vyc29yOiBwb2ludGVyO1xuICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgICAgIGEge1xuICAgICAgICAgICAgdGV4dC1kZWNvcmF0aW9uOiBsaW5lLXRocm91Z2g7XG4gICAgICAgIH1cbiAgICAgICAgLyogdG9vbHRpcCBzdHlsZSAqL1xuICAgICAgICAmOmJlZm9yZSB7XG4gICAgICAgICAgICBhbmltYXRpb246IGZhZGUtaW4gMC4ycyBlYXNlLW91dDtcbiAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6ICM2NjY7XG4gICAgICAgICAgICBib3JkZXItcmFkaXVzOiAzcHg7XG4gICAgICAgICAgICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xuICAgICAgICAgICAgY29sb3I6ICNmZmY7XG4gICAgICAgICAgICBjb250ZW50OiBhdHRyKGRhdGEtdG9vbHRpcC1jb250ZW50KTtcbiAgICAgICAgICAgIGZvbnQtc2l6ZTogMC44ZW07XG4gICAgICAgICAgICBsZWZ0OiA1MCU7XG4gICAgICAgICAgICBtaW4td2lkdGg6IDQ2cHg7XG4gICAgICAgICAgICBwYWRkaW5nOiA0cHggMDtcbiAgICAgICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgICAgICAgIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgICAgICAgICAgIHRvcDogMTAwJTtcbiAgICAgICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWCgtNTAlKTtcbiAgICAgICAgICAgIHZpc2liaWxpdHk6IGhpZGRlbjtcbiAgICAgICAgICAgIHdvcmQtYnJlYWs6IGJyZWFrLXdvcmQ7XG4gICAgICAgICAgICB6LWluZGV4OiAxO1xuICAgICAgICB9XG4gICAgICAgIC8qIHRvb2x0aXAg5bCP566t6aCtICovXG4gICAgICAgICY6YWZ0ZXIge1xuICAgICAgICAgICAgYm9yZGVyLWNvbG9yOiB0cmFuc3BhcmVudCB0cmFuc3BhcmVudCAjNjY2NjY2IHRyYW5zcGFyZW50O1xuICAgICAgICAgICAgYm9yZGVyLXN0eWxlOiBzb2xpZDtcbiAgICAgICAgICAgIGJvcmRlci13aWR0aDogNnB4O1xuICAgICAgICAgICAgY29udGVudDogJyc7XG4gICAgICAgICAgICBoZWlnaHQ6IDA7XG4gICAgICAgICAgICBsZWZ0OiA1MCU7XG4gICAgICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICAgICAgICB0b3A6IGNhbGMoMTAwJSAtIDExcHgpO1xuICAgICAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKC01MCUpO1xuICAgICAgICAgICAgdmlzaWJpbGl0eTogaGlkZGVuO1xuICAgICAgICAgICAgd2lkdGg6IDA7XG4gICAgICAgIH1cbiAgICAgICAgJjpob3ZlciB7XG4gICAgICAgICAgICAmOmJlZm9yZSxcbiAgICAgICAgICAgICY6YWZ0ZXIge1xuICAgICAgICAgICAgICAgIHZpc2liaWxpdHk6IHZpc2libGU7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICBgO1xufTtcblxuY29uc3Qgc2t1T3B0aW9uQWN0aXZlZFN0eWxlID0gKHByb3BzKSA9PiB7XG4gICAgcmV0dXJuIGNzc2BcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogJHtiYWNrZ3JvdW5kQ29sb3IocHJvcHMpfTtcbiAgICAgICAgYm94LXNoYWRvdzogMCAwIDAgMXB4ICR7Ym9yZGVyQ29sb3IocHJvcHMpfTtcbiAgICAgICAgY29sb3I6ICR7dGV4dENvbG9yKHByb3BzKX07XG4gICAgICAgICY6aG92ZXIge1xuICAgICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogJHtkYXJrZW4oMC4xLCBiYWNrZ3JvdW5kQ29sb3IocHJvcHMpKX07XG4gICAgICAgICAgICBib3gtc2hhZG93OiAwIDAgMCAxcHggJHtkYXJrZW4oMC4xLCBib3JkZXJDb2xvcihwcm9wcykpfTtcbiAgICAgICAgfVxuICAgIGA7XG59O1xuXG5jb25zdCBza3VPcHRpb25Ib3ZlclN0eWxlID0gKHByb3BzKSA9PiB7XG4gICAgcmV0dXJuIGNzc2BcbiAgICAgICAgJjpob3ZlciB7XG4gICAgICAgICAgICBib3gtc2hhZG93OiAwIDAgMCAxcHggJHtib3JkZXJDb2xvcihwcm9wcyl9O1xuICAgICAgICB9XG4gICAgYDtcbn07XG5cbmV4cG9ydCBjb25zdCBTa3VPcHRpb25zID0gc3R5bGVkLmRpdmBcbiAgICBwYWRkaW5nLWJvdHRvbTogMTVweDtcbmA7XG5cbmV4cG9ydCBjb25zdCBTa3VPcHRpb25zTGV2ZWwgPSBzdHlsZWQuZGl2YFxuICAgIHBhZGRpbmctdG9wOiAxMHB4O1xuYDtcblxuZXhwb3J0IGNvbnN0IFNrdU9wdGlvbnNUaXRsZSA9IHN0eWxlZC5oNmBcbiAgICBjb2xvcjogIzAwMDAwMDtcbiAgICBmb250LXNpemU6IDAuOGVtO1xuICAgIGZvbnQtd2VpZ2h0OiA0MDA7XG4gICAgbGluZS1oZWlnaHQ6IDEuNTtcbiAgICB0ZXh0LWFsaWduOiBsZWZ0O1xuYDtcblxuZXhwb3J0IGNvbnN0IFNrdU9wdGlvbnNDb250YWluZXIgPSBzdHlsZWQudWxgXG4gICAgcGFkZGluZzogMnB4O1xuICAgICY6YmVmb3JlLFxuICAgICY6YWZ0ZXIge1xuICAgICAgICBjbGVhcjogYm90aDtcbiAgICAgICAgY29udGVudDogJyc7XG4gICAgICAgIGRpc3BsYXk6IHRhYmxlO1xuICAgIH1cbmA7XG5cbmV4cG9ydCBjb25zdCBTa3VPcHRpb24gPSBzdHlsZWQubGk8SVNrdU9wdGlvbj5gXG4gICAgYmFja2dyb3VuZC1jb2xvcjogI2ZmZjtcbiAgICBib3JkZXItcmFkaXVzOiAzcHg7XG4gICAgYm94LXNoYWRvdzogMCAwIDAgMXB4ICNkZGQ7XG4gICAgY29sb3I6ICM2YjZiNmI7XG4gICAgZGlzcGxheTogJHsocHJvcHMpID0+IChwcm9wcy5oaWRkZW4gPyAnbm9uZScgOiAnaW5saW5lLWJsb2NrJyl9O1xuICAgIGZsb2F0OiBsZWZ0O1xuICAgIG1hcmdpbjogOHB4IDhweCAwIDA7XG5cbiAgICAkeyhwcm9wcykgPT4ge1xuICAgICAgICAvLyBvcHRpb24gZGlzYWJsZWQgc3R5bGVcbiAgICAgICAgaWYgKHByb3BzLmRpc2FibGVkKSB7XG4gICAgICAgICAgICByZXR1cm4gZGlzYWJsZWRTa3VPcHRpb24oKTtcbiAgICAgICAgfSBlbHNlIGlmIChwcm9wcy5hY3RpdmVkKSB7XG4gICAgICAgICAgICByZXR1cm4gc2t1T3B0aW9uQWN0aXZlZFN0eWxlKHByb3BzKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiBza3VPcHRpb25Ib3ZlclN0eWxlKHByb3BzKTtcbiAgICAgICAgfVxuICAgIH19XG5gO1xuXG5leHBvcnQgY29uc3QgU2t1T3B0aW9uQnV0dG9uID0gc3R5bGVkLmFgXG4gICAgYm94LXNpemluZzogYm9yZGVyLWJveDtcbiAgICBjb2xvcjogaW5oZXJpdDtcbiAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gICAgZm9udC1zaXplOiAwLjhlbTtcbiAgICBsaW5lLWhlaWdodDogMS4yO1xuICAgIG1pbi13aWR0aDogNDZweDtcbiAgICBwYWRkaW5nOiA1cHggMTZweDtcbiAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gICAgd29yZC1icmVhazogYnJlYWstYWxsO1xuYDtcblxuLyoqXG4gKiDllq7pmo7pgbjpoIXmuIXllq7lhYPku7ZcbiAqIEBwYXJhbSBwcm9wc1xuICovXG5leHBvcnQgY29uc3QgUHJvZHVjdE9wdGlvbnM6IEZDPE9wdGlvblByb3BzPiA9IChwcm9wcykgPT4ge1xuICAgIGNvbnN0IHsgbGV2ZWwsIG9wdGlvbk5hbWUsIG9wdGlvbkxpc3QsIGlzU2t1U3RvY2tVcGRhdGVkLCBzZWxlY3RlZEtleSwgb25TZWxlY3RPcHRpb24gfSA9IHByb3BzO1xuICAgIHJldHVybiAoXG4gICAgICAgIDxTa3VPcHRpb25zPlxuICAgICAgICAgICAge29wdGlvbkxpc3QgJiYgb3B0aW9uTGlzdC5sZW5ndGggPiAwICYmIChcbiAgICAgICAgICAgICAgICA8U2t1T3B0aW9uc0xldmVsPlxuICAgICAgICAgICAgICAgICAgICA8U2t1T3B0aW9uc1RpdGxlPntvcHRpb25OYW1lfTwvU2t1T3B0aW9uc1RpdGxlPlxuICAgICAgICAgICAgICAgICAgICA8U2t1T3B0aW9uc0NvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICAgICAgICAgIHtvcHRpb25MaXN0Lm1hcCgoc2t1SXRlbSwgaXRlbUluZGV4KSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPFNrdU9wdGlvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga2V5PXtpdGVtSW5kZXh9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhLXRvb2x0aXAtY29udGVudD17XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXNTa3VTdG9ja1VwZGF0ZWQgPT09IHRydWVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPyBJMThuLnQoVFJBTlNMQVRFX0xPQ0FMRV9LRVkuRlJPTlRFTkQuTElCLk9VVF9PRl9TVE9DSylcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBJMThuLnQoVFJBTlNMQVRFX0xPQ0FMRV9LRVkuRlJPTlRFTkQuTElCLlVQREFURSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFjdGl2ZWQ9e3NrdUl0ZW0uaXNTZWxsaW5nID09PSB0cnVlICYmIHNrdUl0ZW0uc2t1S2V5ID09PSBzZWxlY3RlZEtleX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhpZGRlbj17c2t1SXRlbS5pc1Nob3cgPT09IGZhbHNlfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlzYWJsZWQ9eyFza3VJdGVtLmlzU2VsbGluZ31cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPFNrdU9wdGlvbkJ1dHRvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGEtc2t1LWtleT17c2t1SXRlbS5za3VLZXl9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YS1za3UtbmFtZT17c2t1SXRlbS5za3VOYW1lfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGEtaXMtc2VsbGluZz17c2t1SXRlbS5pc1NlbGxpbmd9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YS1zZWxlY3RlZC1za3UtbGV2ZWw9e2xldmVsfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9e29uU2VsZWN0T3B0aW9ufVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtza3VJdGVtLnNrdU5hbWV9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L1NrdU9wdGlvbkJ1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9Ta3VPcHRpb24+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pfVxuICAgICAgICAgICAgICAgICAgICA8L1NrdU9wdGlvbnNDb250YWluZXI+XG4gICAgICAgICAgICAgICAgPC9Ta3VPcHRpb25zTGV2ZWw+XG4gICAgICAgICAgICApfVxuICAgICAgICA8L1NrdU9wdGlvbnM+XG4gICAgKTtcbn07XG4vKipcbiAqIOe1hOWQiOmajuWxpOmBuOmghea4heWWruWFg+S7tlxuICogQHBhcmFtIHByb3BzXG4gKi9cbmV4cG9ydCBjb25zdCBQcm9kdWN0R3JvdXBPcHRpb246IEZDPEdyb3VwT3B0aW9uUHJvcHM+ID0gKHByb3BzKSA9PiB7XG4gICAgY29uc3QgeyBza3VJbmZvTGlzdCwgc2t1R3JvdXAsIG1heFNrdUxldmVsLCB1cGRhdGVTZWxlY3RlZFNrdUlkLCB1cGRhdGVQcm9kdWN0U3RvY2sgfSA9IHByb3BzO1xuICAgIGNvbnN0IFtzZWxlY3RlZFNrdUtleSwgc2V0U2VsZWN0ZWRTa3VLZXldID0gdXNlU3RhdGUoJycpO1xuICAgIGNvbnN0IFtzZWxlY3RlZFNrdUtleUxldmVsMiwgc2V0U2VsZWN0ZWRTa3VLZXlMZXZlbDJdID0gdXNlU3RhdGUoJycpO1xuICAgIGNvbnN0IFtpc1NrdVN0b2NrVXBkYXRlLCBzZXRJc1NrdVN0b2NrVXBkYXRlZF0gPSB1c2VTdGF0ZSh0cnVlKTtcbiAgICBjb25zdCBvcHRpb25MaXN0MSA9IHNrdUdyb3VwLnNrdUdyb3VwTGV2ZWwxXG4gICAgICAgID8gZ2V0U2t1RGlzcGxheUxpc3Qoc2t1SW5mb0xpc3QsIHNrdUdyb3VwLnNrdUdyb3VwTGV2ZWwxLCBtYXhTa3VMZXZlbCwgMSwgc2VsZWN0ZWRTa3VLZXksIHNlbGVjdGVkU2t1S2V5TGV2ZWwyKVxuICAgICAgICA6IG51bGw7XG4gICAgY29uc3Qgb3B0aW9uTGlzdDIgPSBza3VHcm91cC5za3VHcm91cExldmVsMlxuICAgICAgICA/IGdldFNrdURpc3BsYXlMaXN0KHNrdUluZm9MaXN0LCBza3VHcm91cC5za3VHcm91cExldmVsMiwgbWF4U2t1TGV2ZWwsIDIsIHNlbGVjdGVkU2t1S2V5LCBzZWxlY3RlZFNrdUtleUxldmVsMilcbiAgICAgICAgOiBudWxsO1xuICAgIC8vIOWIneWni+mBuOaTh1NLVSBJRFxuICAgIGxldCBzZWxlY3RlZFNrdUlkO1xuICAgIGxldCBjdXJyZW50S2V5ID0gJyc7XG4gICAgbGV0IHNlbGxpbmdTa3VLZXkgPSAnJztcblxuICAgIC8vIOeVtuacieS6jOmajumhr+ekuueLgOaFi+S4lOm7nuaTiumBuOWPluaZgu+8jOmcgOmAo+WLleWPpuS4gOmajumBuOmgheiZleeQhlxuICAgIGlmICghaXNTa3VTdG9ja1VwZGF0ZSkge1xuICAgICAgICBpZiAobWF4U2t1TGV2ZWwgPT09IDEpIHtcbiAgICAgICAgICAgIHNlbGVjdGVkU2t1SWQgPSBnZXRTa3VJZChza3VJbmZvTGlzdCwgc2VsZWN0ZWRTa3VLZXkpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgaWYgKHNlbGVjdGVkU2t1S2V5TGV2ZWwyID09PSAnJykge1xuICAgICAgICAgICAgICAgIHNlbGxpbmdTa3VLZXkgPSBnZXRTZWxsaW5nU2t1S2V5KG9wdGlvbkxpc3QyKTtcbiAgICAgICAgICAgICAgICBjdXJyZW50S2V5ID0gc2VsZWN0ZWRTa3VLZXkgKyAnOycgKyBzZWxsaW5nU2t1S2V5O1xuICAgICAgICAgICAgICAgIHNldFNlbGVjdGVkU2t1S2V5TGV2ZWwyKHNlbGxpbmdTa3VLZXkpO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChzZWxlY3RlZFNrdUtleSA9PT0gJycpIHtcbiAgICAgICAgICAgICAgICBzZWxsaW5nU2t1S2V5ID0gZ2V0U2VsbGluZ1NrdUtleShvcHRpb25MaXN0MSk7XG4gICAgICAgICAgICAgICAgY3VycmVudEtleSA9IHNlbGxpbmdTa3VLZXkgKyAnOycgKyBzZWxlY3RlZFNrdUtleUxldmVsMjtcbiAgICAgICAgICAgICAgICBzZXRTZWxlY3RlZFNrdUtleShzZWxsaW5nU2t1S2V5KTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgY3VycmVudEtleSA9IHNlbGVjdGVkU2t1S2V5ICsgJzsnICsgc2VsZWN0ZWRTa3VLZXlMZXZlbDI7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBzZWxlY3RlZFNrdUlkID0gZ2V0U2t1SWQoc2t1SW5mb0xpc3QsIGN1cnJlbnRLZXkpO1xuICAgICAgICB9XG4gICAgICAgIC8vIGNvbnNvbGUubG9nKCfmm7TmlrBJRDonLCBzZWxlY3RlZFNrdUlkKTtcbiAgICAgICAgc2V0SXNTa3VTdG9ja1VwZGF0ZWQodHJ1ZSk7XG4gICAgICAgIC8vIOabtOaWsFNrdSBJRFxuICAgICAgICB1cGRhdGVTZWxlY3RlZFNrdUlkKHNlbGVjdGVkU2t1SWQpO1xuICAgIH1cbiAgICAvLyDpgbjmk4dTS1XpoIXnm67kuovku7bomZXnkIZcbiAgICBjb25zdCBvblNlbGVjdFNrdUl0ZW0gPSAoZTogUmVhY3QuU3ludGhldGljRXZlbnQ8RWxlbWVudD4pID0+IHtcbiAgICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICBlLnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgICBjb25zdCB0YXJnZXQgPSBlLmN1cnJlbnRUYXJnZXQ7XG4gICAgICAgIGNvbnN0IHNrdUtleTogc3RyaW5nID0gdGFyZ2V0LmdldEF0dHJpYnV0ZSgnZGF0YS1za3Uta2V5Jyk7XG4gICAgICAgIGNvbnN0IGlzU2VsbGluZzogYm9vbGVhbiA9IEpTT04ucGFyc2UodGFyZ2V0LmdldEF0dHJpYnV0ZSgnZGF0YS1pcy1zZWxsaW5nJykpO1xuICAgICAgICBjb25zdCBzZWxlY3RlZFNrdUxldmVsOiBudW1iZXIgPSBwYXJzZUludCh0YXJnZXQuZ2V0QXR0cmlidXRlKCdkYXRhLXNlbGVjdGVkLXNrdS1sZXZlbCcpLCAxMCk7XG5cbiAgICAgICAgaWYgKGlzU2VsbGluZyAhPT0gdHJ1ZSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIC8vIOmYsuatoumHjeikh+m7nuaTiuW3sumBuOWPlueahOmgheebrlxuICAgICAgICBpZiAoc2VsZWN0ZWRTa3VLZXkgPT09IHNrdUtleSB8fCBzZWxlY3RlZFNrdUtleUxldmVsMiA9PT0gc2t1S2V5KSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgaWYgKG1heFNrdUxldmVsID09PSAxKSB7XG4gICAgICAgICAgICBzZXRTZWxlY3RlZFNrdUtleShza3VLZXkpOyAvLyDpgbjlj5bkuIDpmo7nmoTpoIXnm65cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIC8vIOWIpOaWt+eVtuWJjemBuOWPlueahOmajuWxpO+8jOe1hOWQiOeVtuWJjeW3sumBuOWPlueahGtleSvkuIrkuIDmrKHntIDpjITpgbjlj5bpmo7lsaTnmoRrZXlcbiAgICAgICAgICAgIGlmIChzZWxlY3RlZFNrdUxldmVsID09PSAxKSB7XG4gICAgICAgICAgICAgICAgc2V0U2VsZWN0ZWRTa3VLZXkoc2t1S2V5KTsgLy8g6YG45Y+W5LiA6ZqO55qE6aCF55uuXG4gICAgICAgICAgICB9IGVsc2UgaWYgKHNlbGVjdGVkU2t1TGV2ZWwgPT09IDIpIHtcbiAgICAgICAgICAgICAgICBzZXRTZWxlY3RlZFNrdUtleUxldmVsMihza3VLZXkpOyAvLyDpgbjlj5bkuozpmo7nmoTpoIXnm65cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICAvLyBjb25zb2xlLmxvZygn6YG45Y+W55qEc2t1S2V5OicsIHNrdUtleSk7XG4gICAgICAgIC8vIOabtOaWsOW6q+WtmOmWi+mXnFxuICAgICAgICBzZXRJc1NrdVN0b2NrVXBkYXRlZChmYWxzZSk7XG4gICAgICAgIC8vIOabtOaWsOW6q+WtmOiZleeQhlxuICAgICAgICB1cGRhdGVQcm9kdWN0U3RvY2soc2t1SW5mb0xpc3QpO1xuICAgIH07XG5cbiAgICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgICAgICAvLyDnlbZTS1XkuIDpmo7kuJTlj6rmnInliankuIDlgIvpgbjpoIXlsLHnm7TmjqXpgbjlj5ZcbiAgICAgICAgaWYgKG1heFNrdUxldmVsID09PSAxICYmIG9wdGlvbkxpc3QxICYmIG9wdGlvbkxpc3QxLmxlbmd0aCA8PSAxKSB7XG4gICAgICAgICAgICBjb25zdCB7IHNrdUtleSB9ID0gXy5maXJzdChvcHRpb25MaXN0MSk7XG4gICAgICAgICAgICBjb25zdCBza3VJZCA9IGdldFNrdUlkKHNrdUluZm9MaXN0LCBza3VLZXkpO1xuICAgICAgICAgICAgc2V0U2VsZWN0ZWRTa3VLZXkoc2t1S2V5KTtcbiAgICAgICAgICAgIHNldElzU2t1U3RvY2tVcGRhdGVkKHRydWUpO1xuICAgICAgICAgICAgdXBkYXRlU2VsZWN0ZWRTa3VJZChza3VJZCk7XG4gICAgICAgIH1cbiAgICB9LCBbXSk7XG5cbiAgICByZXR1cm4gKFxuICAgICAgICA8UmVhY3QuRnJhZ21lbnQ+XG4gICAgICAgICAgICB7b3B0aW9uTGlzdDEgJiYgKFxuICAgICAgICAgICAgICAgIDxQcm9kdWN0T3B0aW9uc1xuICAgICAgICAgICAgICAgICAgICBsZXZlbD17MX1cbiAgICAgICAgICAgICAgICAgICAgaXNTa3VTdG9ja1VwZGF0ZWQ9e2lzU2t1U3RvY2tVcGRhdGV9XG4gICAgICAgICAgICAgICAgICAgIG9wdGlvbk5hbWU9e3NrdUdyb3VwLnNrdUdyb3VwTGV2ZWwxLnNrdUdyb3VwTmFtZX1cbiAgICAgICAgICAgICAgICAgICAgb3B0aW9uTGlzdD17b3B0aW9uTGlzdDF9XG4gICAgICAgICAgICAgICAgICAgIHNlbGVjdGVkS2V5PXtzZWxlY3RlZFNrdUtleX1cbiAgICAgICAgICAgICAgICAgICAgb25TZWxlY3RPcHRpb249e29uU2VsZWN0U2t1SXRlbX1cbiAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgKX1cbiAgICAgICAgICAgIHtvcHRpb25MaXN0MiAmJiAoXG4gICAgICAgICAgICAgICAgPFByb2R1Y3RPcHRpb25zXG4gICAgICAgICAgICAgICAgICAgIGxldmVsPXsyfVxuICAgICAgICAgICAgICAgICAgICBpc1NrdVN0b2NrVXBkYXRlZD17aXNTa3VTdG9ja1VwZGF0ZX1cbiAgICAgICAgICAgICAgICAgICAgb3B0aW9uTmFtZT17c2t1R3JvdXAuc2t1R3JvdXBMZXZlbDIuc2t1R3JvdXBOYW1lfVxuICAgICAgICAgICAgICAgICAgICBvcHRpb25MaXN0PXtvcHRpb25MaXN0Mn1cbiAgICAgICAgICAgICAgICAgICAgc2VsZWN0ZWRLZXk9e3NlbGVjdGVkU2t1S2V5TGV2ZWwyfVxuICAgICAgICAgICAgICAgICAgICBvblNlbGVjdE9wdGlvbj17b25TZWxlY3RTa3VJdGVtfVxuICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICApfVxuICAgICAgICA8L1JlYWN0LkZyYWdtZW50PlxuICAgICk7XG59O1xuIiwiaW1wb3J0IHN0eWxlZCwgeyBjc3MgfSBmcm9tICdzdHlsZWQtY29tcG9uZW50cyc7XG5pbXBvcnQgeyBkYXJrZW4gfSBmcm9tICdwb2xpc2hlZCc7XG5pbXBvcnQgXyBmcm9tICd1bmRlcnNjb3JlJztcbmltcG9ydCB7IGRldmljZVV0aWxpdHkgfSBmcm9tICdAdXRpbGl0aWVzL2luZGV4JztcbmltcG9ydCB7IEJST1dTSU5HX01PREUgfSBmcm9tICdAY29uc3RhbnRzL2RldmljZS5jb25zdGFudHMnO1xuXG50eXBlIFNpemUgPSAnYXV0bycgfCAnbm9ybWFsJyB8ICdzbWFsbCcgfCAnZml0JztcbnR5cGUgVmFyaWFudCA9ICdjb250YWluZWQnIHwgJ291dGxpbmVkJyB8ICdub3JtYWwnO1xuXG5pbnRlcmZhY2UgSUJ1dHRvblByb3BzIHtcbiAgICB2YXJpYW50PzogVmFyaWFudDtcbiAgICBkaXNhYmxlPzogYm9vbGVhbjtcbiAgICBzaXplPzogU2l6ZTtcbn1cblxuY29uc3QgYnV0dG9uU2l6ZSA9IChzaXplOiBTaXplKSA9PiB7XG4gICAgc3dpdGNoIChzaXplKSB7XG4gICAgICAgIGNhc2UgJ2F1dG8nOlxuICAgICAgICAgICAgcmV0dXJuIGNzc2BcbiAgICAgICAgICAgICAgICB3aWR0aDogMTAwJTtcbiAgICAgICAgICAgICAgICBoZWlnaHQ6IDQwcHg7XG4gICAgICAgICAgICAgICAgbGluZS1oZWlnaHQ6IDQwcHg7XG4gICAgICAgICAgICBgO1xuICAgICAgICBjYXNlICdub3JtYWwnOlxuICAgICAgICAgICAgcmV0dXJuIGNzc2BcbiAgICAgICAgICAgICAgICB3aWR0aDogMTMxcHg7XG4gICAgICAgICAgICAgICAgaGVpZ2h0OiA0MHB4O1xuICAgICAgICAgICAgICAgIGxpbmUtaGVpZ2h0OiA0MHB4O1xuICAgICAgICAgICAgYDtcbiAgICAgICAgY2FzZSAnc21hbGwnOlxuICAgICAgICAgICAgcmV0dXJuIGNzc2BcbiAgICAgICAgICAgICAgICB3aWR0aDogNjBweDtcbiAgICAgICAgICAgICAgICBtYXgtd2lkdGg6IDYwcHg7XG4gICAgICAgICAgICAgICAgaGVpZ2h0OiAyOHB4O1xuICAgICAgICAgICAgICAgIGxpbmUtaGVpZ2h0OiAyOHB4O1xuICAgICAgICAgICAgYDtcbiAgICAgICAgY2FzZSAnZml0JzpcbiAgICAgICAgICAgIHJldHVybiBjc3NgXG4gICAgICAgICAgICAgICAgd2lkdGg6IGZpdC1jb250ZW50O1xuICAgICAgICAgICAgICAgIGhlaWdodDogNDBweDtcbiAgICAgICAgICAgICAgICBsaW5lLWhlaWdodDogNDBweDtcbiAgICAgICAgICAgICAgICBwYWRkaW5nOiAwcHggMTBweDtcbiAgICAgICAgICAgIGA7XG4gICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICByZXR1cm4gY3NzYFxuICAgICAgICAgICAgICAgIHdpZHRoOiA2MHB4O1xuICAgICAgICAgICAgICAgIG1heC13aWR0aDogNjBweDtcbiAgICAgICAgICAgICAgICBoZWlnaHQ6IDI4cHg7XG4gICAgICAgICAgICAgICAgbGluZS1oZWlnaHQ6IDI4cHg7XG4gICAgICAgICAgICBgO1xuICAgIH1cbn07XG5cbmNvbnN0IGJhc2VDb2xvciA9ICcjZmZmJztcbmNvbnN0IG5vcm1hbENvbG9yID0gJyNiYmInO1xuY29uc3QgZm9udENvbG9yID0gJyM2NjYnO1xuXG5jb25zdCBjb250YWluZWRIb3ZlclN0eWxlID0gKCkgPT4ge1xuICAgIHJldHVybiBjc3NgXG4gICAgICAgICY6aG92ZXIge1xuICAgICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogJHsocHJvcHMpID0+XG4gICAgICAgICAgICAgICAgXy5pc0VtcHR5KHByb3BzLnRoZW1lKSA/ICcjZmYyMDIwJyA6IGRhcmtlbigwLjEsIHByb3BzLnRoZW1lLmJ1dHRvblN0eWxlLnByaW1hcnlCdG5CZ0NvbG9yKX07XG4gICAgICAgICAgICBib3JkZXI6IDFweCBzb2xpZFxuICAgICAgICAgICAgICAgICR7KHByb3BzKSA9PiAoXy5pc0VtcHR5KHByb3BzLnRoZW1lKSA/ICcjZmYyMDIwJyA6IHByb3BzLnRoZW1lLmJ1dHRvblN0eWxlLnByaW1hcnlCdG5CZ0NvbG9yKX07XG4gICAgICAgICAgICBjb2xvcjogJHsocHJvcHMpID0+IChfLmlzRW1wdHkocHJvcHMudGhlbWUpID8gYmFzZUNvbG9yIDogcHJvcHMudGhlbWUuYnV0dG9uU3R5bGUucHJpbWFyeUJ0blRleHRDb2xvcil9O1xuICAgICAgICB9XG4gICAgYDtcbn07XG5cbmNvbnN0IG91dGxpbmVkSG92ZXJTdHlsZSA9ICgpID0+IHtcbiAgICByZXR1cm4gY3NzYFxuICAgICAgICAmOmhvdmVyIHtcbiAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6ICR7KHByb3BzKSA9PlxuICAgICAgICAgICAgICAgIF8uaXNFbXB0eShwcm9wcy50aGVtZSkgPyBiYXNlQ29sb3IgOiBkYXJrZW4oMC4xLCBwcm9wcy50aGVtZS5idXR0b25TdHlsZS5zZWNvbmRCdG5CZ0NvbG9yKX07XG4gICAgICAgICAgICBib3JkZXI6IDFweCBzb2xpZFxuICAgICAgICAgICAgICAgICR7KHByb3BzKSA9PiAoXy5pc0VtcHR5KHByb3BzLnRoZW1lKSA/ICcjZmYyMDIwJyA6IHByb3BzLnRoZW1lLmJ1dHRvblN0eWxlLnNlY29uZEJ0bkJvcmRlckNvbG9yKX07XG4gICAgICAgICAgICBjb2xvcjogJHsocHJvcHMpID0+IChfLmlzRW1wdHkocHJvcHMudGhlbWUpID8gJyNmZjUzNTMnIDogcHJvcHMudGhlbWUuYnV0dG9uU3R5bGUuc2Vjb25kQnRuVGV4dENvbG9yKX07XG4gICAgICAgIH1cbiAgICBgO1xufTtcblxuY29uc3QgYnV0dG9uVmFyaWFudCA9ICh2YXJpYW50OiBWYXJpYW50KSA9PiB7XG4gICAgc3dpdGNoICh2YXJpYW50KSB7XG4gICAgICAgIGNhc2UgJ2NvbnRhaW5lZCc6XG4gICAgICAgICAgICByZXR1cm4gY3NzYFxuICAgICAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6ICR7KHByb3BzKSA9PlxuICAgICAgICAgICAgICAgICAgICBfLmlzRW1wdHkocHJvcHMudGhlbWUpID8gJyNmZjUzNTMnIDogcHJvcHMudGhlbWUuYnV0dG9uU3R5bGUucHJpbWFyeUJ0bkJnQ29sb3J9O1xuICAgICAgICAgICAgICAgIGNvbG9yOiAkeyhwcm9wcykgPT4gKF8uaXNFbXB0eShwcm9wcy50aGVtZSkgPyBiYXNlQ29sb3IgOiBwcm9wcy50aGVtZS5idXR0b25TdHlsZS5wcmltYXJ5QnRuVGV4dENvbG9yKX07XG4gICAgICAgICAgICAgICAgY3Vyc29yOiBwb2ludGVyO1xuICAgICAgICAgICAgICAgIGJvcmRlcjogMXB4IHNvbGlkXG4gICAgICAgICAgICAgICAgICAgICR7KHByb3BzKSA9PiAoXy5pc0VtcHR5KHByb3BzLnRoZW1lKSA/ICcjZmY1MzUzJyA6IHByb3BzLnRoZW1lLmJ1dHRvblN0eWxlLnByaW1hcnlCdG5CZ0NvbG9yKX07XG4gICAgICAgICAgICAgICAgJHsoKSA9PiAoZGV2aWNlVXRpbGl0eS5nZXRCcm93c2luZ01vZGUoKSA9PT0gQlJPV1NJTkdfTU9ERS5ERVNLVE9QID8gY29udGFpbmVkSG92ZXJTdHlsZSgpIDogJycpfVxuICAgICAgICAgICAgYDtcblxuICAgICAgICBjYXNlICdvdXRsaW5lZCc6XG4gICAgICAgICAgICByZXR1cm4gY3NzYFxuICAgICAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6ICR7KHByb3BzKSA9PlxuICAgICAgICAgICAgICAgICAgICBfLmlzRW1wdHkocHJvcHMudGhlbWUpID8gYmFzZUNvbG9yIDogcHJvcHMudGhlbWUuYnV0dG9uU3R5bGUuc2Vjb25kQnRuQmdDb2xvcn07XG4gICAgICAgICAgICAgICAgY29sb3I6ICR7KHByb3BzKSA9PiAoXy5pc0VtcHR5KHByb3BzLnRoZW1lKSA/ICcjZmY1MzUzJyA6IHByb3BzLnRoZW1lLmJ1dHRvblN0eWxlLnNlY29uZEJ0blRleHRDb2xvcil9O1xuICAgICAgICAgICAgICAgIGN1cnNvcjogcG9pbnRlcjtcbiAgICAgICAgICAgICAgICBib3JkZXI6IDFweCBzb2xpZFxuICAgICAgICAgICAgICAgICAgICAkeyhwcm9wcykgPT4gKF8uaXNFbXB0eShwcm9wcy50aGVtZSkgPyAnI2ZmNTM1MycgOiBwcm9wcy50aGVtZS5idXR0b25TdHlsZS5zZWNvbmRCdG5Cb3JkZXJDb2xvcil9O1xuICAgICAgICAgICAgICAgICR7KCkgPT4gKGRldmljZVV0aWxpdHkuZ2V0QnJvd3NpbmdNb2RlKCkgPT09IEJST1dTSU5HX01PREUuREVTS1RPUCA/IG91dGxpbmVkSG92ZXJTdHlsZSgpIDogJycpfVxuICAgICAgICAgICAgYDtcbiAgICAgICAgY2FzZSAnbm9ybWFsJzpcbiAgICAgICAgICAgIHJldHVybiBjc3NgXG4gICAgICAgICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogJHtiYXNlQ29sb3J9O1xuICAgICAgICAgICAgICAgIGNvbG9yOiAke2ZvbnRDb2xvcn07XG4gICAgICAgICAgICAgICAgY3Vyc29yOiBwb2ludGVyO1xuICAgICAgICAgICAgICAgIGJvcmRlcjogMXB4IHNvbGlkICR7bm9ybWFsQ29sb3J9O1xuICAgICAgICAgICAgICAgICY6aG92ZXIge1xuICAgICAgICAgICAgICAgICAgICBib3JkZXI6IDFweCBzb2xpZCAke2ZvbnRDb2xvcn07XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgYDtcbiAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgIHJldHVybiBjc3NgXG4gICAgICAgICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogJHtiYXNlQ29sb3J9O1xuICAgICAgICAgICAgICAgIGNvbG9yOiAke25vcm1hbENvbG9yfTtcbiAgICAgICAgICAgICAgICBjdXJzb3I6IHBvaW50ZXI7XG4gICAgICAgICAgICAgICAgYm9yZGVyOiAxcHggc29saWQgJHtub3JtYWxDb2xvcn07XG4gICAgICAgICAgICBgO1xuICAgIH1cbn07XG5cbmNvbnN0IGJ1dHRvbkRpc2FibGUgPSBjc3NgXG4gICAgcG9pbnRlci1ldmVudHM6IG5vbmU7XG4gICAgY29sb3I6ICNmZmZmZmY7XG4gICAgYm9yZGVyOiAxcHggc29saWQgI2RkZGRkZDtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZGRkZGRkO1xuICAgIGN1cnNvcjogZGVmYXVsdDtcbmA7XG5cbmNvbnN0IEJ1dHRvbiA9IHN0eWxlZC5idXR0b25gXG4gICAgYm9yZGVyLXJhZGl1czogNC41cHg7XG4gICAgZm9udC1zaXplOiAxNHB4O1xuICAgIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xuICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcblxuICAgICR7KHByb3BzOiBJQnV0dG9uUHJvcHMpID0+IHtcbiAgICAgICAgY29uc3QgeyB2YXJpYW50LCBkaXNhYmxlLCBzaXplIH0gPSBwcm9wcztcbiAgICAgICAgcmV0dXJuIGNzc2BcbiAgICAgICAgICAgICR7ZGlzYWJsZSA/IGJ1dHRvbkRpc2FibGUgOiBidXR0b25WYXJpYW50KHZhcmlhbnQpfX07XG4gICAgICAgICAgICAke2J1dHRvblNpemUoc2l6ZSl9O1xuICAgICAgICBgO1xuICAgIH19XG5gO1xuXG5CdXR0b24uZGVmYXVsdFByb3BzID0ge1xuICAgIGRpc2FibGU6IGZhbHNlLFxuICAgIHNpemU6ICdub3JtYWwnLFxuICAgIHZhcmlhbnQ6ICdjb250YWluZWQnLFxufTtcblxuZXhwb3J0IGRlZmF1bHQgQnV0dG9uO1xuIiwiaW1wb3J0IFJlYWN0LCB7IEZDIH0gZnJvbSAncmVhY3QnO1xuaW1wb3J0IHsgVHJhbnNsYXRlIH0gZnJvbSAncmVhY3QtcmVkdXgtaTE4bic7XG5pbXBvcnQgKiBhcyBfIGZyb20gJ3VuZGVyc2NvcmUnO1xuaW1wb3J0IHN0eWxlZCBmcm9tICdzdHlsZWQtY29tcG9uZW50cyc7XG5pbXBvcnQgeyBCUk9XU0lOR19NT0RFIH0gZnJvbSAnQGNvbnN0YW50cy9kZXZpY2UuY29uc3RhbnRzJztcbmltcG9ydCB7IFRSQU5TTEFURV9MT0NBTEVfS0VZIH0gZnJvbSAnQGNvbnN0YW50cy90cmFuc2xhdGlvbi5jb25zdGFudHMnO1xuaW1wb3J0IHsgZGV2aWNlVXRpbGl0eSB9IGZyb20gJ0B1dGlsaXRpZXMvaW5kZXgnO1xuaW1wb3J0IEJ1dHRvbiBmcm9tICdAY29tcG9uZW50cy9idXR0b24vaW5kZXgnO1xuaW1wb3J0IHsgTW9kZUVudW0gfSBmcm9tICdAY29tcG9uZW50cy9hZGRUb0NhcnQvZW51bSc7XG5pbXBvcnQgeyBiYWNrZ3JvdW5kQ29sb3IgfSBmcm9tICcuL3RoZW1lQ29sb3InO1xuXG5pbnRlcmZhY2UgVmFsdWVQcm9wcyB7XG4gICAgY3VycmVudFZhbHVlOiBudW1iZXIgfCBzdHJpbmc7XG4gICAgbWF4VmFsdWU6IG51bWJlcjtcbiAgICBtaW5WYWx1ZTogbnVtYmVyO1xufVxuXG5pbnRlcmZhY2UgRGlzcGxheVF0eVByb3BzIGV4dGVuZHMgVmFsdWVQcm9wcyB7XG4gICAgb25JbmNyZXNlVmFsdWU6ICgpID0+IHZvaWQ7XG4gICAgb25EZWNyZXNlVmFsdWU6ICgpID0+IHZvaWQ7XG4gICAgb25DaGFuZ2VWYWx1ZTogKGUpID0+IHZvaWQ7XG59XG5cbmludGVyZmFjZSBDYXJ0QnV0dG9uUHJvcHMgZXh0ZW5kcyBWYWx1ZVByb3BzIHtcbiAgICBtb2RlOiBrZXlvZiB0eXBlb2YgTW9kZUVudW07XG4gICAgc3RhdHVzOiBzdHJpbmc7XG4gICAgb25DbGlja2VkOiAoc3RhdHVzKSA9PiB2b2lkO1xufVxuXG5jb25zdCBDYXJ0QnV0dG9uQ29udGFpbmVyID0gc3R5bGVkLmRpdmBcbiAgICBmbGV4OiAxO1xuICAgIG1hcmdpbjogYXV0bztcbiAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG5gO1xuXG5jb25zdCBRdHlCdXR0b25Db250YWluZXIgPSBzdHlsZWQuZGl2YFxuICAgIGZsZXg6IDE7XG4gICAgdGV4dC1hbGlnbjogY2VudGVyO1xuYDtcblxuY29uc3QgUXR5VG9wQ29udGVudCA9IHN0eWxlZC5kaXZgXG4gICAgZGlzcGxheTogZmxleDtcbiAgICB3aWR0aDogMTAwJTtcbiAgICBoZWlnaHQ6IDQwcHg7XG4gICAgdGV4dC1hbGlnbjogY2VudGVyO1xuICAgIGxpbmUtaGVpZ2h0OiA0MHB4O1xuICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuYDtcblxuY29uc3QgUXR5Qm90dG9tQ29udGVudCA9IHN0eWxlZC5kaXZgXG4gICAgZmxleDogMTtcbmA7XG5cbmNvbnN0IFF0eUNvdW50ZXJJbnB1dCA9IHN0eWxlZC5pbnB1dGBcbiAgICBjb2xvcjogIzRhNGU1YztcbiAgICBmb250LXNpemU6IDFlbTtcbiAgICB3aWR0aDogODVweDtcbiAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gICAgJjo6LXdlYmtpdC1pbm5lci1zcGluLWJ1dHRvbixcbiAgICA6Oi13ZWJraXQtb3V0ZXItc3Bpbi1idXR0b24ge1xuICAgICAgICAtd2Via2l0LWFwcGVhcmFuY2U6IG5vbmU7XG4gICAgICAgIC1tb3otYXBwZWFyYW5jZTogbm9uZTtcbiAgICAgICAgYXBwZWFyYW5jZTogbm9uZTtcbiAgICAgICAgbWFyZ2luOiAwO1xuICAgIH1cbmA7XG5cbmNvbnN0IFF0eUxpbWl0VGV4dCA9IHN0eWxlZC5zcGFuYFxuICAgIGNvbG9yOiAjZmY1MzUzO1xuICAgIGZvbnQtc2l6ZTogMTNweDtcbiAgICBsaW5lLWhlaWdodDogMS41O1xuYDtcblxuY29uc3QgUXR5QnV0dG9uID0gc3R5bGVkLmRpdjx7IGlzRGlzYWJsZTogYm9vbGVhbiB9PmBcbiAgICBjdXJzb3I6IHBvaW50ZXI7XG4gICAgZm9udC1zaXplOiAyMnB4O1xuICAgIGZvbnQtd2VpZ2h0OiA5MDA7XG4gICAgd2lkdGg6IDQ0cHg7XG4gICAgY29sb3I6ICR7YmFja2dyb3VuZENvbG9yfTtcbiAgICAkeyhwcm9wcykgPT4ge1xuICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgcHJvcHMuaXNEaXNhYmxlICYmXG4gICAgICAgICAgICBgXG4gICAgICAgICAgICBjb2xvcjogIzk5OTk5OTtcbiAgICAgICAgICAgICY6aG92ZXIge1xuICAgICAgICAgICAgICAgIGN1cnNvcjogbm90LWFsbG93ZWQgIWltcG9ydGFudDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGBcbiAgICAgICAgKTtcbiAgICB9fVxuYDtcblxuY29uc3QgQ2FydEJ1dHRvbiA9IHN0eWxlZChCdXR0b24pYFxuICAgIGZvbnQtc2l6ZTogMTVweDtcbiAgICB3aWR0aDogJHtkZXZpY2VVdGlsaXR5LmdldEJyb3dzaW5nTW9kZSgpID09PSBCUk9XU0lOR19NT0RFLk1PQklMRSA/ICcxOTBweCcgOiAnMzEwcHgnfTtcbmA7XG5cbi8qKlxuICog6LO854mp6LuK6LO86LK35pW46YeP6aGv56S65YWD5Lu2XG4gKi9cbmV4cG9ydCBjb25zdCBQcm9kdWN0RGlzcGxheVF0eTogRkM8RGlzcGxheVF0eVByb3BzPiA9IChwcm9wcykgPT4ge1xuICAgIGNvbnN0IHsgY3VycmVudFZhbHVlLCBtYXhWYWx1ZSwgbWluVmFsdWUsIG9uSW5jcmVzZVZhbHVlLCBvbkRlY3Jlc2VWYWx1ZSwgb25DaGFuZ2VWYWx1ZSB9ID0gcHJvcHM7XG4gICAgLy8g5Zug5omL5qmf6ZyA5ZWf55So6Y2155ukXG4gICAgY29uc3QgaW5wdXRUeXBlID0gZGV2aWNlVXRpbGl0eS5nZXRCcm93c2luZ01vZGUoKSA9PT0gQlJPV1NJTkdfTU9ERS5ERVNLVE9QID8gJ251bWJlcicgOiAndGVsJztcbiAgICByZXR1cm4gKFxuICAgICAgICA8UXR5QnV0dG9uQ29udGFpbmVyPlxuICAgICAgICAgICAgPFF0eVRvcENvbnRlbnQ+XG4gICAgICAgICAgICAgICAgPFF0eUJ1dHRvbiBpc0Rpc2FibGU9e2N1cnJlbnRWYWx1ZSA8PSBtaW5WYWx1ZX0gb25DbGljaz17b25EZWNyZXNlVmFsdWV9PlxuICAgICAgICAgICAgICAgICAgICA8aSBjbGFzc05hbWU9XCJpY29uIGljb24tc2xpbS1taW51c1wiIHN0eWxlPXt7IHBhZGRpbmc6ICc5cHgnIH19IC8+XG4gICAgICAgICAgICAgICAgPC9RdHlCdXR0b24+XG4gICAgICAgICAgICAgICAgPFF0eUNvdW50ZXJJbnB1dFxuICAgICAgICAgICAgICAgICAgICB0eXBlPXtpbnB1dFR5cGV9XG4gICAgICAgICAgICAgICAgICAgIG5hbWU9XCJxdHlJbnB1dFwiXG4gICAgICAgICAgICAgICAgICAgIHBhdHRlcm49XCJbMC05XSpcIlxuICAgICAgICAgICAgICAgICAgICBtaW49e21pblZhbHVlfVxuICAgICAgICAgICAgICAgICAgICBtYXg9e21heFZhbHVlfVxuICAgICAgICAgICAgICAgICAgICB2YWx1ZT17Y3VycmVudFZhbHVlfVxuICAgICAgICAgICAgICAgICAgICBvbkNoYW5nZT17b25DaGFuZ2VWYWx1ZX1cbiAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgIDxRdHlCdXR0b24gaXNEaXNhYmxlPXttYXhWYWx1ZSA+IDAgJiYgY3VycmVudFZhbHVlID49IG1heFZhbHVlfSBvbkNsaWNrPXtvbkluY3Jlc2VWYWx1ZX0+XG4gICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzTmFtZT1cImljb24gaWNvbi1zbGltLXBsdXNcIiBzdHlsZT17eyBwYWRkaW5nOiAnOXB4JyB9fSAvPlxuICAgICAgICAgICAgICAgIDwvUXR5QnV0dG9uPlxuICAgICAgICAgICAgPC9RdHlUb3BDb250ZW50PlxuICAgICAgICAgICAgPFF0eUJvdHRvbUNvbnRlbnQ+XG4gICAgICAgICAgICAgICAge21heFZhbHVlID4gMCAmJiBjdXJyZW50VmFsdWUgPj0gbWF4VmFsdWUgJiYgKFxuICAgICAgICAgICAgICAgICAgICA8UXR5TGltaXRUZXh0PlxuICAgICAgICAgICAgICAgICAgICAgICAgPFRyYW5zbGF0ZSB2YWx1ZT17VFJBTlNMQVRFX0xPQ0FMRV9LRVkuRlJPTlRFTkQuTElCLkxJTUlUX01BWF9WQUxVRV9NU0d9IG1heFZhbHVlPXttYXhWYWx1ZX0gLz5cbiAgICAgICAgICAgICAgICAgICAgPC9RdHlMaW1pdFRleHQ+XG4gICAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgICAgICB7Y3VycmVudFZhbHVlIDwgbWluVmFsdWUgJiYgKFxuICAgICAgICAgICAgICAgICAgICA8UXR5TGltaXRUZXh0PlxuICAgICAgICAgICAgICAgICAgICAgICAgPFRyYW5zbGF0ZSB2YWx1ZT17VFJBTlNMQVRFX0xPQ0FMRV9LRVkuRlJPTlRFTkQuTElCLkxJTUlUX01JTl9WQUxVRV9NU0d9IC8+XG4gICAgICAgICAgICAgICAgICAgIDwvUXR5TGltaXRUZXh0PlxuICAgICAgICAgICAgICAgICl9XG4gICAgICAgICAgICA8L1F0eUJvdHRvbUNvbnRlbnQ+XG4gICAgICAgIDwvUXR5QnV0dG9uQ29udGFpbmVyPlxuICAgICk7XG59O1xuXG5jb25zdCBnZXRCdXR0b24gPSAobW9kZTogc3RyaW5nLCBzdGF0dXM6IHN0cmluZywgb25CdXR0b25IYW5kbGVyKSA9PiB7XG4gICAgc3dpdGNoIChzdGF0dXMpIHtcbiAgICAgICAgY2FzZSAnU29sZE91dCc6XG4gICAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgICAgIDxDYXJ0QnV0dG9uIHZhcmlhbnQ9XCJjb250YWluZWRcIiBkaXNhYmxlZD5cbiAgICAgICAgICAgICAgICAgICAgPFRyYW5zbGF0ZSB2YWx1ZT17VFJBTlNMQVRFX0xPQ0FMRV9LRVkuRlJPTlRFTkQuTElCLlNPTERfT1VUX0FORF9SRVBMRU5JU0hFRH0gLz5cbiAgICAgICAgICAgICAgICA8L0NhcnRCdXR0b24+XG4gICAgICAgICAgICApO1xuICAgICAgICBjYXNlICdOb3RTdGFydFNlbGwnOlxuICAgICAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgICAgICA8Q2FydEJ1dHRvbiB2YXJpYW50PVwiY29udGFpbmVkXCIgZGlzYWJsZWQ+XG4gICAgICAgICAgICAgICAgICAgIDxUcmFuc2xhdGUgdmFsdWU9e1RSQU5TTEFURV9MT0NBTEVfS0VZLkZST05URU5ELkxJQi5OT1RfWUVUX09QRU5fU0FMRX0gLz5cbiAgICAgICAgICAgICAgICA8L0NhcnRCdXR0b24+XG4gICAgICAgICAgICApO1xuICAgICAgICBjYXNlICdTaGFyZVRvQnV5JzpcbiAgICAgICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICAgICAgPENhcnRCdXR0b24gdmFyaWFudD1cImNvbnRhaW5lZFwiIG9uQ2xpY2s9e29uQnV0dG9uSGFuZGxlcn0+XG4gICAgICAgICAgICAgICAgICAgIDxUcmFuc2xhdGUgdmFsdWU9e1RSQU5TTEFURV9MT0NBTEVfS0VZLkZST05URU5ELkxJQi5TSEFSRV9BTkRfQlVZfSAvPlxuICAgICAgICAgICAgICAgIDwvQ2FydEJ1dHRvbj5cbiAgICAgICAgICAgICk7XG4gICAgICAgIGNhc2UgJ0FwcE9ubHknOlxuICAgICAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgICAgICA8Q2FydEJ1dHRvbiB2YXJpYW50PVwiY29udGFpbmVkXCIgb25DbGljaz17b25CdXR0b25IYW5kbGVyfT5cbiAgICAgICAgICAgICAgICAgICAgPFRyYW5zbGF0ZSB2YWx1ZT17VFJBTlNMQVRFX0xPQ0FMRV9LRVkuRlJPTlRFTkQuTElCLk9OTFlfT05fQVBQfSAvPlxuICAgICAgICAgICAgICAgIDwvQ2FydEJ1dHRvbj5cbiAgICAgICAgICAgICk7XG4gICAgICAgIGNhc2UgJ0ltbWVkaWF0ZWx5QnV5JzpcbiAgICAgICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICAgICAgPENhcnRCdXR0b24gdmFyaWFudD1cImNvbnRhaW5lZFwiIG9uQ2xpY2s9e29uQnV0dG9uSGFuZGxlcn0+XG4gICAgICAgICAgICAgICAgICAgIDxUcmFuc2xhdGUgdmFsdWU9e1RSQU5TTEFURV9MT0NBTEVfS0VZLkZST05URU5ELkxJQi5DSEVDS19PVVR9IC8+XG4gICAgICAgICAgICAgICAgPC9DYXJ0QnV0dG9uPlxuICAgICAgICAgICAgKTtcbiAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgIHJldHVybiBtb2RlID09PSAnTm9ybWFsJyA/IChcbiAgICAgICAgICAgICAgICAvLyDliqDlhaXos7znianou4pcbiAgICAgICAgICAgICAgICA8Q2FydEJ1dHRvbiB2YXJpYW50PVwiY29udGFpbmVkXCIgb25DbGljaz17b25CdXR0b25IYW5kbGVyfT5cbiAgICAgICAgICAgICAgICAgICAgPFRyYW5zbGF0ZSB2YWx1ZT17VFJBTlNMQVRFX0xPQ0FMRV9LRVkuRlJPTlRFTkQuTElCLkFERF9DQVJUfSAvPlxuICAgICAgICAgICAgICAgIDwvQ2FydEJ1dHRvbj5cbiAgICAgICAgICAgICkgOiAoXG4gICAgICAgICAgICAgICAgLy8g5Yqg5YWlKOmBuOizvOWVhuWTgSlcbiAgICAgICAgICAgICAgICA8Q2FydEJ1dHRvbiB2YXJpYW50PVwiY29udGFpbmVkXCIgb25DbGljaz17b25CdXR0b25IYW5kbGVyfT5cbiAgICAgICAgICAgICAgICAgICAgPFRyYW5zbGF0ZSB2YWx1ZT17VFJBTlNMQVRFX0xPQ0FMRV9LRVkuRlJPTlRFTkQuTElCLkFERH0gLz5cbiAgICAgICAgICAgICAgICA8L0NhcnRCdXR0b24+XG4gICAgICAgICAgICApO1xuICAgIH1cbn07XG5cbi8qKlxuICog5Yqg5YWl6LO854mp6LuK5Yqf6IO95oyJ6YiVXG4gKi9cbmV4cG9ydCBjb25zdCBQcm9kdWN0Q2FydEJ1dHRvbjogRkM8Q2FydEJ1dHRvblByb3BzPiA9IChwcm9wcykgPT4ge1xuICAgIGNvbnN0IHsgbW9kZSwgc3RhdHVzLCBjdXJyZW50VmFsdWUsIG1heFZhbHVlLCBtaW5WYWx1ZSwgb25DbGlja2VkIH0gPSBwcm9wcztcbiAgICBjb25zdCBvbkJ1dHRvbkhhbmRsZXIgPSAoZTogUmVhY3QuU3ludGhldGljRXZlbnQ8RWxlbWVudD4pID0+IHtcbiAgICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICBlLnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgICBpZiAoIWN1cnJlbnRWYWx1ZSB8fCAobWF4VmFsdWUgJiYgY3VycmVudFZhbHVlID4gbWF4VmFsdWUpIHx8IGN1cnJlbnRWYWx1ZSA8IG1pblZhbHVlKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgb25DbGlja2VkKHN0YXR1cyk7XG4gICAgfTtcbiAgICByZXR1cm4gPENhcnRCdXR0b25Db250YWluZXI+e2dldEJ1dHRvbihtb2RlLCBzdGF0dXMsIG9uQnV0dG9uSGFuZGxlcil9PC9DYXJ0QnV0dG9uQ29udGFpbmVyPjtcbn07XG4iLCJpbXBvcnQgKiBhcyBSZWFjdCBmcm9tICdyZWFjdCc7XG5pbXBvcnQgeyBGQyB9IGZyb20gJ3JlYWN0JztcbmltcG9ydCBzdHlsZWQsIHsgY3NzIH0gZnJvbSAnc3R5bGVkLWNvbXBvbmVudHMnO1xuaW1wb3J0IHsgZGFya2VuIH0gZnJvbSAncG9saXNoZWQnO1xuaW1wb3J0IHsgQ3VycmVuY3kgfSBmcm9tICdAY29tcG9uZW50cy9pbmRleCc7XG5pbXBvcnQgKiBhcyBfIGZyb20gJ3VuZGVyc2NvcmUnO1xuaW1wb3J0IHsgTVdlYkFwaSB9IGZyb20gJy4uLy4uLy4uL3R5cGluZ3MvbXdlYkFwaSc7XG5pbXBvcnQgeyBJMThuLCBUcmFuc2xhdGUgfSBmcm9tICdyZWFjdC1yZWR1eC1pMThuJztcbmltcG9ydCB7IFRSQU5TTEFURV9MT0NBTEVfS0VZIH0gZnJvbSAnQGNvbnN0YW50cy90cmFuc2xhdGlvbi5jb25zdGFudHMnO1xuaW1wb3J0IHsgdGV4dENvbG9yLCBiYWNrZ3JvdW5kQ29sb3IsIGJvcmRlckNvbG9yIH0gZnJvbSAnLi90aGVtZUNvbG9yJztcblxuaW50ZXJmYWNlIFB1cmNoYXNlTWV0aG9kUHJvcHMge1xuICAgIHB1cmNoYXNlTWV0aG9kTGlzdDogTVdlYkFwaS5XZWJTdG9yZS5Gcm9udGVuZC5CRS5TYWxlUGFnZVYyLlBvaW50c1BheVBhaXJzRW50aXR5W107XG4gICAgc2VsZWN0ZWRQdXJjaGFzZU1ldGhvZDogTVdlYkFwaS5XZWJTdG9yZS5Gcm9udGVuZC5CRS5TYWxlUGFnZVYyLlBvaW50c1BheVBhaXJzRW50aXR5O1xuICAgIG9uU2VsZWN0UHVyY2hhc2VNZXRob2Q6IChwb2ludFBheU9wdGlvbkl0ZW0pID0+IHZvaWQ7XG4gICAgZGVjaW1hbDogbnVtYmVyO1xuICAgIHN5bWJvbDogc3RyaW5nO1xuICAgIHJhdGU6IG51bWJlcjtcbn1cblxuaW50ZXJmYWNlIElQb2ludHBheU9wdGlvbiB7XG4gICAgYWN0aXZlZDogYm9vbGVhbjtcbn1cblxuZXhwb3J0IGNvbnN0IFB1cmNoYXNlTWV0aG9kQ29udGFpbmVyID0gc3R5bGVkLmRpdmBcbiAgICBwYWRkaW5nOiAxMHB4IDAgMTVweDtcbmA7XG5cbmV4cG9ydCBjb25zdCBUaXRsZSA9IHN0eWxlZC5oNmBcbiAgICBjb2xvcjogIzRhNGU1YztcbiAgICBmb250LXNpemU6IDAuOGVtO1xuICAgIGxpbmUtaGVpZ2h0OiAxLjU7XG5gO1xuXG5leHBvcnQgY29uc3QgUG9pbnRwYXlPcHRpb25zID0gc3R5bGVkLmRpdmBcbiAgICBwYWRkaW5nOiAwIDJweDtcbmA7XG5cbmNvbnN0IHBvaW50cGF5T3B0aW9uQWN0aXZlZFN0eWxlID0gKHByb3BzKSA9PiB7XG4gICAgcmV0dXJuIGNzc2BcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogJHtiYWNrZ3JvdW5kQ29sb3IocHJvcHMpfTtcbiAgICAgICAgYm94LXNoYWRvdzogMCAwIDAgMXB4ICR7Ym9yZGVyQ29sb3IocHJvcHMpfTtcbiAgICAgICAgY29sb3I6ICR7dGV4dENvbG9yKHByb3BzKX07XG4gICAgICAgICY6aG92ZXIge1xuICAgICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogJHtkYXJrZW4oMC4xLCBiYWNrZ3JvdW5kQ29sb3IocHJvcHMpKX07XG4gICAgICAgICAgICBib3gtc2hhZG93OiAwIDAgMCAxcHggJHtkYXJrZW4oMC4xLCBib3JkZXJDb2xvcihwcm9wcykpfTtcbiAgICAgICAgfVxuICAgIGA7XG59O1xuXG5jb25zdCBwb2ludHBheU9wdGlvbkhvdmVyU3R5bGUgPSAocHJvcHMpID0+IHtcbiAgICByZXR1cm4gY3NzYFxuICAgICAgICAmOmhvdmVyIHtcbiAgICAgICAgICAgIGJveC1zaGFkb3c6IDAgMCAwIDFweCAke2JvcmRlckNvbG9yKHByb3BzKX07XG4gICAgICAgIH1cbiAgICBgO1xufTtcblxuZXhwb3J0IGNvbnN0IFBvaW50cGF5T3B0aW9uID0gc3R5bGVkLmJ1dHRvbjxJUG9pbnRwYXlPcHRpb24+YFxuICAgIC13ZWJraXQtdGFwLWhpZ2hsaWdodC1jb2xvcjogcmdiYSgwLCAwLCAwLCAwKTtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB3aGl0ZTtcbiAgICBib3JkZXItcmFkaXVzOiAzcHg7XG4gICAgYm94LXNoYWRvdzogMCAwIDAgMXB4ICNkZGQ7XG4gICAgYm94LXNpemluZzogYm9yZGVyLWJveDtcbiAgICBjb2xvcjogIzY2NjtcbiAgICBjdXJzb3I6IHBvaW50ZXI7XG4gICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICAgIGZvbnQtc2l6ZTogMC44ZW07XG4gICAgbGluZS1oZWlnaHQ6IDEuMjtcbiAgICBtYXJnaW46IDhweCA4cHggMCAwO1xuICAgIG1pbi13aWR0aDogNDZweDtcbiAgICBwYWRkaW5nOiA1cHggMTZweDtcbiAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG5cbiAgICAkeyhwcm9wcykgPT4ge1xuICAgICAgICBpZiAocHJvcHMuYWN0aXZlZCkge1xuICAgICAgICAgICAgcmV0dXJuIHBvaW50cGF5T3B0aW9uQWN0aXZlZFN0eWxlKHByb3BzKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiBwb2ludHBheU9wdGlvbkhvdmVyU3R5bGUocHJvcHMpO1xuICAgICAgICB9XG4gICAgfX1cbmA7XG5cbmV4cG9ydCBjb25zdCBQdXJjaGFzZU1ldGhvZDogRkM8UHVyY2hhc2VNZXRob2RQcm9wcz4gPSAocHJvcHMpID0+IHtcbiAgICBjb25zdCB7IHB1cmNoYXNlTWV0aG9kTGlzdCwgc2VsZWN0ZWRQdXJjaGFzZU1ldGhvZCwgb25TZWxlY3RQdXJjaGFzZU1ldGhvZCwgZGVjaW1hbCwgc3ltYm9sLCByYXRlIH0gPSBwcm9wcztcbiAgICByZXR1cm4gKFxuICAgICAgICA8UHVyY2hhc2VNZXRob2RDb250YWluZXI+XG4gICAgICAgICAgICA8VGl0bGU+e0kxOG4udChUUkFOU0xBVEVfTE9DQUxFX0tFWS5GUk9OVEVORC5MSUIuUExFQVNFX1NFTEVDVF9QVVJDSEFTRV9NRVRIT0QpfTwvVGl0bGU+XG4gICAgICAgICAgICA8UG9pbnRwYXlPcHRpb25zPlxuICAgICAgICAgICAgICAgIHtwdXJjaGFzZU1ldGhvZExpc3QubWFwKChpdGVtLCBpbmRleCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgICAgICAgICAgICAgPFBvaW50cGF5T3B0aW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAga2V5PXtpbmRleH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkNsaWNrPXsoZSkgPT4gb25TZWxlY3RQdXJjaGFzZU1ldGhvZChpdGVtKX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhY3RpdmVkPXtpdGVtLlBvaW50c1BheUlkID09PSBzZWxlY3RlZFB1cmNoYXNlTWV0aG9kLlBvaW50c1BheUlkfVxuICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsvKiDntJTph5EgKi99XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge2l0ZW0uUGFpcnNQb2ludHMgPT09IDAgJiYgaXRlbS5QYWlyc1ByaWNlID4gMCAmJiAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxDdXJyZW5jeVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU9e2l0ZW0uUGFpcnNQcmljZX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlY2ltYWw9e2RlY2ltYWx9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzeW1ib2w9e3N5bWJvbH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJhdGU9e3JhdGV9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaXNhYmxlVGhlbWU9e3RydWV9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKX1cblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsvKiDntJTpu54gKi99XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge2l0ZW0uUGFpcnNQcmljZSA9PT0gMCAmJiBpdGVtLlBhaXJzUG9pbnRzID4gMCAmJiAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxUcmFuc2xhdGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlPXtUUkFOU0xBVEVfTE9DQUxFX0tFWS5GUk9OVEVORC5MSUIuUFVSQ0hBU0VfTUVUSE9EX1BPSU5UfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcG9pbnQ9e2l0ZW0uUGFpcnNQb2ludHN9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKX1cblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsvKiDpu57liqDph5EgKi99XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge2l0ZW0uUGFpcnNQb2ludHMgPiAwICYmIGl0ZW0uUGFpcnNQcmljZSA+IDAgJiYgKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxUcmFuc2xhdGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZT17VFJBTlNMQVRFX0xPQ0FMRV9LRVkuRlJPTlRFTkQuTElCLlBVUkNIQVNFX01FVEhPRF9QT0lOVH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwb2ludD17aXRlbS5QYWlyc1BvaW50c31cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3Bhbj7vvIs8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Q3VycmVuY3lcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZT17aXRlbS5QYWlyc1ByaWNlfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlY2ltYWw9e2RlY2ltYWx9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3ltYm9sPXtzeW1ib2x9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmF0ZT17cmF0ZX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaXNhYmxlVGhlbWU9e3RydWV9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvUG9pbnRwYXlPcHRpb24+XG4gICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgfSl9XG4gICAgICAgICAgICA8L1BvaW50cGF5T3B0aW9ucz5cbiAgICAgICAgPC9QdXJjaGFzZU1ldGhvZENvbnRhaW5lcj5cbiAgICApO1xufTtcbiIsImltcG9ydCB7IHJlZGlyZWN0LCByZXRyeSB9IGZyb20gJ3N0YXR1c2VzJztcbmltcG9ydCAqIGFzIHJlcXVlc3QgZnJvbSAnc3VwZXJhZ2VudCc7XG5cbmludGVyZmFjZSBmZXRjaE9wdGlvbkVudGl0eSB7XG4gICAgbWV0aG9kOiBzdHJpbmc7XG4gICAgaGVhZGVycz86IGFueTtcbiAgICBmb3JtRGF0YT86IGFueTtcbiAgICBib2R5PzogYW55O1xuICAgIHRyYWNlSWQ/OiBzdHJpbmc7XG59XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBmZXRjaEFwaTxUPihyZXF1ZXN0VXJsOiBzdHJpbmcsIG9wdGlvbjogZmV0Y2hPcHRpb25FbnRpdHkgPSB7IG1ldGhvZDogJ0dFVCcgfSk6IFByb21pc2U8VD4ge1xuICAgIGNvbnN0IHVybCA9IHJlcXVlc3RVcmwuc3BsaXQoJz8nKVswXSB8fCAnJztcbiAgICBjb25zdCBxdWVyeVN0cmluZyA9IHJlcXVlc3RVcmwuc3BsaXQoJz8nKVsxXSB8fCAnJztcbiAgICBjb25zdCByZXF1ZXN0U2V0dGluZyA9IHtcbiAgICAgICAgR0VUOiByZXF1ZXN0LmdldCh1cmwpLnF1ZXJ5KHF1ZXJ5U3RyaW5nKSxcbiAgICAgICAgUE9TVDogcmVxdWVzdFxuICAgICAgICAgICAgLnBvc3QodXJsKVxuICAgICAgICAgICAgLnF1ZXJ5KHF1ZXJ5U3RyaW5nKVxuICAgICAgICAgICAgLnNlbmQob3B0aW9uLmJvZHkpXG4gICAgICAgICAgICAuc2V0KCdDb250ZW50LVR5cGUnLCAnYXBwbGljYXRpb24vanNvbicpLFxuICAgICAgICBQVVQ6IHJlcXVlc3RcbiAgICAgICAgICAgIC5wdXQodXJsKVxuICAgICAgICAgICAgLnF1ZXJ5KHF1ZXJ5U3RyaW5nKVxuICAgICAgICAgICAgLnNlbmQob3B0aW9uLmJvZHkpXG4gICAgICAgICAgICAuc2V0KCdDb250ZW50LVR5cGUnLCAnYXBwbGljYXRpb24vanNvbicpLFxuICAgICAgICBERUxFVEU6IHJlcXVlc3RcbiAgICAgICAgICAgIC5kZWxldGUodXJsKVxuICAgICAgICAgICAgLnF1ZXJ5KHF1ZXJ5U3RyaW5nKVxuICAgICAgICAgICAgLnNlbmQob3B0aW9uLmJvZHkpXG4gICAgICAgICAgICAuc2V0KCdDb250ZW50LVR5cGUnLCAnYXBwbGljYXRpb24vanNvbicpLFxuICAgICAgICBGT1JNOiByZXF1ZXN0XG4gICAgICAgICAgICAucG9zdCh1cmwpXG4gICAgICAgICAgICAucXVlcnkocXVlcnlTdHJpbmcpXG4gICAgICAgICAgICAuc2VuZChvcHRpb24uZm9ybURhdGEpLFxuICAgIH07XG5cbiAgICB0cnkge1xuICAgICAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IHJlcXVlc3RTZXR0aW5nW29wdGlvbi5tZXRob2RdO1xuICAgICAgICBpZiAocmVkaXJlY3RbcmVzcG9uc2Uuc3RhdHVzXSB8fCByZXRyeVtyZXNwb25zZS5zdGF0dXNdKSB7XG4gICAgICAgICAgICByZXR1cm4gUHJvbWlzZS5yZWplY3QobmV3IEVycm9yKHJlc3BvbnNlLmJvZHkpKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKHJlc3BvbnNlLmJvZHkpO1xuICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgICByZXR1cm4gUHJvbWlzZS5yZWplY3QoZXJyKTtcbiAgICB9XG59XG4iLCJpbXBvcnQgKiBhcyBfIGZyb20gJ3VuZGVyc2NvcmUnO1xuaW1wb3J0IHsgZmV0Y2hBcGkgfSBmcm9tICcuLi9wcm92aWRlcnMvaHR0cC5wcm92aWRlcic7XG5pbXBvcnQgeyBnZXRNd2ViQXBpVXJsIH0gZnJvbSAnLi4vdXRpbGl0aWVzL3BhdGgudXRpbGl0eSc7XG5pbXBvcnQgeyBQcm9kdWN0U2t1SW5mb0VudGl0eSB9IGZyb20gJy4vc2FsZVBhZ2UubW9kZWwnO1xuZXhwb3J0IGludGVyZmFjZSBBcGlSZXN1bHQ8VD4ge1xuICAgIFJldHVybkNvZGU6IHN0cmluZztcbiAgICBEYXRhOiBUO1xuICAgIE1lc3NhZ2U6IHN0cmluZztcbn1cbmV4cG9ydCBpbnRlcmZhY2UgUHJvZHVjdFN0b2NrRW50aXR5IHtcbiAgICBHb29kc1NLVUlkOiBudW1iZXI7XG4gICAgU2FsZVByb2R1Y3RTS1VJZDogbnVtYmVyO1xuICAgIFNlbGxpbmdRdHk6IG51bWJlcjtcbn1cbi8qKlxuICog5Y+W5b6X5bqr5a2Y6LOH6KiKXG4gKiBAcGFyYW0gc2t1SWRMaXN0IFxuICogQHBhcmFtIHNrdUluZm9MaXN0IFxuICovXG5leHBvcnQgY29uc3QgZmV0Y2hQcm9kdWN0U3RvY2tNb2RlbCA9IGFzeW5jIChcbiAgICBzaG9wSWQ6IG51bWJlcixcbiAgICBza3VJZExpc3Q6IG51bWJlcltdLFxuICAgIHNrdUluZm9MaXN0OiBQcm9kdWN0U2t1SW5mb0VudGl0eVtdXG4pID0+IHtcbiAgICB0cnkge1xuICAgICAgICBjb25zdCBhcGlVcmwgPSBnZXRNd2ViQXBpVXJsKGBQcm9kdWN0U3RvY2svR2V0U2VsbGluZ1F0eUxpc3ROZXc/c2hvcElkPSR7c2hvcElkfWApO1xuICAgICAgICAvLyBjb25zb2xlLmxvZygnZmV0Y2hQcm9kdWN0U3RvY2tNb2RlbCBza3VJZExpc3Q6Jywgc2t1SWRMaXN0KTtcbiAgICAgICAgY29uc3QgZmV0Y2hQYXJhbWV0ZXJzID0ge1xuICAgICAgICAgICAgbWV0aG9kOiAnUE9TVCcsXG4gICAgICAgICAgICBib2R5OiBKU09OLnN0cmluZ2lmeSh7IGlkczogc2t1SWRMaXN0LnRvU3RyaW5nKCkgfSlcbiAgICAgICAgfTtcbiAgICAgICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgZmV0Y2hBcGk8UHJvZHVjdFN0b2NrRW50aXR5W10+KGFwaVVybCwgZmV0Y2hQYXJhbWV0ZXJzKTtcbiAgICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZShmZXRjaFByb2R1Y3RTdG9ja01hcHBpbmcocmVzdWx0LCBza3VJbmZvTGlzdCkpO1xuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgIHJldHVybiBQcm9taXNlLnJlamVjdChlcnJvcik7XG4gICAgfVxufTtcbi8qKlxuICog5pu05paw5bqr5a2Y6LOH6KiKXG4gKiBAcGFyYW0gcmVzcG9uc2UgXG4gKiBAcGFyYW0gc2t1SW5mb0xpc3QgXG4gKi9cbmNvbnN0IGZldGNoUHJvZHVjdFN0b2NrTWFwcGluZyA9IChcbiAgICByZXNwb25zZTogUHJvZHVjdFN0b2NrRW50aXR5W10sXG4gICAgc2t1SW5mb0xpc3Q6IFByb2R1Y3RTa3VJbmZvRW50aXR5W11cbik6IFByb2R1Y3RTa3VJbmZvRW50aXR5W10gPT4ge1xuICAgIGNvbnN0IHN0b2NrSW5mb0xpc3QgPSBfLmluZGV4QnkocmVzcG9uc2UsICdTYWxlUHJvZHVjdFNLVUlkJyk7XG4gICAgXy5lYWNoKHNrdUluZm9MaXN0LCBpdGVtID0+IHtcbiAgICAgICAgaXRlbS5zZWxsaW5nUXR5ID0gc3RvY2tJbmZvTGlzdFtpdGVtLnNrdUlkXS5TZWxsaW5nUXR5OyAvLyDmm7TmlrDluqvlrZjos4foqIpcbiAgICB9KTtcbiAgICByZXR1cm4gc2t1SW5mb0xpc3Q7XG59XG4iLCJpbXBvcnQgKiBhcyBSZWFjdCBmcm9tICdyZWFjdCc7XG5pbXBvcnQgKiBhcyBfIGZyb20gJ3VuZGVyc2NvcmUnO1xuaW1wb3J0IHN0eWxlZCBmcm9tICdzdHlsZWQtY29tcG9uZW50cyc7XG5pbXBvcnQgeyBQcm9kdWN0TWFpbkluZm8gfSBmcm9tICdAY29tcG9uZW50cy9hZGRUb0NhcnQvcHJvZHVjdC9wcm9kdWN0TWFpbkluZm8nO1xuaW1wb3J0IHsgUHJvZHVjdEdyb3VwT3B0aW9uIH0gZnJvbSAnQGNvbXBvbmVudHMvYWRkVG9DYXJ0L3Byb2R1Y3QvcHJvZHVjdEdyb3VwT3B0aW9uJztcbmltcG9ydCB7IFByb2R1Y3REaXNwbGF5UXR5LCBQcm9kdWN0Q2FydEJ1dHRvbiB9IGZyb20gJ0Bjb21wb25lbnRzL2FkZFRvQ2FydC9wcm9kdWN0L3Byb2R1Y3RRdHknO1xuaW1wb3J0IHsgUHVyY2hhc2VNZXRob2QgfSBmcm9tICdAY29tcG9uZW50cy9hZGRUb0NhcnQvcHJvZHVjdC9wdXJjaGFzZU1ldGhvZCc7XG5pbXBvcnQgeyBkZXZpY2VVdGlsaXR5IH0gZnJvbSAnQHV0aWxpdGllcy9pbmRleCc7XG5pbXBvcnQgeyBCUk9XU0lOR19NT0RFIH0gZnJvbSAnQGNvbnN0YW50cy9kZXZpY2UuY29uc3RhbnRzJztcbmltcG9ydCB7IFNhbGVQYWdlSW5mb0VudGl0eSwgUHJvZHVjdFNrdUluZm9FbnRpdHkgfSBmcm9tICcuLi8uLi8uLi9tb2RlbHMvc2FsZVBhZ2UubW9kZWwnO1xuaW1wb3J0IHsgZmV0Y2hQcm9kdWN0U3RvY2tNb2RlbCB9IGZyb20gJy4uLy4uLy4uL21vZGVscy9wcm9kdWN0U3RvY2subW9kZWwnO1xuaW1wb3J0IHsgUHJvZHVjdEluZm9FbnRpdHkgfSBmcm9tICcuLi8uLi8uLi9tb2RlbHMvc2hvcHBpbmdDYXJ0Lm1vZGVsJztcbmltcG9ydCB7IE1vZGVFbnVtIH0gZnJvbSAnQGNvbXBvbmVudHMvYWRkVG9DYXJ0L2VudW0nO1xuaW1wb3J0IHsgTVdlYkFwaSB9IGZyb20gJy4uLy4uLy4uL3R5cGluZ3MvbXdlYkFwaSc7XG5cbmV4cG9ydCB0eXBlIFNrdVF0eU1vZGUgPSAnQWNjdW11bGF0ZScgfCAnT3ZlcndyaXRlJztcblxuaW50ZXJmYWNlIFByb2R1Y3RTa3VQcm9wcyB7XG4gICAgbW9kZToga2V5b2YgdHlwZW9mIE1vZGVFbnVtO1xuICAgIGRlY2ltYWw6IG51bWJlcjtcbiAgICBzeW1ib2w6IHN0cmluZztcbiAgICByYXRlOiBudW1iZXI7XG4gICAgc2hvcElkOiBudW1iZXI7XG4gICAgc2FsZVBhZ2VJbmZvOiBTYWxlUGFnZUluZm9FbnRpdHk7XG4gICAgc2t1SW5mb0xpc3Q6IFByb2R1Y3RTa3VJbmZvRW50aXR5W107XG4gICAgc2t1UXR5TW9kZT86IFNrdVF0eU1vZGU7XG4gICAgaGFuZGxlQWRkVG9DYXJ0PzogKHByb2R1Y3RJbmZvKSA9PiB2b2lkO1xuICAgIGhhbmRsZUFwcE9ubHk/OiAoc2hvcElkLCBzYWxlUGFnZUlkKSA9PiB2b2lkO1xuICAgIGhhbmRsZUZhY2Vib29rU2hhcmU/OiAoc2FsZVBhZ2VJZCkgPT4gdm9pZDtcbiAgICBvbkFkZFF1YW50aXR5PzogKCkgPT4gdm9pZDtcbiAgICBvblJlbW92ZVF1YW50aXR5PzogKCkgPT4gdm9pZDtcbn1cbmludGVyZmFjZSBTdGF0ZSB7XG4gICAgY3VycmVudFZhbHVlOiBudW1iZXIgfCBzdHJpbmc7XG4gICAgbWluVmFsdWU6IG51bWJlcjtcbiAgICBtYXhWYWx1ZTogbnVtYmVyO1xuICAgIHNhbGVQYWdlSW5mbzogU2FsZVBhZ2VJbmZvRW50aXR5O1xuICAgIHNrdUluZm9MaXN0OiBQcm9kdWN0U2t1SW5mb0VudGl0eVtdO1xuICAgIG1haW5JbWFnZVVybDogc3RyaW5nO1xuICAgIHNlbGVjdGVkU2t1SWQ/OiBudW1iZXI7XG4gICAgc2VsZWN0ZWRQb2ludFBheU9wdGlvbkl0ZW06IE1XZWJBcGkuV2ViU3RvcmUuRnJvbnRlbmQuQkUuU2FsZVBhZ2VWMi5Qb2ludHNQYXlQYWlyc0VudGl0eTtcbn1cblxuY29uc3QgUHJvZHVjdFdyYXBwZXIgPSBzdHlsZWQuZGl2YFxuICAgIHBhZGRpbmc6ICR7ZGV2aWNlVXRpbGl0eS5nZXRCcm93c2luZ01vZGUoKSA9PT0gQlJPV1NJTkdfTU9ERS5NT0JJTEUgPyAnOHB4IDEycHgnIDogJzhweCAyMHB4J307XG5gO1xuXG5jb25zdCBQcm9kdWN0U2t1Q29udGFpbmVyID0gc3R5bGVkLmRpdmBcbiAgICBtYXgtaGVpZ2h0OiAzMjBweDtcbiAgICBvdmVyZmxvdy15OiBhdXRvO1xuICAgIG92ZXJmbG93LXg6IGhpZGRlbjtcbiAgICBwYWRkaW5nLWJvdHRvbTogMjBweDtcbmA7XG5cbmNvbnN0IFByb2R1Y3RRdHlDb250YWluZXIgPSBzdHlsZWQuZGl2YFxuICAgIGJvcmRlci10b3A6IDFweCBzb2xpZCAjZDRkOWRlO1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgcGFkZGluZzogJHtkZXZpY2VVdGlsaXR5LmdldEJyb3dzaW5nTW9kZSgpID09PSBCUk9XU0lOR19NT0RFLk1PQklMRSA/ICcxMnB4JyA6ICcyMHB4J307XG5gO1xuXG4vKipcbiAqIOWPluW+l+mBuOWPllNLVeWQjeeosVxuICogQHBhcmFtIGl0ZW1cbiAqIEByZXR1cm5zXG4gKi9cbmNvbnN0IGdldFNrdUxldmVscyA9IChpdGVtKSA9PiB7XG4gICAgaWYgKCFpdGVtKSB7XG4gICAgICAgIHJldHVybjtcbiAgICB9XG4gICAgY29uc3Qgc2t1S2V5TGlzdCA9IGl0ZW0uc2t1S2V5LnNwbGl0KCc7Jyk7XG4gICAgcmV0dXJuIHtcbiAgICAgICAgbGV2ZWwxOiBza3VLZXlMaXN0Lmxlbmd0aCA+IDAgPyBza3VLZXlMaXN0WzBdLnNwbGl0KCc6JylbM10gOiAnJyxcbiAgICAgICAgbGV2ZWwyOiBza3VLZXlMaXN0Lmxlbmd0aCA+IDEgPyBza3VLZXlMaXN0WzFdLnNwbGl0KCc6JylbM10gOiAnJyxcbiAgICB9O1xufTtcblxuLyoqXG4gKiBQcm9kdWN0U2t1IOe1hOWQiFNLVei8iemrlFxuICogQGRlc2NyaXB0aW9uIOWIhuWIpeWwh+S4ieWAi+WNgOWhiu+8jOS+neeFp+eLgOaFi+e1hOWQiOmhr+ekuu+8jOWQhOiHquaOp+WItuWFg+S7tuS6i+S7tuiZleeQhlxuICovXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBQcm9kdWN0U2t1IGV4dGVuZHMgUmVhY3QuQ29tcG9uZW50PFByb2R1Y3RTa3VQcm9wcywgU3RhdGU+IHtcbiAgICBjb25zdHJ1Y3Rvcihwcm9wczogUHJvZHVjdFNrdVByb3BzKSB7XG4gICAgICAgIHN1cGVyKHByb3BzKTtcbiAgICAgICAgY29uc3QgeyBzYWxlUGFnZUluZm8gfSA9IHByb3BzO1xuICAgICAgICB0aGlzLnN0YXRlID0ge1xuICAgICAgICAgICAgY3VycmVudFZhbHVlOiAxLFxuICAgICAgICAgICAgbWluVmFsdWU6IDEsXG4gICAgICAgICAgICBtYXhWYWx1ZTogMCxcbiAgICAgICAgICAgIHNhbGVQYWdlSW5mbyxcbiAgICAgICAgICAgIHNrdUluZm9MaXN0OiBudWxsLFxuICAgICAgICAgICAgbWFpbkltYWdlVXJsOiBzYWxlUGFnZUluZm8gJiYgc2FsZVBhZ2VJbmZvLm1haW5JbWFnZVVybFswXS5pbWFnZVNyYyxcbiAgICAgICAgICAgIHNlbGVjdGVkU2t1SWQ6IDAsXG4gICAgICAgICAgICBzZWxlY3RlZFBvaW50UGF5T3B0aW9uSXRlbTpcbiAgICAgICAgICAgICAgICBzYWxlUGFnZUluZm8gJiYgc2FsZVBhZ2VJbmZvLnBvaW50c1BheVBhaXJzTGlzdC5sZW5ndGggPiAwID8gc2FsZVBhZ2VJbmZvLnBvaW50c1BheVBhaXJzTGlzdFswXSA6IG51bGwsXG4gICAgICAgIH07XG4gICAgfVxuICAgIC8qKlxuICAgICAqIOm7nuaTiuaMiemIleS6i+S7tuiZleeQhlxuICAgICAqL1xuICAgIGNhcnRCdXR0b25IYW5kbGVyID0gKHN0YXR1cykgPT4ge1xuICAgICAgICBjb25zdCB7IHNob3BJZCwgaGFuZGxlQWRkVG9DYXJ0LCBoYW5kbGVBcHBPbmx5LCBoYW5kbGVGYWNlYm9va1NoYXJlLCBza3VRdHlNb2RlID0gJ092ZXJ3cml0ZScgfSA9IHRoaXMucHJvcHM7XG4gICAgICAgIGNvbnN0IHsgaWQsIGhhc1BvaW50UGF5T3B0aW9uLCB0aXRsZSwgcHJpY2UsIHN1Z2dlc3RQcmljZSB9ID0gdGhpcy5zdGF0ZS5zYWxlUGFnZUluZm87XG5cbiAgICAgICAgc3dpdGNoIChzdGF0dXMpIHtcbiAgICAgICAgICAgIC8vIOWKoOWFpeizvOeJqei7ilxuICAgICAgICAgICAgY2FzZSAnTm9ybWFsJzpcbiAgICAgICAgICAgICAgICBjb25zdCBjdXJyZW50U2t1SXRlbSA9IF8uZmluZChcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zdGF0ZS5za3VJbmZvTGlzdCxcbiAgICAgICAgICAgICAgICAgICAgKGl0ZW0pID0+IGl0ZW0uc2t1SWQgPT09IHRoaXMuc3RhdGUuc2VsZWN0ZWRTa3VJZFxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgLy8g5bCB6KOdQVBJ6ZyA6KaB55qE6LOH5paZ5qC85byPXG4gICAgICAgICAgICAgICAgY29uc3QgcHJvZHVjdEluZm86IFByb2R1Y3RJbmZvRW50aXR5ID0ge1xuICAgICAgICAgICAgICAgICAgICBzaG9wSWQsXG4gICAgICAgICAgICAgICAgICAgIHBheWxvYWQ6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHNhbGVQYWdlSWQ6IGlkLFxuICAgICAgICAgICAgICAgICAgICAgICAgcXVhbnRpdHk6IHRoaXMuc3RhdGUuY3VycmVudFZhbHVlLFxuICAgICAgICAgICAgICAgICAgICAgICAgc2t1SWQ6IHRoaXMuc3RhdGUuc2VsZWN0ZWRTa3VJZCxcbiAgICAgICAgICAgICAgICAgICAgICAgIE9wdGlvbmFsVHlwZUlkOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhhc1BvaW50UGF5T3B0aW9uICYmIHRoaXMuc3RhdGUuc2VsZWN0ZWRQb2ludFBheU9wdGlvbkl0ZW0uUGFpcnNQb2ludHMgPiAwXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gdGhpcy5zdGF0ZS5zZWxlY3RlZFBvaW50UGF5T3B0aW9uSXRlbS5Qb2ludHNQYXlJZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IDAsXG4gICAgICAgICAgICAgICAgICAgICAgICBPcHRpb25hbFR5cGVEZWY6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaGFzUG9pbnRQYXlPcHRpb24gJiYgdGhpcy5zdGF0ZS5zZWxlY3RlZFBvaW50UGF5T3B0aW9uSXRlbS5QYWlyc1BvaW50cyA+IDBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPyAnUG9pbnRzUGF5J1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6ICcnLFxuICAgICAgICAgICAgICAgICAgICAgICAgbWFpbkltYWdlVXJsOiB0aGlzLnN0YXRlLm1haW5JbWFnZVVybCxcbiAgICAgICAgICAgICAgICAgICAgICAgIHNlbGxpbmdRdHk6IGN1cnJlbnRTa3VJdGVtPy5zZWxsaW5nUXR5LFxuICAgICAgICAgICAgICAgICAgICAgICAgc2t1TGV2ZWxzOiBnZXRTa3VMZXZlbHMoY3VycmVudFNrdUl0ZW0pLFxuICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGUsXG4gICAgICAgICAgICAgICAgICAgICAgICBwcmljZTogY3VycmVudFNrdUl0ZW0/LnByaWNlLFxuICAgICAgICAgICAgICAgICAgICAgICAgc3VnZ2VzdFByaWNlOiBjdXJyZW50U2t1SXRlbT8uc3VnZ2VzdFByaWNlLFxuICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICBpc1NrdVF0eUFjY3VtdWxhdGU6IHNrdVF0eU1vZGUgPT09ICdBY2N1bXVsYXRlJyxcbiAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgIGhhbmRsZUFkZFRvQ2FydChwcm9kdWN0SW5mbyk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAvLyBBUFDnjajos6NcbiAgICAgICAgICAgIGNhc2UgJ0FwcE9ubHknOlxuICAgICAgICAgICAgICAgIGhhbmRsZUFwcE9ubHkoc2hvcElkLCBpZCk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAvLyBGQuWIhuS6q+W+jOizvOiyt1xuICAgICAgICAgICAgY2FzZSAnU2hhcmVUb0J1eSc6XG4gICAgICAgICAgICAgICAgaGFuZGxlRmFjZWJvb2tTaGFyZShpZCk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICB9O1xuICAgIC8qKlxuICAgICAqIOaUueiuiuaVuOmHj+iZleeQhlxuICAgICAqL1xuICAgIG9uQ2hhbmdlVmFsdWUgPSAoZTogUmVhY3QuQ2hhbmdlRXZlbnQ8SFRNTElucHV0RWxlbWVudD4pID0+IHtcbiAgICAgICAgY29uc3QgbmV3VmFsdWUgPSBpc05hTihwYXJzZUludChlLnRhcmdldC52YWx1ZSwgMTApKSA/ICcnIDogcGFyc2VJbnQoZS50YXJnZXQudmFsdWUsIDEwKTtcbiAgICAgICAgaWYgKHRoaXMuc3RhdGUuc2VsZWN0ZWRTa3VJZCA+IDApIHtcbiAgICAgICAgICAgIHRoaXMuc2V0U3RhdGUoeyBjdXJyZW50VmFsdWU6IG5ld1ZhbHVlID49IHRoaXMuc3RhdGUubWF4VmFsdWUgPyB0aGlzLnN0YXRlLm1heFZhbHVlIDogbmV3VmFsdWUgfSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLnNldFN0YXRlKHsgY3VycmVudFZhbHVlOiBuZXdWYWx1ZSB9KTtcbiAgICAgICAgfVxuICAgIH07XG4gICAgLyoqXG4gICAgICog5aKe5Yqg5pW46YePXG4gICAgICovXG4gICAgb25JbmNyZXNlVmFsdWUgPSAoKSA9PiB7XG4gICAgICAgIC8vIOaciemBuOWPllNLVeaJjeWft+ihjOWIpOaWt+aVuOmHj+acgOWkp+WAvFxuICAgICAgICBpZiAodGhpcy5zdGF0ZS5zZWxlY3RlZFNrdUlkID4gMCAmJiB0aGlzLnN0YXRlLmN1cnJlbnRWYWx1ZSA+PSB0aGlzLnN0YXRlLm1heFZhbHVlKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5zZXRTdGF0ZSgoc3RhdGUpID0+ICh7IGN1cnJlbnRWYWx1ZTogKCtzdGF0ZS5jdXJyZW50VmFsdWUgfHwgMCkgKyAxIH0pKTtcbiAgICAgICAgaWYgKHRoaXMucHJvcHMub25BZGRRdWFudGl0eSkge1xuICAgICAgICAgICAgdGhpcy5wcm9wcy5vbkFkZFF1YW50aXR5KCk7XG4gICAgICAgIH1cbiAgICB9O1xuICAgIC8qKlxuICAgICAqIOa4m+WwkeaVuOmHj1xuICAgICAqL1xuICAgIG9uRGVjcmVzZVZhbHVlID0gKCkgPT4ge1xuICAgICAgICB0aGlzLnNldFN0YXRlKChzdGF0ZSkgPT4ge1xuICAgICAgICAgICAgY29uc3QgbmV3VmFsdWUgPSArc3RhdGUuY3VycmVudFZhbHVlIC0gMTtcbiAgICAgICAgICAgIHJldHVybiB7IGN1cnJlbnRWYWx1ZTogbmV3VmFsdWUgPj0gc3RhdGUubWluVmFsdWUgPyBuZXdWYWx1ZSA6IHN0YXRlLm1pblZhbHVlIH07XG4gICAgICAgIH0pO1xuICAgICAgICBpZiAodGhpcy5wcm9wcy5vblJlbW92ZVF1YW50aXR5KSB7XG4gICAgICAgICAgICB0aGlzLnByb3BzLm9uUmVtb3ZlUXVhbnRpdHkoKTtcbiAgICAgICAgfVxuICAgIH07XG4gICAgLyoqXG4gICAgICog6Kit5a6a5pyA5aSn5pW46YePXG4gICAgICovXG4gICAgc2V0TWF4VmFsdWUgPSAoc2t1SW5mb0xpc3Q6IFByb2R1Y3RTa3VJbmZvRW50aXR5W10sIHNlbGVjdGVkU2t1SWQ6IG51bWJlcikgPT4ge1xuICAgICAgICBfLm1hcChza3VJbmZvTGlzdCwgKHNrdUluZm8pID0+IHtcbiAgICAgICAgICAgIGlmIChza3VJbmZvLnNrdUlkID09PSBzZWxlY3RlZFNrdUlkKSB7XG4gICAgICAgICAgICAgICAgaWYgKHNrdUluZm8uc2VsbGluZ1F0eSA+IDApIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zZXRTdGF0ZSh7IG1heFZhbHVlOiBza3VJbmZvLnNlbGxpbmdRdHksIGN1cnJlbnRWYWx1ZTogMSwgbWluVmFsdWU6IDEgfSk7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgLy8g6Kit5Zue5Yid5aeL5YC8XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc2V0U3RhdGUoeyBtYXhWYWx1ZTogMCwgY3VycmVudFZhbHVlOiAxLCBtaW5WYWx1ZTogMSB9KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH07XG4gICAgLyoqXG4gICAgICog5pu05paw6YG45pOH55qEU0tVIElEXG4gICAgICovXG4gICAgdXBkYXRlU2VsZWN0ZWRTa3VJZCA9IChzZWxlY3RlZFNrdUlkOiBudW1iZXIpID0+IHtcbiAgICAgICAgdGhpcy5zZXRTdGF0ZSh7IHNlbGVjdGVkU2t1SWQgfSk7XG4gICAgICAgIHRoaXMuc2V0TWF4VmFsdWUodGhpcy5zdGF0ZS5za3VJbmZvTGlzdCwgc2VsZWN0ZWRTa3VJZCk7XG4gICAgfTtcbiAgICAvKipcbiAgICAgKiDmm7TmlrDluqvlrZjmlbjph4/omZXnkIZcbiAgICAgKi9cbiAgICB1cGRhdGVQcm9kdWN0U3RvY2sgPSAoc2t1SW5mb0xpc3Q6IFByb2R1Y3RTa3VJbmZvRW50aXR5W10pID0+IHtcbiAgICAgICAgZmV0Y2hQcm9kdWN0U3RvY2tNb2RlbCh0aGlzLnByb3BzLnNob3BJZCwgdGhpcy5wcm9wcy5zYWxlUGFnZUluZm8uc2t1SWRMaXN0LCBza3VJbmZvTGlzdClcbiAgICAgICAgICAgIC50aGVuKChyZXN1bHQpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLnNldFN0YXRlKHsgc2t1SW5mb0xpc3Q6IHJlc3VsdCB9KTtcbiAgICAgICAgICAgICAgICB0aGlzLnNldE1heFZhbHVlKHJlc3VsdCwgdGhpcy5zdGF0ZS5zZWxlY3RlZFNrdUlkKTtcbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAuY2F0Y2goKGVycm9yKSA9PiBjb25zb2xlLmxvZygnZmV0Y2hQcm9kdWN0U3RvY2tNb2RlbCBFcnJvcjonLCBlcnJvcikpO1xuICAgIH07XG4gICAgLyoqXG4gICAgICog6YG45pOH6LO86LK35pa55byPXG4gICAgICovXG4gICAgc2VsZWN0UHVyY2hhc2VNZXRob2QgPSAocG9pbnRQYXlPcHRpb25JdGVtKSA9PiB7XG4gICAgICAgIHRoaXMuc2V0U3RhdGUoKHN0YXRlKSA9PlxuICAgICAgICAgICAgXy5leHRlbmQoXG4gICAgICAgICAgICAgICAge30sXG4gICAgICAgICAgICAgICAgeyBzZWxlY3RlZFBvaW50UGF5T3B0aW9uSXRlbTogc3RhdGUuc2VsZWN0ZWRQb2ludFBheU9wdGlvbkl0ZW0gfSxcbiAgICAgICAgICAgICAgICB7IHNlbGVjdGVkUG9pbnRQYXlPcHRpb25JdGVtOiBwb2ludFBheU9wdGlvbkl0ZW0gfVxuICAgICAgICAgICAgKVxuICAgICAgICApO1xuICAgIH07XG4gICAgLyoqXG4gICAgICog5YWD5Lu25Yid5aeL5YyWXG4gICAgICovXG4gICAgY29tcG9uZW50RGlkTW91bnQoKSB7XG4gICAgICAgIGNvbnN0IHsgbWF4U2t1TGV2ZWwsIHNrdUlkTGlzdCB9ID0gdGhpcy5wcm9wcy5zYWxlUGFnZUluZm87XG4gICAgICAgIC8vIOeVtueEoVNLVemBuOmgheaZgu+8jOebtOaOpeioreWumuesrOS4gOethlNrdUlkXG4gICAgICAgIGlmIChtYXhTa3VMZXZlbCA9PT0gMCkge1xuICAgICAgICAgICAgdGhpcy5zZXRTdGF0ZSh7IHNlbGVjdGVkU2t1SWQ6IHNrdUlkTGlzdFswXSB9LCAoKSA9PiB7XG4gICAgICAgICAgICAgICAgLy8g5Yid5aeLUHJvZHVjdEdyb3VwT3B0aW9u5YWD5Lu277yM5YWI5Y+W5b6X5pyA5paw5bqr5a2Y5pW46YePXG4gICAgICAgICAgICAgICAgdGhpcy51cGRhdGVQcm9kdWN0U3RvY2sodGhpcy5wcm9wcy5za3VJbmZvTGlzdCk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMudXBkYXRlUHJvZHVjdFN0b2NrKHRoaXMucHJvcHMuc2t1SW5mb0xpc3QpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcmVuZGVyKCkge1xuICAgICAgICBjb25zdCB7IHNrdUdyb3VwTGV2ZWwxLCBza3VHcm91cExldmVsMiwgbWF4U2t1TGV2ZWwsIHN0YXR1cyB9ID0gdGhpcy5zdGF0ZS5zYWxlUGFnZUluZm87XG4gICAgICAgIGNvbnN0IHsgc2t1SW5mb0xpc3QgfSA9IHRoaXMuc3RhdGU7XG4gICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICA8UmVhY3QuRnJhZ21lbnQ+XG4gICAgICAgICAgICAgICAgey8qIOWVhuWTgeizh+ioiiAqL31cbiAgICAgICAgICAgICAgICB7dGhpcy5zdGF0ZS5zYWxlUGFnZUluZm8gJiYgdGhpcy5zdGF0ZS5za3VJbmZvTGlzdCAmJiAoXG4gICAgICAgICAgICAgICAgICAgIDxQcm9kdWN0TWFpbkluZm9cbiAgICAgICAgICAgICAgICAgICAgICAgIHNhbGVQYWdlSW5mbz17dGhpcy5zdGF0ZS5zYWxlUGFnZUluZm99XG4gICAgICAgICAgICAgICAgICAgICAgICBza3VJbmZvTGlzdD17dGhpcy5zdGF0ZS5za3VJbmZvTGlzdH1cbiAgICAgICAgICAgICAgICAgICAgICAgIHNlbGVjdGVkUHVyY2hhc2VNZXRob2Q9e3RoaXMuc3RhdGUuc2VsZWN0ZWRQb2ludFBheU9wdGlvbkl0ZW19XG4gICAgICAgICAgICAgICAgICAgICAgICBza3VJZD17dGhpcy5zdGF0ZS5zZWxlY3RlZFNrdUlkfVxuICAgICAgICAgICAgICAgICAgICAgICAgZGVjaW1hbD17dGhpcy5wcm9wcy5kZWNpbWFsfVxuICAgICAgICAgICAgICAgICAgICAgICAgc3ltYm9sPXt0aGlzLnByb3BzLnN5bWJvbH1cbiAgICAgICAgICAgICAgICAgICAgICAgIHJhdGU9e3RoaXMucHJvcHMucmF0ZX1cbiAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgICAgIDxkaXY+XG4gICAgICAgICAgICAgICAgICAgIHsvKiDllYblk4HpgbjpoIXmuIXllq4gKi99XG4gICAgICAgICAgICAgICAgICAgIHsobWF4U2t1TGV2ZWwgPiAwIHx8IHRoaXMuc3RhdGUuc2FsZVBhZ2VJbmZvLmhhc1BvaW50UGF5T3B0aW9uKSAmJiAoXG4gICAgICAgICAgICAgICAgICAgICAgICA8UHJvZHVjdFdyYXBwZXI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPFByb2R1Y3RTa3VDb250YWluZXI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtza3VJbmZvTGlzdCAmJiBza3VJbmZvTGlzdC5sZW5ndGggPiAwICYmIChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxQcm9kdWN0R3JvdXBPcHRpb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBza3VJbmZvTGlzdD17c2t1SW5mb0xpc3R9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2t1R3JvdXA9e3sgc2t1R3JvdXBMZXZlbDEsIHNrdUdyb3VwTGV2ZWwyIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF4U2t1TGV2ZWw9e21heFNrdUxldmVsfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVwZGF0ZVNlbGVjdGVkU2t1SWQ9e3RoaXMudXBkYXRlU2VsZWN0ZWRTa3VJZH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1cGRhdGVQcm9kdWN0U3RvY2s9e3RoaXMudXBkYXRlUHJvZHVjdFN0b2NrfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3RoaXMucHJvcHMubW9kZSAhPT0gJ0Nob29zZScgJiYgdGhpcy5zdGF0ZS5zYWxlUGFnZUluZm8uaGFzUG9pbnRQYXlPcHRpb24gJiYgKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPFB1cmNoYXNlTWV0aG9kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHVyY2hhc2VNZXRob2RMaXN0PXt0aGlzLnN0YXRlLnNhbGVQYWdlSW5mby5wb2ludHNQYXlQYWlyc0xpc3R9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZWN0ZWRQdXJjaGFzZU1ldGhvZD17dGhpcy5zdGF0ZS5zZWxlY3RlZFBvaW50UGF5T3B0aW9uSXRlbX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvblNlbGVjdFB1cmNoYXNlTWV0aG9kPXt0aGlzLnNlbGVjdFB1cmNoYXNlTWV0aG9kfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlY2ltYWw9e3RoaXMucHJvcHMuZGVjaW1hbH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzeW1ib2w9e3RoaXMucHJvcHMuc3ltYm9sfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJhdGU9e3RoaXMucHJvcHMucmF0ZX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICl9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9Qcm9kdWN0U2t1Q29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9Qcm9kdWN0V3JhcHBlcj5cbiAgICAgICAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgICAgICAgICAgPFByb2R1Y3RRdHlDb250YWluZXI+XG4gICAgICAgICAgICAgICAgICAgICAgICB7Lyog5ZWG5ZOB5pW46YeP6aGv56S6ICovfVxuICAgICAgICAgICAgICAgICAgICAgICAgPFByb2R1Y3REaXNwbGF5UXR5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY3VycmVudFZhbHVlPXt0aGlzLnN0YXRlLmN1cnJlbnRWYWx1ZX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXhWYWx1ZT17dGhpcy5zdGF0ZS5tYXhWYWx1ZX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtaW5WYWx1ZT17dGhpcy5zdGF0ZS5taW5WYWx1ZX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkluY3Jlc2VWYWx1ZT17dGhpcy5vbkluY3Jlc2VWYWx1ZX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkRlY3Jlc2VWYWx1ZT17dGhpcy5vbkRlY3Jlc2VWYWx1ZX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkNoYW5nZVZhbHVlPXt0aGlzLm9uQ2hhbmdlVmFsdWV9XG4gICAgICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgey8qIOaMiemIleeLgOaFi+mhr+ekuiAqL31cbiAgICAgICAgICAgICAgICAgICAgICAgIDxQcm9kdWN0Q2FydEJ1dHRvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vZGU9e3RoaXMucHJvcHMubW9kZX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGF0dXM9e3N0YXR1c31cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjdXJyZW50VmFsdWU9e3RoaXMuc3RhdGUuY3VycmVudFZhbHVlfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1heFZhbHVlPXt0aGlzLnN0YXRlLm1heFZhbHVlfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1pblZhbHVlPXt0aGlzLnN0YXRlLm1pblZhbHVlfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2xpY2tlZD17dGhpcy5jYXJ0QnV0dG9uSGFuZGxlcn1cbiAgICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgIDwvUHJvZHVjdFF0eUNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvUmVhY3QuRnJhZ21lbnQ+XG4gICAgICAgICk7XG4gICAgfVxufVxuIiwiaW1wb3J0IFJlYWN0LCB7IEZDLCB1c2VTdGF0ZSwgdXNlRWZmZWN0IH0gZnJvbSAncmVhY3QnO1xuaW1wb3J0IHN0eWxlZCBmcm9tICdzdHlsZWQtY29tcG9uZW50cyc7XG5pbXBvcnQgeyBydW50aW1lTW9kZVV0aWxpdHkgfSBmcm9tICdAdXRpbGl0aWVzL2luZGV4JztcblxuaW50ZXJmYWNlIElTbGlkZVB1c2hNZW51UHJvcHMge1xuICAgIGlzT3BlbjogYm9vbGVhbjtcbiAgICBpc1Nob3dDbG9zZTogYm9vbGVhbjtcbiAgICBvcGVuRGlyZWN0aW9uOiBzdHJpbmc7XG4gICAgZnJlZXplQ2xhc3NOYW1lOiBzdHJpbmc7XG4gICAgb25BZnRlckNsb3NlOiAoKSA9PiB2b2lkO1xufVxuXG5jb25zdCBCYWNrZHJvcCA9IHN0eWxlZC5kaXY8eyBpc09wZW46IGJvb2xlYW4gfT5gXG4gICAgcG9zaXRpb246IGZpeGVkO1xuICAgIHotaW5kZXg6IDEwMDA7XG4gICAgdG9wOiAwO1xuICAgIHJpZ2h0OiAwO1xuICAgIGJvdHRvbTogMDtcbiAgICBsZWZ0OiAwO1xuICAgIGJhY2tncm91bmQtY29sb3I6ICMwMDAwMDA7XG5cbiAgICAkeyhwcm9wcykgPT4ge1xuICAgICAgICByZXR1cm4gcHJvcHMuaXNPcGVuXG4gICAgICAgICAgICA/IGBcbiAgICAgICAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgICAgICAgaGVpZ2h0OiAxMDAlO1xuICAgICAgICAgICAgb3BhY2l0eTogLjU7XG4gICAgICAgIGBcbiAgICAgICAgICAgIDogYFxuICAgICAgICAgICAgd2lkdGg6IDA7XG4gICAgICAgICAgICBoZWlnaHQ6IDA7XG4gICAgICAgICAgICBvcGFjaXR5OiAwO1xuICAgICAgICBgO1xuICAgIH19XG5gO1xuXG5jb25zdCBCYXNlQ29udGFpbmVyID0gc3R5bGVkLmRpdmBcbiAgICBwb3NpdGlvbjogZml4ZWQ7XG4gICAgei1pbmRleDogMTAwMDE7XG4gICAgb3ZlcmZsb3cteTogc2Nyb2xsO1xuICAgIGJhY2tncm91bmQ6ICNmZmZmZmY7XG4gICAgYm90dG9tOiAtNzV2aDtcbmA7XG5cbmNvbnN0IEJvdHRvbUNvbnRhaW5lciA9IHN0eWxlZChCYXNlQ29udGFpbmVyKTx7IGlzT3BlbjogYm9vbGVhbiB9PmBcbiAgICB3aWR0aDogMTAwJTtcbiAgICB0cmFuc2l0aW9uOiBhbGwgMC4zcyBlYXNlO1xuICAgIGJvdHRvbTogJHsocHJvcHMpID0+IChwcm9wcy5pc09wZW4gPyAnMCcgOiAnLTc1Jyl9O1xuICAgIGJveC1zaGFkb3c6IDAgMCAxMHB4ICM2NjY7XG5gO1xuXG5jb25zdCBMZWZ0Q29udGFpbmVyID0gc3R5bGVkKEJhc2VDb250YWluZXIpPHsgaXNPcGVuOiBib29sZWFuIH0+YFxuICAgIHRvcDogMDtcbiAgICBsZWZ0OiAkeyhwcm9wcykgPT4gKHByb3BzLmlzT3BlbiA/ICcwJyA6ICctODAlJyl9O1xuICAgIHdpZHRoOiA4MCU7XG4gICAgaGVpZ2h0OiAxMDAlO1xuICAgIHRyYW5zaXRpb246IGFsbCAwLjNzIGVhc2U7XG4gICAgYm94LXNoYWRvdzogMCAwIDEwcHggIzY2NjtcbmA7XG5cbmNvbnN0IENsb3NlQnV0dG9uID0gc3R5bGVkLmFgXG4gICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgIHotaW5kZXg6IDE7XG4gICAgdG9wOiAxOXB4O1xuICAgIHJpZ2h0OiAxNnB4O1xuYDtcblxuLyoqXG4gKiDmjqjljYrpoIHlhYPku7ZcbiAqL1xuY29uc3QgU2xpZGVQdXNoTWVudTogRkM8SVNsaWRlUHVzaE1lbnVQcm9wcz4gPSAocHJvcHMpID0+IHtcbiAgICBjb25zdCB7IGlzT3BlbiwgaXNTaG93Q2xvc2UsIG9wZW5EaXJlY3Rpb24sIGZyZWV6ZUNsYXNzTmFtZSwgb25BZnRlckNsb3NlIH0gPSBwcm9wcztcbiAgICBjb25zdCBDb250YWluZXIgPSBvcGVuRGlyZWN0aW9uICE9PSAnbGVmdCcgPyBCb3R0b21Db250YWluZXIgOiBMZWZ0Q29udGFpbmVyO1xuICAgIGNvbnN0IFtpc09wZW5NZW51LCBzZXRJc09wZW5NZW51XSA9IHVzZVN0YXRlKGlzT3Blbik7XG4gICAgY29uc3QgZnJlZXplQm9keSA9IChpc0ZpeGVkOiBib29sZWFuKSA9PiB7XG4gICAgICAgIGlmIChydW50aW1lTW9kZVV0aWxpdHkuY2hlY2tJc0NsaWVudFJlbmRlcigpKSB7XG4gICAgICAgICAgICBpZiAoaXNGaXhlZCkge1xuICAgICAgICAgICAgICAgIHdpbmRvdy5kb2N1bWVudC5ib2R5LmNsYXNzTGlzdC5hZGQoZnJlZXplQ2xhc3NOYW1lKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgd2luZG93LmRvY3VtZW50LmJvZHkuY2xhc3NMaXN0LnJlbW92ZShmcmVlemVDbGFzc05hbWUpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfTtcblxuICAgIGNvbnN0IG9uQ2xvc2VNZW51ID0gKCkgPT4ge1xuICAgICAgICBzZXRJc09wZW5NZW51KGZhbHNlKTtcbiAgICAgICAgb25BZnRlckNsb3NlKCk7XG4gICAgfTtcblxuICAgIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgICAgIHNldElzT3Blbk1lbnUoaXNPcGVuKTtcbiAgICAgICAgZnJlZXplQm9keShpc09wZW4pO1xuICAgIH0sIFtpc09wZW5dKTtcblxuICAgIHJldHVybiAoXG4gICAgICAgIDxSZWFjdC5GcmFnbWVudD5cbiAgICAgICAgICAgIDxCYWNrZHJvcCBpc09wZW49e2lzT3Blbk1lbnV9IG9uQ2xpY2s9e29uQ2xvc2VNZW51fSAvPlxuICAgICAgICAgICAgPENvbnRhaW5lclxuICAgICAgICAgICAgICAgIGlkPXtvcGVuRGlyZWN0aW9uID09PSAnbGVmdCcgPyAnc3Bhcmstc2xpZGUtcHVzaC1tZW51X19sZWZ0LWNvbnRhaW50ZXInIDogJyd9XG4gICAgICAgICAgICAgICAgaXNPcGVuPXtpc09wZW5NZW51fVxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIHtpc1Nob3dDbG9zZSAmJiAoXG4gICAgICAgICAgICAgICAgICAgIDxDbG9zZUJ1dHRvbiBvbkNsaWNrPXtvbkNsb3NlTWVudX0+XG4gICAgICAgICAgICAgICAgICAgICAgICA8aSBjbGFzc05hbWU9XCJpY29uIGljb24tc2xpbS1jbG9zZVwiIC8+XG4gICAgICAgICAgICAgICAgICAgIDwvQ2xvc2VCdXR0b24+XG4gICAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgICAgICB7cHJvcHMuY2hpbGRyZW59XG4gICAgICAgICAgICA8L0NvbnRhaW5lcj5cbiAgICAgICAgPC9SZWFjdC5GcmFnbWVudD5cbiAgICApO1xufTtcblxuU2xpZGVQdXNoTWVudS5kZWZhdWx0UHJvcHMgPSB7XG4gICAgaXNPcGVuOiBmYWxzZSxcbiAgICBpc1Nob3dDbG9zZTogdHJ1ZSxcbiAgICBvcGVuRGlyZWN0aW9uOiAnYm90dG9tJyxcbiAgICBmcmVlemVDbGFzc05hbWU6ICdmcmVlemUtLXN0cmljdGx5Jyxcbn07XG5cbmV4cG9ydCBkZWZhdWx0IFNsaWRlUHVzaE1lbnU7XG4iLCJpbXBvcnQgKiBhcyBfIGZyb20gJ3VuZGVyc2NvcmUnO1xuaW1wb3J0IHsgZmV0Y2hBcGkgfSBmcm9tICcuLi9wcm92aWRlcnMvaHR0cC5wcm92aWRlcic7XG5pbXBvcnQgeyBnZXRNd2ViQXBpVXJsIH0gZnJvbSAnLi4vdXRpbGl0aWVzL3BhdGgudXRpbGl0eSc7XG5pbXBvcnQgeyBNV2ViQXBpIH0gZnJvbSAnLi4vdHlwaW5ncy9td2ViQXBpJztcblxuZXhwb3J0IGludGVyZmFjZSBBcGlSZXN1bHQ8VD4ge1xuICAgIFJldHVybkNvZGU6IHN0cmluZztcbiAgICBEYXRhOiBUO1xuICAgIE1lc3NhZ2U6IHN0cmluZztcbn1cbmV4cG9ydCBpbnRlcmZhY2UgU2FsZVBhZ2VJbmZvRW50aXR5IHtcbiAgICBpZDogbnVtYmVyO1xuICAgIHN0YXR1czogc3RyaW5nO1xuICAgIHByaWNlOiBudW1iZXI7XG4gICAgc3VnZ2VzdFByaWNlPzogbnVtYmVyO1xuICAgIHRpdGxlOiBzdHJpbmc7XG4gICAgbWFpbkltYWdlVXJsOiBQcm9kdWN0SW1hZ2VJbmZvRW50aXR5W107XG4gICAgc2t1SWRMaXN0OiBudW1iZXJbXTtcbiAgICBza3VHcm91cExldmVsMT86IFByb2R1Y3RTa3VHcm91cEVudGl0eTtcbiAgICBza3VHcm91cExldmVsMj86IFByb2R1Y3RTa3VHcm91cEVudGl0eTtcbiAgICBtYXhTa3VMZXZlbDogbnVtYmVyO1xuICAgIG1heFByaWNlOiBudW1iZXI7XG4gICAgbWF4U3VnZ2VzdFByaWNlOiBudW1iZXI7XG4gICAgbWluUHJpY2U6IG51bWJlcjtcbiAgICBtaW5TdWdnZXN0UHJpY2U6IG51bWJlcjtcbiAgICBoYXNQb2ludFBheU9wdGlvbjogYm9vbGVhbjtcbiAgICBwb2ludHNQYXlQYWlyc0xpc3Q6IE1XZWJBcGkuV2ViU3RvcmUuRnJvbnRlbmQuQkUuU2FsZVBhZ2VWMi5Qb2ludHNQYXlQYWlyc0VudGl0eVtdO1xufVxuZXhwb3J0IGludGVyZmFjZSBQcm9kdWN0SW1hZ2VJbmZvRW50aXR5IHtcbiAgICBza3VOYW1lOiBzdHJpbmc7XG4gICAgaW1hZ2VTcmM6IHN0cmluZztcbiAgICBza3VJZDogbnVtYmVyO1xufVxuZXhwb3J0IGludGVyZmFjZSBQcm9kdWN0U2t1S2V5RW50aXR5IHtcbiAgICBza3VOYW1lOiBzdHJpbmc7XG4gICAgc2t1S2V5OiBzdHJpbmc7XG59XG5leHBvcnQgaW50ZXJmYWNlIFByb2R1Y3RTa3VHcm91cEVudGl0eSB7XG4gICAgc2t1R3JvdXBOYW1lOiBzdHJpbmc7XG4gICAgc2t1S2V5TGlzdDogUHJvZHVjdFNrdUtleUVudGl0eVtdO1xufVxuZXhwb3J0IGludGVyZmFjZSBQcm9kdWN0U2t1SW5mb0VudGl0eSB7XG4gICAgaXNTaG93OiBib29sZWFuO1xuICAgIHNrdUtleTogc3RyaW5nO1xuICAgIHNrdUlkOiBudW1iZXI7XG4gICAgc2VsbGluZ1F0eTogbnVtYmVyO1xuICAgIHByaWNlOiBudW1iZXI7XG4gICAgc3VnZ2VzdFByaWNlOiBudW1iZXI7XG59XG4vKipcbiAqIOWPluW+l+WVhuWTgeeLgOaFi1xuICogQHBhcmFtIHNhbGVQYWdlSWQgXG4gKi9cbmV4cG9ydCBjb25zdCBmZXRjaFNhbGVQYWdlU3RhdHVzTW9kZWwgPSBhc3luYyAoc2FsZVBhZ2VJZDogbnVtYmVyKSA9PiB7XG4gICAgdHJ5IHtcbiAgICAgICAgY29uc3QgYXBpVXJsID0gZ2V0TXdlYkFwaVVybChgU2FsZVBhZ2VTdGF0dXMvR2V0U2FsZVBhZ2VTdGF0dXMvJHtzYWxlUGFnZUlkfWApO1xuICAgICAgICBjb25zdCBmZXRjaFBhcmFtZXRlcnMgPSB7XG4gICAgICAgICAgICBtZXRob2Q6ICdQT1NUJ1xuICAgICAgICB9O1xuICAgICAgICBjb25zdCByZXN1bHQgPSBhd2FpdCBmZXRjaEFwaTxzdHJpbmc+KGFwaVVybCwgZmV0Y2hQYXJhbWV0ZXJzKTtcbiAgICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZShyZXN1bHQpO1xuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgIHJldHVybiBQcm9taXNlLnJlamVjdChlcnJvcik7XG4gICAgfVxufTtcblxuLyoqXG4gKiDlj5blvpfllYblk4Hos4foqIpcbiAqIEBkZXNjcmlwdGlvbiDmraRBUEnovIPlrozmlbTllYblk4Hos4foqIpcbiAqIEBwYXJhbSBzaG9wSWQgXG4gKiBAcGFyYW0gc2FsZVBhZ2VJZCBcbiAqL1xuZXhwb3J0IGNvbnN0IGZldGNoU2FsZVBhZ2VJbmZvTW9kZWwgPSBhc3luYyAoc2hvcElkOiBudW1iZXIsIHNhbGVQYWdlSWQ6IG51bWJlcikgPT4ge1xuICAgIHRyeSB7XG4gICAgICAgIGNvbnN0IGFwaVVybCA9IGdldE13ZWJBcGlVcmwoYFNhbGVQYWdldjIvR2V0U2FsZVBhZ2VWMkluZm8vJHtzaG9wSWR9LyR7c2FsZVBhZ2VJZH0/aGFzU2hvdzJMZXZlbEFsbEltYWdlTGlzdD10cnVlYCx0cnVlKTtcbiAgICAgICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgZmV0Y2hBcGk8QXBpUmVzdWx0PE1XZWJBcGkuV2ViU3RvcmUuRnJvbnRlbmQuQkUuU2FsZVBhZ2VWMi5TYWxlUGFnZVYyRW50aXR5Pj4oYXBpVXJsKTtcbiAgICAgICAgY29uc3QgeyBSZXR1cm5Db2RlLCBEYXRhLCBNZXNzYWdlfSA9IHJlc3VsdDtcbiAgICAgICAgaWYoUmV0dXJuQ29kZSA9PT0gJ0FQSTAwMDEnKSB7XG4gICAgICAgICAgICAvLyDlj5blvpfllYblk4Hni4DmhYsgQVBJXG4gICAgICAgICAgICBjb25zdCBzdGF0dXMgPSBhd2FpdCBmZXRjaFNhbGVQYWdlU3RhdHVzTW9kZWwoc2FsZVBhZ2VJZCk7XG4gICAgICAgICAgICBEYXRhLlN0YXR1c0RlZiA9IGdldFNhbGVQYWdlU3RhdHVzKHN0YXR1cywgRGF0YS5Jc0FQUE9ubHksIERhdGEuSXNTaGFyZVRvQnV5KTtcbiAgICAgICAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUoZmV0Y2hTYWxlUGFnZUluZm9NYXBwaW5nKERhdGEpKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiBQcm9taXNlLnJlamVjdChNZXNzYWdlKTtcbiAgICAgICAgfVxuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgIHJldHVybiBQcm9taXNlLnJlamVjdChlcnJvcik7XG4gICAgfVxufTtcblxuLyoqXG4gKiDliKTmlrfllYblk4Hni4DmhYvomZXnkIZcbiAqIEBwYXJhbSBzdGF0dXMgXG4gKiBAcGFyYW0gaXNBcHBPbmx5IFxuICogQHBhcmFtIGlzU2hhcmVUb0J1eSBcbiAqL1xuY29uc3QgZ2V0U2FsZVBhZ2VTdGF0dXMgPSAoc3RhdHVzOiBzdHJpbmcsIGlzQXBwT25seTogYm9vbGVhbiwgaXNTaGFyZVRvQnV5OiBib29sZWFuKSA9PiB7XG4gICAgbGV0IHR5cGUgPSBzdGF0dXM7XG4gICAgc3dpdGNoICh0cnVlKSB7XG4gICAgICAgIGNhc2UgaXNBcHBPbmx5ICYmIGlzU2hhcmVUb0J1eTpcbiAgICAgICAgICAgIC8vIEFQUOeNqOizo+asiumHjeavlOWIhuS6q+W+jOizvOiyt+mrmFxuICAgICAgICAgICAgdHlwZSA9ICdBcHBPbmx5JztcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIGlzQXBwT25seTpcbiAgICAgICAgICAgIHR5cGUgPSAnQXBwT25seSc7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSBpc1NoYXJlVG9CdXk6XG4gICAgICAgICAgICB0eXBlID0gJ1NoYXJlVG9CdXknO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgfVxuICAgIHJldHVybiB0eXBlO1xufTtcblxuLyoqXG4gKiDmlbTnkIZBUEnlm57mh4nnmoTllYblk4Hos4fmlpnomZXnkIZcbiAqIEBwYXJhbSBkYXRhIFxuICovXG5jb25zdCBmZXRjaFNhbGVQYWdlSW5mb01hcHBpbmcgPSAoZGF0YTogTVdlYkFwaS5XZWJTdG9yZS5Gcm9udGVuZC5CRS5TYWxlUGFnZVYyLlNhbGVQYWdlVjJFbnRpdHkpID0+IHtcbiAgICBjb25zdCBza3VMaXN0ID0gZGF0YS5NYWpvckxpc3RbMF0uU0tVTGlzdDtcbiAgICBsZXQgbWF4U2t1TGV2ZWw7XG5cbiAgICBpZiAoc2t1TGlzdCAmJiBza3VMaXN0Lmxlbmd0aCA+IDApIHtcbiAgICAgICAgaWYgKHNrdUxpc3QubGVuZ3RoID09PSAxKSB7XG4gICAgICAgICAgICBtYXhTa3VMZXZlbCA9IHNrdUxpc3RbMF0uVGl0bGUgPT09ICctMScgPyAwIDogMTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIG1heFNrdUxldmVsID0gMjtcbiAgICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICAgIG1heFNrdUxldmVsID0gMDtcbiAgICB9XG5cbiAgICAvLyDovYnmj5vnrKzkuIDpmo5rZXnlgLzmuIXllq5cbiAgICBjb25zdCBza3VLZXlMaXN0TGV2ZWwxOiBQcm9kdWN0U2t1S2V5RW50aXR5W10gPSBtYXhTa3VMZXZlbCA+IDAgPyBfLm1hcChza3VMaXN0WzBdLlByb3BlcnR5TGlzdCwgaXRlbSA9PiB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBza3VOYW1lOiBpdGVtLk5hbWUsXG4gICAgICAgICAgICBza3VLZXk6IGl0ZW0uUHJvcGVydHlOYW1lU2V0LFxuICAgICAgICB9O1xuICAgIH0pIDogW107XG4gICAgLy8g57WE5ZCI56ys5LiA6ZqO6LOH6KiKXG4gICAgY29uc3Qgc2t1R3JvdXBMZXZlbDE6IFByb2R1Y3RTa3VHcm91cEVudGl0eSA9IHtcbiAgICAgICAgc2t1R3JvdXBOYW1lOiBza3VMaXN0Lmxlbmd0aCA+IDAgPyBza3VMaXN0WzBdLlRpdGxlIDogJy0xJyxcbiAgICAgICAgc2t1S2V5TGlzdDogc2t1S2V5TGlzdExldmVsMSxcbiAgICB9O1xuICAgIC8vIOi9ieaPm+esrOS6jOmajmtleeWAvOa4heWWru+8jOWmguaenOaykuacieS6jOmajuWbnuWCs+epuumZo+WIl1xuICAgIGNvbnN0IHNrdUtleUxpc3RMZXZlbDI6IFByb2R1Y3RTa3VLZXlFbnRpdHlbXSA9XG4gICAgICAgIG1heFNrdUxldmVsID09PSAyXG4gICAgICAgICAgICA/IF8ubWFwKHNrdUxpc3RbMV0uUHJvcGVydHlMaXN0LCBpdGVtID0+IHtcbiAgICAgICAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgICAgICAgc2t1TmFtZTogaXRlbS5OYW1lLFxuICAgICAgICAgICAgICAgICAgICAgIHNrdUtleTogaXRlbS5Qcm9wZXJ0eU5hbWVTZXQsXG4gICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgOiBbXTtcbiAgICAvLyDntYTlkIjnrKzkuozpmo7os4foqIpcbiAgICBjb25zdCBza3VHcm91cExldmVsMjogUHJvZHVjdFNrdUdyb3VwRW50aXR5ID1cbiAgICAgICAgbWF4U2t1TGV2ZWwgPT09IDJcbiAgICAgICAgICAgID8ge1xuICAgICAgICAgICAgICAgICAgc2t1R3JvdXBOYW1lOiBza3VMaXN0WzFdLlRpdGxlLFxuICAgICAgICAgICAgICAgICAgc2t1S2V5TGlzdDogc2t1S2V5TGlzdExldmVsMixcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgOiBudWxsO1xuICAgIC8vIFNLVeWIneWni+izh+aWmea4heWWrlxuICAgIGNvbnN0IHNrdUluZm9MaXN0OiBQcm9kdWN0U2t1SW5mb0VudGl0eVtdID0gXy5tYXAoZGF0YS5TS1VQcm9wZXJ0eVNldExpc3QsIGl0ZW0gPT4ge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgaXNTaG93OiBpdGVtLklzU2hvdyxcbiAgICAgICAgICAgIHNrdUtleTogaXRlbS5Qcm9wZXJ0eU5hbWVTZXQsXG4gICAgICAgICAgICBza3VJZDogaXRlbS5TYWxlUHJvZHVjdFNLVUlkLFxuICAgICAgICAgICAgc2VsbGluZ1F0eTogaXRlbS5TZWxsaW5nUXR5LCAvLyDlj6/llK7luqvlrZjmlbjph4/vvIzlt7LntpPljIXlkKvlj5blvpfjgIznlbbliY3luqvlrZjjgI3lj4rjgIzkuIDmrKHos7zosrfmnIDlpKfmlbjph4/jgI3nmoTmnIDlsI/lgLzkuqTpm4bvvIzkuI3pnIDopoHpoY3lpJbnmoRPbmNlUXR55qyE5L2N5Yik5pa3XG4gICAgICAgICAgICBwcmljZTogaXRlbS5QcmljZSxcbiAgICAgICAgICAgIHN1Z2dlc3RQcmljZTogaXRlbS5TdWdnZXN0UHJpY2VcbiAgICAgICAgfTtcbiAgICB9KTtcbiAgICAvLyBTS1XllYblk4HlnJbmuIXllq5cbiAgICBjb25zdCBpbWFnZUluZm9MaXN0OiBQcm9kdWN0SW1hZ2VJbmZvRW50aXR5W10gPSBfLm1hcChkYXRhLkltYWdlTGlzdCwgaXRlbSA9PiB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBza3VJZDogaXRlbS5JZCxcbiAgICAgICAgICAgIHNrdU5hbWU6IGl0ZW0uU0tVUHJvcGVydHlOYW1lU2V0LFxuICAgICAgICAgICAgaW1hZ2VTcmM6IGl0ZW0uUGljVXJsLFxuICAgICAgICB9O1xuICAgIH0pO1xuICAgIC8vIOe1hOWQiOWFg+S7tuWVhuWTgeizh+aWmeagvOW8j1xuICAgIGNvbnN0IHNhbGVQYWdlSW5mbzogU2FsZVBhZ2VJbmZvRW50aXR5ID0ge1xuICAgICAgICBtYXhTa3VMZXZlbCxcbiAgICAgICAgc2t1R3JvdXBMZXZlbDEsXG4gICAgICAgIHNrdUdyb3VwTGV2ZWwyLFxuICAgICAgICBpZDogZGF0YS5JZCxcbiAgICAgICAgc3RhdHVzOiBkYXRhLlN0YXR1c0RlZixcbiAgICAgICAgbWFpbkltYWdlVXJsOiBpbWFnZUluZm9MaXN0LFxuICAgICAgICBwcmljZTogZGF0YS5QcmljZSxcbiAgICAgICAgdGl0bGU6IGRhdGEuVGl0bGUsXG4gICAgICAgIHNrdUlkTGlzdDogZGF0YS5TYWxlUHJvZHVjdFNLVUlkTGlzdCxcbiAgICAgICAgc3VnZ2VzdFByaWNlOiBkYXRhLlN1Z2dlc3RQcmljZSxcbiAgICAgICAgbWF4UHJpY2U6IGRhdGEuTWF4UHJpY2UsXG4gICAgICAgIG1heFN1Z2dlc3RQcmljZTogZGF0YS5NYXhTdWdnZXN0UHJpY2UsXG4gICAgICAgIG1pblByaWNlOiBkYXRhLk1pblByaWNlLFxuICAgICAgICBtaW5TdWdnZXN0UHJpY2U6IGRhdGEuTWluU3VnZ2VzdFByaWNlLFxuICAgICAgICBoYXNQb2ludFBheU9wdGlvbjogZGF0YS5Qb2ludHNQYXlQYWlyc0xpc3QgJiYgZGF0YS5Qb2ludHNQYXlQYWlyc0xpc3QubGVuZ3RoID4gMCxcbiAgICAgICAgcG9pbnRzUGF5UGFpcnNMaXN0OiBkYXRhLlBvaW50c1BheVBhaXJzTGlzdFxuICAgIH07XG4gICAgcmV0dXJuIHtcbiAgICAgICAgc2FsZVBhZ2VJbmZvLFxuICAgICAgICBza3VJbmZvTGlzdCxcbiAgICB9O1xufVxuIiwiaW1wb3J0ICogYXMgXyBmcm9tICd1bmRlcnNjb3JlJztcbmltcG9ydCB7IGZldGNoQXBpIH0gZnJvbSAnLi4vcHJvdmlkZXJzL2h0dHAucHJvdmlkZXInO1xuaW1wb3J0IHsgZ2V0TXdlYkFwaVVybCB9IGZyb20gJy4uL3V0aWxpdGllcy9wYXRoLnV0aWxpdHknO1xuXG5leHBvcnQgaW50ZXJmYWNlIEFwaVJlc3VsdDxUPiB7XG4gICAgUmV0dXJuQ29kZTogc3RyaW5nO1xuICAgIERhdGE6IFQ7XG4gICAgTWVzc2FnZTogc3RyaW5nO1xufVxuaW50ZXJmYWNlIFNrdUxldmVsRW50aXR5IHtcbiAgICBsZXZlbDE6IHN0cmluZztcbiAgICBsZXZlbDI6IHN0cmluZztcbn1cbmV4cG9ydCBpbnRlcmZhY2UgUHJvZHVjdFBheWxvYWRFbnRpdHkge1xuICAgIHNhbGVQYWdlSWQ6IG51bWJlcjtcbiAgICBxdWFudGl0eTogbnVtYmVyIHwgc3RyaW5nO1xuICAgIHNrdUlkOiBudW1iZXI7XG4gICAgT3B0aW9uYWxUeXBlSWQ6IG51bWJlcjtcbiAgICBPcHRpb25hbFR5cGVEZWY6IHN0cmluZztcbiAgICBtYWluSW1hZ2VVcmw6IHN0cmluZztcbiAgICBzZWxsaW5nUXR5OiBhbnk7XG4gICAgc2t1TGV2ZWxzOiBTa3VMZXZlbEVudGl0eTtcbiAgICBwcmljZTogbnVtYmVyO1xuICAgIHN1Z2dlc3RQcmljZTogbnVtYmVyO1xuICAgIHRpdGxlOiBzdHJpbmc7XG59XG5leHBvcnQgaW50ZXJmYWNlIFByb2R1Y3RJbmZvRW50aXR5IHtcbiAgICBpc1NrdVF0eUFjY3VtdWxhdGU6IGJvb2xlYW47XG4gICAgc2hvcElkOiBudW1iZXI7XG4gICAgcGF5bG9hZDogUHJvZHVjdFBheWxvYWRFbnRpdHk7XG59XG4vKipcbiAqIOWVhuWTgeWKoOWFpeizvOeJqei7ilxuICogQHBhcmFtIHBhcmFtcyBcbiAqL1xuZXhwb3J0IGNvbnN0IGFkZFNob3BwaW5nQ2FydE1vZGVsID0gYXN5bmMgKHBhcmFtczogUHJvZHVjdEluZm9FbnRpdHkpID0+IHtcbiAgICBjb25zdCB7IHNob3BJZCwgcGF5bG9hZCwgaXNTa3VRdHlBY2N1bXVsYXRlID0gZmFsc2UgfSA9IHBhcmFtcztcbiAgICBjb25zdCB7IHNhbGVQYWdlSWQsIHF1YW50aXR5LCBza3VJZCwgT3B0aW9uYWxUeXBlSWQsIE9wdGlvbmFsVHlwZURlZiB9ID0gcGF5bG9hZDtcbiAgICB0cnkge1xuICAgICAgICBjb25zdCBhcGlVcmwgPSBnZXRNd2ViQXBpVXJsKGBTaG9wcGluZ0NhcnRWNC9JbnNlcnRJdGVtP3Nob3BJZD0ke3Nob3BJZH1gKTtcbiAgICAgICAgY29uc3QgZmV0Y2hQYXJhbWV0ZXJzID0ge1xuICAgICAgICAgICAgbWV0aG9kOiAnUE9TVCcsXG4gICAgICAgICAgICBib2R5OiBKU09OLnN0cmluZ2lmeSh7XG4gICAgICAgICAgICAgICAgc2hvcElkLFxuICAgICAgICAgICAgICAgIHNhbGVQYWdlSWQsXG4gICAgICAgICAgICAgICAgcXR5OiBxdWFudGl0eSxcbiAgICAgICAgICAgICAgICBzYWxlUHJvZHVjdFNLVUlkOiBza3VJZCxcbiAgICAgICAgICAgICAgICBPcHRpb25hbFR5cGVJZCxcbiAgICAgICAgICAgICAgICBPcHRpb25hbFR5cGVEZWYsXG4gICAgICAgICAgICAgICAgSXNTa3VRdHlBY2N1bXVsYXRlOiBpc1NrdVF0eUFjY3VtdWxhdGUsXG4gICAgICAgICAgICB9KSxcbiAgICAgICAgfTtcbiAgICAgICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgZmV0Y2hBcGk8QXBpUmVzdWx0PHN0cmluZz4+KGFwaVVybCwgZmV0Y2hQYXJhbWV0ZXJzKTtcbiAgICAgICAgaWYgKHJlc3VsdC5SZXR1cm5Db2RlID09PSAnQVBJNTEwMScpIHtcbiAgICAgICAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUocmVzdWx0LkRhdGEpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIFByb21pc2UucmVqZWN0KHJlc3VsdC5NZXNzYWdlKTtcbiAgICAgICAgfVxuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgIHJldHVybiBQcm9taXNlLnJlamVjdChlcnJvcik7XG4gICAgfVxufTtcbiIsImltcG9ydCAqIGFzIFJlYWN0IGZyb20gJ3JlYWN0JztcbmltcG9ydCB7IEkxOG4gfSBmcm9tICdyZWFjdC1yZWR1eC1pMThuJztcbmltcG9ydCB7IFRvYXN0LCBMb2FkaW5nLCBnZXRUb2FzdE1lc3NhZ2VJdGVtLCBEaWFsb2cgfSBmcm9tICdAY29tcG9uZW50cy9pbmRleCc7XG5pbXBvcnQgeyBUUkFOU0xBVEVfTE9DQUxFX0tFWSB9IGZyb20gJ0Bjb25zdGFudHMvdHJhbnNsYXRpb24uY29uc3RhbnRzJztcbmltcG9ydCB7IEJST1dTSU5HX01PREUgfSBmcm9tICdAY29uc3RhbnRzL2RldmljZS5jb25zdGFudHMnO1xuaW1wb3J0IHsgZGV2aWNlVXRpbGl0eSB9IGZyb20gJ0B1dGlsaXRpZXMvaW5kZXgnO1xuaW1wb3J0IFByb2R1Y3RTa3UsIHsgU2t1UXR5TW9kZSB9IGZyb20gJ0Bjb21wb25lbnRzL2FkZFRvQ2FydC9wcm9kdWN0L3Byb2R1Y3RTa3UnO1xuaW1wb3J0IFNsaWRlUHVzaE1lbnUgZnJvbSAnLi9zbGlkZVB1c2hNZW51JztcbmltcG9ydCB7IGZldGNoU2FsZVBhZ2VJbmZvTW9kZWwsIFNhbGVQYWdlSW5mb0VudGl0eSwgUHJvZHVjdFNrdUluZm9FbnRpdHkgfSBmcm9tICcuLi8uLi8uLi9tb2RlbHMvc2FsZVBhZ2UubW9kZWwnO1xuaW1wb3J0IHsgYWRkU2hvcHBpbmdDYXJ0TW9kZWwsIFByb2R1Y3RJbmZvRW50aXR5LCBQcm9kdWN0UGF5bG9hZEVudGl0eSB9IGZyb20gJy4uLy4uLy4uL21vZGVscy9zaG9wcGluZ0NhcnQubW9kZWwnO1xuaW1wb3J0IHsgTW9kZUVudW0gfSBmcm9tICdAY29tcG9uZW50cy9hZGRUb0NhcnQvZW51bSc7XG5cbmludGVyZmFjZSBBZGRUb0NhcnRQcm9wcyB7XG4gICAgbW9kZT86IGtleW9mIHR5cGVvZiBNb2RlRW51bTtcbiAgICBkZWNpbWFsOiBudW1iZXI7XG4gICAgc3ltYm9sOiBzdHJpbmc7XG4gICAgcmF0ZTogbnVtYmVyO1xuICAgIHNob3BJZDogbnVtYmVyO1xuICAgIHNhbGVQYWdlSWQ6IG51bWJlcjtcbiAgICBmYWNlYm9vaz86IGFueTtcbiAgICBza3VRdHlNb2RlPzogU2t1UXR5TW9kZTtcbiAgICBhZnRlclN1Y2Nlc3M/OiAocGF5bG9hZDogUHJvZHVjdFBheWxvYWRFbnRpdHkpID0+IHZvaWQ7XG4gICAgYWZ0ZXJDbG9zZT86ICgpID0+IHZvaWQ7XG4gICAgaGFuZGxlUmVkaXJlY3REZWVwTGluaz86ICgpID0+IHZvaWQ7XG4gICAgb25BZGRRdWFudGl0eT86ICgpID0+IHZvaWQ7XG4gICAgb25SZW1vdmVRdWFudGl0eT86ICgpID0+IHZvaWQ7XG59XG5pbnRlcmZhY2UgU3RhdGVzIHtcbiAgICBtb2RlOiBrZXlvZiB0eXBlb2YgTW9kZUVudW07XG4gICAgc2FsZVBhZ2VJZDogbnVtYmVyO1xuICAgIGlzT3BlblNrdTogYm9vbGVhbjtcbiAgICBpc09wZW5Ub2FzdDogYm9vbGVhbjtcbiAgICBpc09wZW5Mb2FkOiBib29sZWFuO1xuICAgIGlzT3BlbkRpYWxvZzogYm9vbGVhbjtcbiAgICB0b2FzdFR5cGU6IHN0cmluZztcbiAgICB0b2FzdE1lc3NhZ2U6IHN0cmluZztcbiAgICBkaWFsb2dNZXNzYWdlOiBzdHJpbmc7XG4gICAgc2FsZVBhZ2VJbmZvOiBTYWxlUGFnZUluZm9FbnRpdHk7XG4gICAgc2t1SW5mb0xpc3Q6IFByb2R1Y3RTa3VJbmZvRW50aXR5W107XG4gICAgcHJvZHVjdEluZm86IFByb2R1Y3RJbmZvRW50aXR5O1xuICAgIHNrdVF0eU1vZGU6IFNrdVF0eU1vZGU7XG59XG4vKipcbiAqIOaJi+apn+eJiCAtIFNLVSBQb3B1cOaooee1hFxuICovXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBBZGRUb0NhcnQgZXh0ZW5kcyBSZWFjdC5Db21wb25lbnQ8QWRkVG9DYXJ0UHJvcHMsIFN0YXRlcz4ge1xuICAgIGNvbnN0cnVjdG9yKHByb3BzOiBBZGRUb0NhcnRQcm9wcykge1xuICAgICAgICBzdXBlcihwcm9wcyk7XG4gICAgICAgIHRoaXMuc3RhdGUgPSB7XG4gICAgICAgICAgICBtb2RlOiBwcm9wcy5tb2RlIHx8ICdOb3JtYWwnLFxuICAgICAgICAgICAgc2FsZVBhZ2VJZDogcHJvcHMuc2FsZVBhZ2VJZCxcbiAgICAgICAgICAgIGlzT3BlblNrdTogZmFsc2UsXG4gICAgICAgICAgICBpc09wZW5Ub2FzdDogZmFsc2UsXG4gICAgICAgICAgICBpc09wZW5Mb2FkOiBmYWxzZSxcbiAgICAgICAgICAgIGlzT3BlbkRpYWxvZzogZmFsc2UsXG4gICAgICAgICAgICB0b2FzdFR5cGU6ICcnLFxuICAgICAgICAgICAgdG9hc3RNZXNzYWdlOiAnJyxcbiAgICAgICAgICAgIGRpYWxvZ01lc3NhZ2U6ICcnLFxuICAgICAgICAgICAgc2FsZVBhZ2VJbmZvOiBudWxsLFxuICAgICAgICAgICAgc2t1SW5mb0xpc3Q6IG51bGwsXG4gICAgICAgICAgICBwcm9kdWN0SW5mbzogbnVsbCxcbiAgICAgICAgICAgIHNrdVF0eU1vZGU6IHByb3BzLnNrdVF0eU1vZGUgfHwgJ092ZXJ3cml0ZScsXG4gICAgICAgIH07XG4gICAgfVxuICAgIC8qKlxuICAgICAqIOaqouafpeaYr+WQpumWi+WVnyBTS1UgUG9wdXBcbiAgICAgKi9cbiAgICBjaGVja0FkZFRvQ2FydERpcmVjdCA9IChkYXRhKSA9PiB7XG4gICAgICAgIGNvbnN0IHsgc2FsZVBhZ2VJbmZvLCBza3VJbmZvTGlzdCB9ID0gZGF0YTtcbiAgICAgICAgY29uc3QgeyBzdGF0dXMgfSA9IHNhbGVQYWdlSW5mbztcbiAgICAgICAgc3dpdGNoIChzdGF0dXMpIHtcbiAgICAgICAgICAgIGNhc2UgJ0FwcE9ubHknOlxuICAgICAgICAgICAgY2FzZSAnU2hhcmVUb0J1eSc6XG4gICAgICAgICAgICBjYXNlICdOb3JtYWwnOlxuICAgICAgICAgICAgICAgIHRoaXMuc2V0U3RhdGUoeyBpc09wZW5Mb2FkOiBmYWxzZSwgaXNPcGVuU2t1OiB0cnVlLCBzYWxlUGFnZUluZm8sIHNrdUluZm9MaXN0IH0pO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICB0aGlzLnNldFN0YXRlKHsgaXNPcGVuTG9hZDogZmFsc2UgfSk7XG4gICAgICAgICAgICAgICAgdGhpcy5zaG93TWVzc2FnZShzdGF0dXMpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgfTtcbiAgICAvKipcbiAgICAgKiDliqDlhaXos7znianou4romZXnkIZcbiAgICAgKi9cbiAgICBoYW5kbGVBZGRUb0NhcnQgPSAocHJvZHVjdEluZm86IFByb2R1Y3RJbmZvRW50aXR5KSA9PiB7XG4gICAgICAgIC8vIOaqouafpeaYr+WQpumBuOWPluaVuOmHj1xuICAgICAgICBpZiAocHJvZHVjdEluZm8ucGF5bG9hZC5za3VJZCA8PSAwKSB7XG4gICAgICAgICAgICB0aGlzLnNldFN0YXRlKHtcbiAgICAgICAgICAgICAgICBpc09wZW5Ub2FzdDogdHJ1ZSxcbiAgICAgICAgICAgICAgICB0b2FzdFR5cGU6ICd3YXJuaW5nJyxcbiAgICAgICAgICAgICAgICB0b2FzdE1lc3NhZ2U6IEkxOG4udChUUkFOU0xBVEVfTE9DQUxFX0tFWS5GUk9OVEVORC5MSUIuU0VMRUNUX09QVElPTiksXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICAvLyDpgbjos7zmqKHlvI9cbiAgICAgICAgaWYgKHRoaXMuc3RhdGUubW9kZSA9PT0gJ0Nob29zZScpIHtcbiAgICAgICAgICAgIHRoaXMuc2V0U3RhdGUoeyBwcm9kdWN0SW5mbyB9LCAoKSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5zZXRTdGF0ZShcbiAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgaXNPcGVuVG9hc3Q6IGZhbHNlLFxuICAgICAgICAgICAgICAgICAgICAgICAgdG9hc3RUeXBlOiAnJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIHRvYXN0TWVzc2FnZTogJycsXG4gICAgICAgICAgICAgICAgICAgICAgICBpc09wZW5Ta3U6IGZhbHNlLFxuICAgICAgICAgICAgICAgICAgICAgICAgc2FsZVBhZ2VJbmZvOiBudWxsLFxuICAgICAgICAgICAgICAgICAgICAgICAgc2t1SW5mb0xpc3Q6IG51bGwsXG4gICAgICAgICAgICAgICAgICAgICAgICBzYWxlUGFnZUlkOiAwLFxuICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5wcm9wcy5hZnRlclN1Y2Nlc3MpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyDlgrPlh7rlpJbpg6hHQeS9v+eUqOeahOWPg+aVuFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMucHJvcHMuYWZ0ZXJTdWNjZXNzKHByb2R1Y3RJbmZvLnBheWxvYWQpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgLy8g5Yqg5YWl6LO854mp6LuK5qih5byPXG4gICAgICAgICAgICB0aGlzLnNldFN0YXRlKHsgaXNPcGVuU2t1OiBmYWxzZSB9LCAoKSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5zZXRTdGF0ZSh7IGlzT3BlbkxvYWQ6IHRydWUsIHByb2R1Y3RJbmZvIH0pO1xuICAgICAgICAgICAgICAgIC8vIEZldGNoIEFQSSDliqDlhaXos7znianou4pcbiAgICAgICAgICAgICAgICBhZGRTaG9wcGluZ0NhcnRNb2RlbChwcm9kdWN0SW5mbylcbiAgICAgICAgICAgICAgICAgICAgLnRoZW4oKHJlc3VsdCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5zZXRTdGF0ZSh7IGlzT3BlbkxvYWQ6IGZhbHNlIH0sICgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnNob3dNZXNzYWdlKCdBZGRTdWNjZXNzJyk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAgICAgLmNhdGNoKChlcnJvcikgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc29sZS5sb2coJ+WKoOWFpeizvOeJqei7iiBFcnJvcjonLCBlcnJvcik7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnNldFN0YXRlKHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpc09wZW5Mb2FkOiBmYWxzZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpc09wZW5EaWFsb2c6IHRydWUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlhbG9nTWVzc2FnZTogZXJyb3IsXG4gICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgIH07XG4gICAgLyoqXG4gICAgICogQVBQ542o6LOj77yM6L2J5bCOUVItQ29kZeS4i+i8iemggeiZleeQhlxuICAgICAqL1xuICAgIGhhbmRsZUFwcE9ubHkgPSAoc2hvcElkOiBudW1iZXIsIHNhbGVQYWdlSWQ6IG51bWJlcikgPT4ge1xuICAgICAgICB0aGlzLnNldFN0YXRlKHsgaXNPcGVuU2t1OiBmYWxzZSB9KTtcbiAgICAgICAgaWYgKGRldmljZVV0aWxpdHkuZ2V0QnJvd3NpbmdNb2RlKCkgPT09IEJST1dTSU5HX01PREUuTU9CSUxFKSB7XG4gICAgICAgICAgICBpZiAodGhpcy5wcm9wcy5oYW5kbGVSZWRpcmVjdERlZXBMaW5rKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5wcm9wcy5oYW5kbGVSZWRpcmVjdERlZXBMaW5rKCk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHdpbmRvdy5sb2NhdGlvbi5ocmVmID0gJy9TYWxlUGFnZS9pbmRleC8nICsgc2FsZVBhZ2VJZDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHdpbmRvdy5sb2NhdGlvbi5ocmVmID0gJy9TYWxlUGFnZS9TaG93UVJDb2RlLycgKyBzYWxlUGFnZUlkO1xuICAgICAgICB9XG4gICAgfTtcbiAgICAvKipcbiAgICAgKiBGQuWIhuS6q+W+jOizvOiyt1xuICAgICAqL1xuICAgIGhhbmRsZUZhY2Vib29rU2hhcmUgPSAoc2FsZVBhZ2VJZDogbnVtYmVyKSA9PiB7XG4gICAgICAgIGlmICh0aGlzLnByb3BzLmZhY2Vib29rKSB7XG4gICAgICAgICAgICBjb25zdCBsaW5rID0gYCR7d2luZG93LmxvY2F0aW9uLnByb3RvY29sfS8vJHt3aW5kb3cubG9jYXRpb24uaG9zdH0vU2FsZVBhZ2UvSW5kZXgvJHtzYWxlUGFnZUlkfWA7XG4gICAgICAgICAgICB0aGlzLnByb3BzLmZhY2Vib29rLnVpKFxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgbWV0aG9kOiAnZmVlZCcsXG4gICAgICAgICAgICAgICAgICAgIGxpbmssXG4gICAgICAgICAgICAgICAgICAgIGRpc3BsYXk6ICdwb3B1cCcsXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAocmVzcG9uc2UpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zdGF0ZS5zYWxlUGFnZUluZm8uc3RhdHVzID0gJ05vcm1hbCc7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc2V0U3RhdGUoeyBzYWxlUGFnZUluZm86IHRoaXMuc3RhdGUuc2FsZVBhZ2VJbmZvIH0pO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICk7XG4gICAgICAgIH1cbiAgICB9O1xuICAgIC8qKlxuICAgICAqIOmXnOmWieizvOeJqei7iuS6i+S7tuiZleeQhuWPiumChOWOn3NhbGVQYWdlSWTliJ3lp4vlgLxcbiAgICAgKi9cbiAgICBvbkNsb3NlQWRkVG9DYXJ0SGFuZGxlciA9ICgpID0+IHtcbiAgICAgICAgdGhpcy5zZXRTdGF0ZSh7IGlzT3BlblNrdTogZmFsc2UsIHNhbGVQYWdlSW5mbzogbnVsbCwgc2t1SW5mb0xpc3Q6IG51bGwsIHNhbGVQYWdlSWQ6IDAgfSwgKCkgPT4ge1xuICAgICAgICAgICAgaWYgKHRoaXMucHJvcHMuYWZ0ZXJDbG9zZSkge1xuICAgICAgICAgICAgICAgIHRoaXMucHJvcHMuYWZ0ZXJDbG9zZSgpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9O1xuICAgIC8qKlxuICAgICAqIOmXnOmWiVRvYXN05LqL5Lu26JmV55CG77yM5YaN5Z+36KGM57WQ5p2f6LO854mp6LuK5LqL5Lu2XG4gICAgICovXG4gICAgb25DbG9zZVRvYXN0SGFuZGxlciA9ICgpID0+IHtcbiAgICAgICAgLy8g55W25pyq6YG4U0tV55u05o6l5Yqg5YWl6LO854mp6LuK5b2I5Ye66K2m5ZGK6KiK5oGv5pmC77yM5riF56m6VG9hc3Tni4DmhYtcbiAgICAgICAgaWYgKHRoaXMuc3RhdGUudG9hc3RNZXNzYWdlID09PSBJMThuLnQoVFJBTlNMQVRFX0xPQ0FMRV9LRVkuRlJPTlRFTkQuTElCLlNFTEVDVF9PUFRJT04pKSB7XG4gICAgICAgICAgICB0aGlzLnNldFN0YXRlKHsgaXNPcGVuVG9hc3Q6IGZhbHNlLCB0b2FzdFR5cGU6ICcnLCB0b2FzdE1lc3NhZ2U6ICcnIH0pO1xuICAgICAgICB9IGVsc2UgaWYgKHRoaXMuc3RhdGUudG9hc3RNZXNzYWdlID09PSBJMThuLnQoVFJBTlNMQVRFX0xPQ0FMRV9LRVkuRlJPTlRFTkQuTElCLlRPQVNULkFERF9TVUNDRVNTKSkge1xuICAgICAgICAgICAgLy8g55W25Yqg5YWl5oiQ5Yqf5b6M6Ke455m8Y2FsbCBiYWNr5LqL5Lu2XG4gICAgICAgICAgICB0aGlzLnNldFN0YXRlKFxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgaXNPcGVuVG9hc3Q6IGZhbHNlLFxuICAgICAgICAgICAgICAgICAgICB0b2FzdFR5cGU6ICcnLFxuICAgICAgICAgICAgICAgICAgICB0b2FzdE1lc3NhZ2U6ICcnLFxuICAgICAgICAgICAgICAgICAgICBpc09wZW5Ta3U6IGZhbHNlLFxuICAgICAgICAgICAgICAgICAgICBzYWxlUGFnZUluZm86IG51bGwsXG4gICAgICAgICAgICAgICAgICAgIHNrdUluZm9MaXN0OiBudWxsLFxuICAgICAgICAgICAgICAgICAgICBzYWxlUGFnZUlkOiAwLFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5wcm9wcy5hZnRlclN1Y2Nlc3MpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIOWCs+WHuuWklumDqEdB5L2/55So55qE5Y+D5pW4XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnByb3BzLmFmdGVyU3VjY2Vzcyh0aGlzLnN0YXRlLnByb2R1Y3RJbmZvLnBheWxvYWQpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuc2V0U3RhdGUoeyBpc09wZW5Ub2FzdDogZmFsc2UsIHRvYXN0VHlwZTogJycsIHRvYXN0TWVzc2FnZTogJycgfSwgdGhpcy5vbkNsb3NlQWRkVG9DYXJ0SGFuZGxlcik7XG4gICAgICAgIH1cbiAgICB9O1xuICAgIC8qKlxuICAgICAqIOmhr+ekuuWVhuWTgeeLgOaFi+ioiuaBr1xuICAgICAqL1xuICAgIHNob3dNZXNzYWdlID0gKHN0YXR1cykgPT4ge1xuICAgICAgICBjb25zdCBtZXNzYWdlSXRlbSA9IGdldFRvYXN0TWVzc2FnZUl0ZW0oc3RhdHVzKTtcbiAgICAgICAgaWYgKG1lc3NhZ2VJdGVtKSB7XG4gICAgICAgICAgICB0aGlzLnNldFN0YXRlKHtcbiAgICAgICAgICAgICAgICBpc09wZW5Ub2FzdDogdHJ1ZSxcbiAgICAgICAgICAgICAgICB0b2FzdE1lc3NhZ2U6IEkxOG4udChtZXNzYWdlSXRlbS5tZXNzYWdlKSxcbiAgICAgICAgICAgICAgICB0b2FzdFR5cGU6IG1lc3NhZ2VJdGVtLnR5cGUsXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgIH07XG5cbiAgICBoYW5kbGVDbG9zZURpYWxvZyA9ICgpID0+IHtcbiAgICAgICAgdGhpcy5zZXRTdGF0ZShcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBpc09wZW5EaWFsb2c6IGZhbHNlLFxuICAgICAgICAgICAgICAgIGRpYWxvZ01lc3NhZ2U6ICcnLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHRoaXMub25DbG9zZUFkZFRvQ2FydEhhbmRsZXJcbiAgICAgICAgKTtcbiAgICB9O1xuXG4gICAgLy8gVE9ETzog5LmL5b6M5YaN6Kq/5pW05LiN6KaB5L2/55SoY29tcG9uZW50V2lsbFJlY2VpdmVQcm9wc+inuOeZvOmWi+mXnFxuICAgIGNvbXBvbmVudFdpbGxSZWNlaXZlUHJvcHMobmV4dFByb3BzOiBBZGRUb0NhcnRQcm9wcykge1xuICAgICAgICBpZiAobmV4dFByb3BzLnNhbGVQYWdlSWQgIT09IHRoaXMuc3RhdGUuc2FsZVBhZ2VJZCAmJiAhdGhpcy5zdGF0ZS5pc09wZW5Ta3UpIHtcbiAgICAgICAgICAgIHRoaXMuc2V0U3RhdGUoeyBpc09wZW5Mb2FkOiB0cnVlIH0pO1xuICAgICAgICAgICAgLy8g5Y+W5b6XQVBJ5ZWG5ZOB6LOH6KiKXG4gICAgICAgICAgICBmZXRjaFNhbGVQYWdlSW5mb01vZGVsKHRoaXMucHJvcHMuc2hvcElkLCBuZXh0UHJvcHMuc2FsZVBhZ2VJZClcbiAgICAgICAgICAgICAgICAudGhlbigoZGF0YSkgPT4gdGhpcy5jaGVja0FkZFRvQ2FydERpcmVjdChkYXRhKSlcbiAgICAgICAgICAgICAgICAuY2F0Y2goKGVycikgPT4ge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnNldFN0YXRlKHsgaXNPcGVuTG9hZDogZmFsc2UgfSk7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc2hvd01lc3NhZ2UoJ0Vycm9yJyk7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICByZW5kZXIoKSB7XG4gICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImFkZC10by1jYXJ0LW1vYmlsZVwiPlxuICAgICAgICAgICAgICAgIHsvKiBQb3BVcCBTS1UgKi99XG4gICAgICAgICAgICAgICAgPFNsaWRlUHVzaE1lbnVcbiAgICAgICAgICAgICAgICAgICAgaXNPcGVuPXt0aGlzLnN0YXRlLmlzT3BlblNrdX1cbiAgICAgICAgICAgICAgICAgICAgb3BlbkRpcmVjdGlvbj17J2JvdHRvbSd9XG4gICAgICAgICAgICAgICAgICAgIGlzU2hvd0Nsb3NlPXt0cnVlfVxuICAgICAgICAgICAgICAgICAgICBvbkFmdGVyQ2xvc2U9e3RoaXMub25DbG9zZUFkZFRvQ2FydEhhbmRsZXJ9XG4gICAgICAgICAgICAgICAgICAgIGZyZWV6ZUNsYXNzTmFtZT17J2ZyZWV6ZSd9XG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICB7dGhpcy5zdGF0ZS5zYWxlUGFnZUluZm8gJiYgdGhpcy5zdGF0ZS5za3VJbmZvTGlzdCAmJiAoXG4gICAgICAgICAgICAgICAgICAgICAgICA8UHJvZHVjdFNrdVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vZGU9e3RoaXMuc3RhdGUubW9kZX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWNpbWFsPXt0aGlzLnByb3BzLmRlY2ltYWx9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc3ltYm9sPXt0aGlzLnByb3BzLnN5bWJvbH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByYXRlPXt0aGlzLnByb3BzLnJhdGV9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hvcElkPXt0aGlzLnByb3BzLnNob3BJZH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzYWxlUGFnZUluZm89e3RoaXMuc3RhdGUuc2FsZVBhZ2VJbmZvfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNrdUluZm9MaXN0PXt0aGlzLnN0YXRlLnNrdUluZm9MaXN0fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNrdVF0eU1vZGU9e3RoaXMuc3RhdGUuc2t1UXR5TW9kZX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGVBZGRUb0NhcnQ9e3RoaXMuaGFuZGxlQWRkVG9DYXJ0fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZUFwcE9ubHk9e3RoaXMuaGFuZGxlQXBwT25seX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGVGYWNlYm9va1NoYXJlPXt0aGlzLmhhbmRsZUZhY2Vib29rU2hhcmV9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgb25BZGRRdWFudGl0eT17dGhpcy5wcm9wcy5vbkFkZFF1YW50aXR5fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uUmVtb3ZlUXVhbnRpdHk9e3RoaXMucHJvcHMub25SZW1vdmVRdWFudGl0eX1cbiAgICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgICl9XG4gICAgICAgICAgICAgICAgPC9TbGlkZVB1c2hNZW51PlxuICAgICAgICAgICAgICAgIHsvKiDlvYjot7PoqIrmga8gKi99XG4gICAgICAgICAgICAgICAgPFRvYXN0XG4gICAgICAgICAgICAgICAgICAgIGlzT3Blbj17dGhpcy5zdGF0ZS5pc09wZW5Ub2FzdH1cbiAgICAgICAgICAgICAgICAgICAgdHlwZT17dGhpcy5zdGF0ZS50b2FzdFR5cGV9XG4gICAgICAgICAgICAgICAgICAgIG1lc3NhZ2U9e3RoaXMuc3RhdGUudG9hc3RNZXNzYWdlfVxuICAgICAgICAgICAgICAgICAgICBhZnRlckNsb3NlPXt0aGlzLm9uQ2xvc2VUb2FzdEhhbmRsZXJ9XG4gICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICB7Lyog562J5b6F5Zue5oeJ5pWI5p6cICovfVxuICAgICAgICAgICAgICAgIDxMb2FkaW5nIGlzTG9hZGluZz17dGhpcy5zdGF0ZS5pc09wZW5Mb2FkfSAvPlxuICAgICAgICAgICAgICAgIHsvKiDpjK/oqqREaWFsb2cqL31cbiAgICAgICAgICAgICAgICA8RGlhbG9nXG4gICAgICAgICAgICAgICAgICAgIGlzT3Blbj17dGhpcy5zdGF0ZS5pc09wZW5EaWFsb2d9XG4gICAgICAgICAgICAgICAgICAgIGlzU2hvd0Nsb3NlPXtmYWxzZX1cbiAgICAgICAgICAgICAgICAgICAgY29uZmlybVRleHQ9e0kxOG4udChUUkFOU0xBVEVfTE9DQUxFX0tFWS5GUk9OVEVORC5MSUIuQ09ORklSTSl9XG4gICAgICAgICAgICAgICAgICAgIG9uQ29uZmlybURpYWxvZz17dGhpcy5oYW5kbGVDbG9zZURpYWxvZ31cbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgIDxkaXY+e3RoaXMuc3RhdGUuZGlhbG9nTWVzc2FnZX08L2Rpdj5cbiAgICAgICAgICAgICAgICA8L0RpYWxvZz5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICApO1xuICAgIH1cbn1cbiIsImltcG9ydCAqIGFzIFJlYWN0IGZyb20gJ3JlYWN0JztcbmltcG9ydCB7IEZDLCB1c2VFZmZlY3QsIHVzZVN0YXRlIH0gZnJvbSAncmVhY3QnO1xuaW1wb3J0ICcuL2NoZWNrQm94LnNjc3MnO1xuXG5pbnRlcmZhY2UgQ2hlY2tCb3hQcm9wcyB7XG4gICAgbGFiZWxUZXh0Pzogc3RyaW5nO1xuICAgIGlkOiBzdHJpbmc7XG4gICAgbmFtZTogc3RyaW5nO1xuICAgIGlzQ2hlY2s/OiBib29sZWFuO1xuICAgIGlzRGlzYWJsZT86IGJvb2xlYW47XG4gICAgaWRlbnRpZmllcjogc3RyaW5nO1xuICAgIGFmdGVyQ2hlY2s/OiAoaWRlbnRpZmllciwgY2hlY2tlZCkgPT4gdm9pZDtcbiAgICByZWY/OiBhbnk7XG59XG5cbmNvbnN0IENoZWNrQm94OiBGQzxDaGVja0JveFByb3BzPiA9IFJlYWN0LmZvcndhcmRSZWYoKHByb3BzLCByZWY6IGFueSkgPT4ge1xuICAgIGNvbnN0IHsgbGFiZWxUZXh0LCBpZCwgbmFtZSwgaXNDaGVjaywgaXNEaXNhYmxlLCBpZGVudGlmaWVyLCBhZnRlckNoZWNrIH0gPSBwcm9wcztcblxuICAgIGNvbnN0IFtjaGVja2VkLCBzZXRDaGVja2VkXSA9IHVzZVN0YXRlKGlzQ2hlY2spO1xuICAgIGNvbnN0IFtkaXNhYmxlZCwgc2V0RGlzYWJsZWRdID0gdXNlU3RhdGUoaXNEaXNhYmxlKTtcblxuICAgIGNvbnN0IGhhbmRsZUNsaWNrID0gKGlkZW50aWZpZXI6IHN0cmluZywgY2hlY2tlZDogYm9vbGVhbikgPT4ge1xuICAgICAgICBzZXRDaGVja2VkKCFjaGVja2VkKTtcblxuICAgICAgICBpZiAodHlwZW9mIGFmdGVyQ2hlY2sgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgICAgIGFmdGVyQ2hlY2soaWRlbnRpZmllciwgIWNoZWNrZWQpO1xuICAgICAgICB9XG4gICAgfTtcblxuICAgIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgICAgIHNldENoZWNrZWQoaXNDaGVjayk7XG4gICAgfSwgW2lzQ2hlY2tdKTtcblxuICAgIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgICAgIHNldERpc2FibGVkKGlzRGlzYWJsZSk7XG4gICAgfSwgW2lzRGlzYWJsZV0pO1xuXG4gICAgcmV0dXJuIChcbiAgICAgICAgPGxhYmVsXG4gICAgICAgICAgICBodG1sRm9yPXtpZH1cbiAgICAgICAgICAgIGNsYXNzTmFtZT1cImNoZWNrYm94LWNvbnRhaW5lclwiPlxuICAgICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICAgICAgaWQ9e2lkfVxuICAgICAgICAgICAgICAgIG5hbWU9e25hbWV9XG4gICAgICAgICAgICAgICAgdHlwZT1cImNoZWNrYm94XCJcbiAgICAgICAgICAgICAgICBjbGFzc05hbWU9XCJpbnB1dC1jaGVja2JveFwiXG4gICAgICAgICAgICAgICAgY2hlY2tlZD17Y2hlY2tlZH1cbiAgICAgICAgICAgICAgICBkaXNhYmxlZD17ZGlzYWJsZWR9XG4gICAgICAgICAgICAgICAgb25DbGljaz17KCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBoYW5kbGVDbGljayhpZGVudGlmaWVyLCBjaGVja2VkKTtcbiAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgIHJlZj17cmVmfVxuICAgICAgICAgICAgLz5cbiAgICAgICAgICAgIDxzcGFuIGNsYXNzTmFtZT1cImNoZWNrLW1hcmtcIi8+XG4gICAgICAgICAgICB7bGFiZWxUZXh0ICYmIDxzcGFuIGNsYXNzTmFtZT1cImxhYmVsLXRleHRcIj57bGFiZWxUZXh0fTwvc3Bhbj59XG4gICAgICAgIDwvbGFiZWw+XG4gICAgKTtcbn0pO1xuXG5leHBvcnQgZGVmYXVsdCBDaGVja0JveDtcbiIsImltcG9ydCAqIGFzIFJlYWN0IGZyb20gJ3JlYWN0JztcbmltcG9ydCBjbGFzc05hbWVzIGZyb20gJ2NsYXNzbmFtZXMnO1xuaW1wb3J0ICcuL3JhZGlvQnV0dG9uLnNjc3MnO1xuaW1wb3J0IHV1aWQgZnJvbSAndXVpZC92NCc7XG5cbmludGVyZmFjZSBJUHJvcHMge1xuICAgIGRpc2FibGVkPzogYm9vbGVhbjtcbiAgICBjaGVja2VkPzogYm9vbGVhbjtcbiAgICBvbkNoYW5nZT86ICgpID0+IGFueTtcbiAgICB2YWx1ZT86IGFueTtcbiAgICBodG1sTmFtZT86IHN0cmluZztcbiAgICBjaGlsZHJlbj86IFJlYWN0LlJlYWN0Tm9kZTtcbiAgICBjbGFzc05hbWU/OiBzdHJpbmc7XG4gICAgaWQ/OiBzdHJpbmc7XG4gICAgcmVmPzogYW55O1xufVxuXG5jb25zdCBSYWRpb0J1dHRvbiA9IFJlYWN0LmZvcndhcmRSZWYoKHByb3BzOiBJUHJvcHMsIHJlZjphbnkpID0+IHtcbiAgICBjb25zdCBpZCA9IHByb3BzLmlkICYmICdyYWRpb0J0bklkJyArIHV1aWQoKTtcbiAgICBjb25zdCBjbGFzc05hbWUgPSBwcm9wcy5jbGFzc05hbWUgfHwgJyc7XG5cbiAgICByZXR1cm4gKFxuICAgICAgICA8ZGl2IGNsYXNzTmFtZT17Y2xhc3NOYW1lcygncmFkaW8tYnV0dG9uJywge1xuICAgICAgICAgICAgY2xhc3NOYW1lOiAhIWNsYXNzTmFtZSxcbiAgICAgICAgICAgICdyYWRpby1idXR0b25fX2Rpc2FibGUnOiBwcm9wcy5kaXNhYmxlZFxuICAgICAgICB9KX0+XG4gICAgICAgICAgICA8aW5wdXQgdHlwZT1cInJhZGlvXCJcbiAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU9XCJyYWRpby1idXR0b25fX2hpZGRlblwiXG4gICAgICAgICAgICAgICAgICAgaWQ9e2lkfVxuICAgICAgICAgICAgICAgICAgIGRpc2FibGVkPXtwcm9wcy5kaXNhYmxlZH1cbiAgICAgICAgICAgICAgICAgICBjaGVja2VkPXtwcm9wcy5jaGVja2VkfVxuICAgICAgICAgICAgICAgICAgIG9uQ2hhbmdlPXtwcm9wcy5vbkNoYW5nZX1cbiAgICAgICAgICAgICAgICAgICB2YWx1ZT17cHJvcHMudmFsdWV9XG4gICAgICAgICAgICAgICAgICAgbmFtZT17cHJvcHMuaHRtbE5hbWV9XG4gICAgICAgICAgICAgICAgICAgcmVmPXtyZWZ9XG4gICAgICAgICAgICAvPlxuICAgICAgICAgICAgPGxhYmVsIGNsYXNzTmFtZT1cInJhZGlvLWJ1dHRvbl9fZW50cnlcIiBodG1sRm9yPXtpZH0+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJyYWRpby1idXR0b25fX2NpcmNsZVwiPjwvZGl2PlxuICAgICAgICAgICAgICAgIHtwcm9wcy5jaGlsZHJlbn1cbiAgICAgICAgICAgIDwvbGFiZWw+XG5cbiAgICAgICAgPC9kaXY+XG4gICAgKTtcbn0pO1xuXG5leHBvcnQgZGVmYXVsdCBSYWRpb0J1dHRvbjtcbiIsImltcG9ydCBSZWFjdCwgeyBGQyB9IGZyb20gJ3JlYWN0JztcbmltcG9ydCBzdHlsZWQgZnJvbSAnc3R5bGVkLWNvbXBvbmVudHMnO1xuaW1wb3J0IF8gZnJvbSAndW5kZXJzY29yZSc7XG5cbmludGVyZmFjZSBQcm9wcyB7XG4gICAgaHJlZjogc3RyaW5nO1xuICAgIHRhcmdldD86IHN0cmluZztcbn1cblxuY29uc3QgTGluayA9IHN0eWxlZC5hYFxuICAgIGNvbG9yOiAke3Byb3BzID0+IChfLmlzRW1wdHkocHJvcHMudGhlbWUpID8gJyM0MjhiY2EnIDogcHJvcHMudGhlbWUuZ2VuZXJhbFN0eWxlLmxpbmtDb2xvcil9O1xuICAgICY6YWN0aXZlIHtcbiAgICAgICAgY29sb3I6ICR7cHJvcHMgPT4gKF8uaXNFbXB0eShwcm9wcy50aGVtZSkgPyAnIzQyOGJjYScgOiBwcm9wcy50aGVtZS5nZW5lcmFsU3R5bGUubGlua0NvbG9yKX07XG4gICAgfVxuICAgICY6aG92ZXIge1xuICAgICAgICBjb2xvcjogY29sb3I6ICR7cHJvcHMgPT4gKF8uaXNFbXB0eShwcm9wcy50aGVtZSkgPyAnIzQyOGJjYScgOiBwcm9wcy50aGVtZS5nZW5lcmFsU3R5bGUubGlua0NvbG9yKX07XG4gICAgICAgIGN1cnNvcjogcG9pbnRlcjtcbiAgICB9XG5gO1xuXG5leHBvcnQgZGVmYXVsdCBMaW5rO1xuIiwiaW1wb3J0IFJlYWN0LCB7IEZDIH0gZnJvbSAncmVhY3QnO1xuaW1wb3J0IHN0eWxlZCwgeyBjc3MgfSBmcm9tICdzdHlsZWQtY29tcG9uZW50cyc7XG5pbXBvcnQgXyBmcm9tICd1bmRlcnNjb3JlJztcblxudHlwZSBWYXJpYW50ID0gJ2VtcGhhc2lzJyB8ICdnZW5lcmFsJztcblxuaW50ZXJmYWNlIFByb3BzIHtcbiAgICB2YXJpYW50PzogVmFyaWFudDtcbn1cblxuY29uc3QgdGFnVmFyaWFudCA9ICh2YXJpYW50OiBWYXJpYW50KSA9PiB7XG4gICAgc3dpdGNoICh2YXJpYW50KSB7XG4gICAgICAgIGNhc2UgJ2VtcGhhc2lzJzpcbiAgICAgICAgICAgIHJldHVybiBjc3NgXG4gICAgICAgICAgICAgICAgY29sb3I6ICR7cHJvcHMgPT4gKF8uaXNFbXB0eShwcm9wcy50aGVtZSkgPyAnI2ZmZjJmMicgOiBwcm9wcy50aGVtZS50YWdTdHlsZS5lbXBoYXNpc1RhZ1RleHRDb2xvcil9O1xuICAgICAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6ICR7cHJvcHMgPT4gKF8uaXNFbXB0eShwcm9wcy50aGVtZSkgPyAnI2ZmNTM1MycgOiBwcm9wcy50aGVtZS50YWdTdHlsZS5lbXBoYXNpc1RhZ0JnQ29sb3IpfTtcbiAgICAgICAgICAgIGA7XG4gICAgICAgIGNhc2UgJ2dlbmVyYWwnOlxuICAgICAgICAgICAgcmV0dXJuIGNzc2BcbiAgICAgICAgICAgICAgICBjb2xvcjogJHtwcm9wcyA9PiAoXy5pc0VtcHR5KHByb3BzLnRoZW1lKSA/ICcjZmY1MzUzJyA6IHByb3BzLnRoZW1lLnRhZ1N0eWxlLmdlbmVyYWxUYWdUZXh0Q29sb3IpfTtcbiAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAke3Byb3BzID0+IChfLmlzRW1wdHkocHJvcHMudGhlbWUpID8gJyNmZmYyZjInIDogcHJvcHMudGhlbWUudGFnU3R5bGUuZ2VuZXJhbFRhZ0JnQ29sb3IpfTtcbiAgICAgICAgICAgIGA7XG4gICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICByZXR1cm4gY3NzIGBcbiAgICAgICAgICAgICAgICBjb2xvcjogJyNmZjUzNTMnO1xuICAgICAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6ICcjZmZmMmYyJztcbiAgICAgICAgICAgIGA7XG4gICAgfVxufTtcblxuY29uc3QgVGFnID0gc3R5bGVkLmRpdmBcbiAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gICAgcGFkZGluZzogNHB4O1xuICAgIGZvbnQtc2l6ZTogMTJweDtcbiAgICBib3JkZXItcmFkaXVzOiAycHg7XG4gICAgXG4gICAgJHsocHJvcHM6IFByb3BzKSA9PiB7XG4gICAgICAgIGNvbnN0IHsgdmFyaWFudCB9ID0gcHJvcHM7XG4gICAgICAgIHJldHVybiB0YWdWYXJpYW50KHZhcmlhbnQpO1xuICAgIH19ICAgIFxuYDtcblxuVGFnLmRlZmF1bHRQcm9wcyA9IHtcbiAgICB2YXJpYW50OiAnZ2VuZXJhbCcsXG59O1xuXG5leHBvcnQgZGVmYXVsdCBUYWc7XG4iLCJpbXBvcnQgeyBUaGVtZVByb3ZpZGVyfSBmcm9tICdzdHlsZWQtY29tcG9uZW50cyc7XG5pbXBvcnQgUmVhY3QgZnJvbSBcInJlYWN0XCI7XG5cbmNvbnN0IFNwYXJrQ29yZVRoZW1lUHJvdmlkZXIgPSAocHJvcHMpID0+IHtcbiAgICBjb25zdCB7IHRoZW1lIH0gPSBwcm9wcztcbiAgICBjb25zdCBnbG9iYWxUaGVtZSA9IHtcbiAgICAgICAgLi4udGhlbWUsXG4gICAgICAgIC8vIEZJWE1FIOaaq+inoyBnbG9iYWxTdHlsZURhdGEg57y65bCRIGtleSDpgKDmiJDnmb3poIFcbiAgICAgICAgZ2VuZXJhbFN0eWxlOiB7XG4gICAgICAgICAgICBsaW5rQ29sb3I6ICh0aGVtZS5nZW5lcmFsU3R5bGUgJiYgdGhlbWUuZ2VuZXJhbFN0eWxlLmxpbmtDb2xvcikgfHwgJyM0MjhiY2EnLFxuICAgICAgICAgICAgbW9uZXlDb2xvcjogKHRoZW1lLmdlbmVyYWxTdHlsZSAmJiB0aGVtZS5nZW5lcmFsU3R5bGUubW9uZXlDb2xvcikgfHwgJyNmZjUzNTMnLFxuICAgICAgICB9LFxuICAgICAgICB0YWdTdHlsZToge1xuICAgICAgICAgICAgZW1waGFzaXNUYWdCZ0NvbG9yOiAodGhlbWUudGFnU3R5bGUgJiYgdGhlbWUudGFnU3R5bGUuZW1waGFzaXNUYWdCZ0NvbG9yKSB8fCAnI2ZmNTM1MycsXG4gICAgICAgICAgICBlbXBoYXNpc1RhZ1RleHRDb2xvcjogKHRoZW1lLnRhZ1N0eWxlICYmIHRoZW1lLnRhZ1N0eWxlLmVtcGhhc2lzVGFnVGV4dENvbG9yKSB8fCAnI2ZmZmZmZicsXG4gICAgICAgICAgICBnZW5lcmFsVGFnQmdDb2xvcjogKHRoZW1lLnRhZ1N0eWxlICYmIHRoZW1lLnRhZ1N0eWxlLmdlbmVyYWxUYWdCZ0NvbG9yKSB8fCAnI2ZmZjJmMicsXG4gICAgICAgICAgICBnZW5lcmFsVGFnVGV4dENvbG9yOiAodGhlbWUudGFnU3R5bGUgJiYgdGhlbWUudGFnU3R5bGUuZ2VuZXJhbFRhZ1RleHRDb2xvcikgfHwgJyNmZjUzNTMnLFxuICAgICAgICB9LFxuICAgICAgICBidXR0b25TdHlsZToge1xuICAgICAgICAgICAgcHJpbWFyeUJ0bkJnQ29sb3I6ICh0aGVtZS5idXR0b25TdHlsZSAmJiB0aGVtZS5idXR0b25TdHlsZS5wcmltYXJ5QnRuQmdDb2xvcikgfHwgJyNmZjUzNTMnLFxuICAgICAgICAgICAgcHJpbWFyeUJ0blRleHRDb2xvcjogKHRoZW1lLmJ1dHRvblN0eWxlICYmIHRoZW1lLmJ1dHRvblN0eWxlLnByaW1hcnlCdG5UZXh0Q29sb3IpIHx8ICcjZmZmZmZmJyxcbiAgICAgICAgICAgIHNlY29uZEJ0blZhcmlhbnQ6ICh0aGVtZS5idXR0b25TdHlsZSAmJiB0aGVtZS5idXR0b25TdHlsZS5zZWNvbmRCdG5WYXJpYW50KSB8fCAnb3V0bGluZScsXG4gICAgICAgICAgICBzZWNvbmRCdG5CZ0NvbG9yOiAodGhlbWUuYnV0dG9uU3R5bGUgJiYgdGhlbWUuYnV0dG9uU3R5bGUuc2Vjb25kQnRuQmdDb2xvcikgfHwgJyNmZmZmZmYnLFxuICAgICAgICAgICAgc2Vjb25kQnRuVGV4dENvbG9yOiAodGhlbWUuYnV0dG9uU3R5bGUgJiYgdGhlbWUuYnV0dG9uU3R5bGUuc2Vjb25kQnRuVGV4dENvbG9yKSB8fCAnI2ZmNTM1MycsXG4gICAgICAgICAgICBzZWNvbmRCdG5Cb3JkZXJDb2xvcjogKHRoZW1lLmJ1dHRvblN0eWxlICYmIHRoZW1lLmJ1dHRvblN0eWxlLnNlY29uZEJ0bkJvcmRlckNvbG9yKSB8fCAnI2ZmNTM1MycsXG4gICAgICAgIH0sXG4gICAgfTtcblxuICAgIHJldHVybiAoXG4gICAgICAgIDxUaGVtZVByb3ZpZGVyIHRoZW1lPXtnbG9iYWxUaGVtZX0+XG4gICAgICAgICAgICB7cHJvcHMuY2hpbGRyZW59XG4gICAgICAgIDwvVGhlbWVQcm92aWRlcj5cbiAgICApO1xufTtcblxuZXhwb3J0IGRlZmF1bHQgU3BhcmtDb3JlVGhlbWVQcm92aWRlcjtcbiIsIi8vIOe0heiJsuezu1xuZXhwb3J0IGNvbnN0IHByaW1hcnlSZWQgPSAnI2ZmNTM1Myc7XG5cbi8vIOeZveiJsuezu1xuZXhwb3J0IGNvbnN0IHdoaXRlID0gJyNmZmYnO1xuZXhwb3J0IGNvbnN0IHdoaXRlVGhyZWUgPSAnI2Q4ZDhkOCc7XG5cbi8vIOm7keiJsuezu1xuZXhwb3J0IGNvbnN0IGJsYWNrVHdvID0gJyMwMDAnO1xuZXhwb3J0IGNvbnN0IGJsYWNrVGhyZWUgPSAnIzMzMyc7XG5cbi8vIOeBsOiJsuezu1xuZXhwb3J0IGNvbnN0IGJyb3duaXNoR3JleSA9ICcjNjY2JztcbmV4cG9ydCBjb25zdCBsaWdodEdyZXkgPSAnI2RkZGRkZCc7XG5leHBvcnQgY29uc3Qgd2FybUdyZXkgPSAnIzk5OSc7XG5leHBvcnQgY29uc3QgY2xvdWR5R3JheSA9ICcjZGRkJztcbmV4cG9ydCBjb25zdCBwYWxlR3JleSA9ICcjZjdmOGZhJztcblxuZXhwb3J0IGNvbnN0IHZlcnlMaWdodFBpbmsgPSAnI2NjYyc7XG5leHBvcnQgY29uc3QgdmVyeUxpZ2h0UGlua1R3byA9ICcjZWNlY2VjJztcbmV4cG9ydCBjb25zdCB2ZXJ5TGlnaHRQaW5rVGhyZWUgPSAnI2JiYic7XG5leHBvcnQgY29uc3Qgc2lsdmVyID0gJyNkNGQ5ZGUnO1xuXG4vLyDol43oibLns7tcbmV4cG9ydCBjb25zdCB3aW5kb3dzQmx1ZSA9ICcjNDI4YmNhJztcbiIsIi8vIFRPRE86IOW+heaVtOeQhm1vZGFs5LmL5aSW55qEemluZGV4XG5leHBvcnQgY29uc3QgY29tcG9uZW50WmluZGV4ID0ge1xuICAgIHRvYXN0OiAxMDcwLFxuICAgIHRvYXN0QmFjazogMTA2MCxcbiAgICBkaWFsb2c6IDEwNTAsXG4gICAgZGlhbG9nQmFjazogMTA0MCxcbiAgICBzbGlkZVB1c2hNZW51OiAxMDAwLFxuICAgIG5zTWVkaWFHYWxsZXJ5OiAyMDAsXG4gICAgbmF2VGFiOiA5MCxcbiAgICBuc1Rvb2xCb3g6IDQ5OSxcbiAgICBtYWluVmlzaW9uOiA1NTAsXG4gICAgc21hcnRBcHBCYW5uZXI6IDUwMCxcbiAgICBiYXNlOiAxLFxufTtcblxuZXhwb3J0IGNvbnN0IGhlYWRlclppbmRleCA9IHtcbiAgICBmdWxsU2NyZWVuOiA3MDAsXG4gICAgbmF2TWVudTogNjUwLFxuICAgIGxheW91dEhlYWRlcjogNTAwLFxuICAgIHNlYXJjaEtleXdvcmRMaXN0OiAxMDAsXG59O1xuXG5leHBvcnQgY29uc3QgZm9vdGVyWmluZGV4ID0ge1xuICAgIG5zQmFza2V0OiAzMDAsXG4gICAgc2Nyb2xsVG9Ub3A6IDI1MCxcbiAgICBsYXlvdXRGb290ZXI6IDIwMCxcbiAgICBuc0Jyb3dzaW5nSGlzdG9yeTogMTAwLFxufTtcbiIsIi8vIGltcG9ydCB7IGNzcywgS2V5ZnJhbWVzLCBGbGF0dGVuU2ltcGxlSW50ZXJwb2xhdGlvbiB9IGZyb20gJ3N0eWxlZC1jb21wb25lbnRzJztcblxuLyoqXG4gKiBhbmltYXRlIOWLleeVq1xuICogQHBhcmFtIHtzdHJpbmd9IG5hbWUgLSDli5XnlavlkI3nqLHjgIIoYW5pbWF0aW9uLW5hbWUpXG4gKiBAcGFyYW0ge3N0cmluZ30gdGltZSAtIOWft+ihjOaZgumWk+OAgihhbmltYXRpb24tZHVyYXRpb24pXG4gKiBAcGFyYW0ge3N0cmluZ30gd2F5IC0g5YuV55Wr5pa55byP44CCKGFuaW1hdGlvbi10aW1pbmctZnVuY3Rpb24pXG4gKi9cbmNvbnN0IGFuaW1hdGUgPSAobmFtZTogc3RyaW5nLCB0aW1lOiBzdHJpbmcsIHdheTogc3RyaW5nKTogc3RyaW5nID0+IHtcbiAgICByZXR1cm4gYFxuICAgICAgICBhbmltYXRpb246ICR7bmFtZX0gJHt0aW1lfSAke3dheX0gMHM7XG4gICAgICAgIGFuaW1hdGlvbi1maWxsLW1vZGU6IGZvcndhcmRzO1xuICAgIGA7XG59O1xuXG5leHBvcnQgZGVmYXVsdCBhbmltYXRlO1xuIiwiaW1wb3J0IFJlYWN0LCB7IEZDIH0gZnJvbSAncmVhY3QnO1xuaW1wb3J0IHN0eWxlZCBmcm9tICdzdHlsZWQtY29tcG9uZW50cyc7XG5cbmltcG9ydCB7IGJsYWNrVHdvIH0gZnJvbSAnQHN0eWxlcy9tb2RlbC9jb2xvcic7XG5pbXBvcnQgeyBjb21wb25lbnRaaW5kZXggfSBmcm9tICdAc3R5bGVzL21vZGVsL3ppbmRleCc7XG5pbXBvcnQgYW5pbWF0ZSBmcm9tICdAc3R5bGVzL2NvbW1vbi9taXhpbi9hbmltYXRlJztcblxuaW50ZXJmYWNlIElQcm9wcyB7XG4gICAgaXNNYXNrT3BhY2l0eTogYm9vbGVhbjtcbiAgICBvbkNsb3NlRGlhbG9nOiAoKSA9PiBhbnk7XG59XG5cbmNvbnN0IGJhY2tkcm9wTWFza09wYWNpdHlNb2RlID0gYCR7YW5pbWF0ZSgnZmFkZUluJywgJzAuMnMnLCAnZWFzZS1vdXQnKX1gO1xuXG5jb25zdCBCYWNrZHJvcCA9IHN0eWxlZC5kaXY8eyBpc01hc2tPcGFjaXR5OiBib29sZWFuIH0+YFxuICAgIHBvc2l0aW9uOiBmaXhlZDtcbiAgICB0b3A6IDA7XG4gICAgcmlnaHQ6IDA7XG4gICAgYm90dG9tOiAwO1xuICAgIGxlZnQ6IDA7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogJHtibGFja1R3b307XG4gICAgei1pbmRleDogJHtjb21wb25lbnRaaW5kZXguZGlhbG9nQmFja307XG5cbiAgICBAa2V5ZnJhbWVzIGZhZGVJbiB7XG4gICAgICAgIDAlIHtcbiAgICAgICAgICAgIG9wYWNpdHk6IDA7XG4gICAgICAgIH1cbiAgICAgICAgMTAwJSB7XG4gICAgICAgICAgICBvcGFjaXR5OiAwLjU7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAke3Byb3BzID0+IChwcm9wcy5pc01hc2tPcGFjaXR5ID8gYmFja2Ryb3BNYXNrT3BhY2l0eU1vZGUgOiAnJyl9XG5gO1xuXG5jb25zdCBEaWFsb2dCYWNrZHJvcDogRkM8SVByb3BzPiA9IHByb3BzID0+IHtcbiAgICBjb25zdCB7IGlzTWFza09wYWNpdHksIG9uQ2xvc2VEaWFsb2cgfSA9IHByb3BzO1xuICAgIHJldHVybiA8QmFja2Ryb3AgaXNNYXNrT3BhY2l0eT17aXNNYXNrT3BhY2l0eX0gb25DbGljaz17b25DbG9zZURpYWxvZ30gLz47XG59O1xuXG5leHBvcnQgZGVmYXVsdCBEaWFsb2dCYWNrZHJvcDtcbiIsImltcG9ydCBSZWFjdCwgeyBGQyB9IGZyb20gJ3JlYWN0JztcbmltcG9ydCBzdHlsZWQsIHsgY3NzIH0gZnJvbSAnc3R5bGVkLWNvbXBvbmVudHMnO1xuXG5pbXBvcnQgeyBibGFja1RocmVlIH0gZnJvbSAnQHN0eWxlcy9tb2RlbC9jb2xvcic7XG5cbmludGVyZmFjZSBJUHJvcHMge1xuICAgIGlzRml4ZWRCb2R5OiBib29sZWFuO1xuICAgIGNoaWxkcmVuOiBSZWFjdC5SZWFjdE5vZGU7XG59XG5cbmNvbnN0IGZpeGVkQm9keU1vZGUgPSBjc3NgXG4gICAgdGV4dC1hbGlnbjogbGVmdDtcbiAgICBwYWRkaW5nOiAxNXB4IDA7XG4gICAgaGVpZ2h0OiAyMDBweDtcbiAgICBtYXgtaGVpZ2h0OiAyMDBweDtcbiAgICBvdmVyZmxvdzogc2Nyb2xsO1xuYDtcblxuY29uc3Qgbm9ybWFsTm9kZSA9IGNzc2BcbiAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gICAgcGFkZGluZzogMTVweDtcbmA7XG5cbmNvbnN0IENvbnRhaW5lciA9IHN0eWxlZC5kaXY8eyBpc0ZpeGVkQm9keTogYm9vbGVhbiB9PmBcbiAgICBsaW5lLWhlaWdodDogMS41O1xuICAgIGNvbG9yOiAke2JsYWNrVGhyZWV9O1xuXG4gICAgJHtwcm9wcyA9PiAocHJvcHMuaXNGaXhlZEJvZHkgPyBmaXhlZEJvZHlNb2RlIDogbm9ybWFsTm9kZSl9O1xuYDtcblxuY29uc3QgRGlhbG9nQm9keTogRkM8SVByb3BzPiA9IHByb3BzID0+IHtcbiAgICBjb25zdCB7IGlzRml4ZWRCb2R5LCBjaGlsZHJlbiB9ID0gcHJvcHM7XG4gICAgcmV0dXJuIDxDb250YWluZXIgaXNGaXhlZEJvZHk9e2lzRml4ZWRCb2R5fT57Y2hpbGRyZW59PC9Db250YWluZXI+O1xufTtcblxuZXhwb3J0IGRlZmF1bHQgRGlhbG9nQm9keTtcbiIsImltcG9ydCBSZWFjdCwgeyBGQyB9IGZyb20gJ3JlYWN0JztcbmltcG9ydCBzdHlsZWQgZnJvbSAnc3R5bGVkLWNvbXBvbmVudHMnO1xuXG5pbXBvcnQgeyBibGFja1RocmVlIH0gZnJvbSAnQHN0eWxlcy9tb2RlbC9jb2xvcic7XG5cbmludGVyZmFjZSBJUHJvcHMge1xuICAgIGlzU2hvd0Nsb3NlOiBib29sZWFuO1xuICAgIHRpdGxlOiBzdHJpbmc7XG4gICAgb25DbG9zZURpYWxvZzogKCkgPT4gYW55O1xufVxuXG4vLyBUT0RPOiBjbG9zZVxuY29uc3QgQ29udGFpbmVyID0gc3R5bGVkLmRpdmBcbiAgICBtaW4taGVpZ2h0OiAxNXB4O1xuICAgIHBhZGRpbmc6IDE1cHggMTVweCAwO1xuYDtcblxuY29uc3QgSWNvbldyYXBwZXIgPSBzdHlsZWQuYWBcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgcmlnaHQ6IDEwcHg7XG4gICAgY3Vyc29yOiBwb2ludGVyO1xuICAgIGxpbmUtaGVpZ2h0OiAzMHB4O1xuICAgIGNvbG9yOiAke2JsYWNrVGhyZWV9O1xuICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgIGJhY2tncm91bmQ6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC43KTtcbiAgICBib3JkZXItcmFkaXVzOiA1MCU7XG4gICAgd2lkdGg6IDMwcHg7XG4gICAgaGVpZ2h0OiAzMHB4O1xuICAgIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgICBmb250LXNpemU6IDEwcHg7XG5gO1xuXG5jb25zdCBUaXRsZSA9IHN0eWxlZC5oMmBcbiAgICBmb250LXNpemU6IDE2cHg7XG4gICAgbGluZS1oZWlnaHQ6IDEuNTtcbiAgICBtYXJnaW46IDAgMjVweDtcbiAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gICAgZm9udC13ZWlnaHQ6IDUwMDtcbmA7XG5cbmNvbnN0IERpYWxvZ0hlYWRlcjogRkM8SVByb3BzPiA9IHByb3BzID0+IHtcbiAgICBjb25zdCB7IGlzU2hvd0Nsb3NlLCB0aXRsZSwgb25DbG9zZURpYWxvZyB9ID0gcHJvcHM7XG4gICAgcmV0dXJuIChcblxuXG4gICAgICAgIDxDb250YWluZXI+XG4gICAgICAgICAgICB7aXNTaG93Q2xvc2UgJiYgKFxuICAgICAgICAgICAgICAgIDxJY29uV3JhcHBlciBvbkNsaWNrPXtvbkNsb3NlRGlhbG9nfT5cbiAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3NOYW1lPVwiaWNvbiBpY29uLWNsb3NlXCIgLz5cbiAgICAgICAgICAgICAgICA8L0ljb25XcmFwcGVyPlxuICAgICAgICAgICAgKX1cbiAgICAgICAgICAgIHt0aXRsZSAmJiA8VGl0bGU+e3RpdGxlfTwvVGl0bGU+fVxuICAgICAgICA8L0NvbnRhaW5lcj5cbiAgICApO1xufTtcblxuZXhwb3J0IGRlZmF1bHQgRGlhbG9nSGVhZGVyO1xuIiwiaW1wb3J0IFJlYWN0LCB7IEZDIH0gZnJvbSAncmVhY3QnO1xuaW1wb3J0IHN0eWxlZCBmcm9tICdzdHlsZWQtY29tcG9uZW50cyc7XG5pbXBvcnQgeyBCdXR0b24gfSBmcm9tICdAY29tcG9uZW50cy9pbmRleCc7XG5cbmludGVyZmFjZSBJUHJvcHMge1xuICAgIGNvbmZpcm1UZXh0OiBzdHJpbmc7XG4gICAgY2FuY2VsVGV4dDogc3RyaW5nO1xuICAgIG9uQ2xvc2VEaWFsb2c6ICgpID0+IGFueTtcbiAgICBvbkNvbmZpcm1EaWFsb2c6ICgpID0+IGFueTtcbn1cblxuY29uc3QgQ29udGFpbmVyID0gc3R5bGVkLmRpdmBcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIHBhZGRpbmc6IDEwcHggMTVweCAxNXB4O1xuICAgIHdpZHRoOiAxMDAlO1xuICAgIGJveC1zaXppbmc6IGJvcmRlci1ib3g7XG5gO1xuXG5jb25zdCBDYW5jZWxCdG4gPSBzdHlsZWQoQnV0dG9uKWBcbiAgICBmb250LXNpemU6IDE1cHg7XG4gICAgZmxleDogMTtcbiAgICBtYXJnaW4tcmlnaHQ6IDEwcHg7XG5gO1xuXG5jb25zdCBDb25maXJtQnRuID0gc3R5bGVkKEJ1dHRvbilgXG4gICAgZm9udC1zaXplOiAxNXB4O1xuICAgIGZsZXg6IDE7XG4gICAgbWFyZ2luOiAwO1xuYDtcblxuY29uc3QgRGlhbG9nRm9vdGVyOiBGQzxJUHJvcHM+ID0gcHJvcHMgPT4ge1xuICAgIGNvbnN0IHsgY2FuY2VsVGV4dCwgY29uZmlybVRleHQsIG9uQ2xvc2VEaWFsb2csIG9uQ29uZmlybURpYWxvZyB9ID0gcHJvcHM7XG4gICAgcmV0dXJuIChcbiAgICAgICAgPENvbnRhaW5lcj5cbiAgICAgICAgICAgIHtjYW5jZWxUZXh0ICYmIChcbiAgICAgICAgICAgICAgICA8Q2FuY2VsQnRuIHZhcmlhbnQ9XCJub3JtYWxcIiBvbkNsaWNrPXtvbkNsb3NlRGlhbG9nfT5cbiAgICAgICAgICAgICAgICAgICAge2NhbmNlbFRleHR9XG4gICAgICAgICAgICAgICAgPC9DYW5jZWxCdG4+XG4gICAgICAgICAgICApfVxuICAgICAgICAgICAge2NvbmZpcm1UZXh0ICYmIChcbiAgICAgICAgICAgICAgICA8Q29uZmlybUJ0biB2YXJpYW50PVwiY29udGFpbmVkXCIgb25DbGljaz17b25Db25maXJtRGlhbG9nfT5cbiAgICAgICAgICAgICAgICAgICAge2NvbmZpcm1UZXh0fVxuICAgICAgICAgICAgICAgIDwvQ29uZmlybUJ0bj5cbiAgICAgICAgICAgICl9XG4gICAgICAgIDwvQ29udGFpbmVyPlxuICAgICk7XG59O1xuXG5leHBvcnQgZGVmYXVsdCBEaWFsb2dGb290ZXI7XG4iLCJpbXBvcnQgUmVhY3QsIHsgRkMsIEZyYWdtZW50LCB1c2VFZmZlY3QgfSBmcm9tICdyZWFjdCc7XG5pbXBvcnQgc3R5bGVkIGZyb20gJ3N0eWxlZC1jb21wb25lbnRzJztcbmltcG9ydCB7IHJ1bnRpbWVNb2RlVXRpbGl0eSB9IGZyb20gJ0B1dGlsaXRpZXMvaW5kZXgnO1xuXG5pbXBvcnQgeyB3aGl0ZSB9IGZyb20gJ0BzdHlsZXMvbW9kZWwvY29sb3InO1xuaW1wb3J0IHsgY29tcG9uZW50WmluZGV4IH0gZnJvbSAnQHN0eWxlcy9tb2RlbC96aW5kZXgnO1xuaW1wb3J0IGFuaW1hdGUgZnJvbSAnQHN0eWxlcy9jb21tb24vbWl4aW4vYW5pbWF0ZSc7XG5cbmltcG9ydCBEaWFsb2dCYWNrZHJvcCBmcm9tICcuL2RpYWxvZ0JhY2tkcm9wJztcbmltcG9ydCBEaWFsb2dCb2R5IGZyb20gJy4vZGlhbG9nQm9keSc7XG5pbXBvcnQgRGlhbG9nSGVhZGVyIGZyb20gJy4vZGlhbG9nSGVhZGVyJztcbmltcG9ydCBEaWFsb2dGb290ZXIgZnJvbSAnLi9kaWFsb2dGb290ZXInO1xuXG4vKipcbiAqIEBwcm9wcyBjdXN0b21TdHlsZSBleC4geyBiYWNrZ3JvdW5kQ29sb3I6ICdyZWQnIH1cbiAqIEBwcm9wcyBjdXN0b21Dc3MgZXguIFwiYmFja2dyb3VuZC1jb2xvcjogcmVkXCJcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBJUHJvcHMge1xuICAgIGlzT3BlbjogYm9vbGVhbjtcbiAgICBpc1Nob3dDbG9zZT86IGJvb2xlYW47XG4gICAgaXNMb2FkaW5nPzogYm9vbGVhbjtcbiAgICBpc01hc2tPcGFjaXR5PzogYm9vbGVhbjtcbiAgICBpc0ZpeGVkQm9keT86IGJvb2xlYW47XG4gICAgaXNFbmFibGVCYWNrZHJvcENsaWNrPzogYm9vbGVhbjtcbiAgICB0aXRsZT86IHN0cmluZztcbiAgICBjb25maXJtVGV4dD86IHN0cmluZztcbiAgICBjYW5jZWxUZXh0Pzogc3RyaW5nO1xuICAgIGN1c3RvbVN0eWxlPzogUmVhY3QuQ1NTUHJvcGVydGllcztcbiAgICBjdXN0b21Dc3M/OiBzdHJpbmc7XG4gICAgb25DbG9zZURpYWxvZz86ICgpID0+IGFueTtcbiAgICBvbkNvbmZpcm1EaWFsb2c/OiAoKSA9PiBhbnk7XG4gICAgY2hpbGRyZW46IFJlYWN0LlJlYWN0Tm9kZTtcbn1cblxuY29uc3QgQ29udGFpbmVyID0gc3R5bGVkLmRpdjx7IGlzT3BlbjogYm9vbGVhbiB9PmBcbiAgICBwb3NpdGlvbjogZml4ZWQ7XG4gICAgdG9wOiAwO1xuICAgIHJpZ2h0OiAwO1xuICAgIGJvdHRvbTogMDtcbiAgICBsZWZ0OiAwO1xuICAgIG1hcmdpbjogMDtcbiAgICB6LWluZGV4OiAke2NvbXBvbmVudFppbmRleC5kaWFsb2d9O1xuICAgIGRpc3BsYXk6ICR7KHByb3BzKSA9PiAocHJvcHMuaXNPcGVuID8gJ2Jsb2NrJyA6ICdub25lJyl9O1xuICAgIG92ZXJmbG93OiAkeyhwcm9wcykgPT4gKHByb3BzLmlzT3BlbiA/ICdoaWRkZW4nIDogJycpfTtcbmA7XG5jb25zdCBCb2R5V3JhcHBlciA9IHN0eWxlZC5kaXY8eyBjdXN0b21Dc3M6IHN0cmluZyB9PmBcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgdG9wOiA1MCU7XG4gICAgd2lkdGg6IDI5MHB4O1xuICAgIG1hcmdpbjogMCBhdXRvO1xuICAgIGJvcmRlci1yYWRpdXM6IDRweDtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAke3doaXRlfTtcbiAgICBib3gtc2hhZG93OiAwIDNweCA3cHggcmdiYSgwLCAwLCAwLCAwLjMpO1xuICAgIHotaW5kZXg6ICR7Y29tcG9uZW50WmluZGV4LmRpYWxvZ307XG5cbiAgICBAa2V5ZnJhbWVzIHVwVG9DZW50ZXIge1xuICAgICAgICAwJSB7XG4gICAgICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTEwMCUpO1xuICAgICAgICB9XG4gICAgICAgIDEwMCUge1xuICAgICAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC01MCUpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgJHthbmltYXRlKCd1cFRvQ2VudGVyJywgJzAuMnMnLCAnZWFzZS1vdXQnKX1cblxuICAgICR7KHByb3BzKSA9PiBwcm9wcy5jdXN0b21Dc3MgfHwgJyd9O1xuYDtcblxuLyoqXG4gKiDlvYjot7PoppbnqpflhYPku7ZcbiAqL1xuY29uc3QgRGlhbG9nOiBGQzxJUHJvcHM+ID0gKHByb3BzKSA9PiB7XG4gICAgY29uc3Qge1xuICAgICAgICB0aXRsZSxcbiAgICAgICAgaXNPcGVuLFxuICAgICAgICBpc01hc2tPcGFjaXR5LFxuICAgICAgICBpc0ZpeGVkQm9keSxcbiAgICAgICAgaXNFbmFibGVCYWNrZHJvcENsaWNrLFxuICAgICAgICBvbkNsb3NlRGlhbG9nLFxuICAgICAgICBvbkNvbmZpcm1EaWFsb2csXG4gICAgICAgIGN1c3RvbVN0eWxlLFxuICAgICAgICBjdXN0b21Dc3MsXG4gICAgICAgIGlzU2hvd0Nsb3NlLFxuICAgICAgICBjaGlsZHJlbixcbiAgICAgICAgY2FuY2VsVGV4dCxcbiAgICAgICAgY29uZmlybVRleHQsXG4gICAgfSA9IHByb3BzO1xuXG4gICAgY29uc3QgcmVtb3ZlRnJlZXplQm9keSA9ICgpID0+IHtcbiAgICAgICAgd2luZG93LmRvY3VtZW50LmJvZHkuY2xhc3NMaXN0LnJlbW92ZSgnZnJlZXplJyk7XG4gICAgfTtcblxuICAgIC8qKlxuICAgICAqIOeVtumWi+WVn1BvcFVw6Y6W5L2P5bqV6YOoc2Nyb2xs6JmV55CGXG4gICAgICovXG4gICAgY29uc3QgZnJlZXplQm9keSA9IChpc0ZpeGVkOiBib29sZWFuKSA9PiB7XG4gICAgICAgIGlmIChydW50aW1lTW9kZVV0aWxpdHkuY2hlY2tJc0NsaWVudFJlbmRlcigpKSB7XG4gICAgICAgICAgICBpZiAoaXNGaXhlZCkge1xuICAgICAgICAgICAgICAgIHdpbmRvdy5kb2N1bWVudC5ib2R5LmNsYXNzTGlzdC5hZGQoJ2ZyZWV6ZScpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICByZW1vdmVGcmVlemVCb2R5KCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9O1xuXG4gICAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICAgICAgZnJlZXplQm9keShpc09wZW4pO1xuICAgICAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgICAgICAgcmVtb3ZlRnJlZXplQm9keSgpO1xuICAgICAgICB9O1xuICAgIH0sIFtpc09wZW5dKTtcblxuICAgIHJldHVybiAoXG4gICAgICAgIDxDb250YWluZXIgaXNPcGVuPXtpc09wZW59PlxuICAgICAgICAgICAge2lzT3BlbiAmJiAoXG4gICAgICAgICAgICAgICAgPEZyYWdtZW50PlxuICAgICAgICAgICAgICAgICAgICA8RGlhbG9nQmFja2Ryb3BcbiAgICAgICAgICAgICAgICAgICAgICAgIGlzTWFza09wYWNpdHk9e2lzTWFza09wYWNpdHl9XG4gICAgICAgICAgICAgICAgICAgICAgICBvbkNsb3NlRGlhbG9nPXtpc0VuYWJsZUJhY2tkcm9wQ2xpY2sgPyBvbkNsb3NlRGlhbG9nIDogbnVsbH1cbiAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgPEJvZHlXcmFwcGVyIHN0eWxlPXtjdXN0b21TdHlsZX0gY3VzdG9tQ3NzPXtjdXN0b21Dc3N9PlxuICAgICAgICAgICAgICAgICAgICAgICAgPERpYWxvZ0hlYWRlciBpc1Nob3dDbG9zZT17aXNTaG93Q2xvc2V9IHRpdGxlPXt0aXRsZX0gb25DbG9zZURpYWxvZz17b25DbG9zZURpYWxvZ30gLz5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxEaWFsb2dCb2R5IGlzRml4ZWRCb2R5PXtpc0ZpeGVkQm9keX0+e2NoaWxkcmVufTwvRGlhbG9nQm9keT5cbiAgICAgICAgICAgICAgICAgICAgICAgIHsvKiDlpoLmnpzmspLmnInluLZidXR0b27mloflrZfvvIzliYfkuI3poa/npLpmb290ZXLljYDloYogKi99XG4gICAgICAgICAgICAgICAgICAgICAgICB7Y2FuY2VsVGV4dCB8fCBjb25maXJtVGV4dCA/IChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8RGlhbG9nRm9vdGVyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbmZpcm1UZXh0PXtjb25maXJtVGV4dH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FuY2VsVGV4dD17Y2FuY2VsVGV4dH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25DbG9zZURpYWxvZz17b25DbG9zZURpYWxvZ31cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25Db25maXJtRGlhbG9nPXtvbkNvbmZpcm1EaWFsb2d9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICkgOiBudWxsfVxuICAgICAgICAgICAgICAgICAgICA8L0JvZHlXcmFwcGVyPlxuICAgICAgICAgICAgICAgIDwvRnJhZ21lbnQ+XG4gICAgICAgICAgICApfVxuICAgICAgICA8L0NvbnRhaW5lcj5cbiAgICApO1xufTtcblxuRGlhbG9nLmRlZmF1bHRQcm9wcyA9IHtcbiAgICBpc09wZW46IGZhbHNlLFxuICAgIGlzU2hvd0Nsb3NlOiB0cnVlLFxuICAgIGlzTWFza09wYWNpdHk6IHRydWUsXG4gICAgaXNFbmFibGVCYWNrZHJvcENsaWNrOiB0cnVlLFxuICAgIHRpdGxlOiAnJyxcbiAgICBjb25maXJtVGV4dDogJycsXG4gICAgY2FuY2VsVGV4dDogJycsXG59O1xuXG5leHBvcnQgZGVmYXVsdCBEaWFsb2c7XG4iLCJpbXBvcnQgTW9kYWwgZnJvbSAnLi9tb2RhbCc7XG5pbXBvcnQgTG9hZGluZyBmcm9tICcuL2xvYWRpbmcvbG9hZGluZyc7XG5pbXBvcnQgVG9hc3QsIHsgZ2V0VG9hc3RNZXNzYWdlSXRlbSB9IGZyb20gJy4vdG9hc3QvdG9hc3QnO1xuaW1wb3J0IEN1cnJlbmN5IGZyb20gJy4vY3VycmVuY3kvY3VycmVuY3knO1xuaW1wb3J0IEFkZFRvQ2FydERlc2t0b3AgZnJvbSAnLi9hZGRUb0NhcnQvZGVza3RvcC9hZGRUb0NhcnQuZGVza3RvcCc7XG5pbXBvcnQgQWRkVG9DYXJ0TW9iaWxlIGZyb20gJy4vYWRkVG9DYXJ0L21vYmlsZS9hZGRUb0NhcnQubW9iaWxlJztcbmltcG9ydCBDaGVja0JveCBmcm9tICcuL2NoZWNrQm94L2NoZWNrQm94JztcbmltcG9ydCBSYWRpb0J1dHRvbiBmcm9tICcuL3JhZGlvQnV0dG9uL3JhZGlvQnV0dG9uJztcbmltcG9ydCBCdXR0b24gZnJvbSAnLi9idXR0b24nO1xuaW1wb3J0IExpbmsgZnJvbSAnLi9saW5rJztcbmltcG9ydCBUYWcgZnJvbSAnLi90YWcnO1xuaW1wb3J0IFNwYXJrQ29yZVRoZW1lUHJvdmlkZXIgZnJvbSBcIkBjb21wb25lbnRzL3RoZW1lXCI7XG5pbXBvcnQgRGlhbG9nIGZyb20gJ0Bjb21wb25lbnRzL2RpYWxvZyc7XG5cbmV4cG9ydCB7XG4gICAgTW9kYWwsXG4gICAgTG9hZGluZyxcbiAgICBUb2FzdCxcbiAgICBnZXRUb2FzdE1lc3NhZ2VJdGVtLFxuICAgIEN1cnJlbmN5LFxuICAgIEFkZFRvQ2FydERlc2t0b3AsXG4gICAgQWRkVG9DYXJ0TW9iaWxlLFxuICAgIENoZWNrQm94LFxuICAgIFJhZGlvQnV0dG9uLFxuICAgIEJ1dHRvbixcbiAgICBMaW5rLFxuICAgIFRhZyxcbiAgICBTcGFya0NvcmVUaGVtZVByb3ZpZGVyLFxuICAgIERpYWxvZyxcbn07XG4iLCJpbXBvcnQgKiBhcyBSZWFjdCBmcm9tICdyZWFjdCc7XG5pbXBvcnQgeyBJMThuIH0gZnJvbSAncmVhY3QtcmVkdXgtaTE4bic7XG5pbXBvcnQgeyBNb2RhbCwgVG9hc3QsIExvYWRpbmcsIGdldFRvYXN0TWVzc2FnZUl0ZW0sIERpYWxvZyB9IGZyb20gJ0Bjb21wb25lbnRzL2luZGV4JztcbmltcG9ydCB7IFRSQU5TTEFURV9MT0NBTEVfS0VZIH0gZnJvbSAnQGNvbnN0YW50cy90cmFuc2xhdGlvbi5jb25zdGFudHMnO1xuaW1wb3J0IHsgQlJPV1NJTkdfTU9ERSB9IGZyb20gJ0Bjb25zdGFudHMvZGV2aWNlLmNvbnN0YW50cyc7XG5pbXBvcnQgeyBkZXZpY2VVdGlsaXR5IH0gZnJvbSAnQHV0aWxpdGllcy9pbmRleCc7XG5pbXBvcnQgUHJvZHVjdFNrdSwgeyBTa3VRdHlNb2RlIH0gZnJvbSAnQGNvbXBvbmVudHMvYWRkVG9DYXJ0L3Byb2R1Y3QvcHJvZHVjdFNrdSc7XG5pbXBvcnQgeyBmZXRjaFNhbGVQYWdlSW5mb01vZGVsLCBTYWxlUGFnZUluZm9FbnRpdHksIFByb2R1Y3RTa3VJbmZvRW50aXR5IH0gZnJvbSAnLi4vLi4vLi4vbW9kZWxzL3NhbGVQYWdlLm1vZGVsJztcbmltcG9ydCB7IGFkZFNob3BwaW5nQ2FydE1vZGVsLCBQcm9kdWN0SW5mb0VudGl0eSwgUHJvZHVjdFBheWxvYWRFbnRpdHkgfSBmcm9tICcuLi8uLi8uLi9tb2RlbHMvc2hvcHBpbmdDYXJ0Lm1vZGVsJztcbmltcG9ydCB7IE1vZGVFbnVtIH0gZnJvbSAnQGNvbXBvbmVudHMvYWRkVG9DYXJ0L2VudW0nO1xuLy8gVE9ETzog5b6F57+7IE1vZGFs5YWD5Lu2IHNjc3NcbmltcG9ydCAnLi9hZGRUb0NhcnQuc2Nzcyc7XG5cbmludGVyZmFjZSBBZGRUb0NhcnRQcm9wcyB7XG4gICAgbW9kZT86IGtleW9mIHR5cGVvZiBNb2RlRW51bTtcbiAgICBzaG9wSWQ6IG51bWJlcjtcbiAgICBzYWxlUGFnZUlkOiBudW1iZXI7XG4gICAgZGVjaW1hbDogbnVtYmVyO1xuICAgIHN5bWJvbDogc3RyaW5nO1xuICAgIHJhdGU6IG51bWJlcjtcbiAgICBmYWNlYm9vaz86IGFueTtcbiAgICBza3VRdHlNb2RlPzogU2t1UXR5TW9kZTtcbiAgICBhZnRlclN1Y2Nlc3M/OiAocGF5bG9hZDogUHJvZHVjdFBheWxvYWRFbnRpdHkpID0+IHZvaWQ7XG4gICAgYWZ0ZXJDbG9zZT86ICgpID0+IHZvaWQ7XG4gICAgaGFuZGxlUmVkaXJlY3REZWVwTGluaz86ICgpID0+IHZvaWQ7XG4gICAgb25BZGRRdWFudGl0eT86ICgpID0+IHZvaWQ7XG4gICAgb25SZW1vdmVRdWFudGl0eT86ICgpID0+IHZvaWQ7XG59XG5pbnRlcmZhY2UgU3RhdGVzIHtcbiAgICBtb2RlOiBrZXlvZiB0eXBlb2YgTW9kZUVudW07XG4gICAgc2FsZVBhZ2VJZDogbnVtYmVyO1xuICAgIGlzT3BlblNrdTogYm9vbGVhbjtcbiAgICBpc09wZW5Ub2FzdDogYm9vbGVhbjtcbiAgICBpc09wZW5Mb2FkOiBib29sZWFuO1xuICAgIGlzT3BlbkRpYWxvZzogYm9vbGVhbjtcbiAgICB0b2FzdFR5cGU6IHN0cmluZztcbiAgICB0b2FzdE1lc3NhZ2U6IHN0cmluZztcbiAgICBkaWFsb2dNZXNzYWdlOiBzdHJpbmc7XG4gICAgc2FsZVBhZ2VJbmZvOiBTYWxlUGFnZUluZm9FbnRpdHk7XG4gICAgc2t1SW5mb0xpc3Q6IFByb2R1Y3RTa3VJbmZvRW50aXR5W107XG4gICAgcHJvZHVjdEluZm86IFByb2R1Y3RJbmZvRW50aXR5O1xuICAgIHNrdVF0eU1vZGU6IFNrdVF0eU1vZGU7XG59XG4vKipcbiAqIOahjOapn+eJiCAtIOizvOeJqei7ilBvcHVw5qih57WEXG4gKiBAZGVzY3JpcHRpb24g5Li76KaB5o6n5Yi2IE1vZGFs44CBVG9hc3TjgIFMb2FkaW5n5YWD5Lu277yM6aGv56S654uA5oWLXG4gKi9cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIEFkZFRvQ2FydCBleHRlbmRzIFJlYWN0LkNvbXBvbmVudDxBZGRUb0NhcnRQcm9wcywgU3RhdGVzPiB7XG4gICAgY29uc3RydWN0b3IocHJvcHM6IEFkZFRvQ2FydFByb3BzKSB7XG4gICAgICAgIHN1cGVyKHByb3BzKTtcbiAgICAgICAgdGhpcy5zdGF0ZSA9IHtcbiAgICAgICAgICAgIG1vZGU6IHByb3BzLm1vZGUgfHwgJ05vcm1hbCcsIC8vIE5vcm1hbCjkuIDoiKwpIOaIliBDaG9vc2Uo6YG46LO8KVxuICAgICAgICAgICAgc2FsZVBhZ2VJZDogcHJvcHMuc2FsZVBhZ2VJZCxcbiAgICAgICAgICAgIGlzT3BlblNrdTogZmFsc2UsXG4gICAgICAgICAgICBpc09wZW5Ub2FzdDogZmFsc2UsXG4gICAgICAgICAgICBpc09wZW5Mb2FkOiBmYWxzZSxcbiAgICAgICAgICAgIGlzT3BlbkRpYWxvZzogZmFsc2UsXG4gICAgICAgICAgICB0b2FzdFR5cGU6ICcnLFxuICAgICAgICAgICAgdG9hc3RNZXNzYWdlOiAnJyxcbiAgICAgICAgICAgIGRpYWxvZ01lc3NhZ2U6ICcnLFxuICAgICAgICAgICAgc2FsZVBhZ2VJbmZvOiBudWxsLFxuICAgICAgICAgICAgc2t1SW5mb0xpc3Q6IG51bGwsXG4gICAgICAgICAgICBwcm9kdWN0SW5mbzogbnVsbCxcbiAgICAgICAgICAgIHNrdVF0eU1vZGU6IHByb3BzLnNrdVF0eU1vZGUgfHwgJ092ZXJ3cml0ZScsXG4gICAgICAgIH07XG4gICAgfVxuICAgIC8qKlxuICAgICAqIOaqouafpeaYr+WQpumWi+WVnyBTS1UgUG9wdXBcbiAgICAgKi9cbiAgICBjaGVja0FkZFRvQ2FydERpcmVjdCA9IChkYXRhKSA9PiB7XG4gICAgICAgIGNvbnN0IHsgc2FsZVBhZ2VJbmZvLCBza3VJbmZvTGlzdCB9ID0gZGF0YTtcbiAgICAgICAgY29uc3QgeyBzdGF0dXMgfSA9IHNhbGVQYWdlSW5mbztcbiAgICAgICAgc3dpdGNoIChzdGF0dXMpIHtcbiAgICAgICAgICAgIGNhc2UgJ0FwcE9ubHknOlxuICAgICAgICAgICAgY2FzZSAnU2hhcmVUb0J1eSc6XG4gICAgICAgICAgICBjYXNlICdOb3JtYWwnOlxuICAgICAgICAgICAgICAgIHRoaXMuc2V0U3RhdGUoeyBpc09wZW5Mb2FkOiBmYWxzZSwgaXNPcGVuU2t1OiB0cnVlLCBzYWxlUGFnZUluZm8sIHNrdUluZm9MaXN0IH0pO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICB0aGlzLnNldFN0YXRlKHsgaXNPcGVuTG9hZDogZmFsc2UgfSk7XG4gICAgICAgICAgICAgICAgdGhpcy5zaG93TWVzc2FnZShzdGF0dXMpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgfTtcbiAgICAvKipcbiAgICAgKiDln7fooYzliqDlhaXkuovku7bomZXnkIZcbiAgICAgKi9cbiAgICBoYW5kbGVBZGRUb0NhcnQgPSAocHJvZHVjdEluZm86IFByb2R1Y3RJbmZvRW50aXR5KSA9PiB7XG4gICAgICAgIC8vIOaqouafpeaYr+WQpumBuOWPluaVuOmHj1xuICAgICAgICBpZiAocHJvZHVjdEluZm8ucGF5bG9hZC5za3VJZCA8PSAwKSB7XG4gICAgICAgICAgICB0aGlzLnNldFN0YXRlKHtcbiAgICAgICAgICAgICAgICBpc09wZW5Ub2FzdDogdHJ1ZSxcbiAgICAgICAgICAgICAgICB0b2FzdFR5cGU6ICd3YXJuaW5nJyxcbiAgICAgICAgICAgICAgICB0b2FzdE1lc3NhZ2U6IEkxOG4udChUUkFOU0xBVEVfTE9DQUxFX0tFWS5GUk9OVEVORC5MSUIuU0VMRUNUX09QVElPTiksXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICAvLyDpgbjos7zmqKHlvI9cbiAgICAgICAgaWYgKHRoaXMuc3RhdGUubW9kZSA9PT0gJ0Nob29zZScpIHtcbiAgICAgICAgICAgIHRoaXMuc2V0U3RhdGUoeyBwcm9kdWN0SW5mbyB9LCAoKSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5zZXRTdGF0ZShcbiAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgaXNPcGVuVG9hc3Q6IGZhbHNlLFxuICAgICAgICAgICAgICAgICAgICAgICAgdG9hc3RUeXBlOiAnJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIHRvYXN0TWVzc2FnZTogJycsXG4gICAgICAgICAgICAgICAgICAgICAgICBpc09wZW5Ta3U6IGZhbHNlLFxuICAgICAgICAgICAgICAgICAgICAgICAgc2FsZVBhZ2VJbmZvOiBudWxsLFxuICAgICAgICAgICAgICAgICAgICAgICAgc2t1SW5mb0xpc3Q6IG51bGwsXG4gICAgICAgICAgICAgICAgICAgICAgICBzYWxlUGFnZUlkOiAwLFxuICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5wcm9wcy5hZnRlclN1Y2Nlc3MpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyDlgrPlh7rlpJbpg6hHQeS9v+eUqOeahOWPg+aVuFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMucHJvcHMuYWZ0ZXJTdWNjZXNzKHByb2R1Y3RJbmZvLnBheWxvYWQpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgLy8g5Yqg5YWl6LO854mp6LuK5qih5byPXG4gICAgICAgICAgICB0aGlzLnNldFN0YXRlKHsgaXNPcGVuU2t1OiBmYWxzZSwgcHJvZHVjdEluZm8gfSwgKCkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMuc2V0U3RhdGUoeyBpc09wZW5Mb2FkOiB0cnVlIH0pO1xuICAgICAgICAgICAgICAgIC8vIEZldGNoIEFQSSDliqDlhaXos7znianou4pcbiAgICAgICAgICAgICAgICBhZGRTaG9wcGluZ0NhcnRNb2RlbChwcm9kdWN0SW5mbylcbiAgICAgICAgICAgICAgICAgICAgLnRoZW4oKHJlc3VsdCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5zZXRTdGF0ZSh7IGlzT3BlbkxvYWQ6IGZhbHNlIH0sICgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnNob3dNZXNzYWdlKCdBZGRTdWNjZXNzJyk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAgICAgLmNhdGNoKChlcnJvcikgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc29sZS5sb2coJ+WKoOWFpeizvOeJqei7iiBFcnJvcjonLCBlcnJvcik7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnNldFN0YXRlKHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpc09wZW5Mb2FkOiBmYWxzZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpc09wZW5EaWFsb2c6IHRydWUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlhbG9nTWVzc2FnZTogZXJyb3IsXG4gICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgIH07XG4gICAgLyoqXG4gICAgICogQVBQ542o6LOj77yM6L2J5bCOUVItQ29kZeS4i+i8iemggeiZleeQhlxuICAgICAqL1xuICAgIGhhbmRsZUFwcE9ubHkgPSAoc2hvcElkOiBudW1iZXIsIHNhbGVQYWdlSWQ6IG51bWJlcikgPT4ge1xuICAgICAgICB0aGlzLnNldFN0YXRlKHsgaXNPcGVuU2t1OiBmYWxzZSB9KTtcbiAgICAgICAgaWYgKGRldmljZVV0aWxpdHkuZ2V0QnJvd3NpbmdNb2RlKCkgPT09IEJST1dTSU5HX01PREUuTU9CSUxFKSB7XG4gICAgICAgICAgICBpZiAodGhpcy5wcm9wcy5oYW5kbGVSZWRpcmVjdERlZXBMaW5rKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5wcm9wcy5oYW5kbGVSZWRpcmVjdERlZXBMaW5rKCk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHdpbmRvdy5sb2NhdGlvbi5ocmVmID0gJy9TYWxlUGFnZS9pbmRleC8nICsgc2FsZVBhZ2VJZDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHdpbmRvdy5sb2NhdGlvbi5ocmVmID0gJy9TYWxlUGFnZS9TaG93UVJDb2RlLycgKyBzYWxlUGFnZUlkO1xuICAgICAgICB9XG4gICAgfTtcbiAgICAvKipcbiAgICAgKiBGQuWIhuS6q+W+jOizvOiyt1xuICAgICAqL1xuICAgIGhhbmRsZUZhY2Vib29rU2hhcmUgPSAoc2FsZVBhZ2VJZDogbnVtYmVyKSA9PiB7XG4gICAgICAgIGlmICh0aGlzLnByb3BzLmZhY2Vib29rKSB7XG4gICAgICAgICAgICBjb25zdCBsaW5rID0gYCR7d2luZG93LmxvY2F0aW9uLnByb3RvY29sfS8vJHt3aW5kb3cubG9jYXRpb24uaG9zdH0vU2FsZVBhZ2UvSW5kZXgvJHtzYWxlUGFnZUlkfWA7XG4gICAgICAgICAgICB0aGlzLnByb3BzLmZhY2Vib29rLnVpKFxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgbWV0aG9kOiAnZmVlZCcsXG4gICAgICAgICAgICAgICAgICAgIGxpbmssXG4gICAgICAgICAgICAgICAgICAgIGRpc3BsYXk6ICdwb3B1cCcsXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAocmVzcG9uc2UpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zdGF0ZS5zYWxlUGFnZUluZm8uc3RhdHVzID0gJ05vcm1hbCc7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc2V0U3RhdGUoeyBzYWxlUGFnZUluZm86IHRoaXMuc3RhdGUuc2FsZVBhZ2VJbmZvIH0pO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICk7XG4gICAgICAgIH1cbiAgICB9O1xuICAgIC8qKlxuICAgICAqIOmXnOmWieizvOeJqei7iuS6i+S7tuiZleeQhuWPiumChOWOn3NhbGVQYWdlSWTliJ3lp4vlgLxcbiAgICAgKi9cbiAgICBvbkNsb3NlQWRkVG9DYXJ0SGFuZGxlciA9ICgpID0+IHtcbiAgICAgICAgdGhpcy5zZXRTdGF0ZSh7IGlzT3BlblNrdTogZmFsc2UsIHNhbGVQYWdlSW5mbzogbnVsbCwgc2t1SW5mb0xpc3Q6IG51bGwsIHNhbGVQYWdlSWQ6IDAgfSwgKCkgPT4ge1xuICAgICAgICAgICAgaWYgKHRoaXMucHJvcHMuYWZ0ZXJDbG9zZSkge1xuICAgICAgICAgICAgICAgIHRoaXMucHJvcHMuYWZ0ZXJDbG9zZSgpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9O1xuICAgIC8qKlxuICAgICAqIOmXnOmWiVRvYXN05LqL5Lu26JmV55CG77yM5YaN5Z+36KGM57WQ5p2f6LO854mp6LuK5LqL5Lu2XG4gICAgICovXG4gICAgb25DbG9zZVRvYXN0SGFuZGxlciA9ICgpID0+IHtcbiAgICAgICAgLy8g55W25pyq6YG4U0tV55u05o6l5Yqg5YWl6LO854mp6LuK5b2I5Ye66K2m5ZGK6KiK5oGv5pmC77yM5riF56m6VG9hc3Tni4DmhYtcbiAgICAgICAgaWYgKHRoaXMuc3RhdGUudG9hc3RNZXNzYWdlID09PSBJMThuLnQoVFJBTlNMQVRFX0xPQ0FMRV9LRVkuRlJPTlRFTkQuTElCLlNFTEVDVF9PUFRJT04pKSB7XG4gICAgICAgICAgICB0aGlzLnNldFN0YXRlKHsgaXNPcGVuVG9hc3Q6IGZhbHNlLCB0b2FzdFR5cGU6ICcnLCB0b2FzdE1lc3NhZ2U6ICcnIH0pO1xuICAgICAgICB9IGVsc2UgaWYgKHRoaXMuc3RhdGUudG9hc3RNZXNzYWdlID09PSBJMThuLnQoVFJBTlNMQVRFX0xPQ0FMRV9LRVkuRlJPTlRFTkQuTElCLlRPQVNULkFERF9TVUNDRVNTKSkge1xuICAgICAgICAgICAgLy8g55W25Yqg5YWl5oiQ5Yqf5b6M6Ke455m8Y2FsbCBiYWNr5LqL5Lu2XG4gICAgICAgICAgICB0aGlzLnNldFN0YXRlKFxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgaXNPcGVuVG9hc3Q6IGZhbHNlLFxuICAgICAgICAgICAgICAgICAgICB0b2FzdFR5cGU6ICcnLFxuICAgICAgICAgICAgICAgICAgICB0b2FzdE1lc3NhZ2U6ICcnLFxuICAgICAgICAgICAgICAgICAgICBpc09wZW5Ta3U6IGZhbHNlLFxuICAgICAgICAgICAgICAgICAgICBzYWxlUGFnZUluZm86IG51bGwsXG4gICAgICAgICAgICAgICAgICAgIHNrdUluZm9MaXN0OiBudWxsLFxuICAgICAgICAgICAgICAgICAgICBzYWxlUGFnZUlkOiAwLFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5wcm9wcy5hZnRlclN1Y2Nlc3MpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIOWCs+WHuuWklumDqEdB5L2/55So55qE5Y+D5pW4XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnByb3BzLmFmdGVyU3VjY2Vzcyh0aGlzLnN0YXRlLnByb2R1Y3RJbmZvLnBheWxvYWQpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuc2V0U3RhdGUoeyBpc09wZW5Ub2FzdDogZmFsc2UsIHRvYXN0VHlwZTogJycsIHRvYXN0TWVzc2FnZTogJycgfSwgdGhpcy5vbkNsb3NlQWRkVG9DYXJ0SGFuZGxlcik7XG4gICAgICAgIH1cbiAgICB9O1xuICAgIC8qKlxuICAgICAqIOmhr+ekuuWVhuWTgeeLgOaFi+ioiuaBr1xuICAgICAqL1xuICAgIHNob3dNZXNzYWdlID0gKHN0YXR1cykgPT4ge1xuICAgICAgICBjb25zdCBtZXNzYWdlSXRlbSA9IGdldFRvYXN0TWVzc2FnZUl0ZW0oc3RhdHVzKTtcbiAgICAgICAgaWYgKG1lc3NhZ2VJdGVtKSB7XG4gICAgICAgICAgICB0aGlzLnNldFN0YXRlKHtcbiAgICAgICAgICAgICAgICBpc09wZW5Ub2FzdDogdHJ1ZSxcbiAgICAgICAgICAgICAgICB0b2FzdE1lc3NhZ2U6IEkxOG4udChtZXNzYWdlSXRlbS5tZXNzYWdlKSxcbiAgICAgICAgICAgICAgICB0b2FzdFR5cGU6IG1lc3NhZ2VJdGVtLnR5cGUsXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgIH07XG5cbiAgICBoYW5kbGVDbG9zZURpYWxvZyA9ICgpID0+IHtcbiAgICAgICAgdGhpcy5zZXRTdGF0ZShcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBpc09wZW5EaWFsb2c6IGZhbHNlLFxuICAgICAgICAgICAgICAgIGRpYWxvZ01lc3NhZ2U6ICcnLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHRoaXMub25DbG9zZUFkZFRvQ2FydEhhbmRsZXJcbiAgICAgICAgKTtcbiAgICB9O1xuICAgIC8vIFRPRE86IOS5i+W+jOWGjeiqv+aVtOS4jeimgeS9v+eUqGNvbXBvbmVudFdpbGxSZWNlaXZlUHJvcHPop7jnmbzplovpl5xcbiAgICBjb21wb25lbnRXaWxsUmVjZWl2ZVByb3BzKG5leHRQcm9wczogQWRkVG9DYXJ0UHJvcHMpIHtcbiAgICAgICAgaWYgKG5leHRQcm9wcy5zYWxlUGFnZUlkICE9PSB0aGlzLnN0YXRlLnNhbGVQYWdlSWQgJiYgIXRoaXMuc3RhdGUuaXNPcGVuU2t1KSB7XG4gICAgICAgICAgICB0aGlzLnNldFN0YXRlKHsgaXNPcGVuTG9hZDogdHJ1ZSB9KTtcbiAgICAgICAgICAgIC8vIOWPluW+l0FQSeWVhuWTgeizh+ioilxuICAgICAgICAgICAgZmV0Y2hTYWxlUGFnZUluZm9Nb2RlbCh0aGlzLnByb3BzLnNob3BJZCwgbmV4dFByb3BzLnNhbGVQYWdlSWQpXG4gICAgICAgICAgICAgICAgLnRoZW4oKGRhdGEpID0+IHRoaXMuY2hlY2tBZGRUb0NhcnREaXJlY3QoZGF0YSkpXG4gICAgICAgICAgICAgICAgLmNhdGNoKChlcnIpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zZXRTdGF0ZSh7IGlzT3BlbkxvYWQ6IGZhbHNlIH0pO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnNob3dNZXNzYWdlKCdFcnJvcicpO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcmVuZGVyKCkge1xuICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgPFJlYWN0LkZyYWdtZW50PlxuICAgICAgICAgICAgICAgIHsvKiBQb3BVcCBTS1UgKi99XG4gICAgICAgICAgICAgICAgPE1vZGFsXG4gICAgICAgICAgICAgICAgICAgIGlzT3Blbj17dGhpcy5zdGF0ZS5pc09wZW5Ta3V9XG4gICAgICAgICAgICAgICAgICAgIGlzU2hvd0Nsb3NlPXt0cnVlfVxuICAgICAgICAgICAgICAgICAgICBvbkNsb3NlTW9kYWw9e3RoaXMub25DbG9zZUFkZFRvQ2FydEhhbmRsZXJ9XG4gICAgICAgICAgICAgICAgICAgIGN1c3RvbUNzc0NsYXNzPVwibW9kYWwtLWxhcmdlXCJcbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgIHt0aGlzLnN0YXRlLnNhbGVQYWdlSW5mbyAmJiB0aGlzLnN0YXRlLnNrdUluZm9MaXN0ICYmIChcbiAgICAgICAgICAgICAgICAgICAgICAgIDxQcm9kdWN0U2t1XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc2t1UXR5TW9kZT17dGhpcy5zdGF0ZS5za3VRdHlNb2RlfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vZGU9e3RoaXMuc3RhdGUubW9kZX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWNpbWFsPXt0aGlzLnByb3BzLmRlY2ltYWx9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc3ltYm9sPXt0aGlzLnByb3BzLnN5bWJvbH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByYXRlPXt0aGlzLnByb3BzLnJhdGV9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hvcElkPXt0aGlzLnByb3BzLnNob3BJZH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzYWxlUGFnZUluZm89e3RoaXMuc3RhdGUuc2FsZVBhZ2VJbmZvfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNrdUluZm9MaXN0PXt0aGlzLnN0YXRlLnNrdUluZm9MaXN0fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZUFkZFRvQ2FydD17dGhpcy5oYW5kbGVBZGRUb0NhcnR9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlQXBwT25seT17dGhpcy5oYW5kbGVBcHBPbmx5fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZUZhY2Vib29rU2hhcmU9e3RoaXMuaGFuZGxlRmFjZWJvb2tTaGFyZX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkFkZFF1YW50aXR5PXt0aGlzLnByb3BzLm9uQWRkUXVhbnRpdHl9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgb25SZW1vdmVRdWFudGl0eT17dGhpcy5wcm9wcy5vblJlbW92ZVF1YW50aXR5fVxuICAgICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgICAgICA8L01vZGFsPlxuICAgICAgICAgICAgICAgIHsvKiDlvYjot7PoqIrmga8gKi99XG4gICAgICAgICAgICAgICAgPFRvYXN0XG4gICAgICAgICAgICAgICAgICAgIGlzT3Blbj17dGhpcy5zdGF0ZS5pc09wZW5Ub2FzdH1cbiAgICAgICAgICAgICAgICAgICAgdHlwZT17dGhpcy5zdGF0ZS50b2FzdFR5cGV9XG4gICAgICAgICAgICAgICAgICAgIG1lc3NhZ2U9e3RoaXMuc3RhdGUudG9hc3RNZXNzYWdlfVxuICAgICAgICAgICAgICAgICAgICBhZnRlckNsb3NlPXt0aGlzLm9uQ2xvc2VUb2FzdEhhbmRsZXJ9XG4gICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICB7Lyog562J5b6F5Zue5oeJ5pWI5p6cICovfVxuICAgICAgICAgICAgICAgIDxMb2FkaW5nIGlzTG9hZGluZz17dGhpcy5zdGF0ZS5pc09wZW5Mb2FkfSAvPlxuICAgICAgICAgICAgICAgIHsvKiDpjK/oqqREaWFsb2cqL31cbiAgICAgICAgICAgICAgICA8RGlhbG9nXG4gICAgICAgICAgICAgICAgICAgIGlzT3Blbj17dGhpcy5zdGF0ZS5pc09wZW5EaWFsb2d9XG4gICAgICAgICAgICAgICAgICAgIGlzU2hvd0Nsb3NlPXtmYWxzZX1cbiAgICAgICAgICAgICAgICAgICAgY29uZmlybVRleHQ9e0kxOG4udChUUkFOU0xBVEVfTE9DQUxFX0tFWS5GUk9OVEVORC5MSUIuQ09ORklSTSl9XG4gICAgICAgICAgICAgICAgICAgIG9uQ29uZmlybURpYWxvZz17dGhpcy5oYW5kbGVDbG9zZURpYWxvZ31cbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgIDxkaXY+e3RoaXMuc3RhdGUuZGlhbG9nTWVzc2FnZX08L2Rpdj5cbiAgICAgICAgICAgICAgICA8L0RpYWxvZz5cbiAgICAgICAgICAgIDwvUmVhY3QuRnJhZ21lbnQ+XG4gICAgICAgICk7XG4gICAgfVxufVxuIiwiaW1wb3J0IGNsYXNzTmFtZXMgZnJvbSAnY2xhc3NuYW1lcyc7XG5pbXBvcnQgKiBhcyBSZWFjdCBmcm9tICdyZWFjdCc7XG5pbXBvcnQgeyBCUk9XU0lOR19NT0RFIH0gZnJvbSAnQGNvbnN0YW50cy9kZXZpY2UuY29uc3RhbnRzJztcbmltcG9ydCB7IHJ1bnRpbWVNb2RlVXRpbGl0eSwgZGV2aWNlVXRpbGl0eSwgdXNlckFnZW50VXRpbGl0eSB9IGZyb20gJ0B1dGlsaXRpZXMvaW5kZXgnO1xuXG5pbXBvcnQgJy4vbW9kYWwuc2Nzcyc7XG5cbmludGVyZmFjZSBNb2RhbFByb3BzIHtcbiAgICBpc09wZW46IGJvb2xlYW47XG4gICAgaXNTaG93Q2xvc2U6IGJvb2xlYW47XG4gICAgaXNMb2FkaW5nPzogYm9vbGVhbjtcbiAgICBpc01hc2tPcGFjaXR5PzogYm9vbGVhbjtcbiAgICB0aXRsZT86IHN0cmluZztcbiAgICBjb25maXJtVGV4dD86IHN0cmluZztcbiAgICBjYW5jZWxUZXh0Pzogc3RyaW5nO1xuICAgIGN1c3RvbVN0eWxlPzogUmVhY3QuQ1NTUHJvcGVydGllcztcbiAgICBjdXN0b21Dc3NDbGFzcz86IHN0cmluZztcbiAgICBvbkNsb3NlTW9kYWw/OiAoKSA9PiBhbnk7XG4gICAgb25Db25maXJtTW9kYWw/OiAoKSA9PiBhbnk7XG4gICAgY2hpbGRyZW4/OiBSZWFjdC5SZWFjdE5vZGU7XG59O1xuaW50ZXJmYWNlIFN0YXRlcyB7fTtcbi8qKlxuICog5b2I6Lez6KaW56qX5YWD5Lu2XG4gKi9cbmNsYXNzIE1vZGFsIGV4dGVuZHMgUmVhY3QuQ29tcG9uZW50PE1vZGFsUHJvcHMsIFN0YXRlcz4ge1xuXG4gICAgcHJvdGVjdGVkIHN0YXRpYyBkZWZhdWx0UHJvcHM6IFBhcnRpYWw8TW9kYWxQcm9wcz4gPSB7XG4gICAgICAgIGlzT3BlbjogZmFsc2UsXG4gICAgICAgIGlzU2hvd0Nsb3NlOiB0cnVlLFxuICAgICAgICBpc01hc2tPcGFjaXR5OiB0cnVlLFxuICAgICAgICB0aXRsZTogJycsXG4gICAgICAgIGNvbmZpcm1UZXh0OiAnJyxcbiAgICAgICAgY2FuY2VsVGV4dDogJycsXG4gICAgfTtcblxuICAgIHByaXZhdGUgc2xpZGVQdXNoTWVudUxlZnRFbGVtOiBIVE1MRWxlbWVudDtcblxuICAgIHByaXZhdGUgYnJvd3NpbmdNb2RlOiBzdHJpbmc7XG5cbiAgICBwdWJsaWMgY29tcG9uZW50RGlkTW91bnQoKSB7XG4gICAgICAgIGNvbnN0IHsgaXNPcGVuIH0gPSB0aGlzLnByb3BzO1xuICAgICAgICBpZihydW50aW1lTW9kZVV0aWxpdHkuY2hlY2tJc0NsaWVudFJlbmRlcigpKSB7XG4gICAgICAgICAgICB0aGlzLnNsaWRlUHVzaE1lbnVMZWZ0RWxlbSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdzcGFyay1zbGlkZS1wdXNoLW1lbnVfX2xlZnQtY29udGFpbnRlcicpO1xuICAgICAgICAgICAgdGhpcy5icm93c2luZ01vZGUgPSBkZXZpY2VVdGlsaXR5LmdldEJyb3dzaW5nTW9kZSgpO1xuICAgICAgICAgICAgdGhpcy5mcmVlemVCb2R5KGlzT3Blbik7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwdWJsaWMgY29tcG9uZW50V2lsbFJlY2VpdmVQcm9wcyhuZXh0UHJvcHM6IE1vZGFsUHJvcHMpIHtcbiAgICAgICAgY29uc3QgeyBpc09wZW4gfSA9IHRoaXMucHJvcHM7XG4gICAgICAgIGlmIChpc09wZW4gIT09IG5leHRQcm9wcy5pc09wZW4pIHtcbiAgICAgICAgICAgIHRoaXMuZnJlZXplQm9keShuZXh0UHJvcHMuaXNPcGVuKTtcbiAgICAgICAgICAgIHRoaXMuZnJlZXplQXNpZGVQdXNoTWVudShuZXh0UHJvcHMuaXNPcGVuKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIOeVtumWi+WVn1BvcFVw6Y6W5L2P5bqV6YOoc2Nyb2xs6JmV55CGXG4gICAgICovXG4gICAgcHJpdmF0ZSBmcmVlemVCb2R5ID0gKGlzRml4ZWQ6IGJvb2xlYW4pID0+IHtcbiAgICAgICAgaWYgKHJ1bnRpbWVNb2RlVXRpbGl0eS5jaGVja0lzQ2xpZW50UmVuZGVyKCkpIHtcbiAgICAgICAgICAgIGlmIChpc0ZpeGVkKSB7XG4gICAgICAgICAgICAgICAgd2luZG93LmRvY3VtZW50LmJvZHkuY2xhc3NMaXN0LmFkZCgnZnJlZXplJyk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHdpbmRvdy5kb2N1bWVudC5ib2R5LmNsYXNzTGlzdC5yZW1vdmUoJ2ZyZWV6ZScpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfTtcblxuICAgIC8qKlxuICAgICAqIOWHjee1kOaJi+apn+eJiOWBtOashG1lbnXvvIjph53lsI1zYWZhcmnnibnmroromZXnkIbvvIlcbiAgICAgKiAvLyBUT0RPOiDlvoznuozkvb/nlKhyZWFjdCBwb3J0YWzkvobmlLnlr6vpgJnlgIvlhYPku7bvvIzpgb/lhY1wb3N0aW9uIGZpeOWcqHNhZmFyaeeahOWVj+mhjFxuICAgICAqL1xuICAgIHByaXZhdGUgZnJlZXplQXNpZGVQdXNoTWVudSA9IChpc0ZpeGVkOiBib29sZWFuKSA9PiB7XG4gICAgICAgIGNvbnN0IHNsaWRlUHVzaE1lbnVMZWZ0RWxlbUNsYXNzTGlzdCA9IHRoaXMuc2xpZGVQdXNoTWVudUxlZnRFbGVtICYmIHRoaXMuc2xpZGVQdXNoTWVudUxlZnRFbGVtLmNsYXNzTGlzdDtcbiAgICAgICAgaWYgKFxuICAgICAgICAgICAgdGhpcy5icm93c2luZ01vZGUgPT09IEJST1dTSU5HX01PREUuREVTS1RPUCB8fFxuICAgICAgICAgICAgIXNsaWRlUHVzaE1lbnVMZWZ0RWxlbUNsYXNzTGlzdCB8fFxuICAgICAgICAgICAgIXVzZXJBZ2VudFV0aWxpdHkuY2hlY2tJc1NhZmFyaShuYXZpZ2F0b3IudXNlckFnZW50KVxuICAgICAgICApIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBpZiAoaXNGaXhlZCkge1xuICAgICAgICAgICAgc2xpZGVQdXNoTWVudUxlZnRFbGVtQ2xhc3NMaXN0LmFkZCgnc3Bhcmstc2xpZGUtcHVzaC1tZW51LS1mcmVlemUnKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHNsaWRlUHVzaE1lbnVMZWZ0RWxlbUNsYXNzTGlzdC5yZW1vdmUoJ3NwYXJrLXNsaWRlLXB1c2gtbWVudS0tZnJlZXplJyk7XG4gICAgICAgIH1cbiAgICB9O1xuXG4gICAgcHVibGljIHJlbmRlcigpIHtcbiAgICAgICAgY29uc3Qge1xuICAgICAgICAgICAgdGl0bGUsXG4gICAgICAgICAgICBpc09wZW4sXG4gICAgICAgICAgICBpc01hc2tPcGFjaXR5LFxuICAgICAgICAgICAgb25DbG9zZU1vZGFsLFxuICAgICAgICAgICAgb25Db25maXJtTW9kYWwsXG4gICAgICAgICAgICBjdXN0b21TdHlsZSxcbiAgICAgICAgICAgIGN1c3RvbUNzc0NsYXNzLFxuICAgICAgICAgICAgaXNTaG93Q2xvc2UsXG4gICAgICAgICAgICBjaGlsZHJlbixcbiAgICAgICAgICAgIGNhbmNlbFRleHQsXG4gICAgICAgICAgICBjb25maXJtVGV4dCxcbiAgICAgICAgfSA9IHRoaXMucHJvcHM7XG5cbiAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPXtjbGFzc05hbWVzKCdtb2RhbCcsIGlzT3BlbiA9PT0gdHJ1ZSA/ICdtb2RhbC0tb3BlbicgOiAnJyl9PlxuICAgICAgICAgICAgICAgIHtpc09wZW4gJiYgKFxuICAgICAgICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU9e2NsYXNzTmFtZXMoJ21vZGFsX19iYWNrZHJvcCcsIGlzTWFza09wYWNpdHkgPyAnbW9kYWxfX2JhY2tkcm9wLS1vcGFjaXR5JyA6ICcnKX1cbiAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9e29uQ2xvc2VNb2RhbH1cbiAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgICAgIHtpc09wZW4gJiYgKFxuICAgICAgICAgICAgICAgICAgICA8ZGl2IHN0eWxlPXtjdXN0b21TdHlsZX0gY2xhc3NOYW1lPXtjbGFzc05hbWVzKCdtb2RhbC0tZGVmYXVsdCcsIGN1c3RvbUNzc0NsYXNzIHx8ICcnKX0+XG4gICAgICAgICAgICAgICAgICAgICAgICB7aXNTaG93Q2xvc2UgJiYgKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwibW9kYWxfX2hlYWRlclwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBjbGFzc05hbWU9XCJjbG9zZVwiIG9uQ2xpY2s9e29uQ2xvc2VNb2RhbH0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aSBjbGFzc05hbWU9XCJpY29uIGljb24tc2xpbS1jbG9zZVwiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3RpdGxlICYmIDxoMiBjbGFzc05hbWU9XCJtb2RhbF9fdGl0bGVcIj57dGl0bGV9PC9oMj59XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgICAgICAgICAgICAgeyFjaGlsZHJlbiAmJiA8ZGl2IGNsYXNzTmFtZT1cIm1vZGFsX19sb2FkaW5nIGJsYWNrLXNwaW5uZXIgXCIgLz59XG4gICAgICAgICAgICAgICAgICAgICAgICB7Y2hpbGRyZW4gJiYgPGRpdiBjbGFzc05hbWU9XCJtb2RhbF9fYm9keVwiPntjaGlsZHJlbn08L2Rpdj59XG4gICAgICAgICAgICAgICAgICAgICAgICB7Lyog5aaC5p6c5rKS5pyJ5bi2YnV0dG9u5paH5a2X77yM5YmH5LiN6aGv56S6Zm9vdGVy5Y2A5aGKICovfVxuICAgICAgICAgICAgICAgICAgICAgICAge2NhbmNlbFRleHQgfHwgY29uZmlybVRleHQgPyAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJtb2RhbF9fZm9vdGVyXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtjYW5jZWxUZXh0ICYmIChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIGNsYXNzTmFtZT1cImNhbmNlbC1idG5cIiBvbkNsaWNrPXtvbkNsb3NlTW9kYWx9PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtjYW5jZWxUZXh0fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICl9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtjb25maXJtVGV4dCAmJiAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBjbGFzc05hbWU9XCJjb25maXJtLWJ0blwiIG9uQ2xpY2s9e29uQ29uZmlybU1vZGFsfT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7Y29uZmlybVRleHR9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICkgOiBudWxsfVxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICk7XG4gICAgfVxufVxuXG5leHBvcnQgZGVmYXVsdCBNb2RhbDtcbiIsImltcG9ydCAqIGFzIGh0dHBQcm92aWRlciBmcm9tICcuL2h0dHAucHJvdmlkZXInO1xuXG5leHBvcnQge1xuICAgIGh0dHBQcm92aWRlclxufTtcbiIsImltcG9ydCBBZGRUb0NhcnREZXNrdG9wIGZyb20gJ0Bjb21wb25lbnRzL2FkZFRvQ2FydC9kZXNrdG9wL2FkZFRvQ2FydC5kZXNrdG9wJztcbmltcG9ydCBBZGRUb0NhcnRNb2JpbGUgZnJvbSAnQGNvbXBvbmVudHMvYWRkVG9DYXJ0L21vYmlsZS9hZGRUb0NhcnQubW9iaWxlJztcbmltcG9ydCBNb2RhbCBmcm9tICdAY29tcG9uZW50cy9tb2RhbC9tb2RhbCc7XG5pbXBvcnQgTG9hZGluZyBmcm9tICdAY29tcG9uZW50cy9sb2FkaW5nL2xvYWRpbmcnO1xuaW1wb3J0IFRvYXN0LCB7IGdldFRvYXN0TWVzc2FnZUl0ZW0gfSBmcm9tICdAY29tcG9uZW50cy90b2FzdC90b2FzdCc7XG5pbXBvcnQgQ3VycmVuY3kgZnJvbSAnQGNvbXBvbmVudHMvY3VycmVuY3kvY3VycmVuY3knO1xuaW1wb3J0IENoZWNrQm94IGZyb20gJ0Bjb21wb25lbnRzL2NoZWNrQm94L2NoZWNrQm94JztcbmltcG9ydCBSYWRpb0J1dHRvbiBmcm9tICdAY29tcG9uZW50cy9yYWRpb0J1dHRvbi9yYWRpb0J1dHRvbic7XG5pbXBvcnQgQnV0dG9uIGZyb20gJ0Bjb21wb25lbnRzL2J1dHRvbic7XG5pbXBvcnQgTGluayBmcm9tICdAY29tcG9uZW50cy9saW5rJztcbmltcG9ydCBUYWcgZnJvbSAnQGNvbXBvbmVudHMvdGFnJztcblxuaW1wb3J0IHsgaHR0cFByb3ZpZGVyIH0gZnJvbSAnLi9wcm92aWRlcnMvaW5kZXgnO1xuaW1wb3J0IHtcbiAgICBkYXRlRm9ybWF0VXRpbGl0eSxcbiAgICBkZXZpY2VVdGlsaXR5LFxuICAgIHVzZXJBZ2VudFV0aWxpdHksXG4gICAgcnVudGltZU1vZGVVdGlsaXR5LFxuICAgIGNvb2tpZVV0aWxpdHksXG4gICAgdXJsVXRpbGl0eSxcbiAgICBjdXJyZW5jeVV0aWxpdHksXG59IGZyb20gJy4vdXRpbGl0aWVzL2luZGV4JztcbmltcG9ydCBTcGFya0NvcmVUaGVtZVByb3ZpZGVyIGZyb20gJ0Bjb21wb25lbnRzL3RoZW1lJztcblxuZXhwb3J0IHtcbiAgICAvLyBDb21wb25lbnRzXG4gICAgQWRkVG9DYXJ0RGVza3RvcCxcbiAgICBBZGRUb0NhcnRNb2JpbGUsXG4gICAgTW9kYWwsXG4gICAgTG9hZGluZyxcbiAgICBUb2FzdCxcbiAgICBnZXRUb2FzdE1lc3NhZ2VJdGVtLFxuICAgIEN1cnJlbmN5LFxuICAgIENoZWNrQm94LFxuICAgIFJhZGlvQnV0dG9uLFxuICAgIEJ1dHRvbixcbiAgICBMaW5rLFxuICAgIFRhZyxcbiAgICBTcGFya0NvcmVUaGVtZVByb3ZpZGVyLFxuICAgIC8vIFByb3ZpZGVyc1xuICAgIGh0dHBQcm92aWRlcixcbiAgICAvLyBVdGlsaXRpZXNcbiAgICBkYXRlRm9ybWF0VXRpbGl0eSxcbiAgICBkZXZpY2VVdGlsaXR5LFxuICAgIHVzZXJBZ2VudFV0aWxpdHksXG4gICAgcnVudGltZU1vZGVVdGlsaXR5LFxuICAgIGNvb2tpZVV0aWxpdHksXG4gICAgdXJsVXRpbGl0eSxcbiAgICBjdXJyZW5jeVV0aWxpdHksXG59O1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBOztBQ1ZBO0FBQ0E7QUFDQTtBQUZBOztBQ0FBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTs7QUMxQkE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFPQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFNQTtBQUVBO0FBRUE7QUFHQTtBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUVBOztBQ3RDQTtBQUVBOztBQ0ZBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTs7QUNwQkE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUdBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFDQTs7QUM1RUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUtBO0FBQ0E7O0FDZEE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7Ozs7O0FDZEE7QUFDQTtBQUNBO0FBRUE7QUFlQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBREE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFYQTtBQWNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFBQTtBQUdBO0FBQ0E7QUFGQTtBQU1BO0FBQUE7QUFBQTtBQUVBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBRUE7QUFBQTtBQUdBO0FBQUE7QUFDQTtBQUFBO0FBR0E7QUFBQTtBQUVBO0FBQUE7QUFBQTtBQUFBO0FBS0E7QUFBQTtBQUFBO0FBQUE7QUFVQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFOQTtBQVNBOzs7Ozs7QUMxR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQ1JBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFFQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFMQTtBQU9BO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBREE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7Ozs7QUMxREE7QUFDQTtBQUVBO0FBQ0E7QUFLQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBRUE7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBT0E7QUFDQTtBQUNBOztBQzdCQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQVhBO0FBakJBO0FBREE7QUFEQTs7Ozs7OztBQ0FBO0FBQ0E7QUFDQTtBQUNBO0FBR0E7QUFZQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBSEE7QUFNQTtBQUNBO0FBQ0E7QUFIQTtBQU1BO0FBQ0E7QUFDQTtBQUhBO0FBTUE7QUFDQTtBQUNBO0FBSEE7QUFNQTtBQUNBO0FBQ0E7QUFIQTtBQU1BO0FBQ0E7QUFDQTtBQUhBO0FBTUE7QUFDQTtBQUNBO0FBSEE7QUFNQTtBQUNBO0FBQ0E7QUFIQTtBQU1BO0FBQ0E7QUFDQTtBQUhBO0FBTUE7QUFDQTtBQUNBO0FBSEE7QUFPQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBU0E7QUFFQTtBQUdBO0FBQ0E7QUFDQTtBQUZBO0FBQ0E7QUFEQTtBQUNBO0FBREE7QUF1QkE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQTdCQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBU0E7QUFDQTtBQUNBO0FBQUE7QUFHQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFGQTtBQU9BO0FBQ0E7QUFEQTtBQUdBO0FBQUE7QUFBQTtBQUpBO0FBTUE7QUFBQTtBQUVBO0FBQUE7QUFTQTtBQUNBO0FBMUVBO0FBQ0E7QUFEQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQU5BO0FBQ0E7QUEwRUE7Ozs7Ozs7O0FDOUpBO0FBQ0E7QUFDQTtBQUNBO0FBWUE7QUFBQTtBQUFBO0FBQUE7QUFNQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBSEE7QUFNQTtBQUNBO0FBQUE7QUFBQTtBQUVBO0FBQUE7QUFBQTtBQUFBO0FBSUE7QUFDQTtBQUNBOztBQ3hDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBOztBQ1JBO0FBRUE7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFEQTtBQUNBO0FBRUE7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQURBO0FBQ0E7QUFFQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBREE7QUFDQTs7QUNwQ0E7QUFFQTtBQUVBO0FBRUE7QUFDQTtBQUNBO0FBU0E7QUFBQTtBQUFBO0FBQUE7QUFNQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFKQTtBQU9BO0FBS0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUxBO0FBWUE7QUFDQTtBQUZBO0FBVUE7QUFDQTtBQUZBO0FBTUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUxBO0FBV0E7O0FDdkVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBR0E7QUFDQTtBQUNBO0FBY0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQURBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBREE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQU9BO0FBQUE7QUFBQTtBQUFBO0FBSUE7QUFBQTtBQUFBO0FBQUE7QUFNQTtBQUFBO0FBQUE7QUFBQTtBQUtBO0FBQUE7QUFBQTtBQUFBO0FBVUE7QUFBQTtBQUFBO0FBQUE7QUFlQTtBQUFBO0FBQUE7QUFBQTtBQUtBO0FBQUE7QUFBQTtBQUFBO0FBT0E7QUFBQTtBQUFBO0FBQUE7QUFJQTtBQUFBO0FBQUE7QUFBQTtBQU1BO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUVBO0FBSUE7QUFBQTtBQVlBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQU5BO0FBWUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUtBO0FBQ0E7QUFDQTtBQUNBO0FBSkE7QUFhQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFOQTtBQVlBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQU5BO0FBY0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUtBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFPQTtBQUNBO0FBQ0E7QUFDQTtBQUpBO0FBYUE7O0FDMU9BO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FDaEJBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQ05BO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FDUEE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQ0xBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUNMQTtBQUNBO0FBQ0E7O0FDRkE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQ1hBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUNqQkE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FDcENBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FDUEE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esc0NBTUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7Ozs7Ozs7QUM3OUhBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQTRCQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFEQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBREE7QUFRQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBREE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFnREE7QUFDQTtBQUNBO0FBQ0E7QUFTQTtBQUNBO0FBQ0E7QUFDQTtBQUtBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUlBO0FBQUE7QUFBQTtBQUFBO0FBSUE7QUFBQTtBQUFBO0FBQUE7QUFRQTtBQUFBO0FBQUE7QUFBQTtBQVVBO0FBQUE7QUFBQTtBQUFBO0FBVUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBR0E7QUFBQTtBQUFBO0FBQUE7QUFZQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFPQTtBQUVBO0FBQ0E7QUFLQTtBQUNBO0FBQ0E7QUFUQTtBQVlBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFMQTtBQVdBO0FBTUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBR0E7QUFDQTtBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQURBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBSUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBTkE7QUFXQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFOQTtBQVdBOztBQ3ZaQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFVQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBSUE7QUFDQTtBQUNBO0FBSUE7QUFDQTtBQUNBO0FBS0E7QUFDQTtBQUNBO0FBS0E7QUFDQTtBQTVCQTtBQW1DQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBU0E7QUFDQTtBQUNBO0FBQ0E7QUFTQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQVNBO0FBQ0E7QUFDQTtBQVFBO0FBQ0E7QUFDQTtBQVFBO0FBQ0E7QUFqQ0E7QUF3Q0E7QUFDQTtBQUNBO0FBUUE7QUFBQTtBQUFBO0FBQUE7QUFRQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFJQTtBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBSEE7QUFNQTs7QUMxSkE7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQW9CQTtBQUFBO0FBQUE7QUFBQTtBQU1BO0FBQUE7QUFBQTtBQUFBO0FBS0E7QUFBQTtBQUFBO0FBQUE7QUFTQTtBQUFBO0FBQUE7QUFBQTtBQUlBO0FBQUE7QUFBQTtBQUFBO0FBY0E7QUFBQTtBQUFBO0FBQUE7QUFNQTtBQUFBO0FBQUE7QUFBQTtBQU9BO0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBR0E7QUFBQTtBQUFBO0FBQUE7QUFLQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUdBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQVBBO0FBU0E7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQU1BO0FBQUE7QUFBQTtBQUtBO0FBQUE7QUFNQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBRUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFIQTtBQU1BO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBeENBO0FBNENBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQURBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7O0FDeE1BO0FBRUE7QUFDQTtBQUNBO0FBR0E7QUFDQTtBQUNBO0FBZUE7QUFBQTtBQUFBO0FBQUE7QUFJQTtBQUFBO0FBQUE7QUFBQTtBQU1BO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFHQTtBQUNBO0FBU0E7QUFDQTtBQUNBO0FBQ0E7QUFLQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFpQkE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBR0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFLQTtBQUVBO0FBQ0E7QUFDQTtBQUhBO0FBUUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUxBO0FBWUE7QUFDQTtBQUZBO0FBVUE7QUFDQTtBQUZBO0FBTUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUxBO0FBV0E7QUFJQTs7Ozs7Ozs7QUMxSUE7QUFDQTtBQVVBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFLQTtBQUtBO0FBS0E7QUFqQkE7QUFDQTtBQXNCQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FDOUNBO0FBQ0E7QUFDQTtBQUNBO0FBV0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBS0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUZBO0FBSUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFJQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBOzs7O0FDbkRBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBaUNBO0FBQUE7QUFBQTtBQUFBO0FBSUE7QUFBQTtBQUFBO0FBQUE7QUFPQTtBQUFBO0FBQUE7QUFBQTtBQU1BO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUZBO0FBSUE7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFEQTtBQUNBO0FBQ0E7QUFDQTtBQUZBO0FBbUJBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBSUE7QUFJQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFqQkE7QUFtQkE7QUFyQkE7QUF1QkE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBeENBO0FBMENBO0FBQ0E7QUFqRUE7QUFxRUE7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUE1RUE7QUFnRkE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQXpGQTtBQTZGQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFyR0E7QUF5R0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQXBIQTtBQXdIQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUEzSEE7QUErSEE7QUFFQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQXRJQTtBQTBJQTtBQUdBO0FBQUE7QUFDQTtBQUFBO0FBR0E7QUFDQTtBQWhKQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFSQTtBQVdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQStIQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBS0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFQQTtBQWlCQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBTEE7QUFVQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFOQTtBQWVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQU5BO0FBVUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBTkE7QUFZQTtBQUNBO0FBdk9BOztBQ2hGQTtBQUNBO0FBQ0E7QUFVQTtBQUFBO0FBQUE7QUFBQTtBQVVBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBR0E7QUFBQTtBQUFBO0FBQUE7QUFRQTtBQUFBO0FBQUE7QUFBQTtBQU9BO0FBQUE7QUFBQTtBQUFBO0FBU0E7QUFBQTtBQUFBO0FBQUE7QUFPQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBRUE7QUFBQTtBQUFBO0FBRUE7QUFDQTtBQUZBO0FBS0E7QUFBQTtBQUNBO0FBQUE7QUFPQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUpBO0FBT0E7O0FDdkhBO0FBQ0E7QUFDQTtBQUNBO0FBOENBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQURBO0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFWQTtBQUNBO0FBV0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQURBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRkE7QUFJQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRkE7QUFDQTtBQUlBO0FBR0E7QUFDQTtBQUNBO0FBRkE7QUFJQTtBQUNBO0FBRUE7QUFHQTtBQUNBO0FBRkE7QUFDQTtBQUtBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQU5BO0FBUUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUhBO0FBS0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQWhCQTtBQWtCQTtBQUNBO0FBQ0E7QUFGQTtBQUlBOztBQzFNQTtBQUNBO0FBQ0E7QUE0QkE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBUEE7QUFGQTtBQVlBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Ozs7QUM3REE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQWdDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUZBO0FBc0JBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFUQTtBQVdBO0FBQ0E7QUFwQ0E7QUF3Q0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBSEE7QUFLQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQVBBO0FBVUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUVBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFIQTtBQUtBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUE1RkE7QUFnR0E7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBM0dBO0FBK0dBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUhBO0FBTUE7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQTlIQTtBQWtJQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUF4SUE7QUE0SUE7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQVBBO0FBVUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQXRLQTtBQTBLQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUhBO0FBS0E7QUFDQTtBQUNBO0FBbkxBO0FBcUxBO0FBRUE7QUFDQTtBQUZBO0FBTUE7QUFDQTtBQTNMQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBYkE7QUFlQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUF3S0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUdBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFMQTtBQVNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBYkE7QUFtQkE7QUFDQTtBQUNBO0FBQ0E7QUFKQTtBQU9BO0FBQUE7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUpBO0FBVUE7QUFDQTtBQS9QQTs7Ozs7QUM3Q0E7QUFDQTtBQUNBO0FBYUE7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBRUE7QUFFQTtBQUNBO0FBRkE7QUFJQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQVZBO0FBWUE7QUFBQTtBQUNBO0FBQUE7QUFHQTtBQUVBOzs7Ozs7Ozs7QUMzREE7QUFDQTtBQUNBO0FBQ0E7QUFjQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUZBO0FBQUE7QUFJQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFSQTtBQVVBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFNQTtBQUVBOztBQzVDQTtBQUNBO0FBT0E7QUFBQTtBQUFBO0FBQUE7QUFXQTs7QUNuQkE7QUFDQTtBQUNBO0FBT0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUdBO0FBQ0E7QUFDQTtBQUdBO0FBQ0E7QUFaQTtBQWlCQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFPQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBR0E7QUFDQTtBQURBO0FBSUE7Ozs7Ozs7O0FDOUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBRkE7QUFJQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBSkE7QUFNQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQU5BO0FBYkE7QUFDQTtBQXNCQTtBQUNBO0FBQUE7QUFJQTtBQUNBO0FBQ0E7O0FDbkNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7O0FDeEJBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBWEE7QUFjQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBSkE7QUFPQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBSkE7O0FDdEJBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQ2ZBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFPQTtBQUVBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFvQkE7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBOztBQ3hDQTtBQUNBO0FBRUE7QUFPQTtBQVFBO0FBS0E7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQU1BO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7O0FDbkNBO0FBQ0E7QUFFQTtBQVFBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFLQTtBQUFBO0FBQUE7QUFBQTtBQWVBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFPQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUtBO0FBQUE7QUFDQTtBQUFBO0FBTUE7QUFDQTtBQUNBOztBQ3hEQTtBQUNBO0FBQ0E7QUFTQTtBQUFBO0FBQUE7QUFBQTtBQU9BO0FBQUE7QUFBQTtBQUFBO0FBTUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUtBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFHQTtBQUFBO0FBQUE7QUFLQTtBQUFBO0FBQUE7QUFNQTtBQUNBO0FBQ0E7O0FDaERBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQWlCQTtBQUFBO0FBQUE7QUFBQTtBQVdBO0FBQUE7QUFBQTtBQUFBO0FBd0JBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBYkE7QUFDQTtBQWVBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFEQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFBQTtBQUlBO0FBQ0E7QUFGQTtBQUlBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUlBO0FBQ0E7QUFDQTtBQUNBO0FBSkE7QUFZQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQVBBO0FBVUE7O0FDdEpBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7Ozs7OztBQ1pBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQStCQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRkE7QUFzQkE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQVRBO0FBV0E7QUFDQTtBQXBDQTtBQXdDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFIQTtBQUtBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBUEE7QUFVQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBRUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUhBO0FBS0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQTVGQTtBQWdHQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUEzR0E7QUErR0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBSEE7QUFNQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBOUhBO0FBa0lBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQXhJQTtBQTRJQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBUEE7QUFVQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBdEtBO0FBMEtBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBSEE7QUFLQTtBQUNBO0FBQ0E7QUFuTEE7QUFxTEE7QUFFQTtBQUNBO0FBRkE7QUFNQTtBQUNBO0FBM0xBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQWJBO0FBZUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBdUtBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFHQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUlBO0FBQ0E7QUFDQTtBQUNBO0FBSkE7QUFRQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQWJBO0FBbUJBO0FBQ0E7QUFDQTtBQUNBO0FBSkE7QUFPQTtBQUFBO0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFKQTtBQVVBO0FBQ0E7QUE3UEE7Ozs7QUMvQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQWVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFDQTtBQURBO0FBQ0E7QUFEQTtBQW9DQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUE1Q0E7QUFrREE7QUFDQTtBQUFBO0FBS0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBL0RBO0FBQ0E7QUFjQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUE2QkE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFYQTtBQWNBO0FBQ0E7QUFBQTtBQUdBO0FBQ0E7QUFGQTtBQU1BO0FBQUE7QUFBQTtBQUVBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBRUE7QUFBQTtBQUdBO0FBQUE7QUFDQTtBQUFBO0FBR0E7QUFBQTtBQUVBO0FBQUE7QUFBQTtBQUFBO0FBS0E7QUFBQTtBQUFBO0FBQUE7QUFVQTtBQUNBO0FBeEhBO0FBQ0E7QUFEQTtBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQU5BO0FBQ0E7QUF1SEE7O0FDbkpBOzs7QUNBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQVNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///34\n")}])},module.exports=g(__webpack_require__("react"),__webpack_require__("./node_modules/react-redux-i18n/build/index.js"))},"./node_modules/@91app/nineyi.lib.themecore/public/themecore/js/nineyi.themeCore.desktop.client.module.js":(e,t,n)=>{var r;self,r=(e,t,n,r,i,o)=>(()=>{var a,c={4346:(e,t,n)=>{"use strict";n.r(t);var r={};n.r(r),n.d(r,{ADD_TO_CART_BTN_STYLE:()=>St,ALIGN_TYPE:()=>Pr,AREA_NAME:()=>Yr,BLOG_TYPE:()=>yt,BROWSING_MODE:()=>P,BTN_TYPE:()=>Zt,CATEGORY_ID_ALL_ITEMS:()=>Qr,CIRCLE_MARGIN_LEFT:()=>Dt,COMPRESS_V1_SIZE:()=>Mr,COMPRESS_V2_SIZE:()=>zr,CUSTOM_MENU_CONTENT_TYPE:()=>$r,DEFAULT_PIC_TYPE:()=>ft,DEFAULT_PROMOTION_MEMBER_COLLECTION_ID_LIST:()=>Nt,DEFAULT_SKU_OUTERID_NAME:()=>ur,DEFAULT_TAG_CHECKED_LIMIT_COUNT:()=>Nr,DEFAULT_TAG_GROUP_COUNT:()=>xr,DEFAULT_TAG_GROUP_OPEN_COUNT:()=>Tr,DEFAULT_TAG_KEY_COUNT:()=>Ur,DESKTOP_CIRCLE_MARGIN:()=>Mt,DESKTOP_CIRCLE_SIZE:()=>Jt,DESKTOP_SQUAER_SIZE:()=>Pt,EDGE_SCALE:()=>Bt,FAVORITE_BTN_POSITION:()=>Tt,FAVORITE_BTN_STYLE:()=>Xt,GROUP_TYPE:()=>Yt,HEADER_MENU_TYPE:()=>Ut,HEADER_STYLE:()=>Lr,HEADING_TYPE:()=>Jr,IMAGE_COMPRESS_VERSION:()=>jr,IMAGE_TYPE:()=>Kr,JooiiSourceIdEnum:()=>or,JooiiViewTypeEnum:()=>ar,LOCALE_LANG:()=>Ot,LOWER_CASE_MARKET_NAME:()=>Wt,MAX_COUNT_BY_PAGE:()=>Lt,MAX_PRICE_FILTER_QUERY_STRING_KEY:()=>Or,MIN_PRICE_FILTER_QUERY_STRING_KEY:()=>Rr,MOBILE_CIRCLE_MARGIN:()=>Kt,MOBILE_CIRCLE_SIZE:()=>jt,MOBILE_SQUAER_SIZE:()=>zt,ORDER_BY_OPTIONS:()=>Ar,ORDER_BY_QUERY_STRING_KEY:()=>yr,PAGE_NAME:()=>Se,PAGE_QUERY_STRING_KEY:()=>fr,PAGE_TYPE:()=>Ze.PAGE_TYPE,PAGE_URL_PATH:()=>Xe,PAY_FILTER_QUERY_STRING_KEY:()=>Vr,PRODUCT_DISPLAY_MODE:()=>Gt,PRODUCT_ICON_DEFAULT_MARGIN:()=>vt,PRODUCT_ICON_WIDTH:()=>Ft,PRODUCT_LIST_MODULE_DATA_PREFIX:()=>kr,PRODUCT_PRICE_DISPLAY_TYPE:()=>Qt,PROMOTION_LIST_DATA_PREFIX:()=>qn,PROMOTION_LIST_FROM_TYPE:()=>er,PROMOTION_LIST_SOURCE_TYPE:()=>Kn,PROMOTION_ORDER_BY_OPTION:()=>$n,PageTypeEnum:()=>nr,ProductToCartButtonDisabledStatus:()=>jn,ProductToCartButtonStatus:()=>Mn,ProductToCartButtonText:()=>zn,ProviderEnum:()=>ir,RESTRICTED_MASK_DELAY:()=>At,RecommendationSectionEnum:()=>tr,SERVICE_TYPE_BY_QUERY_STRING_KEY:()=>Gr,SHIPPING_FILTER_QUERY_STRING_KEY:()=>Wr,SHOP_CATEGORY_PAGE_STATUS:()=>Et,SHOP_CATEGORY_PATH:()=>_r,SOURCE_TYPE:()=>Dr,SPECIAL_PRICE_FRONTEND_SORT_DEFAULT_FETCH_COUNT:()=>Rt,SQUAER_MARGIN:()=>kt,STATIC_MODULE_ID:()=>xt,SearchKeyWordTypeEnum:()=>cr,ShopAttrTypeGroupTitle:()=>Zr,SourceTypeEnum:()=>rr,TAG_FILTER_QUERY_STRING_KEY:()=>Er,TAG_SHOW_MORE_QUERY_STRING_KEY:()=>Sr,TAG_SHOW_MORE_QUERY_STRING_VALUE:()=>Xr,TOOLBOX_ITEM:()=>qr,TRACK_EVENT:()=>vr,TRANSLATE_LOCALE_KEY:()=>Jn,TagFilterEnum:()=>Hr,TrackingContentTypeEnum:()=>sr,TrackingSearchTypeEnum:()=>lr,UPPER_CASE_MARKET_NAME:()=>Vt,URL_TYPE:()=>Ee,UseType:()=>wr,copyRightLink:()=>Ht,fetchCount:()=>Fr,menuContent:()=>wt,socialSectionLink:()=>_t});var i={};n.r(i),n.d(i,{ALT_TYPE:()=>je,MESSAGE:()=>ac,MessageStatus:()=>oc,MessageType:()=>ic,agathaLogger:()=>Pe,apiRootPath:()=>ut,appStoreImages:()=>To,appendParameter:()=>tt,appleStoreIconImage:()=>Co,applyClientTranslationData:()=>ca,applyStaticModule:()=>li,cashOnDeliveryImage:()=>io,cateringImages:()=>Xo,checkCustomerHeaderConfig:()=>Wi,checkHasChild:()=>mt,checkIsBooleanString:()=>Xc,checkIsBot:()=>ll,checkIsBreadcrumbsActive:()=>xi,checkIsBubbleAddToCart:()=>Ni,checkIsChannelActive:()=>Zi,checkIsChannelSwitchActive:()=>Ei,checkIsChrome:()=>il,checkIsClientRender:()=>Ge,checkIsDirectlyAddToCart:()=>Xi,checkIsEditMode:()=>yn,checkIsEnableAdidasCustom:()=>Hi,checkIsEnableAdobeTrack:()=>hl,checkIsEnableSetHorizontalSpacing:()=>Pa,checkIsEnableTracking:()=>Bl,checkIsFirefox:()=>rl,checkIsFromApp:()=>An,checkIsHideTypeButton:()=>wi,checkIsIE:()=>al,checkIsNewPXProductList:()=>Ui,checkIsNumberString:()=>Sc,checkIsPreviewMode:()=>fn,checkIsProductCardTargetBlankOnCategoryPage:()=>Si,checkIsSafari:()=>ol,checkIsServerRender:()=>Qe,checkIsShowingPopup:()=>Do,checkIsSupportLocalStorage:()=>wo,checkIsSupportSessionStorage:()=>Oo,checkIsUseFastBuy:()=>Ti,colorLoadingImage:()=>Fo,combineMappingProps:()=>Ca,combineSalepageWithMetafieldTemplate:()=>Ta,convertKeysToPascalCase:()=>Sa,createDefer:()=>Na,creditCardImage:()=>to,darken:()=>Ha,deepClone:()=>Ec,defaultEmptySquareImage:()=>Ji,defaultIconImage:()=>Mi,defaultLogoImage:()=>co,defaultRectangleImage:()=>Pi,defaultSquareImage:()=>Li,deleteDefer:()=>Ra,deliveryImage:()=>ao,dispatchToProps:()=>ma,doReplace:()=>mc,dotNetDateToDate:()=>si,editorProductSquareImage:()=>ji,editorRecommendationProductSquareImage:()=>Ki,editorRectangleImage:()=>Di,editorSquareImage:()=>ki,editorVideoRectangleImage:()=>zi,errorJSON:()=>en,extendingLoginTime:()=>hn,familyMartImage:()=>$i,formatKeysToLowercaseFirstCharacter:()=>Uc,freezeBody:()=>Gi,generateShortKey:()=>Va,getApiUrl:()=>gt,getBffApiUrl:()=>dt,getCompressImageFullUrl:()=>Uo,getContentSource:()=>nl,getCurrencyList:()=>oa,getCurrentCartList:()=>qc,getCurrentCategoryPosition:()=>ht,getCustomSetting:()=>Fi,getCustomSettingLib:()=>vi,getCustomerServiceMessage:()=>Ri,getCustomerUIConfig:()=>Oi,getDefaultAlt:()=>Ke,getDeferredValue:()=>Oa,getDesktopImageUrl:()=>it,getDeviceOS:()=>cl,getErrorBody:()=>tn,getErrorCode:()=>nn,getErrorMessage:()=>Je,getErrorName:()=>Me,getFtsApiUrl:()=>It,getFullUrlLink:()=>st,getHeaderAttributes:()=>La,getHrefUrl:()=>at,getImageLocale:()=>ra,getImageSrcSet:()=>No,getImageUrl:()=>xo,getLanguageListList:()=>aa,getLocalStorageItem:()=>Yo,getLocaleTitle:()=>ia,getMaterialTrackInfo:()=>$c,getMobileImageUrl:()=>ot,getModuleTitle:()=>zc,getMujiCustomerFooterConfig:()=>_i,getNewDeeplinkUrl:()=>Ci,getPageIdentityPath:()=>Ii,getPageTypeTitle:()=>Kc,getProductListDataKey:()=>xa,getQueryString:()=>et,getReCAPTCHALang:()=>la,getScrollPage:()=>_a,getSessionItem:()=>Wo,getShopsDesktopImageNeedCompress:()=>Vi,getStaticImageUrl:()=>rt,getStreamInjection:()=>dn,getToastMessageItem:()=>lc,getTranslatedDataByKey:()=>na,getUserInfo:()=>Mc,getUtmDeeplinkTarget:()=>mi,getUtmQueryString:()=>pi,getValueSafe:()=>Tc,getViewId:()=>el,getViewItemType:()=>jc,getViewTitle:()=>tl,googlePlayIconImage:()=>ho,homeImage:()=>So,initBannerData:()=>pt,invalidNameImage:()=>bo,isDataMatchedByNowTime:()=>Xa,isDotNetDate:()=>ui,isEmail:()=>wl,isMatchNumberKeyCodeAllowed:()=>Ro,linePayImage:()=>no,lineShopNoteCloseBarImage:()=>po,lineShopNoteCloseButtonImage:()=>Io,lineShopNoteImage:()=>go,loadingImage:()=>mo,locationImage:()=>vo,locationPickUpImage:()=>oo,log:()=>ze,lowerFirst:()=>xc,mappingMultiLevelBreadcrumbs:()=>bt,merge:()=>vc,mergeWith:()=>Zc,mujiFooterLogoImage:()=>lo,noLocationImage:()=>Go,pageNotFoundImage:()=>qi,parseMicrosoftJSONDate:()=>za,positionImage:()=>Zo,poyaPayImage:()=>ro,productCardMappingProductBadgeData:()=>Ea,redirectDeepLink:()=>Bi,removeLocalStorageItem:()=>ko,removeQueryStringParam:()=>nt,removeSessionItem:()=>_o,replaceLinkUrl:()=>lt,replaceRefUrl:()=>bi,restrictedMaskImage:()=>uo,retailStoreDeliveryDownArrowImage:()=>fo,retailStoreDeliveryLogoImage:()=>Bo,retailStoreDeliveryPeopleLargeImage:()=>Ao,retailStoreDeliveryPeopleSmallImage:()=>yo,ristrictImage:()=>so,saveLocalStorageItem:()=>Ho,saveSessionItem:()=>Vo,scrollTo:()=>Wa,serviceBusyImage:()=>Qo,setDocumentDescription:()=>yi,setDocumentKeyword:()=>fi,setDocumentTitle:()=>Ai,setUtmString:()=>hi,sevenElevenImage:()=>eo,sortMethod:()=>Jc,stateToProps:()=>ba,storeExpressImage:()=>Eo,timeoutError:()=>rn,trackAddToCart:()=>Fl,trackAddToFavorite:()=>Zl,trackEvent:()=>fl,trackIncreaseQuantity:()=>Nl,trackInitialize:()=>Al,trackLoadMoreProductList:()=>Rl,trackPageView:()=>yl,trackProductClick:()=>Sl,trackProductDetails:()=>Ql,trackProductImpression:()=>Ul,trackProductRecommendationClick:()=>Ol,trackQuickView:()=>Wl,trackReduceQuantity:()=>Vl,trackRemoveFromCart:()=>vl,trackRemoveFromFavorite:()=>El,trackSearchFilter:()=>xl,trackSearchKeyword:()=>Tl,trackSelectContent:()=>Gl,trackSortProducts:()=>Xl,trackViewItemList:()=>_l,updateToolboxLinkUrl:()=>Cc});var o={};n.r(o),n.d(o,{RequestMethod:()=>qt.RequestMethod,allCurrencies:()=>dg.allCurrencies,errorJSON:()=>gg,fetchApi:()=>Nn,fetchApiObservable:()=>Un,getDependencies:()=>xe,getGlobalVariable:()=>Te,getShopBasicInfo:()=>Ue});var a={};n.r(a),n.d(a,{CLIENT_VALID_S3_CONFIG_KEY:()=>Ig,ShoppingCartInsertItemStatusEnum:()=>Yu,addShoppingCartBundleItem:()=>Lu,addShoppingCartItem:()=>Du,addShoppingCartItemMapping:()=>ku,fetchCmsS3ConfigStream:()=>pg,fetchDeepLink:()=>di,fetchDeepLinkMapping:()=>gi,fetchJooiiBapiStatus:()=>bg,fetchMultiShopCategoryList:()=>Ag,fetchMultiShopCategoryTreeByLevelId:()=>yg,fetchShopCategoryList:()=>Bg,fetchShopCategoryListByServiceType:()=>fg,fetchShopPayTypeAndShipping:()=>Cg,fetchShoppingCartCount:()=>Gg,fetchSmartTagSettingStream:()=>Qg});var c={};n.r(c),n.d(c,{CategorySettingModuleEnum:()=>Cd,addToCartAnimationZIndex:()=>Y,allSiteFacebookPixelDisableSetting:()=>Bd,allowGetPrivacyInfoCookie:()=>Vc,backInStockSalePageIdCookieKey:()=>_c,cookiePrivacyTipZIndex:()=>w,crossGallery:()=>U,crossSkuModal:()=>k,defaultPaddingCssForCustomSpacing:()=>ka,desktopHeaderLocaleMenuZIndex:()=>H,desktopHeaderPxZIndex:()=>V,dropdownZIndex:()=>T,facebookAdvancedPixel:()=>hd,fullScreenAdPopover:()=>_,headerRetailStoreDeliveryPopoverZIndex:()=>O,headingConfig:()=>Ad,mobileHeaderPxZIndex:()=>W,modalSheetZIndex:()=>L,modalZIndex:()=>D,moduleIdsEnableFixedArrow:()=>Da,moduleIdsEnableSetHorizontalSpacing:()=>Ya,moduleTitleMapping:()=>Rc,overlayBtnZIndex:()=>x,productGroupSliderArrow:()=>R,productGroupToolTip:()=>N,vipMemberOuterIdCookie:()=>Wc});var l={};n.r(l),n.d(l,{makeCategoryNameSelector:()=>qI,makeProductListSelector:()=>ep,selectCurrencyFormat:()=>tp});var s={};n.r(s),n.d(s,{CategoryMenuContentSkeleton:()=>Kh,Currency:()=>np,Gallery:()=>le,MaskNameSetting:()=>Kp,ModalSheet:()=>Gs,MultiShopCategoryMenu:()=>Ys,NotFoundPage:()=>ty,Pagination:()=>js,ProductCard:()=>tb,ProductCardMaskMapping:()=>md,ProductList:()=>rA,ProductListSkeleton:()=>Lh,ProductToCartModal:()=>Id,PurchaseQualificationInvalidModal:()=>lA,RealModal:()=>ss,RecommendationSection:()=>OB,RelatedTagSectionSkeleton:()=>Mh,SkuQtyMode:()=>ed,Slider:()=>VA,SystemImage:()=>bA,TagFilterMenuSkeleton:()=>iB,Toast:()=>Wu});var u={};n.r(u),n.d(u,{mapDispatchToProps:()=>mf,mapStateToProps:()=>bf});var g={};n.r(g),n.d(g,{mapDispatchToProps:()=>hf,mapStateToProps:()=>Cf});var d={};n.r(d),n.d(d,{mapDispatchToProps:()=>Af,mapStateToProps:()=>Bf});var I={};n.r(I),n.d(I,{mapDispatchToProps:()=>ff,mapStateToProps:()=>yf});var p={};n.r(p),n.d(p,{mapDispatchToProps:()=>Qf,mapStateToProps:()=>Gf});var b={};n.r(b),n.d(b,{mapDispatchToProps:()=>vf,mapStateToProps:()=>Ff});var m={};n.r(m),n.d(m,{mapDispatchToProps:()=>Ef,mapStateToProps:()=>Zf});var C={};n.r(C),n.d(C,{mapDispatchToProps:()=>Xf,mapStateToProps:()=>Sf});var h={};n.r(h),n.d(h,{mapDispatchToProps:()=>_f,mapStateToProps:()=>Wf});var B={};n.r(B),n.d(B,{mapDispatchToProps:()=>Hf,mapStateToProps:()=>wf});var A={};n.r(A),n.d(A,{mapDispatchToProps:()=>jf,mapStateToProps:()=>zf});var y={};n.r(y),n.d(y,{mapDispatchToProps:()=>qf,mapStateToProps:()=>Kf});var f={};n.r(f),n.d(f,{mapDispatchToProps:()=>eG,mapStateToProps:()=>$f});var G={};n.r(G),n.d(G,{activityMapping:()=>u,couponMapping:()=>g,ecouponMapping:()=>d,favoriteMapping:()=>I,officialMapping:()=>p,pageMapping:()=>b,promotionMapping:()=>m,retailStoreMapping:()=>C,salePageMapping:()=>h,searchMapping:()=>B,shopMapping:()=>A,shoppingCartMapping:()=>y,userMapping:()=>f});var Q={};n.r(Q),n.d(Q,{mapDispatchToProps:()=>sS,mapStateToProps:()=>lS});var F={};n.r(F),n.d(F,{Breadcrumbs:()=>Ey,CookiePrivacyTip:()=>Ry,Footer:()=>yG,FullScreenAdPopover:()=>fy,HeaderA:()=>Yx,HeaderB:()=>qx,LinePopup:()=>eU,LoadingContainer:()=>nU,Menu:()=>AU,ProductToCartModal:()=>Id,RistrictContainer:()=>aU});var v={};n.r(v),n.d(v,{InvalidType:()=>qd,PurchaseQualificationContext:()=>eI,PurchaseQualificationProvider:()=>tI,RestrictedContext:()=>nI,RestrictedProvider:()=>rI});var Z={};n.r(Z),n.d(Z,{BOARD_MODULE_CONTENT:()=>fU,BoardModuleContentState:()=>yU,COLLECTION_LIST_PAGE_ORDER_BY_LIST:()=>GU,LAYOUT_COLLECTION_LIST_PRODUCT_LIST:()=>QU,LAYOUT_TEMPLATE_SPCATAD_LIST:()=>Br,SHOP_CATEGORY_LIST:()=>Ir,SHOP_CATEGORY_LIST_BY_SERVICE_TYPE:()=>pr,SHOP_CATEGORY_PRODUCT_LIST:()=>mr,SHOP_CATEGORY_PRODUCT_LIST_DEFAULT_ORDERBY:()=>Cr,SHOP_CATEGORY_PROMOTION_LIST:()=>hr,ShopAttrTypeEnum:()=>br});var E={};n.r(E),n.d(E,{Direction:()=>EE,convertToDefaultCurrency:()=>NU,getShopAttrFilterCheckedTypeList:()=>xU,getShopAttrFilterData:()=>UU,useFetchRecommendationConfig:()=>TU,useFetchRecommendationData:()=>vE,useHeight:()=>ZE,useScrollDirection:()=>XE,useSpecialPriceFrontendSort:()=>TE,useTrackProductClickHandler:()=>VE});var S={};n.r(S),n.d(S,{color:()=>J,limitLineTitle:()=>Be,typography:()=>Ce,zindex:()=>he});var X={};n.r(X),n.d(X,{fetchFavoriteCount:()=>Kb,fetchFavoriteList:()=>Mb,fetchMultiShopCategoryBreadcrumbList:()=>sC,fetchRelativeTagsList:()=>fh,fetchShoppingCartCount:()=>ZC,fetchShoppingCartPreviewList:()=>XC,fetchSmartTagSettingFulfilled:()=>Fh});const T=1,x=1,U=1,N=1,R=1,O=4,V=500,W=500,_=500,w=555,H=555,Y=800,k=999,D=10000001,L=10000001;var P=(e=>(e.DESKTOP="desktop",e.MOBILE="mobile",e))(P||{});const J={black:"#222222",blackTwo:"#000000",blackThree:"#333333",blackOpacity50:"rgba(0, 0, 0, 0.5)",brownishGrey:"#666666",gunmetal:"#4a4e5c",greyishBrown:"#4a4a4a",warmGrey:"#999999",warmGreyTwo:"#7a7a7a",warmGreyThree:"#979797",greyish:"#b8b8b8",greyishTwo:"#aaaaaa",greyishThree:"#e0e0e0",greyishFour:"#b7b7b7",paleGrey:"#f7f8fa",steel:"#888b94",lighterGreyishBrown:"#595959",grey:"#dddddd",darkGrey:"#4B4B4B",blueGrey:"#ECEDF1",nightGrey:"#333",silverGrey:"#bbbbbb",white:"#ffffff",whiteTwo:"#f5f5f5",whiteThree:"#d8d8d8",whiteFour:"#f0f0f0",whiteFive:"#f8f8f8",whiteSix:"#fdfdfd",silver:"#d4d9de",paleGreyTwo:"#e0e7ed",whiteSeven:"#f0ebeb",whiteEight:"#fdfdfd",whiteNine:"#e8e8e8",whiteTen:"#ececec",transparent:"transparent",midGreen:"#4cad4c",aquaMarine:"#50e3c2",darkGrassGreen:"#417505",limeGreen:"#00c300",deepForestgreen:"#388138",veryLightGreen:"#e8fcf3",classGreen:"#7ed321",purply:"#7834a1",veryLightPurple:"#fcf7ff",pigPink:"#ff98b7",charmingPink:"#ff6593",mediumPink:"#e94d8a",grapefruit:"#ff5353",reddishPink:"#ff2750",rosa:"#ff84a2",darkScarlet:"#e32f39",veryLightPink:"#fce8ee",veryLightPeach:"#ffdfe9",veryLightRed:"#fce8ea",darkPink:"#dc2f8b",windowsBlue:"#428bca",azure:"#20afea",cloudyBlue:"#129cd5",seafoamBlue:"#5cc7d7",deepSkyBlue:"#0184ff",tiffanyBlue:"#47b3c3",deepDodgerBlue:"#1783af",veryLightBlue:"#e8f5fc",veryLightNavy:"#e8fafc",cornflowerBlue:"#4a90e2",lightBlue:"#469BE5",sapphire:"#142280",babyBlue:"#daf7ff",pastelBlue:"#e0efff",primaryBlue:"#5ba9ff",pumpkinOrange:"#fb8521",mango:"#ff9933",veryLightMango:"#f4f4f4",veryLightOrange:"#fcf8e8",yellow:"#ffc52f",lightYellow:"#fffbeb"};var M=n(7450),z=n(5927),j=n.n(z),K=n(2568);const q={width:"100%",paddingTop:"133%",position:"relative",overflow:"hidden"},$=K.default.div`
    width: 100%;
    display: flex;
    flex-wrap: wrap;
    box-sizing: border-box;
`,ee=K.default.img`
    width: 100%;
    height: auto;
    position: absolute;
    top: 0;
`,te=K.default.i`
    position: absolute;
    z-index: 1;
    color: white;
    filter: drop-shadow(0px 0px 5px rgba(0, 0, 0, 0.07)) drop-shadow(0px 1px 16px rgba(0, 0, 0, 0.2));
    top: ${e=>e.displayMode===P.DESKTOP&&e.atHomePage?"12px":"4px"};
    right: ${e=>e.displayMode===P.DESKTOP&&e.atHomePage?"12px":"4px"};
    font-size: ${e=>e.displayMode===P.DESKTOP&&e.atHomePage?"36px":"24px"};
    display: ${e=>e.hasVideo?"block":"none"};
`,ne=K.default.div`
    padding: 8px;
    background-color: ${J.white};
    flex-grow: 1;
`,re=K.default.div`
    font-size: 16px;
    color: ${J.brownishGrey};
    font-weight: bold;
    padding: 6px 0 2px 0;
    white-space: nowrap;
    text-overflow: ellipsis;
    overflow: hidden;
`,ie=K.default.div`
    font-size: 13px;
    color: ${J.brownishGrey};
    padding: 2px 0;
    white-space: nowrap;
    text-overflow: ellipsis;
    overflow: hidden;
`,oe=K.default.a`
    display: flex;
    flex-direction: column;
    box-sizing: border-box;
    margin: ${({hasGutter:e})=>e?"0 0 20px 10px":"0 0 20px 0"};
    ${({columnCount:e})=>(e=>K.css`
        width: calc((100% - ${10*(e-1)}px) / ${e});
    `)(e)};
    ${({displayMode:e})=>e===P.DESKTOP&&`\n        :hover {\n        position: relative;\n        z-index: ${U};\n        transform: scale(1.02);\n        box-shadow: 0 1px 6px 0 rgba(0, 0, 0, 0.2);\n    }`}
`,ae=({picUrl:e,id:t,title:n,subTitle:r,information:i,columnCount:o,hasGutter:a,displayMode:c,link:l,handleClickGalleryItem:s,hasVideo:u})=>z.createElement(oe,{columnCount:o,hasGutter:a,displayMode:c,id:t,href:l,onClick:s},z.createElement("figure",{style:q},z.createElement(ee,{src:e,alt:n}),z.createElement(te,{className:"ico ico-play-fill",hasVideo:u,atHomePage:"/"===window.location.pathname||"/v2/official"===window.location.pathname,displayMode:c})),z.createElement(ne,null,z.createElement(re,null,n),z.createElement(ie,null,r),z.createElement(ie,null,i))),ce={workId:"",primaryId:"",primaryTitle:"",secondaryId:"",secondaryTitle:"",information:"",resizedMainImages:{s:"",m:"",l:"",origin:""},link:"#!",hasVideoContent:!1,videoContentIndex:-1,contents:[{resizeImage:{l:"",m:"",origin:"",s:""},video:{url:""}}]},le=({galleryItemList:e,moduleId:t,moduleKey:n,columnCount:r,displayMode:i,handleClickGalleryItem:o})=>z.createElement($,null,e.map(((e=ce,a)=>z.createElement(ae,{hasGutter:a%r>0,key:`${t}-${n}-${(0,M.toString)(a)}`,picUrl:e.resizedMainImages.m,id:e.workId,title:e.primaryTitle,subTitle:e.secondaryTitle,information:e.information,columnCount:r,displayMode:i,handleClickGalleryItem:o,link:e.link,hasVideo:e.hasVideoContent}))));var se=n(4244);const ue="1180px",ge="260px",de=(J.reddishPink,J.white,J.brownishGrey,J.blackTwo,J.Grapefruit,J.Grapefruit,J.Grapefruit,J.white,J.reddishPink,J.reddishPink,J.reddishPink,K.css`
    line-height: 24px,
    display: block,
    box-sizing: border-box,
    width: 24px,
    height: 24px,
    text-align: center,
    border: 1px solid,
    border-radius: 5px,
`,K.css`
    line-height: 24px,
    display: block,
    box-sizing: border-box,
    width: 24px,
    height: 24px,
    text-align: center,
    border: 1px solid,
    border-radius: 5px,
`,K.css`
    display: flex;
    justify-content: center;
    align-items: center;
`),Ie=K.default.span`
    ${de}
    cursor: pointer;
    font-size: 16px;
`,pe=K.default.div`
    ${de}
    margin: 0 auto;
    cursor: pointer;
    width: 100%;
    height: 27px;
    border-radius: 3px;
`,be=(J.blackThree,J.brownishGrey,J.brownishGrey,J.whiteThree,J.gunmetal,J.warmGrey,J.Gunmetal,J.brownishGrey,J.grapefruit,J.greyishTwo,J.grapefruit,J.windowsBlue,J.silver,J.windowsBlue,J.limeGreen,J.darkPink,J.grapefruit,J.mango,J.whiteFour,J.blackThree,"6px"),me="16px",Ce={fontSizeXs:"12px",fontSizeS:"13px",fontSizeDefault:"14px",fontSizeM:"16px",fontSizeMl:"18px",fontSizeL:"20px",fontSizeXl:"22px",fontSizeXxl:"26px"},he={componentZindex:{toast:1070,toastBack:1060,modal:1050,modalBack:1040,slidePushMenu:1e3,scrollToTop:250,nsMediaGallery:200,navTab:90,nsToolBox:499,mainVision:550,smartAppBanner:500,relatedTagWrapper:3,productBlockBar:2,relatedTagMask:2,sliderDots:2,base:1},headerZindex:{fullScreen:700,navMenu:650,layoutHeader:500,searchKeywordList:100},footerZindex:{nsBasket:300,scrollToTop:250,layoutFooter:200,nsBrowsingHistory:100}},Be=(e,t,n=e+1,r="break-word")=>`\n      font-size: ${e}px;\n      line-height: ${n}px;\n      text-overflow: ellipsis;\n      white-space: normal;\n      -webkit-line-clamp: ${t};\n      display: -webkit-box;\n      -webkit-box-orient: vertical;\n      overflow: hidden;\n      word-break: ${r};\n      max-height: ${n*t}px;\n  `,Ae=K.css`
    &:before,
    &:after {
        content: '';
        display: table;
        clear: both;
    }
`,ye=K.css`
    -webkit-font-smoothing: antialiased;
    -moz-osx-font-smoothing: grayscale;
`;var fe=n(5102);const Ge=()=>"undefined"!=typeof window,Qe=()=>"undefined"==typeof window;var Fe=n(5163),ve=n(8139),Ze=n(3718);const Ee={CUSTOM:"custom",INTERNAL:"internal"};var Se=(e=>(e.CATEGORY="category",e.CUSTOM="custom",e.HIDDEN="hidden",e.INDEX="index",e.PREVIEW="preview",e))(Se||{});const Xe={"/":"index",hidden:"hidden",preview:"preview",page:"custom"},Te=()=>{if(Qe()||!window.nineyi)return{};const e=window.nineyi;return{env:e.env,i18n:e.i18n,logLevel:e.logLevel||4,shopExtensionSetting:e.shopExtensionSetting,stackdriverConfig:e.stackdriverConfig,traceId:e.traceId||"",silo:e.silo,pageType:e.pageType||Ze.PAGE_TYPE.UNKNOWN,isEditMode:e.isEditMode||!1,isPreviewMode:e.isPreviewMode||!1,dependencies:e.dependencies,gaSetting:e.gaSetting,facebookConfig:e.facebookConfig}},xe=()=>{const{dependencies:e}=Te()||{};return e||{shopId:null,locale:null,browsingMode:null,shopProfile:null,imageServiceConfig:null,pageName:null,previewPageName:null}},Ue=e=>{const{ShopName:t}=(null==e?void 0:e.ShopBasicInfo)||{};return{shopName:t}};var Ne=Object.defineProperty,Re=Object.getOwnPropertySymbols,Oe=Object.prototype.hasOwnProperty,Ve=Object.prototype.propertyIsEnumerable,We=(e,t,n)=>t in e?Ne(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n;const{stackdriverConfig:_e,logLevel:we,dependencies:He,env:Ye}=Te(),ke=Ge();let De;const Le="PROD"===(null==Ye?void 0:Ye.toUpperCase())?"f2e-maintain-prod":"f2e-maintain-qa";let Pe;const Je=e=>{var t,n,r;if("text/html"===(null==(t=null==e?void 0:e.response)?void 0:t.type))return(null==(r=null==(n=null==e?void 0:e.response)?void 0:n.error)?void 0:r.message)||"An unexpected HTML error occurred.";if(e instanceof Error)return e.message;if("object"!=typeof e||null===e)return String(e);try{return e.message||JSON.stringify(e).replace(/"/g,"'").replace(/,/g,"")}catch(i){return"An error occurred, but it cannot be serialized for logging."}},Me=e=>{var t,n;return e instanceof Error?e.name:"object"==typeof e&&null!==e&&null!=(n=null==(t=e.constructor)?void 0:t.name)?n:"Error"},ze=Fe.apply((()=>{let e;const{stackdriverConfig:t}=Te();return ke&&!e&&t&&(e=(0,fe.registeErrorHandler)({envName:window.nineyi.env,stackDriverConfig:t,level:De})),fe.log.methodFactory=()=>t=>{const n=JSON.parse(t);return e&&"ERROR"===(null==n?void 0:n.level)&&e.report(null==n?void 0:n.message),t},fe.log})());ke&&_e&&(window.StackTrace=window.StackTrace||ve,De=we,(0,fe.initalizeLogger)(De),Pe=fe.AgathaReporter.instance(((e,t)=>{for(var n in t||(t={}))Oe.call(t,n)&&We(e,n,t[n]);if(Re)for(var n of Re(t))Ve.call(t,n)&&We(e,n,t[n]);return e})({projectId:Le,serviceName:`${null==_e?void 0:_e.name}-theme-core`},He?{clientInfo:{shopId:He.shopId,market:He.market,env:He.env,lang:He.locale}}:{})));var je=(e=>(e.BANNER="DEFAULT",e.BLOG="DEFAULT",e.CAROUSEL="CAROUSEL",e.DEFAULT="DEFAULT",e.FULL_SCREEN_ADS="FULL_SCREEN_ADS",e.QUICK_ENTRY="DEFAULT",e.STATIC_BANNER="STATIC_BANNER",e))(je||{});const Ke=(e="DEFAULT",t="image",n=0)=>{const{DEFAULT:r,CAROUSEL:i,STATIC_BANNER:o,FULL_SCREEN_ADS:a}=je;return{[i]:`${t}-carousel-${n+1}`,[o]:`${t}-staticBanner-${n+1}`,[a]:`FullScreenAds-${n+1}`,[r]:`${t}-${n+1}`}[e]};var qe=n(8068);const $e=(e,t,n)=>new RegExp("^(http|https)://","i").test(n)?n:`${t.imageHost}${t.imagePath}${e}/${n}`,et=(e,t)=>{try{const n=RegExp(`[?&]${e}=([^&]*)`).exec(t||document.location.search);return n&&decodeURIComponent(decodeURIComponent(n[1].replace(/\+/g," ")))}catch(n){return null}},tt=(e,t,n,r=!1)=>{let i="",o=e.length;e.indexOf("#")>0&&(o=e.indexOf("#"),i=e.substring(e.indexOf("#"),e.length));const a=e.substring(0,o).split("?");let c="";if(a.length>1){const e=a[1].split("&");for(let n=0;n<e.length;n++){const r=e[n].split("=");r[0]!==t&&(""===c?c="?":c+="&",c+=`${r[0]}=${r[1]?r[1]:""}`)}}return""===c&&(c="?"),r?c=`?${t}=${n+(c.length>1?`&${c.substring(1)}`:"")}`:(""!==c&&"?"!==c&&(c+="&"),c+=`${t}=${n||""}`),a[0]+c+i},nt=(e,t)=>{let n,r=t.split("?")[0],i=[];const o=t.includes("?")?t.split("?")[1]:"";if(""!==o){i=o.split("&");for(let t=i.length-1;t>=0;t-=1)n=i[t].split("=")[0],n===e&&i.splice(t,1);r=`${r}?${i.join("&")}`}return r},rt=(e,t)=>{if(!e||"/images"!==(null==t?void 0:t.slice(0,7)))return t;const{isEnableCmsCdn:n,themecoreVersion:r}=xe();return n?`${e.imageHost}lib/cms-theme-core/${r}${t}`:`/cms/themecore${t}`},it=(e,t,n,r)=>{const i=r&&!0!==r.isSplitPicture?r.imageUrlMobile:r.imageUrl;return i&&`${$e(e,t,i)}`||rt(t,n)},ot=(e,t,n,r)=>(null==r?void 0:r.imageUrlMobile)&&`${$e(e,t,r.imageUrlMobile)}`||rt(t,n),at=e=>e||"javascript: void(0)",ct=e=>{var t;const n=new RegExp("^(http|https)://","i");return"internal"===e.urlType&&(e.linkUrl=null==(t=e.linkUrl)?void 0:t.replace(n,"//")),e},lt=e=>(qe.apply(e,"$..topMessageData",(e=>ct(e))),qe.apply(e,"$..materialList",(e=>e.map((e=>ct(e))))),qe.apply(e,"$..blogList",(e=>e.map((e=>ct(e))))),qe.apply(e,"$..customLinkListMenu",(e=>e.map((e=>ct(e))))),e),st=e=>{let t=e;return"/"===(null==t?void 0:t[0])&&"/"===(null==t?void 0:t[1])?t=window.location.protocol+t:"/"===(null==e?void 0:e[0])&&(t=window.location.origin+t),t},ut="webapi/",gt=(e,t,n)=>{const{apiConfig:r,shopId:i,locale:o,isClearCache:a,retailStoreId:c}=t,l=!0===n&&!0===r.isEnableCdnApi;let s="";s="undefined"==typeof window?r.serverApiHost:l?r.cdnApiHost:r.clientApiHost;let u=s+ut+e;return u=!0===a?(e=>tt(e,"r","t"))(u):u,u=((e,t)=>tt(e,"shopId",t.toString()))(u,i),u=((e,t)=>tt(e,"lang",t))(u,o),c&&(u=((e,t)=>tt(e,"retailStoreId",t))(u,c)),u},dt=()=>{const{apiConfig:e,shopId:t,locale:n}=xe();return`${null==e?void 0:e.bffHost}/pythia-cdn/graphql?shopId=${t}&lang=${n}`},It=()=>{const{apiConfig:e}=xe();return(null==e?void 0:e.ftsHostTemp)||""},pt=e=>{const{dependencies:t,defaultImage:n,isMobile:r,dataSource:i}=e,o=(0,M.sortBy)(i.materialList,"itemIndex"),{shopId:a,imageServiceConfig:c}=t,l=(e,t,n)=>e?!0===r?null==t?void 0:t.resizeList:null==n?void 0:n.resizeList:null==t?void 0:t.resizeList;return o.map((e=>{const{linkUrl:i,title:o,itemIndex:s,isSplitPicture:u,desktopImageInfo:g,mobileImageInfo:d,isEnableCompressDesktop:I,isEnableCompressMobile:p,altText:b,isPresetImage:m,scheduleList:C,compressVersion:h}=e;return{imageUrl:r?ot(a,c,n,e):it(a,c,n,e),linkUrl:i,title:o,itemIndex:s,dependencies:t,resizeList:l(u,d,g),isEnableCompress:r&&!0===u?p:I,altText:b,isPresetImage:m,scheduleList:C,isMobile:r,defaultImage:n,compressVersion:h,isSplitPicture:u,isEnableCompressDesktop:I,isEnableCompressMobile:p}}))},bt=({breadcrumbsList:e})=>{const t={};return e.forEach(((e,n)=>{t[`categoryIdLevel${n+1}`]=e.Id,t[`categoryNameLevel${n+1}`]=e.Name,0===n?t.currentCategoryName=e.Name:t.currentCategoryName+=` > ${e.Name}`})),t},mt=e=>e.childList&&e.childList.length>0,Ct={mainMenuIndex:-1,isChildListOpen:!1},ht=(e,t)=>{try{const n=e.findIndex((e=>e.id===t));if(n>-1)return{mainMenuIndex:n,isChildListOpen:mt(e[n])};let r=0;const i=()=>{if(r>=e.length)throw new Error("currentId does not exist in categoryList");if(mt(e[r])){const n=e[r].childList.findIndex((e=>e.id===t));if(n>-1)return{mainMenuIndex:r,isChildListOpen:!0,subMenuIndex:n}}return r+=1,i()};return i()}catch(n){return Ct}};var Bt=(e=>(e.ONE_TO_ONE="1:1",e.THREE_TO_FOUR="3:4",e))(Bt||{});const At=350,yt={VIDEO:"video",PICTURE:"picture"},ft={SQUARE:"SQUARE",RECTANGLE:"RECTANGLE"},Gt={MOBILE:"A",DESKTOP:"B"};var Qt=(e=>(e.POINT_PAY="PointPay",e.PRICE="Price",e))(Qt||{});const Ft=28,vt=0;var Zt=(e=>(e.BUTTON="button",e.ICON="icon",e))(Zt||{}),Et=(e=>(e.HIDDEN="Hide",e))(Et||{}),St=(e=>(e[e.DEFAULT=0]="DEFAULT",e[e.COLOR_ROUNDED_BACKGROUND=1]="COLOR_ROUNDED_BACKGROUND",e))(St||{}),Xt=(e=>(e[e.DEFAULT=0]="DEFAULT",e[e.GRAY_ROUNDED_BACKGROUND=1]="GRAY_ROUNDED_BACKGROUND",e))(Xt||{}),Tt=(e=>(e[e.ACTION_BTN_AREA=0]="ACTION_BTN_AREA",e[e.IMAGE_UPPER_RIGHT=1]="IMAGE_UPPER_RIGHT",e))(Tt||{}),xt=(e=>(e.HEADER_EXPRESS_SALE_PAGE="HeaderExpressSalePage",e))(xt||{}),Ut=(e=>(e.ACTIVITY="activity",e.CATEGORY="category",e.CUSTOM_LINK="customLink",e))(Ut||{});const Nt=["-1"],Rt=300;var Ot=(e=>(e.EN_US="en-US",e.JA_JP="ja-JP",e.MS_MY="ms-MY",e.TH_TH="th-TH",e.ZH_CN="zh-CN",e.ZH_HK="zh-HK",e.ZH_TW="zh-TW",e))(Ot||{}),Vt=(e=>(e.HK="HK",e.MY="MY",e.TW="TW",e))(Vt||{}),Wt=(e=>(e.HK="hk",e.MY="my",e.TW="tw",e))(Wt||{});const _t={lineUrl:"https://page.line.me/mujitaiwan?openQrModal=true",fbUrl:"https://www.facebook.com/muji.tw",youtubeUrl:"https://www.youtube.com/c/MUJITaiwan2004/videos",instagramUrl:"https://www.instagram.com/muji_taiwan/"},wt=[{name:"店舖情報",link:"https://www.muji.com/tw/zh_tw/shop"},{name:"門市服務",link:"https://www.muji.com/tw/service/"},{name:"門市活動講座",link:"https://www.muji.com/tw/events/"},{name:"活動特集",link:"https://www.muji.com/tw/zh_tw/stories"},{name:"Café&MealMUJI",link:"https://cafemeal.muji.com/tw/"},{name:"空間改造企劃服務",link:"https://renovation.muji.tw/"},{name:"大宗採購",link:"https://www.muji.com/tw/business/"},{name:"隱私權及網站使用條款",link:"https://shop.muji.tw/MyAccount/Privacy/41566"},{name:"最新消息",link:"https://www.muji.com/tw/news/"},{name:"企業情報",link:"https://www.muji.com/tw/aboutus/"},{name:"會員服務",link:"https://www.muji.com/tw/member/"},{name:"人才招募",link:"https://www.muji.com/tw/job/"},{name:"顧客服務",link:"https://consumerservice.muji.tw/"},{name:"購物說明",link:"https://shop.muji.tw/Shop/Introduce/41566?t=2"},{name:"線上購物指南",link:"https://www.muji.com/tw/shopping-guide/"},{name:"網站地圖",link:"https://www.muji.com/tw/sitemap/"}],Ht="https://www.muji.com/?area=footer";var Yt=(e=>(e.CIRCLE="Circle",e.SQUAER="Square",e))(Yt||{});const kt=3.5,Dt=6,Lt=5,Pt=40,Jt=24,Mt=8,zt="10vw",jt="7vw",Kt=10;var qt=n(9698),$t=n(9600);const en=$t.P5,tn=e=>{var t;return(null==(t=e.response)?void 0:t.body)||e},nn=(e,t)=>`${t}_${e}`,rn=(e,t,n)=>({name:"TimeoutError",message:e.message||"Connection timeout. Please try again.",code:nn(n||"E001",t)});var on=n(6959),an=n(7404),cn=n(8927),ln=n(4490),sn=n(8083),un=n(2403),gn=n(5734);const dn=e=>{const{shopProfile:t,apiConfig:n,isClearCache:r,device:i,locale:o,retailStoreId:a}=e,{ShopBasicInfo:c}=t,{ShopId:l}=c;return{shopId:l,apiConfig:n,isClearCache:r,device:i,locale:o,retailStoreId:a}};let In=!1,pn=!1,bn=null;const mn=()=>{return e=function*(){const e=xe(),t=dn(e),{shopId:n}=t,r=gt("Auth/IsLogin",t,!1),i={method:qt.RequestMethod.POST,body:JSON.stringify({shopId:n})};return pn?bn:(pn=!0,bn=Nn(r,i),In=yield bn,Promise.resolve(In))},new Promise(((n,r)=>{var i=n=>{try{a(e.next(n))}catch(t){r(t)}},o=n=>{try{a(e.throw(n))}catch(t){r(t)}},a=e=>e.done?n(e.value):Promise.resolve(e.value).then(i,o);a((e=e.apply(void 0,null)).next())}));var e};let Cn=!0;const hn=()=>{return e=function*(){var e,t;const n=xe(),r=dn(n),i=null==(t=null==(e=null==n?void 0:n.shopProfile)?void 0:e.ShopBasicInfo)?void 0:t.EnableSessionExpire;Cn&&i&&(Cn=!1,setTimeout((()=>{Cn=!0}),6e4),yield(e=>{return r=function*(){const{shopId:t}=e;try{const t=gt("AuthV4/KeepAlive",e,!0);return void(yield Nn(t))}catch(n){ze.error(`[ERROR] fetchAuthKeepAlive error: ${Me(n)}: ${Je(n)}, shopId: ${t}`)}},new Promise(((e,n)=>{var i=e=>{try{a(r.next(e))}catch(t){n(t)}},o=e=>{try{a(r.throw(e))}catch(t){n(t)}},a=t=>t.done?e(t.value):Promise.resolve(t.value).then(i,o);a((r=r.apply(void 0,null)).next())}));var r})(r))},new Promise(((n,r)=>{var i=n=>{try{a(e.next(n))}catch(t){r(t)}},o=n=>{try{a(e.throw(n))}catch(t){r(t)}},a=e=>e.done?n(e.value):Promise.resolve(e.value).then(i,o);a((e=e.apply(void 0,null)).next())}));var e};var Bn=n(8856);const An=()=>Ge()&&void 0!==(0,Bn.getCookie)("appVer")&&""!==(0,Bn.getCookie)("appVer"),yn=()=>{const{isEditMode:e}=Te();return!0===e},fn=()=>{const{isPreviewMode:e}=Te();return!0===e};var Gn=Object.defineProperty,Qn=Object.defineProperties,Fn=Object.getOwnPropertyDescriptors,vn=Object.getOwnPropertySymbols,Zn=Object.prototype.hasOwnProperty,En=Object.prototype.propertyIsEnumerable,Sn=(e,t,n)=>t in e?Gn(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,Xn=(e,t)=>{for(var n in t||(t={}))Zn.call(t,n)&&Sn(e,n,t[n]);if(vn)for(var n of vn(t))En.call(t,n)&&Sn(e,n,t[n]);return e},Tn=(e,t)=>Qn(e,Fn(t)),xn=(e,t,n)=>new Promise(((r,i)=>{var o=e=>{try{c(n.next(e))}catch(t){i(t)}},a=e=>{try{c(n.throw(e))}catch(t){i(t)}},c=e=>e.done?r(e.value):Promise.resolve(e.value).then(o,a);c((n=n.apply(e,t)).next())}));function Un(e,t={method:qt.RequestMethod.GET}){const n=e.split("?")[0]||"",r=e.split("?")[1]||"",i={GET:gn.get(n).query(r),POST:gn.post(n).query(r).send(t.body).set("Content-Type","application/json"),PUT:gn.put(n).query(r).send(t.body).set("Content-Type","application/json"),DELETE:gn.delete(n).query(r).send(t.body).set("Content-Type","application/json"),FORM:gn.post(n).query(r).send(t.formData),HEAD:gn.head(n).query(r)},{traceId:o}=Te();return!e.startsWith("http://")&&!e.startsWith("https://")&&o&&i[t.method].set("traceId",o),(0,on.H)(i[t.method].timeout(t.timeout||{response:1e4,deadline:2e4})).pipe((0,ln.ZZ)((e=>un.redirect[e.status]||un.retry[e.status]?(0,an.$)(new Error(e.body)):(0,cn.of)(e.body))),(0,sn.W)((e=>"ECONNABORTED"===e.code?(0,an.$)(rn(e,o)):(0,an.$)(e))))}function Nn(e){return xn(this,arguments,(function*(e,t={method:qt.RequestMethod.GET}){!yn()&&(yield mn())&&hn();const n=e.startsWith("http://")||e.startsWith("https://");let r=Xn({},t);const{traceId:i}=Te();return!n&&i&&(r=Tn(Xn({},t),{traceId:i})),(0,qt.fetchApi)(e,r)}))}var Rn=(e=>(e.IsClosed="IsClosed",e.NoStart="NoStart",e.Normal="Normal",e.SoldOut="SoldOut",e.UnListing="UnListing",e))(Rn||{});const On=e=>{return n=[e],r=function*({streamInjection:e,payload:t}){const{salePageId:n,salePageCode:r=""}=t,i=gt(`SalePageStatus/GetSalePageStatus?id=${r||n}`,e,!1);return yield Nn(i)},new Promise(((e,i)=>{var o=e=>{try{c(r.next(e))}catch(t){i(t)}},a=e=>{try{c(r.throw(e))}catch(t){i(t)}},c=t=>t.done?e(t.value):Promise.resolve(t.value).then(o,a);c((r=r.apply(void 0,n)).next())}));var n,r};var Vn=Object.defineProperty,Wn=Object.defineProperties,_n=Object.getOwnPropertyDescriptors,wn=Object.getOwnPropertySymbols,Hn=Object.prototype.hasOwnProperty,Yn=Object.prototype.propertyIsEnumerable,kn=(e,t,n)=>t in e?Vn(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,Dn=(e=>(e.AppOnly="AppOnly",e.ShareToBuy="ShareToBuy",e))(Dn||{});const Ln=(e,t,n,r)=>r?e:t?"AppOnly":n?"ShareToBuy":e,Pn=e=>{return n=[e],r=function*({streamInjection:e,payload:{salePageId:t,salePageCode:n,forbidStatusChange:r},shouldFetchSalePageStatus:i=!0}){const{shopId:o}=e;try{const l=gt(n?`Sku/GetSkuPopupInfo/${o}/${n}?hasShow2LevelAllImageList=true&source=Web`:`Sku/GetSkuPopupInfo/${o}/${t}?hasShow2LevelAllImageList=true&source=Web`,e,!0),{Data:s,Message:u}=yield Nn(l);if(!s)return ze.error("[ERROR] fetchSalePageV2Info failed: No Data"),Promise.reject(u||"fetchSalePageV2Info failed: No Data");if(!i)return s;const g=yield On({streamInjection:e,payload:{salePageCode:n,salePageId:t}}),d=(a=((e,t)=>{for(var n in t||(t={}))Hn.call(t,n)&&kn(e,n,t[n]);if(wn)for(var n of wn(t))Yn.call(t,n)&&kn(e,n,t[n]);return e})({},s),c={StatusDef:Ln(g,s.IsAPPOnly,s.IsShareToBuy,r)},Wn(a,_n(c)));return d}catch(l){return ze.error(`[ERROR] fetchSalePageV2Info failed: ${Me(l)}: ${Je(l)}, shopId: ${o}`),Promise.reject(l)}var a,c},new Promise(((e,i)=>{var o=e=>{try{c(r.next(e))}catch(t){i(t)}},a=e=>{try{c(r.throw(e))}catch(t){i(t)}},c=t=>t.done?e(t.value):Promise.resolve(t.value).then(o,a);c((r=r.apply(void 0,n)).next())}));var n,r},Jn={THEME_CORE:{ACTIVITY:{DAYS:"theme_core.activity.days",GO_TO_PROMOTION_LIST:"theme_core.activity.go_to_promotion_list",HOURS:"theme_core.activity.hours",MINUTES:"theme_core.activity.minutes",PROMOTION_COME_TO_END:"theme_core.activity.promotion_come_to_end",PROMOTION_LATEST:"theme_core.activity.promotion_latest",SECONDS:"theme_core.activity.seconds"},BLOG:{ARTICLE_DEFAULT_DESCRIPTION:"theme_core.blog.article_default_description",ARTICLE_DEFAULT_TITLE:"theme_core.blog.article_default_title",INTRO:"theme_core.blog.intro",SEE_MORE:"theme_core.blog.see_more",TAG:"theme_core.blog.tag",TITLE:"theme_core.blog.title"},BREADCRUMBS:{HOME_PAGE:"theme_core.breadcrumbs.home_page",STORE_EXPRESS_PAGE:"theme_core.breadcrumbs.store_express_page"},BROWSING_HISTORY:{BESTSELLERS:"theme_core.browsing_history.bestsellers",BROWSING_HISTORY:"theme_core.browsing_history.browsing_history",BROWSING_HISTORY_CLEAR:"theme_core.browsing_history.browsing_history_clear",BROWSING_HISTORY_ITEMS:"theme_core.browsing_history.browsing_history_items",BROWSING_HISTORY_NONE:"theme_core.browsing_history.browsing_history_none",BROWSING_HISTORY_SEE_MORE:"theme_core.browsing_history.browsing_history_see_more"},COLLECTION_DETAIL:{DETAIL_PAGE_INTRODUCTION:"theme_core.collection_detail.detail_page_introduction",DETAIL_PAGE_TITLE:"theme_core.collection_detail.detail_page_title",HOME_PAGE:"theme_core.collection_detail.home_page",NO_PRODUCT:"theme_core.collection_detail.no_product",NOT_FOUND:"theme_core.collection_detail.not_found",RELATIVE_LIST_TITLE:"theme_core.collection_detail.relative_list_title",SKU_PRODUCT_LIST_TITLE:"theme_core.collection_detail.sku_product_list_title"},COLLECTION_LIST:{LIST_PAGE_TITLE:"theme_core.collection_list.list_page_title",NOT_FOUND:"theme_core.collection_list.not_found",PRODUCT_COUNT:"theme_core.collection_list.product_count"},DEFAULT:{CANCEL:"theme_core.default.cancel",CURRENCY:"theme_core.default.currency",CURRENCY_SELECTION:"theme_core.default.currency_selection",CUSTOM_TITLE:"theme_core.default.custom_title",LANGUAGE:"theme_core.default.language",LANGUAGE_SELECTION:"theme_core.default.language_selection",PRIVACY_TIP_INFO_CHECK:"theme_core.default.privacy_tip_info_check",PRIVACY_TIP_INFO_FIRST:"theme_core.default.privacy_tip_info_first",PRIVACY_TIP_INFO_READ_MORE:"theme_core.default.privacy_tip_info_read_more",PRIVACY_TIP_INFO_SECOND:"theme_core.default.privacy_tip_info_second",PRIVACY_TIP_INFO_THIRD:"theme_core.default.privacy_tip_info_third",RESTRICTED_POPUP_CONTENT_HK:"theme_core.default.restricted_popUp_content_HK",RESTRICTED_POPUP_CONTENT_CHECK_AGE:"theme_core.default.restricted_popUp_content_check_age",RESTRICTED_POPUP_CONTENT_INFO:"theme_core.default.restricted_popUp_content_info",RESTRICTED_POPUP_ENTER:"theme_core.default.restricted_popUp_enter",RESTRICTED_POPUP_LEAVE:"theme_core.default.restricted_popUp_leave",RESTRICTED_POPUP_TITLE:"theme_core.default.restricted_popUp_title",SETTINGS:"theme_core.default.settings"},DOWNLOAD:{DOWNLOAD_APP:"theme_core.download.download_app",DOWNLOAD_LINK:"theme_core.download.download_link",SCAN_QR_CODE:"theme_core.download.scan_qr_code"},ERROR:{PAGE_NOT_FOUND:"theme_core.error.page_not_found",TO_HOME:"theme_core.error.to_home"},FOOTER:{ABOUT_US:"theme_core.footer.about_us",ANTI_FRAUD_DESC:"theme_core.footer.anti_fraud_desc",BENEFIT_TERMS:"theme_core.footer.benefit_terms",BEST_VIEW:"theme_core.footer.best_view",BRAND_STORY:"theme_core.footer.brand_story",CONTACT_US:"theme_core.footer.contact_us",FAQ:"theme_core.footer.faq",MESSAGE:"theme_core.footer.message",OFFICIAL_APP:"theme_core.footer.official_app",PAYMENT:"theme_core.footer.payment",PRIVACY:"theme_core.footer.privacy",RETURN_EXCHANGE:"theme_core.footer.return_exchange",SERVICE_INFORMATION:"theme_core.footer.service_information",SHIPPING:"theme_core.footer.shipping",SHOPPING_INSTRUCTIONS:"theme_core.footer.shopping_instructions",STORE_INFO:"theme_core.footer.store_info",STORE_INTRODUCTION:"theme_core.footer.store_introduction",TERMS_AND_CONDITIONS:"theme_core.footer.terms_and_conditions"},HEADER:{ACTIVITY:"theme_core.header.activity",APP_DOWNLOAD_SEND_TO_NUMBER:"theme_core.header.app_download_send_to_number",APP_DOWNLOAD_SEND_TO_PHONE:"theme_core.header.app_download_send_to_phone",APP_DOWNLOAD_USE_QR_CODE:"theme_core.header.app_download_use_qr_code",BARCODE_SEARCH_PLACEHOLDER:"theme_core.header.barcode_search_placeholder",CATEGORY:"theme_core.header.category",CATEGORY_ALL:"theme_core.header.category_all",CATEGORY_BADGE_GIFT:"theme_core.header.category_badge_gift",CHECK_ORDER:"theme_core.header.check_order",CHECKOUT:"theme_core.header.checkout",CLICK_TO_TRACK_STATUS:"theme_core.header.click_to_track_status",CONTACT_CUSTOMER:"theme_core.header.contact_customer",CURRENT_STATE:"theme_core.header.current_state",CUSTOMER_CONTACT:"theme_core.header.customer_contact",DELIVER_TO_NEW:"theme_core.header.deliver_to_new",DELIVERED_TO:"theme_core.header.delivered_to",DELIVERY_ADDRESS:"theme_core.header.delivery_address",DELIVERY_BY:"theme_core.header.delivery_by",DELIVERY_TIME:"theme_core.header.delivery_time",DOWNLOAD:"theme_core.header.download",DOWNLOAD_APP:"theme_core.header.download_app",DOWNLOAD_APP_DESCRIBE:"theme_core.header.download_app_describe",FREE_SEND_DOWNLOAD_APP:"theme_core.header.free_send_download_app",I_KNOW:"theme_core.header.i_know",INPUT_CELLPHONE:"theme_core.header.input_cellphone",INPUT_CELLPHONE_GLOBAL:"theme_core.header.input_cellphone_global",INPUT_KEY_WORD:"theme_core.header.input_key_word",INVALID_CELLPHONE_FORMAT:"theme_core.header.invalid_cellphone_format",LINK_WORD:"theme_core.header.link_word",LOG_OUT:"theme_core.header.log_out",LOGIN_SIGNUP:"theme_core.header.login_signup",MUJI_SEARCH_BARCODE:"theme_core.header.muji_search_barcode",MUJI_SEARCH_PLACEHOLDER:"theme_core.header.muji_search_placeholder",MY_ACCOUNT:"theme_core.header.my_account",MY_COUPONS:"theme_core.header.my_coupons",MY_FAVORITE:"theme_core.header.my_favorite",MY_MEMBERSHIP:"theme_core.header.my_membership",MY_ORDERS:"theme_core.header.my_orders",NEW_ADD_ITEM:"theme_core.header.new_add_item",ORDER_CANCEL_MSG:"theme_core.header.order_cancel_msg",ORDER_DELIVERY_ADDRESS:"theme_core.header.order_delivery_address",ORDER_DELIVERY_SUCCESS:"theme_core.header.order_delivery_success",ORDER_FAIL_MSG:"theme_core.header.order_fail_msg",ORDER_SET:"theme_core.header.order_set",OTHERS_LOOKING_FOR:"theme_core.header.others_looking_for",PICK_UP_AT_THE_STORE:"theme_core.header.pick_up_at_the_store",PLEASE_ENTER_SHIPPING_ADDRESS:"theme_core.header.please_enter_shipping_address",POINTS:"theme_core.header.points",PURCHASE_EXTRA:"theme_core.header.purchase_extra",RECOMMENDED_BRAND:"theme_core.header.recommended_brand",SCAN_QR_DOWNLOAD:"theme_core.header.scan_qr_download",SEARCH:"theme_core.header.search",SEARCH_BARCODE:"theme_core.header.search_barcode",SHOPPING_CART:"theme_core.header.shopping_cart",SHOPPING_CART_EMPTY:"theme_core.header.shopping_cart_empty",STORE:"theme_core.header.store",STORE_SELECTION_DEFAULT_TEXT:"theme_core.header.store_selection_default_text",STORE_SELECTION_GREETING:"theme_core.header.store_selection_greeting",STORE_SELECTION_HINT_STEP1:"theme_core.header.store_selection_hint_step1",STORE_SELECTION_HINT_STEP2:"theme_core.header.store_selection_hint_step2",TOP_MESSAGE:"theme_core.header.top_message",USE_APP:"theme_core.header.use_app",YOUR_PICK_UP_STORE:"theme_core.header.your_pick_up_store"},HEADER_SLIDER:{ABOUT_CAPTION:"theme_core.header_slider.about_caption",ABOUT_US:"theme_core.header_slider.about_us",ACTIVITY:"theme_core.header_slider.activity",ACTIVITY_AND_PREFERENTIAL:"theme_core.header_slider.activity_and_preferential",ANSWERED:"theme_core.header_slider.answered",BRAND_STORY:"theme_core.header_slider.brand_story",CATEGORY:"theme_core.header_slider.category",CATEGORY_ALL_ITEMS:"theme_core.header_slider.category_all_items",CONTACT_US:"theme_core.header_slider.contact_us",CUSTOMER_INFORMATION:"theme_core.header_slider.customer_information",EVENTS_AND_DISCOUNTS:"theme_core.header_slider.events_and_discounts",EXCHANGE:"theme_core.header_slider.exchange",FACEBOOK:"theme_core.header_slider.facebook",FOLLOW_COMMUNITY:"theme_core.header_slider.follow_community",GO_TO_TARGET_TEXT:"theme_core.header_slider.go_to_target_text",INPUT_COUPON:"theme_core.header_slider.input_coupon",INSTAGRAM:"theme_core.header_slider.instagram",INVITATION_EVENTS:"theme_core.header_slider.invitation_events",INVITE_FRIENDS:"theme_core.header_slider.invite_friends",LIMITED_DISCOUNT:"theme_core.header_slider.limited_discount",LINE:"theme_core.header_slider.line",MEMBERSHIP:"theme_core.header_slider.membership",MESSAGE:"theme_core.header_slider.message",NOT_SUPPORT_FOR_JUST_AN_HOUR:"theme_core.header_slider.not_support_for_just_an_hour",OFFICIAL_APP:"theme_core.header_slider.official_app",PAYMENT:"theme_core.header_slider.payment",PRIVACY_POLICY:"theme_core.header_slider.privacy_policy",SELECT_CHANNEL:"theme_core.header_slider.select_channel",SERVICE_DESCRIPTION:"theme_core.header_slider.service_description",SHIPPING:"theme_core.header_slider.shipping",SHOP_CATEGORY_IS_IN_PREPARATION:"theme_core.header_slider.shop_category_is_in_preparation",SHOP_INFORMATION:"theme_core.header_slider.shop_information",SHOP_INSTRUCTIONS:"theme_core.header_slider.shop_instructions",STORE:"theme_core.header_slider.store",STORE_DISCOUNTS:"theme_core.header_slider.store_discounts",STORE_INFORMATION:"theme_core.header_slider.store_information",STORE_INTRODUCTION:"theme_core.header_slider.store_introduction",TERMS_AND_CONDITIONS:"theme_core.header_slider.terms_and_conditions"},HOT_SALE_RANKING:{PAGE_TITLE:"theme_core.hot_sale_ranking.page_title"},INLINE:{APRIL:"theme_core.inline.april",AUGUST:"theme_core.inline.august",DECEMBER:"theme_core.inline.december",DELIVERY:"theme_core.inline.delivery",DELIVERY_ORDER_STATUS_COMPLETED:"theme_core.inline.delivery_order_status_completed",DELIVERY_ORDER_STATUS_DELIVERING:"theme_core.inline.delivery_order_status_delivering",DELIVERY_ORDER_STATUS_DELIVERING_DESC:"theme_core.inline.delivery_order_status_delivering_desc",DELIVERY_ORDER_STATUS_PREPARATION_DESC:"theme_core.inline.delivery_order_status_preparation_desc",DELIVERY_ORDER_TITLE:"theme_core.inline.delivery_order_title",FEBRUARY:"theme_core.inline.february",FRIDAY:"theme_core.inline.friday",JANUARY:"theme_core.inline.january",JULY:"theme_core.inline.july",JUNE:"theme_core.inline.june",MARCH:"theme_core.inline.march",MAY:"theme_core.inline.may",MONDAY:"theme_core.inline.monday",NOVEMBER:"theme_core.inline.november",NUMBER_OF_ORDER:"theme_core.inline.number_of_order",NUMBER_OF_PEOPLE_DINING:"theme_core.inline.number_of_people_dining",OCTOBER:"theme_core.inline.october",PLEASE_SELECT_BRANCH:"theme_core.inline.please_select_branch",RESERVATION_BUTTON_RESERVE_TABLE_TITLE:"theme_core.inline.reservation_button_reserve_table_title",RESERVATION_BUTTON_RESERVE_TAKEOUT_OR_DELIVERY_TITLE:"theme_core.inline.reservation_button_reserve_takeout_or_delivery_title",RESERVATION_DD_RESERVE_BRAND_TITLE:"theme_core.inline.reservation_dd_reserve_brand_title",RESERVATION_DD_RESERVE_STORE_TITLE:"theme_core.inline.reservation_dd_reserve_store_title",RESERVATION_DD_RESERVE_TYPE_TITLE:"theme_core.inline.reservation_dd_reserve_type_title",RESERVATION_OPTION_BOOKING:"theme_core.inline.reservation_option_booking",RESERVATION_OPTION_ONLINE_SHOPING:"theme_core.inline.reservation_option_online_shoping",RESERVATION_OPTION_TAKEOUT_OR_DELIVERY:"theme_core.inline.reservation_option_takeout_or_delivery",RESERVATION_ORDER_TITLE:"theme_core.inline.reservation_order_title",SATURDAY:"theme_core.inline.saturday",SEATED:"theme_core.inline.seated",SELECT_BRANCH:"theme_core.inline.select_branch",SEPTEMBER:"theme_core.inline.september",SUNDAY:"theme_core.inline.sunday",TAKE_OUT:"theme_core.inline.take_out",TAKEOUT_DELIVERY_ORDER_STATUS_PREPARATION:"theme_core.inline.takeout_delivery_order_status_preparation",TAKEOUT_DELIVERY_ORDER_STATUS_WAITING_CONFIRMATION:"theme_core.inline.takeout_delivery_order_status_waiting_confirmation",TAKEOUT_DELIVERY_ORDER_STATUS_WAITING_DESC:"theme_core.inline.takeout_delivery_order_status_waiting_desc",TAKEOUT_ORDER_STATUS_COMPLETED:"theme_core.inline.takeout_order_status_completed",TAKEOUT_ORDER_STATUS_PREPARATION_DESC:"theme_core.inline.takeout_order_status_preparation_desc",TAKEOUT_ORDER_STATUS_READY:"theme_core.inline.takeout_order_status_ready",TAKEOUT_ORDER_STATUS_READY_DESC:"theme_core.inline.takeout_order_status_ready_desc",TAKEOUT_ORDER_TITLE:"theme_core.inline.takeout_order_title",THURSDAY:"theme_core.inline.thursday",TODAY:"theme_core.inline.today",TUESDAY:"theme_core.inline.tuesday",WEDNESDAY:"theme_core.inline.wednesday"},LOCATION_INVENTORY:{CART_WILL_ADJUST:"theme_core.location_inventory.cart_will_adjust",CHANGE_DELIVERY_STORE:"theme_core.location_inventory.change_delivery_store",CURRENT_STORE:"theme_core.location_inventory.current_store",CURRENTLY_BUSY:"theme_core.location_inventory.currently_busy",HAVE_INVENTORY:"theme_core.location_inventory.have_inventory",NEARBY_INVENTORY:"theme_core.location_inventory.nearby_inventory",NO_INVENTORY:"theme_core.location_inventory.no_inventory",NO_STORE_AVAILABLE:"theme_core.location_inventory.no_store_available",OTHER_NEARBY_STORE:"theme_core.location_inventory.other_nearby_store",PLEASE_SELECT_OTHER_STORE:"theme_core.location_inventory.please_select_other_store",RE_ENTER_PAGE:"theme_core.location_inventory.re_enter_page",SELECT_THIS_STORE:"theme_core.location_inventory.select_this_store",SORRY:"theme_core.location_inventory.sorry"},PRODUCT:{ADD_BACK_IN_STOCK:"theme_core.product.add_back_in_stock",ADD_CART:"theme_core.product.add_cart",ADD_FAVORITE:"theme_core.product.add_favorite",ADD_TO_CART:"theme_core.product.add_to_cart",ALL_AVAILABLE_ITEMS_ADDED:"theme_core.product.all_available_items_added",ALREADY_IN_CART:"theme_core.product.already_in_cart",APP_ONLY:"theme_core.product.app_only",BACK_IN_STOCK:"theme_core.product.back_in_stock",BACK_IN_STOCK_INPUT_MAIL_FIRST:"theme_core.product.back_in_stock_input_mail_first",BACK_IN_STOCK_INPUT_MAIL_SECOND:"theme_core.product.back_in_stock_input_mail_second",BACK_IN_STOCK_INPUT_MAIL_THIRD:"theme_core.product.back_in_stock_input_mail_third",BACK_IN_STOCK_LIMIT_FIRST:"theme_core.product.back_in_stock_limit_first",BACK_IN_STOCK_LIMIT_SECOND:"theme_core.product.back_in_stock_limit_second",BACK_IN_STOCK_NOT_LOGIN:"theme_core.product.back_in_stock_not_login",CANCEL_BACK_IN_STOCK:"theme_core.product.cancel_back_in_stock",CHOOSE_PURCHASE_METHOD:"theme_core.product.choose_purchase_method",CONFIRM:"theme_core.product.confirm",IMMEDIATELY_BUY:"theme_core.product.immediately_buy",IMMEDIATELY_BUY_EXPRESS_SALE_PAGE:"theme_core.product.immediately_buy_express_sale_page",INPUT_MAIL:"theme_core.product.input_mail",INSUFFICIENT_INVENTORY:"theme_core.product.insufficient_inventory",ITS_RESTRICTED_PRODUCT:"theme_core.product.its_restricted_product",LIMIT_MAX_VALUE_MSG:"theme_core.product.limit_max_value_msg",LOGIN:"theme_core.product.login",LOGIN_AND_TRY_AGAIN:"theme_core.product.login_and_try_again",MAIL:"theme_core.product.mail",MAIL_FORMAT_ERROR:"theme_core.product.mail_format_error",MAX_PURCHASE_LIMIT:"theme_core.product.max_purchase_limit",NO_RESTOCK:"theme_core.product.no_restock",NOT_START_SELL:"theme_core.product.not_start_sell",POINTS:"theme_core.product.points",POINTS_STRING:"theme_core.product.points_string",PURCHASE_QUALIFICATION_REQUIRED:"theme_core.product.purchase_qualification_required",REQUIRED:"theme_core.product.required",RESTOCK:"theme_core.product.restock",SELLING_START_DATE_TIME:"theme_core.product.selling_start_date_time",SELLING_WILL_KICKOFF:"theme_core.product.selling_will_kickoff",SHARE_TO_BUY:"theme_core.product.share_to_buy",SOLD_OUT:"theme_core.product.sold_out",SOLD_OUT_EXPRESS_SALE_PAGE:"theme_core.product.sold_out_express_sale_page",SUBSCRIBED_TIME:"theme_core.product.subscribed_time",UNABLE_TO_ADD_CART:"theme_core.product.unable_to_add_cart"},PROMOTION:{COME_TO_END:"theme_core.promotion.come_to_end",LATEST:"theme_core.promotion.latest"},QUICK_ENTRY:{SHORTCUT_FUNCTION:"theme_core.quick_entry.shortcut_function"},RECOMMENDATION_SECTION:{OTHER_PEOPLE_WATCHING:"theme_core.recommendation_section.other_people_watching",RECOMMENDED_TO_YOU:"theme_core.recommendation_section.recommended_to_you",YOU_MIGHT_LIKE:"theme_core.recommendation_section.you_might_like"},SEARCH:{SEARCH_PRODUCT:"theme_core.search.search_product"},SHOP_CATEGORY:{ALL:"theme_core.shop_category.all",ALL_CATEGORY:"theme_core.shop_category.all_category",ALL_PRODUCTS:"theme_core.shop_category.all_products",CATEGORY:"theme_core.shop_category.category",CHOSEN:"theme_core.shop_category.chosen",CLEAR_ALL_FILTERS:"theme_core.shop_category.clear_all_filters",CREATE_FAST_BUY_ORDER_SYSTEM_ERROR:"theme_core.shop_category.create_fast_buy_order_system_error",DELIVERY_SMS:"theme_core.shop_category.delivery_sms",FAST_BUY:"theme_core.shop_category.fast_buy",FAST_BUY_API_FALSE_COMMON_MESSAGE:"theme_core.shop_category.fast_buy_api_false_common_message",FAST_BUY_CHANGE_ORDER:"theme_core.shop_category.fast_buy_change_order",FAST_BUY_CONFIRM:"theme_core.shop_category.fast_buy_confirm",FAST_BUY_CONFIRM_PAYMENT:"theme_core.shop_category.fast_buy_confirm_payment",FAST_BUY_DISCOUNT:"theme_core.shop_category.fast_buy_discount",FAST_BUY_DISCOUNT_COUPON:"theme_core.shop_category.fast_buy_discount_coupon",FAST_BUY_ELIGIBLE:"theme_core.shop_category.fast_buy_eligible",FAST_BUY_ERROR_MESSAGE:"theme_core.shop_category.fast_buy_error_message",FAST_BUY_FREIGHT:"theme_core.shop_category.fast_buy_freight",FAST_BUY_GIVEAWAY:"theme_core.shop_category.fast_buy_giveaway",FAST_BUY_GO_TO_CHECKOUT:"theme_core.shop_category.fast_buy_go_to_checkout",FAST_BUY_GO_TO_INDEX:"theme_core.shop_category.fast_buy_go_to_index",FAST_BUY_INELIGIBLE:"theme_core.shop_category.fast_buy_ineligible",FAST_BUY_NO_GARBAGE_ERROR_MESSAGE:"theme_core.shop_category.fast_buy_no_garbage_error_message",FAST_BUY_ORDER_INFO:"theme_core.shop_category.fast_buy_order_info",FAST_BUY_PAYMENT_METHOD:"theme_core.shop_category.fast_buy_payment_method",FAST_BUY_PRODUCT_INFORMATION:"theme_core.shop_category.fast_buy_product_information",FAST_BUY_RECEIVER_INFO:"theme_core.shop_category.fast_buy_receiver_info",FAST_BUY_SHIPPING_COUPON_DISCOUNT:"theme_core.shop_category.fast_buy_shipping_coupon_discount",FAST_BUY_SOLD_OUT:"theme_core.shop_category.fast_buy_sold_out",FAST_BUY_SUBTOTAL:"theme_core.shop_category.fast_buy_subtotal",FAST_BUY_TOTAL:"theme_core.shop_category.fast_buy_total",FAST_BUY_WITH_PROMO_CODE:"theme_core.shop_category.fast_buy_with_promo_code",FILTER:"theme_core.shop_category.filter",FILTER_SELECTED:"theme_core.shop_category.filter_selected",GIFT:"theme_core.shop_category.gift",GO_TO_OTHER_CATEGORY:"theme_core.shop_category.go_to_other_category",GO_TO_OTHER_PLACE:"theme_core.shop_category.go_to_other_place",HIGHEST:"theme_core.shop_category.highest",HOME_PAGE:"theme_core.shop_category.home_page",LOWEST:"theme_core.shop_category.lowest",NO_PRODUCTS_MATCHED_FILTER:"theme_core.shop_category.no_products_matched_filter",NOT_SUPPORT_FOR_JUST_AN_HOUR:"theme_core.shop_category.not_support_for_just_an_hour",ORDER_DELIVERY_NOTIFICATION:"theme_core.shop_category.order_delivery_notification",ORDERBY_CURATOR:"theme_core.shop_category.orderby_curator",ORDERBY_NEWEST:"theme_core.shop_category.orderby_newest",ORDERBY_PAGE_VIEW:"theme_core.shop_category.orderby_page_view",ORDERBY_PRICE_HIGH_TO_LOW:"theme_core.shop_category.orderby_price_high_to_low",ORDERBY_PRICE_LOW_TO_HIGH:"theme_core.shop_category.orderby_price_low_to_high",ORDERBY_SALES:"theme_core.shop_category.orderby_sales",ORIGINAL_RANGE:"theme_core.shop_category.original_range",PAY_AMOUNT:"theme_core.shop_category.pay_amount",PAYMENT:"theme_core.shop_category.payment",PLEASE_CHOOSE:"theme_core.shop_category.please_choose",POPULAR_TAG:"theme_core.shop_category.popular_tag",PRICE:"theme_core.shop_category.price",PRICE_RANGE:"theme_core.shop_category.price_range",PRODUCT_CATEGORY:"theme_core.shop_category.product_category",PRODUCT_COUNT:"theme_core.shop_category.product_count",PRODUCTS_IN_THIS_SECTION:"theme_core.shop_category.products_in_this_section",PUBLISH_NOTIFICATION:"theme_core.shop_category.publish_notification",RELATED_CATEGORY:"theme_core.shop_category.related_category",RELATED_PRODUCTS:"theme_core.shop_category.related_products",SELECT_CATEGORY:"theme_core.shop_category.select_category",SELECT_CHANNEL:"theme_core.shop_category.select_channel",SHIPPING:"theme_core.shop_category.shipping",SHOP_CATEGORY_IS_IN_PREPARATION:"theme_core.shop_category.shop_category_is_in_preparation",SHOPPING_CART_PRICE:"theme_core.shop_category.shopping_cart_price",SHOW_ALL_FILTERS:"theme_core.shop_category.show_all_filters",SHOW_LESS:"theme_core.shop_category.show_less",SHOW_MORE:"theme_core.shop_category.show_more",SORT_BY:"theme_core.shop_category.sort_by",SWIPE_TO_NEXT_CATEGORY:"theme_core.shop_category.swipe_to_next_category",SWIPE_TO_PREV_CATEGORY:"theme_core.shop_category.swipe_to_prev_category",UNLIMITED:"theme_core.shop_category.unlimited",WATCHING:"theme_core.shop_category.watching"},STORE_EXPRESS:{ACTIVE_LOCATION:"theme_core.store_express.active_location",ADDRESS:"theme_core.store_express.address",ADDRESS_NOT_FOUND:"theme_core.store_express.address_not_found",ADDRESS_TITLE:"theme_core.store_express.address_title",AUTO_LOCATE_FAILED:"theme_core.store_express.auto_locate_failed",AUTO_LOCATE_SUCCESS:"theme_core.store_express.auto_locate_success",AVALIABLE_LOCATIONS:"theme_core.store_express.avaliable_locations",BLOCK:"theme_core.store_express.block",CHANGE_LOCATION_HINT:"theme_core.store_express.change_location_hint",CHECK_LOCATION:"theme_core.store_express.check_location",CHINCKING:"theme_core.store_express.chincking",CITY:"theme_core.store_express.city",COMMENT:"theme_core.store_express.comment",COMMENT_HINT:"theme_core.store_express.comment_hint",CONFIRM:"theme_core.store_express.confirm",DISPLAY_ERROR_MSG:"theme_core.store_express.display_error_msg",DISTANCE:"theme_core.store_express.distance",INOUT_ADDRESS:"theme_core.store_express.inout_address",INPUT_ADDRESS:"theme_core.store_express.input_address",INPUT_FLOOR:"theme_core.store_express.input_floor",INPUT_LOCATION:"theme_core.store_express.input_location",LEFT_HINT:"theme_core.store_express.left_hint",LOCATION_SERVICE:"theme_core.store_express.location_service",LOCATION_TITLE:"theme_core.store_express.location_title",MODIFY:"theme_core.store_express.modify",NO_CHOICE:"theme_core.store_express.no_choice",NO_LOCATION_ADDRESS:"theme_core.store_express.no_location_address",RECEIVER_INFO:"theme_core.store_express.receiver_info",RENEW_LOCATION:"theme_core.store_express.renew_location",SELECT_BLOCK:"theme_core.store_express.select_block",SELECT_CITY:"theme_core.store_express.select_city",SEND_TO:"theme_core.store_express.send_to",SENT_TO_ADDRESS:"theme_core.store_express.sent_to_address",UPDATE_LOCATION_CONFIRM:"theme_core.store_express.update_location_confirm",WELCOME:"theme_core.store_express.welcome"},TAG_CATEGORY:{RELATED_CATEGORY:"theme_core.tag_category.related_category",RELATED_PRODUCTS:"theme_core.tag_category.related_products",WATCHING:"theme_core.tag_category.watching"},TOAST:{ADD_SUCCESS:"theme_core.toast.add_success",ADD_TO_CART_FAIL:"theme_core.toast.add_to_cart_fail",ADD_TO_WISHLIST_SUCCESSFULLY:"theme_core.toast.add_to_wishlist_successfully",BACK_IN_STOCK_SUBSCRIBE_SUCCESS:"theme_core.toast.back_in_stock_subscribe_success",BACK_IN_STOCK_UNSUBSCRIBE_SUCCESS:"theme_core.toast.back_in_stock_unsubscribe_success",CANCEL_BACK_IN_STOCK_INPUT_MAIL_SUCCESS:"theme_core.toast.cancel_back_in_stock_input_mail_success",FILTER_UPPER_LIMIT:"theme_core.toast.filter_upper_limit",IS_CLOSED:"theme_core.toast.is_closed",LOGIN_SUCCESS:"theme_core.toast.login_success",LOGOUT_SUCCESS:"theme_core.toast.logout_success",NO_START:"theme_core.toast.no_start",NOT_FOUND:"theme_core.toast.not_found",REMOVE_SUCCESS:"theme_core.toast.remove_success",REMOVED_FROM_WISHLIST_SUCCESSFULLY:"theme_core.toast.removed_from_wishlist_successfully",SELECT_ERROR:"theme_core.toast.select_error",SOLD_OUT:"theme_core.toast.sold_out",SUBMIT_ERROR:"theme_core.toast.submit_error",SYSTEM_ERROR:"theme_core.toast.system_error",UN_LISTING:"theme_core.toast.un_listing"},TOOLBOX:{COUPON:"theme_core.toolbox.coupon",CUSTOM:"theme_core.toolbox.custom",FB_MESSENGER:"theme_core.toolbox.fb_messenger",FB_PAGE:"theme_core.toolbox.fb_page",FB_SEND_MESSEGE:"theme_core.toolbox.fb_send_messege",IG:"theme_core.toolbox.ig",LINE:"theme_core.toolbox.line",STORE_INFO:"theme_core.toolbox.store_info"}}},Mn={ImmediatelyBuy:"ImmediatelyBuy",NoStart:Rn.NoStart,Normal:Rn.Normal,SoldOut:Rn.SoldOut,AppOnly:Dn.AppOnly,ShareToBuy:Dn.ShareToBuy,SubSalePageCanNotBuy:"SubSalePageCanNotBuy"},zn={[Mn.SoldOut]:Jn.THEME_CORE.PRODUCT.SOLD_OUT,[Mn.NoStart]:Jn.THEME_CORE.PRODUCT.NOT_START_SELL,[Mn.ShareToBuy]:Jn.THEME_CORE.PRODUCT.SHARE_TO_BUY,[Mn.AppOnly]:Jn.THEME_CORE.PRODUCT.APP_ONLY,[Mn.ImmediatelyBuy]:Jn.THEME_CORE.PRODUCT.IMMEDIATELY_BUY,[Mn.Normal]:Jn.THEME_CORE.PRODUCT.ADD_CART,[Mn.SubSalePageCanNotBuy]:"無法購買"},jn={[Mn.SoldOut]:!0,[Mn.NoStart]:!0,[Mn.ShareToBuy]:!1,[Mn.AppOnly]:!1,[Mn.ImmediatelyBuy]:!1,[Mn.Normal]:!1,[Mn.SubSalePageCanNotBuy]:!0},Kn={PROMOTION_LIST:"promotionList",PROMOTION_ID:"promotionId"},qn={[Kn.PROMOTION_LIST]:"promotionSourceTypeList",[Kn.PROMOTION_ID]:"promotionSourceTypeId"},$n={Newest:"Newest",ComingToEnd:"ComingToEnd"},er={LIST:"list",MODULE:"module"};var tr=(e=>(e.productGrid="productGrid",e.productCarousel="productCarousel",e))(tr||{}),nr=(e=>(e.salePageList="salePageList",e.searchResultPage="searchResultPage",e.tagCategory="tagCategory",e.cmsModule="cmsModule",e))(nr||{}),rr=(e=>(e.jooii="jooii",e.eLAND="eLAND",e))(rr||{}),ir=(e=>(e[e.jooii=0]="jooii",e))(ir||{}),or=(e=>(e.p2i="p2i",e.i2i="i2i",e.w2i="w2i",e))(or||{}),ar=(e=>(e.salePageList="SalePageCategory",e.tagCategory="TagCategory",e.searchResultPage="SearchNoResult",e.cmsModule="CMS",e))(ar||{}),cr=(e=>(e.Key="key",e.History="history",e.SkuOuterIdHistory="sku-outerid-history",e.SkuOuterId="sku-outerid",e.HotKeyword="hot-keyword",e))(cr||{}),lr=(e=>(e.SkuOuterIdSearch="SkuOuterIdSearch",e.SkuOuterIdSearchLog="SkuOuterIdSearchLog",e.Search="Search",e.TopSearches="TopSearches",e.SerachLog="SerachLog",e.AutoComplete="AutoComplete",e))(lr||{}),sr=(e=>(e.HistorySearchTerm="HistorySearchTerm",e.SuggestSearchTerm="SuggestSearchTerm",e.SKUSearchTerm="SKUSearchTerm",e.SKUHistorySearchTerm="SKUHistorySearchTerm",e))(sr||{});const ur="商品料號";var gr=n(7358),dr=n.n(gr);const Ir=dr()`
    query cms_shopCategoryList($shopId: Int!) {
        shopCategoryList(shopId: $shopId) {
            categoryList {
                id
                name
                childList {
                    id
                    name
                }
            }
            count
            maxChildListCount
        }
    }
`,pr=dr()`
    query cms_shopCategoryList($shopId: Int!, $serviceType: String, $locationId: Int) {
        shopCategoryList(shopId: $shopId, serviceType: $serviceType, locationId: $locationId) {
            categoryList {
                id
                name
                childList {
                    id
                    name
                }
            }
            count
            maxChildListCount
        }
    }
`;var br=(e=>(e[e.price=0]="price",e[e.pay=1]="pay",e[e.shipping=2]="shipping",e))(br||{});const mr=dr()`
    query cms_shopCategory(
        $shopId: Int!
        $categoryId: Int!
        $startIndex: Int!
        $fetchCount: Int!
        $orderBy: String
        $isShowCurator: Boolean
        $locationId: Int
        $tagFilters: [ItemTagFilter]
        $tagShowMore: Boolean
        $serviceType: String
        $minPrice: Float
        $maxPrice: Float
        $payType: [String]
        $shippingType: [String]
        $includeSalePageGroup: Boolean
    ) {
        shopCategory(shopId: $shopId, categoryId: $categoryId) {
            salePageList(
                startIndex: $startIndex
                maxCount: $fetchCount
                orderBy: $orderBy
                isCuratorable: $isShowCurator
                locationId: $locationId
                tagFilters: $tagFilters
                tagShowMore: $tagShowMore
                minPrice: $minPrice
                maxPrice: $maxPrice
                payType: $payType
                shippingType: $shippingType
                serviceType: $serviceType
                includeSalePageGroup: $includeSalePageGroup
            ) {
                salePageList {
                    salePageId
                    title
                    picUrl
                    picList
                    salePageCode
                    price
                    suggestPrice
                    isFav
                    isComingSoon
                    isSoldOut
                    soldOutActionType
                    sellingQty
                    pairsPoints
                    pairsPrice
                    priceDisplayType
                    displayTags {
                        group
                        keys {
                            id
                            startTime
                            endTime
                            picUrl {
                                ratioOneToOne
                                ratioThreeToFour
                            }
                        }
                    }
                    salePageGroup {
                        groupTitle
                        groupIconStyle
                        groupItems {
                            salePageId
                            itemTitle
                            itemUrl
                        }
                    }
                    promotionPrices {
                        promotionEngineId
                        memberCollectionId
                        price
                        startDateTime
                        endDateTime
                        label
                    }
                    isRestricted
                    enableIsComingSoon
                    isShowSellingStartDateTime
                    sellingStartDateTime
                    listingStartDateTime
                    metafields
                }
                totalSize
                shopCategoryId
                shopCategoryName
                statusDef
                listModeDef
                orderByDef
                dataSource
                tags {
                    isGroupShowMore
                    groups {
                        groupId
                        groupDisplayName
                        isKeyShowMore
                        keys {
                            keyId
                            keyDisplayName
                        }
                    }
                }
                priceRange {
                    min
                    max
                }
            }
        }
    }
`,Cr=dr()`
    query cms_shopCategory_default_orderby($shopId: Int!, $categoryId: Int!, $isShowCurator: Boolean) {
        shopCategory(shopId: $shopId, categoryId: $categoryId) {
            salePageList(startIndex: 0, maxCount: 20, orderBy: "", isCuratorable: $isShowCurator) {
                orderByDef
            }
        }
    }
`,hr=dr()`
    query cms_shopCategory_promotion_list($shopId: Int!, $categoryId: Int!) {
        shopCategory(shopId: $shopId, categoryId: $categoryId) {
            promotionList {
                id
                name
                startTime
                endTime
                rules
                promotionConditionDiscountType
                promotionConditionType
                isPromotionEngine
            }
        }
    }
`,Br=dr()`
    query cms_layoutTemplate_spCatAd_list($shopId: Int!, $categoryId: String!) {
        layoutTemplate(
            shopId: $shopId
            layoutCode: "MobileHome"
            templateCode: "SpCatAdOfficial"
            targetType: "ShopCategory"
            targetId: $categoryId
        ) {
            title
            link
            picturePath {
                fullUrl
            }
        }
    }
`,Ar=[{label:Jn.THEME_CORE.SHOP_CATEGORY.ORDERBY_CURATOR,value:"Curator"},{label:Jn.THEME_CORE.SHOP_CATEGORY.ORDERBY_NEWEST,value:"Newest"},{label:Jn.THEME_CORE.SHOP_CATEGORY.ORDERBY_SALES,value:"Sales"},{label:Jn.THEME_CORE.SHOP_CATEGORY.ORDERBY_PAGE_VIEW,value:"PageView"},{label:Jn.THEME_CORE.SHOP_CATEGORY.ORDERBY_PRICE_LOW_TO_HIGH,value:"PriceLowToHigh"},{label:Jn.THEME_CORE.SHOP_CATEGORY.ORDERBY_PRICE_HIGH_TO_LOW,value:"PriceHighToLow"}],yr="sortMode",fr="pages",Gr="serviceType",Qr=0,Fr=100,vr={MENU:{eventCategory:"left_商品分類",eventAction:"click",eventLabel:"",eventValue:void 0},BREADCRUMBS:{eventCategory:"",eventAction:"Path",eventLabel:"點擊分類"},RELATIVED_CATEGORY:{eventCategory:"小分類頁",eventAction:"",eventLabel:""},PRODUCT_BLOCK:{ORDER_BY:{eventCategory:"小分類頁",eventAction:"click",eventLabel:""},DESKTOP:{LIST_VIEW_BUTTON:{eventCategory:"小分類頁",eventAction:"category_display",eventLabel:"切換列表-desktop"},COMMON_GRID_BUTTON:{eventCategory:"小分類頁",eventAction:"category_display",eventLabel:"切換小圖-desktop"}},MOBILE:{CARD_DISPLAY_TYPE:{eventCategory:"小分類頁",eventAction:"category_display",eventLabel:""}}},POPULAR_TAG:{eventCategory:"小分類頁",eventAction:"click",eventLabel:""},FILTER:{TAG:{eventCategory:"搜尋-進階篩選",eventAction:"",eventLabel:""},PRICE_RANGE:{eventCategory:"搜尋-進階篩選",eventAction:"進階篩選-價格",eventLabel:""},PAY_TYPE:{eventCategory:"搜尋-進階篩選",eventAction:"進階篩選-付款方式",eventLabel:""},SHIPPING_TYPE:{eventCategory:"搜尋-進階篩選",eventAction:"進階篩選-運送方式",eventLabel:""}}},Zr={[br.price]:Jn.THEME_CORE.SHOP_CATEGORY.PRICE_RANGE,[br.pay]:Jn.THEME_CORE.SHOP_CATEGORY.PAYMENT,[br.shipping]:Jn.THEME_CORE.SHOP_CATEGORY.SHIPPING},Er="tags",Sr="tagShowMore",Xr="true",Tr=3,xr=50,Ur=10,Nr=20,Rr="minPrice",Or="maxPrice",Vr="payType",Wr="shippingType",_r="/v2/official/SalePageCategory";var wr=(e=>(e.module="module",e.page="page",e))(wr||{}),Hr=(e=>(e.Price="Price",e.Normal="Normal",e))(Hr||{}),Yr=(e=>(e.CENTER="center",e.FOOTER="footer",e.HEADER="header",e))(Yr||{});const kr={CATEGORY_SALEPAGE_LIST:"CATEGORY_SALEPAGE_LIST_",SALEPAGE_LIST:"SALEPAGE_LIST_",OUTER_LIST:"OUTER_LIST_",RECOMMENDATION_SALEPAGE_LIST:"RECOMMENDATION_SALEPAGE_LIST_"},Dr={CATEGORY_ID:"categoryId",SALE_PAGE_ID:"salePageId",TAG_CATEGORY_ID:"tagCategory",OUTER_ID:"outerId",RECOMMENDATION_ID:"recommendationId"},Lr={VIEW_ON_TOP:"viewOnTop",VIEW_ON_SCROLL:"viewOnScroll"};var Pr=(e=>(e.CENTER="center",e.LEFT="left",e.RIGHT="right",e))(Pr||{});const Jr={H1:"h1",H2:"h2",H3:"h3"},Mr={md:1200,sm:800,xs:400},zr={xl:1920,lg:1280,md:1124,sm:800,xs:600,xxs:400};var jr=(e=>(e[e.COMPRESS_TO_ORIGINAL=0]="COMPRESS_TO_ORIGINAL",e[e.COMPRESS_TO_WEBP_V1=1]="COMPRESS_TO_WEBP_V1",e[e.COMPRESS_TO_WEBP_V2=2]="COMPRESS_TO_WEBP_V2",e))(jr||{});const Kr={GIF:"image/gif",JPG:"image/jpg",PNG:"image/png",WEBP:"image/webp"};var qr=(e=>(e.COUPON="coupon",e.CUSTOM="custom",e.FACEBOOK_MESSENGER="fb_messenger",e.FACEBOOK_PAGE="fb_page",e.IG="ig",e.LINE="line",e.STORE_INFO="store_info",e))(qr||{}),$r=(e=>(e.CustomMenuLayerOne="CustomMenuLayerOne",e.CustomMenuLayerTwo="CustomMenuLayerTwo",e.CustomMenuLayerThree="CustomMenuLayerThree",e))($r||{}),ei=Object.defineProperty,ti=Object.defineProperties,ni=Object.getOwnPropertyDescriptors,ri=Object.getOwnPropertySymbols,ii=Object.prototype.hasOwnProperty,oi=Object.prototype.propertyIsEnumerable,ai=(e,t,n)=>t in e?ei(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,ci=(e,t)=>{for(var n in t||(t={}))ii.call(t,n)&&ai(e,n,t[n]);if(ri)for(var n of ri(t))oi.call(t,n)&&ai(e,n,t[n]);return e};const li=(e,t,n)=>t===Yr.HEADER?((e,t)=>{const{header:n,center:r,footer:i}=e;var o,a;return{header:[(o=ci({},n[0]),a={id:t},ti(o,ni(a)))],center:r,footer:i}})(e,n):e,si=e=>"/Date(-62135596800000)/"===e?null:new Date(parseInt(e.replace("/Date(","").replace(")/",""),10)),ui=e=>!!/^\/Date/.test(e),gi=e=>{const{Data:t}=e;return t},di=e=>{return n=function*(){const{streamInjection:t,payload:n}=e,{shopId:r}=t,{targetUrl:i}=n;try{const e=gt("DeepLink/GetDeepLink",t,!1),n={method:qt.RequestMethod.POST,body:{ShopId:r,TargetUrl:i}},o=yield Nn(e,n);return o&&"API0001"!==o.ReturnCode?Promise.reject(new Error("DeepLink/GetDeepLink failed, ReturnCode is not API0001")):gi(o)}catch(o){return ze.error(`[ERROR] fetchDeepLink failed: ${Me(o)}: ${Je(o)}: shopId: ${r}, targetUrl: ${i}`),Promise.reject(o)}},new Promise(((e,r)=>{var i=e=>{try{a(n.next(e))}catch(t){r(t)}},o=e=>{try{a(n.throw(e))}catch(t){r(t)}},a=t=>t.done?e(t.value):Promise.resolve(t.value).then(i,o);a((n=n.apply(void 0,null)).next())}));var n},Ii=(e,t)=>`${e}/${window.location.pathname.replace(t,"")}`,pi=(e,t,n,r,i,o)=>{const a=t||et("utm_source",e),c=n||et("utm_medium",e),l=r||et("utm_campaign",e),s=i||et("utm_term",e),u=o||et("utm_content",e),g=et("gclid"),d=et("fbclid");let I="";return a&&(I=tt(I,"utm_source",a)),c&&(I=tt(I,"utm_medium",c)),l&&(I=tt(I,"utm_campaign",l)),s&&(I=tt(I,"utm_term",s)),u&&(I=tt(I,"utm_content",u)),g&&(I=tt(I,"gclid",g)),d&&(I=tt(I,"fbclid",d)),I},bi=(e,t,n)=>{const r=`${e}/ref/${n}/`;let i="",o="",a=!1;switch(t){case"OfficailIndex":o="ShopHome",i=`${o}/${n}`;break;case"SalePageIndex":o="SalePage",i=Ii(o,new RegExp("/salepage/index/","ig"));break;case"SalePageCategory":o="ShopSalePageCategory",i=Ii(o,new RegExp("/v2/official/SalePageCategory/","ig"));break;case"CouponDetail":o="Coupon",i=Ii(o,new RegExp("/Coupon/Detail/","ig"));break;case"CouponList":o="Couponlist",i=o;break;case"VideoDetail":o="Video",i=Ii(o,new RegExp("/Video/Detail/","ig"));break;case"ArticleDetail":o="Article",i=Ii(o,new RegExp("/Article/Detail/","ig"));break;case"AlbumDetail":o="Album",i=Ii(o,new RegExp("/Album/Detail/","ig"));break;case"VideoList":o="VideoList",i=o;break;case"ArticleList":o="ArticleList",i=o;break;case"AlbumList":o="AlbumList",i=o;break;case"ECouponDetail":o="eCoupon",i=Ii(o,new RegExp("/ECoupon/Detail/","ig"));break;case"ECouponList":o="eCouponList",i=o;break;case"PromotionDetail":o="promotion",i=Ii(o,new RegExp("/Promotion/Detail/","ig"));break;case"ActivityIndex":o="activity",i=Ii(o,new RegExp("/v2/activity/","ig"));break;case"ShopStoreList":o="LocationList",i=o;break;default:o="ShopHome",i=`${o}/${n}`,a=!0}return r+i+pi(void 0,"mweb","download_banner",a?"others":o)},mi=e=>{let t;const n=et("utm_source"),r=et("utm_medium"),i=et("utm_campaign"),o=et("utm_term"),a=et("utm_content");if(n||r||i||o||a||!window.sessionStorage)t=e?e+pi():window.location.origin+window.location.pathname+pi();else{const e=sessionStorage.getItem("utmSource"),n=sessionStorage.getItem("utmMedium"),r=sessionStorage.getItem("utmCampaign"),i=sessionStorage.getItem("utmTerm"),o=sessionStorage.getItem("utmContent");t=window.location.origin+window.location.pathname+pi(null,e,n,r,i,o)}if("/v2/search"===window.location.pathname.toLowerCase()){const e=et("q");e&&(t=tt(t,"q",e))}return t},Ci=e=>{const{origin:t,pathname:n}=window.location;let r=e?`${t}/apps${n}`:`${t}/apps/v2/official`;const i=et("utm_source")||(null==sessionStorage?void 0:sessionStorage.getItem("utmSource")),o=et("utm_medium")||(null==sessionStorage?void 0:sessionStorage.getItem("utmMedium")),a=et("utm_campaign")||(null==sessionStorage?void 0:sessionStorage.getItem("utmCampaign")),c=et("utm_term")||(null==sessionStorage?void 0:sessionStorage.getItem("utmTerm")),l=et("utm_content")||(null==sessionStorage?void 0:sessionStorage.getItem("utmContent")),s=et("fr")||(0,Bn.getCookie)("trace-fr"),u=et("fr2")||(0,Bn.getCookie)("trace-fr2");if("/v2/search"===n.toLowerCase()){const e=et("q");e&&(r=tt(r,"q",e))}return i&&(r=tt(r,"utm_source",i)),o&&(r=tt(r,"utm_medium",o)),a&&(r=tt(r,"utm_campaign",a)),c&&(r=tt(r,"utm_term",c)),l&&(r=tt(r,"utm_content",l)),s&&(r=tt(r,"fr",s)),u&&(r=tt(r,"fr2",u)),r},hi=()=>{const e=et("utm_source"),t=et("utm_medium"),n=et("utm_campaign"),r=et("utm_term"),i=et("utm_content");sessionStorage&&(e&&sessionStorage.setItem("utmSource",e),t&&sessionStorage.setItem("utmMedium",t),n&&sessionStorage.setItem("utmCampaign",n),r&&sessionStorage.setItem("utmTerm",r),i&&sessionStorage.setItem("utmContent",i))},Bi=e=>{return n=function*(){const t=xe(),n=dn(t),r=mi(e);let i;try{const e={targetUrl:r};i=yield di({streamInjection:n,payload:e})}catch(o){i=r}window.location.href=i},new Promise(((e,r)=>{var i=e=>{try{a(n.next(e))}catch(t){r(t)}},o=e=>{try{a(n.throw(e))}catch(t){r(t)}},a=t=>t.done?e(t.value):Promise.resolve(t.value).then(i,o);a((n=n.apply(void 0,null)).next())}));var n},Ai=(e,t)=>{document.title=t?`${e} - ${t}`:e},yi=e=>{var t;null==(t=document.querySelector('meta[name="description"]'))||t.setAttribute("content",e)},fi=e=>{var t;null==(t=document.querySelector('meta[name="keywords"]'))||t.setAttribute("content",e)},Gi=e=>{Ge()&&(e?window.document.body.classList.add("freeze"):window.document.body.classList.remove("freeze"))};var Qi=n(1064);const Fi=e=>{try{const{market:t,shopId:n,env:r}=xe(),{env:i}=Te(),o=(null==r?void 0:r.toLowerCase())||(null==i?void 0:i.toLowerCase());return(0,Qi.getSetting)(o,t,n,e)}catch(t){return ze.error(`[ERROR] getCustomSetting failed: ${Me(t)}: ${Je(t)}: settingName: ${e}`),null}},vi=()=>({getSetting:Qi.getSetting}),Zi=()=>Fi(Qi.settingNameEnum.isChannelActive),Ei=()=>Fi(Qi.settingNameEnum.isChannelSwitchActive),Si=()=>Fi(Qi.settingNameEnum.isProductCardTargetBlankOnCategoryPage),Xi=()=>Fi(Qi.settingNameEnum.isDirectlyAddToCart),Ti=()=>Fi(Qi.settingNameEnum.isUseFastBuy),xi=()=>Fi(Qi.settingNameEnum.isBreadcrumbsActive),Ui=()=>Fi(Qi.settingNameEnum.isNewPXProductList),Ni=()=>Fi(Qi.settingNameEnum.isBubbleAddToCart),Ri=()=>Fi(Qi.settingNameEnum.customerServiceMessageConfig),Oi=()=>Fi(Qi.settingNameEnum.customerUIConfig),Vi=()=>Fi(Qi.settingNameEnum.isShopsDesktopImageNeedCompress),Wi=()=>Fi(Qi.settingNameEnum.customerHeaderConfig),_i=()=>Fi(Qi.settingNameEnum.isMujiCustomerFooter),wi=()=>Fi(Qi.settingNameEnum.isHideTypeButton),Hi=()=>Fi(Qi.settingNameEnum.isEnableAdidasCustom),Yi="/images",ki=`${Yi}/image_square.svg`,Di=`${Yi}/image_rectangle.png`,Li=`${Yi}/default_square.svg`,Pi=`${Yi}/default_rectangle.svg`,Ji=`${Yi}/default_empty_square.svg`,Mi=`${Yi}/shop_default_icon.svg`,zi=`${Yi}/video_rectangle.svg`,ji=`${Yi}/product_square.png`,Ki=`${Yi}/recommendation_product_square.png`,qi=`${Yi}/page_not_exist.svg`,$i=`${Yi}/family_mart.svg`,eo=`${Yi}/seven_eleven_up.svg`,to=`${Yi}/credit_card.svg`,no=`${Yi}/line_pay.svg`,ro=`${Yi}/poya_pay.svg`,io=`${Yi}/cash_on_delivery.svg`,oo=`${Yi}/location_pick_up.svg`,ao=`${Yi}/delivery.svg`,co=`${Yi}/logo_default.png`,lo=`${Yi}/muji_footer_logo.svg`,so=`${Yi}/under18.svg`,uo=`${Yi}/restricted_mask.png`,go=`${Yi}/lineshop-note.jpg`,Io=`${Yi}/lineshop-x-btn.png`,po=`${Yi}/lineshop-note-close-bar.png`,bo=`${Yi}/invalid-name.png`,mo=`${Yi}/loading.gif`,Co=`${Yi}/appstore.svg`,ho=`${Yi}/googleplay.svg`,Bo=`${Yi}/delivery_logo.png`,Ao=`${Yi}/delivery_people_large.png`,yo=`${Yi}/delivery_people_small.png`,fo=`${Yi}/delivery_Union.png`,Go=`${Yi}/no_location.svg`,Qo=`${Yi}/service_busy.png`,Fo=`${Yi}/loading.svg`,vo=`${Yi}/location.svg`,Zo=`${Yi}/position.svg`,Eo=`${Yi}/storeDelivery.svg`,So=`${Yi}/home.svg`,Xo={onlineShopping:`${Yi}/catering_online_shoping_reservation.svg`,tableReservation:`${Yi}/catering_table_reservation.svg`,takeoutOrDelivery:`${Yi}/catering_takeout_or_delivery_reservation.svg`,waitingAccept:`${Yi}/catering_waiting_accept.svg`,preparing:`${Yi}/catering_preparing.svg`,readyForPickup:`${Yi}/catering_ready_for_pickup.svg`,driverOnTheWay:`${Yi}/catering_driver_on_the_way.svg`,orderReceived:`${Yi}/catering_order_received.svg`,checkin:`${Yi}/catering_checkin.svg`,defaultRestaurant:`${Yi}/catering_empty_restaurant.svg`,restaurant:`${Yi}/catering_dummy_restaurant.png`},To={apple:`${Yi}/badge_common_applestore.svg`,google:`${Yi}/badge_common_googleplay.svg`},xo=(e,t,n)=>new RegExp("^(http|https)://","i").test(n)?n:`${t.imageHost}${t.imagePath}${e}/${n}`,Uo=e=>{try{const{imageUrl:t,resizeList:n,imageServiceConfig:r,shopId:i,compressVersion:o=jr.COMPRESS_TO_WEBP_V2}=e;let a={};const c=`${r.imageHost}images/compress/${i}`,l=t.split("/"),s=l[l.length-1];if(n&&n.length>0){const e=s.split("_"),r=e[e.length-1].split(".")[1];n.forEach((n=>{const i=`${e[0]}_${e[1]}_${n.width}x${n.height}`;o===jr.COMPRESS_TO_WEBP_V1||o===jr.COMPRESS_TO_WEBP_V2?a[n.type]=`${c}/${i}.webp`:(console.debug("舊版圖片壓縮:",o,t),a[n.type]=`${c}/${i}.${r}`)}))}else{const e=`${r.imageHost}${r.imagePath}${i}`;a={original:`${e}/${s}`}}return a}catch(t){throw console.error("getCompressImageFullUrl ",t.message),t}},No=(e,t,n,r)=>{if(!t||0===t.length||!r)return"";const{imageServiceConfig:i,shopId:o}=n,a=Uo({imageUrl:e,resizeList:t,imageServiceConfig:i,shopId:o,compressVersion:r}),c={[jr.COMPRESS_TO_WEBP_V1]:Mr,[jr.COMPRESS_TO_WEBP_V2]:zr}[r];return Object.entries(a).reduce(((e,[t,n],r,i)=>{const o=c[t];return o?(e+=`${n} ${o}w`,r!==i.length-1&&(e+=","),e):e}),"")},Ro=e=>e>47&&e<58||e>95&&e<106||e>36&&e<41||8===e||46===e||102===e||190===e,Oo=()=>Ge()&&void 0!==window.sessionStorage,Vo=(e,t)=>{Oo()&&sessionStorage.setItem(e,JSON.stringify(t))},Wo=e=>Oo()?JSON.parse(JSON.stringify(sessionStorage.getItem(e)||null)):null,_o=e=>{if(!Oo())return null;sessionStorage.removeItem(e)},wo=()=>Ge()&&void 0!==window.localStorage,Ho=(e,t)=>{wo()&&localStorage.setItem(e,JSON.stringify(t))},Yo=e=>wo()?JSON.parse(JSON.stringify(localStorage.getItem(e)||null)):null,ko=e=>{if(!wo())return null;localStorage.removeItem(e)},Do=e=>{const t="lineshopping"===(0,Bn.getCookie)("trace-fr"),n=`"${(0,Bn.getCookie)("trace-fr2")}"`,r=wo(),i=n!==(r&&window.localStorage.getItem("ls.LineshopRedirectNote"));return i&&r&&window.localStorage.setItem("ls.LineshopRedirectNote",n),e.IsLineShopLandingPopupEnabled&&t&&i};var Lo=n(1794),Po=Object.defineProperty,Jo=Object.defineProperties,Mo=Object.getOwnPropertyDescriptors,zo=Object.getOwnPropertySymbols,jo=Object.prototype.hasOwnProperty,Ko=Object.prototype.propertyIsEnumerable,qo=(e,t,n)=>t in e?Po(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,$o=(e,t)=>{for(var n in t||(t={}))jo.call(t,n)&&qo(e,n,t[n]);if(zo)for(var n of zo(t))Ko.call(t,n)&&qo(e,n,t[n]);return e};const ea=(0,Lo.get)(n.g,"nineyi.dependencies.locale","zh-TW"),ta=(0,Lo.get)(n.g,"nineyi.dependencies.translationsData"),na=e=>(0,Lo.get)(ta,`${ea}.${e}`),ra=()=>(null==ea?void 0:ea.split("-")[0])||"zh",ia=(e,t)=>{const n=(0,M.find)(t,(t=>t.value===e));return null==n?void 0:n.title},oa=(e,t=[])=>e?e.filter((e=>t.includes(e.code))).map((e=>({title:`${e.code} ${e.display}`,value:e.code}))):[],aa=(e,t)=>e?e.filter((e=>t.includes(e.lang))).map((e=>({title:e.display,value:e.lang}))):[],ca=(e,t,n)=>{return r=$o({},e),i={[n]:$o($o({},e[n]),t)},Jo(r,Mo(i));var r,i},la=()=>{if(Qe())return"zh-TW";const e=window.nineyi.dependencies.locale;switch(e){case"zh-TW":return e;case"ms-MY":return"ms";case"ja-JP":return"ja";case"en-US":return"en";default:return"zh-TW"}};var sa=Object.defineProperty,ua=Object.getOwnPropertySymbols,ga=Object.prototype.hasOwnProperty,da=Object.prototype.propertyIsEnumerable,Ia=(e,t,n)=>t in e?sa(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,pa=(e,t)=>{for(var n in t||(t={}))ga.call(t,n)&&Ia(e,n,t[n]);if(ua)for(var n of ua(t))da.call(t,n)&&Ia(e,n,t[n]);return e};const ba=(e,t)=>pa({},Object.keys(e).reduce(((n,r)=>{const i=e[r].mapStateToProps(t);return pa(pa({},n),i)}),{})),ma=(e,t)=>pa({},Object.keys(e).reduce(((n,r)=>{const i=e[r].mapDispatchToProps(t);return pa(pa({},n),i)}),{})),Ca=e=>({mapStateToProps:t=>ba(e,t),mapDispatchToProps:t=>ma(e,t)});var ha=n(4546),Ba=Object.defineProperty,Aa=Object.defineProperties,ya=Object.getOwnPropertyDescriptors,fa=Object.getOwnPropertySymbols,Ga=Object.prototype.hasOwnProperty,Qa=Object.prototype.propertyIsEnumerable,Fa=(e,t,n)=>t in e?Ba(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,va=(e,t)=>{for(var n in t||(t={}))Ga.call(t,n)&&Fa(e,n,t[n]);if(fa)for(var n of fa(t))Qa.call(t,n)&&Fa(e,n,t[n]);return e},Za=(e,t)=>Aa(e,ya(t));const Ea=(e,t)=>{var n;const r=new Date;if(!e||0===e.length)return"";const i=e.filter((e=>"N1-S-ProductBadge"===e.Group));if(i&&i.length>0){const e=[];if(null==(n=i[0].Key)||n.map((t=>(ui(`${t.StartTime}`)||ui(`${t.EndTime}`)?ui(`${t.StartTime}`)&&ui(`${t.EndTime}`)&&new Date(si(`${t.StartTime}`)).getTime()<r.getTime()&&new Date(si(`${t.EndTime}`)).getTime()>r.getTime()&&e.push(t):new Date(t.StartTime).getTime()<r.getTime()&&new Date(t.EndTime).getTime()>r.getTime()&&e.push(t),null))),e&&e.length>0&&e[e.length-1]&&e[e.length-1].PicUrl)return"3:4"===t?e[e.length-1].PicUrl.RatioThreeToFour||e[e.length-1].PicUrl.RatioOneToOne||"":e[e.length-1].PicUrl.RatioOneToOne||""}return""},Sa=e=>{const t={};for(const n in e)Object.prototype.hasOwnProperty.call(e,n)&&(t[n[0].toUpperCase()+n.substr(1)]=e[n]);return t},Xa=(e,t,n=(new Date).getTime())=>{const r=ui(`${e}`)?new Date(si(`${e}`)).getTime():new Date(e).getTime(),i=ui(`${t}`)?new Date(si(`${t}`)).getTime():new Date(t).getTime();return r<n&&i>n},Ta=(e,t)=>{const n=null==t?void 0:t.templateFields;if(!Array.isArray(n)||!t)return Za(va({},e),{combinedMetafields:[]});const r=e.metafields,i=n.map((t=>{const n=t.key,i=null==r?void 0:r[n];return n===ha.TemplateKeyEnum.SALEPAGE_TITLE?Za(va({},t),{value:e.title}):n&&i?Za(va({},t),{value:i.value}):null})).filter((e=>!!e));return Za(va({},e),{combinedMetafields:i})},xa=(e,t)=>t===Dr.OUTER_ID?`${kr.OUTER_LIST}${e}`:t===Dr.CATEGORY_ID?`${kr.CATEGORY_SALEPAGE_LIST}${e}`:t===Dr.RECOMMENDATION_ID?`${kr.RECOMMENDATION_SALEPAGE_LIST}${e}`:`${kr.SALEPAGE_LIST}${e}`,Ua={},Na=e=>{Ua[e]={}},Ra=e=>{delete Ua[e]},Oa=(e,t,n)=>(Ua[e]||Na(e),Ua[e][t]||(Ua[e][t]=n(),Ua[e][t].then((n=>(Ua[e][t]=null,n)))),Ua[e][t]),Va=e=>Math.random().toString(36).substr(2,e),Wa=(e=0)=>window.requestAnimationFrame((()=>{window.scrollTo(0,e)})),_a=()=>{let e=0;return document.documentElement&&null!==document.documentElement&&(e=document.documentElement.scrollTop),window.pageYOffset||e};var wa=n(5534);const Ha=(e,t)=>(e=>4===e.length?`#${e[1]}${e[1]}${e[2]}${e[2]}${e[3]}${e[3]}`:e)((0,wa.e$)(e,t)),Ya=["BannerA","BannerD","BlogB"],ka={top:"4%",bottom:"4%",left:"8%",right:"8%"},Da=["HeaderA","HeaderPX"],La=e=>{const t=(0,M.find)(e.header,(e=>"Header"===e.groupId));return null==t?void 0:t.attributes},Pa=e=>Ya.includes(e);var Ja=n(4353),Ma=n.n(Ja);const za=e=>{const t=Ma()(e);if(t.isValid())return t.toDate();const n=e.match(/\/Date\((\d+)([+-]\d{4})?\)\//);if(n){const e=parseInt(n[1],10);return new Date(e)}return""};var ja=n(3203),Ka=Object.defineProperty,qa=Object.defineProperties,$a=Object.getOwnPropertyDescriptors,ec=Object.getOwnPropertySymbols,tc=Object.prototype.hasOwnProperty,nc=Object.prototype.propertyIsEnumerable,rc=(e,t,n)=>t in e?Ka(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,ic=(e=>(e.SUCCESS="success",e.WARNING="warning",e))(ic||{}),oc=(e=>(e.ADD_SUCCESS="AddSuccess",e.BACK_IN_STOCK_INPUT_MAIL_SUCCESS="BackInStockInputMailSuccess",e.BACK_IN_STOCK_SUBSCRIBE_SUCCESS="BackInStockSubscribeSuccess",e.BACK_IN_STOCK_UNSUBSCRIBE_SUCCESS="BackInStockUnsubscribeSuccess",e.CANCEL_BACK_IN_STOCK_INPUT_MAIL_SUCCESS="CancelBackInStockInputMailSuccess",e.FILTER_UPPER_LIMIT="FilterUpperLimit",e.IS_CLOSED="IsClosed",e.LOGIN_SUCCESS="loginSuccess",e.LOGOUT_SUCCESS="logoutSuccess",e.NOT_FOUND="NotFound",e.NO_START="NoStart",e.REMOVE_SUCCESS="removeSuccess",e.SELECT_ERROR="SelectError",e.SOLD_OUT="SoldOut",e.SUBMIT_ERROR="SubmitError",e.SYSTEM_ERROR="SystemError",e.UN_LISTING="UnListing",e))(oc||{});const ac={TYPE:ic,STATUS:oc},cc=[{type:ac.TYPE.SUCCESS,status:ac.STATUS.LOGIN_SUCCESS,message:Jn.THEME_CORE.TOAST.LOGIN_SUCCESS},{type:ac.TYPE.SUCCESS,status:ac.STATUS.LOGOUT_SUCCESS,message:Jn.THEME_CORE.TOAST.LOGOUT_SUCCESS},{type:ac.TYPE.SUCCESS,status:ac.STATUS.ADD_SUCCESS,message:Jn.THEME_CORE.TOAST.ADD_SUCCESS},{type:ac.TYPE.SUCCESS,status:ac.STATUS.REMOVE_SUCCESS,message:Jn.THEME_CORE.TOAST.REMOVE_SUCCESS},{type:ac.TYPE.SUCCESS,status:ac.STATUS.BACK_IN_STOCK_UNSUBSCRIBE_SUCCESS,message:Jn.THEME_CORE.TOAST.BACK_IN_STOCK_UNSUBSCRIBE_SUCCESS},{type:ac.TYPE.SUCCESS,status:ac.STATUS.BACK_IN_STOCK_SUBSCRIBE_SUCCESS,message:Jn.THEME_CORE.TOAST.BACK_IN_STOCK_SUBSCRIBE_SUCCESS},{type:ac.TYPE.WARNING,status:ac.STATUS.SOLD_OUT,message:Jn.THEME_CORE.TOAST.SOLD_OUT},{type:ac.TYPE.WARNING,status:ac.STATUS.NO_START,message:Jn.THEME_CORE.TOAST.NO_START},{type:ac.TYPE.WARNING,status:ac.STATUS.NOT_FOUND,message:Jn.THEME_CORE.TOAST.NOT_FOUND},{type:ac.TYPE.WARNING,status:ac.STATUS.IS_CLOSED,message:Jn.THEME_CORE.TOAST.IS_CLOSED},{type:ac.TYPE.WARNING,status:ac.STATUS.UN_LISTING,message:Jn.THEME_CORE.TOAST.UN_LISTING},{type:ac.TYPE.WARNING,status:ac.STATUS.FILTER_UPPER_LIMIT,message:Jn.THEME_CORE.TOAST.FILTER_UPPER_LIMIT},{type:ac.TYPE.WARNING,status:ac.STATUS.SUBMIT_ERROR,message:Jn.THEME_CORE.TOAST.SUBMIT_ERROR},{type:ac.TYPE.WARNING,status:ac.STATUS.SYSTEM_ERROR,message:Jn.THEME_CORE.TOAST.SYSTEM_ERROR},{type:ac.TYPE.WARNING,status:ac.STATUS.SELECT_ERROR,message:Jn.THEME_CORE.TOAST.SELECT_ERROR}],lc=e=>{const t=cc.find((t=>t.status===e));return n=((e,t)=>{for(var n in t||(t={}))tc.call(t,n)&&rc(e,n,t[n]);if(ec)for(var n of ec(t))nc.call(t,n)&&rc(e,n,t[n]);return e})({},t),r={message:(null==t?void 0:t.message)?(0,ja.t)(t.message):""},qa(n,$a(r));var n,r};var sc=Object.defineProperty,uc=Object.defineProperties,gc=Object.getOwnPropertyDescriptors,dc=Object.getOwnPropertySymbols,Ic=Object.prototype.hasOwnProperty,pc=Object.prototype.propertyIsEnumerable,bc=(e,t,n)=>t in e?sc(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n;const mc=({toolbox:e={},fbFansPageUrl:t="",lineUserId:n="",instagramUrl:r="",shopDomain:i,shopId:o})=>{const a=t?t.split("/").filter((e=>!!e)):"",c=a?a[a.length-1]:"",l={[qr.FACEBOOK_PAGE]:t||"https://www.facebook.com/",[qr.LINE]:`https://line.me/R/ti/p/${n}`,[qr.IG]:r||"https://www.instagram.com/?hl=zh-tw",[qr.STORE_INFO]:`https://${i}/V2/Shop/StoreList/${o}`,[qr.FACEBOOK_MESSENGER]:`https://m.me/${c}`,[qr.COUPON]:`https://${i}/Coupon/List`};return s=((e,t)=>{for(var n in t||(t={}))Ic.call(t,n)&&bc(e,n,t[n]);if(dc)for(var n of dc(t))pc.call(t,n)&&bc(e,n,t[n]);return e})({},e),u={linkUrl:e.id===qr.CUSTOM?e.linkUrl:l[e.id]},uc(s,gc(u));var s,u},Cc=(e,t)=>{const{fbFansPageUrl:n,lineUserId:r,instagramUrl:i,shopDomain:o,shopId:a}=t;return qe.apply(e,"$..toolboxList",(e=>e.map((e=>mc({toolbox:e,fbFansPageUrl:n,lineUserId:r,instagramUrl:i,shopDomain:o,shopId:a}))))),e};var hc=n(9310),Bc=Object.defineProperty,Ac=Object.defineProperties,yc=Object.getOwnPropertyDescriptors,fc=Object.getOwnPropertySymbols,Gc=Object.prototype.hasOwnProperty,Qc=Object.prototype.propertyIsEnumerable,Fc=(e,t,n)=>t in e?Bc(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n;const vc=(e,t)=>(0,Bn.merge)(e,t),Zc=(e,t,n)=>(0,Bn.merge)(e,t,n),Ec=e=>JSON.parse(JSON.stringify(e)),Sc=e=>!!e&&(e=>"string"==typeof e)(e)&&!Number.isNaN(Number(e)),Xc=e=>"true"===e||"false"===e,Tc=(e,t)=>(0,Lo.get)(e,t),xc=e=>e.charAt(0).toLowerCase()+e.slice(1),Uc=e=>Array.isArray(e)?e.map((e=>Uc(e))):"object"==typeof e&&null!==e?Object.entries(e).reduce(((e,[t,n])=>{const r=xc(t);return i=((e,t)=>{for(var n in t||(t={}))Gc.call(t,n)&&Fc(e,n,t[n]);if(fc)for(var n of fc(t))Qc.call(t,n)&&Fc(e,n,t[n]);return e})({},e),o={[r]:Uc(n)},Ac(i,yc(o));var i,o}),{}):e;var Nc=n(3829);const Rc={HeaderA:{title:"Brand001"},HeaderB:{title:"Brand002"},HeaderPX:{title:"Brand003"},BoardA:{title:""},BannerA:{title:"Banner001"},BannerB:{title:"Banner002"},BannerC:{title:"Banner003"},BannerD:{title:"Banner004"},BannerE:{title:"Banner005"},BannerF:{title:"Banner006"},ProductA:{title:"Product001"},ProductB:{title:"Product002"},ProductC:{title:"Product003"},BlogA:{title:"Blog001"},BlogB:{title:"Blog002"},ActivityA:{title:"Activity001"},ActivityB:{title:"Activity002"},QuickEntryA:{title:"Others001"},CateringReservationOrders:{title:"Catering001"},CateringReservation:{title:"Catering002"},SearchA:{title:"Search001"},BuyAgainProductA:{title:"BuyAgainProduct001"}},Oc=(e,t=0)=>{return r=function*(){const{shopId:n}=e,r=gt(`ShoppingCartV3/GetShoppingCartPreview?locationId=${t}`,e,!1),i={method:qt.RequestMethod.POST,body:JSON.stringify({shopId:n})};return(({Data:{ShopList:e}})=>{const{SalePageList:t=[]}=e[0]||{};return t.map((({Title:e="",PicUrl:t,Price:n=0,Qty:r=0,SalePageId:i=0,SalePageGroupSeq:o=0,SaleProductSKUId:a=0,PointsPayPair:c,ShoppingCartId:l,RelatedItemGroup:s,RelatedItemType:u,ExtraPurchaseItems:g})=>{return{title:e,mediaUrlList:[t],link:i&&`/SalePage/Index/${i}`,price:n,quantity:r,salePageId:i,salePageSeq:o,saleProductSKUId:a,pointsPayPair:{pointsPayId:(null==c?void 0:c.PointsPayId)||0,pairsPrice:(null==c?void 0:c.PairsPrice)||0,pairsPoints:(null==c?void 0:c.PairsPoints)||0},shoppingCartId:l,relatedItemGroup:s,relatedItemType:u,extraPurchaseItems:g?(d=g,d.map((e=>{var t,n,r;return{title:e.Title,mediaUrlList:[e.PicUrl],link:e.SalePageId&&`/AddOnsSalePage/Index/${e.SalePageId}`,price:e.Price,quantity:e.Qty,salePageId:e.SalePageId,salePageSeq:e.SalePageGroupSeq,saleProductSKUId:e.SaleProductSKUId,pointsPayPair:{pointsPayId:(null==(t=e.PointsPayPair)?void 0:t.PointsPayId)||0,pairsPrice:(null==(n=e.PointsPayPair)?void 0:n.PairsPrice)||0,pairsPoints:(null==(r=e.PointsPayPair)?void 0:r.PairsPoints)||0}}}))):[]};var d}))})(yield Nn(r,i))},new Promise(((e,t)=>{var i=e=>{try{a(r.next(e))}catch(n){t(n)}},o=e=>{try{a(r.throw(e))}catch(n){t(n)}},a=t=>t.done?e(t.value):Promise.resolve(t.value).then(i,o);a((r=r.apply(void 0,null)).next())}));var r},Vc="allowGetPrivacyInfo",Wc=e=>`${e}:vipMemberOuterId`,_c=e=>`${e}:backInStock:salePageId`;var wc=(e,t,n)=>new Promise(((r,i)=>{var o=e=>{try{c(n.next(e))}catch(t){i(t)}},a=e=>{try{c(n.throw(e))}catch(t){i(t)}},c=e=>e.done?r(e.value):Promise.resolve(e.value).then(o,a);c((n=n.apply(e,t)).next())}));const Hc=(e,t=!1)=>wc(void 0,null,(function*(){const{shopId:n}=e;try{const n=gt(`/VIPMember/GetVipInfo?isBinding=${t}`,e,!1),r=yield Nn(n);return Promise.resolve(r.Data)}catch(r){return ze.error(`[ERROR] fetchVipMemberInfo GetVipInfo failed: ${Me(r)}: ${Je(r)}: shopId: ${n}`),Promise.reject(r)}}));var Yc=(e,t,n)=>new Promise(((r,i)=>{var o=e=>{try{c(n.next(e))}catch(t){i(t)}},a=e=>{try{c(n.throw(e))}catch(t){i(t)}},c=e=>e.done?r(e.value):Promise.resolve(e.value).then(o,a);c((n=n.apply(e,t)).next())}));const{checkIsEnableCartList:kc,checkIsEnableMemberOuid:Dc,CONSTANTS:Lc}=hc||{},Pc=(null==Lc?void 0:Lc.PRODUCTS_SORT_METHOD)||{PRICE_DESC:"price_descending",PRICE_ASC:"price_ascending",LATEST:"latest",POPULARITY_VIEW:"popularity_view",CURATOR:"curator",SALES:"sales",RELATIVITY:"relativity"},Jc={Curator:Pc.CURATOR,Newest:Pc.LATEST,Sales:Pc.SALES,PageView:Pc.POPULARITY_VIEW,PriceLowToHigh:Pc.PRICE_ASC,PriceHighToLow:Pc.PRICE_DESC},Mc=e=>Yc(void 0,null,(function*(){const t={isLogin:!1,memberHashed:{}};try{const{isLogin:n,vipMemberOuterId:r}=yield(e=>Yc(void 0,null,(function*(){try{const t={isLogin:!1,vipMemberOuterId:null},n=yield mn();t.isLogin=n;const{env:r,silo:i}=Te(),{shopId:o,market:a}=xe();return!!(null==Dc?void 0:Dc({env:r,market:a,shopId:o,silo:i}))&&(t.vipMemberOuterId=yield((e,t)=>wc(void 0,null,(function*(){var n;const{shopId:r}=e;try{if(!t)return ze.debug("[streams/vipMember/fetchVipMemberInfo.stream] fetchVipMemberOuterId stop, user is not login"),null;const i=Wc(r),o=(0,Bn.getCookie)(i);if(o)return o;const a=yield Hc(e),c=null==(n=null==a?void 0:a.VipMember)?void 0:n.OuterId;return c&&(0,Bn.addCookie)(i,c),Promise.resolve(c)}catch(i){return ze.error(`[ERROR] fetchVipMemberOuterId failed: ${Me(i)}: ${Je(i)}: shopId: ${r}`),Promise.reject(i)}})))(e,t.isLogin)),t}catch(t){return{isLogin:!1,vipMemberOuterId:null}}})))(e);if(!n)return t;t.isLogin=n,t.vipMemberOuterId=r;const i=(0,Bn.getCookie)("MID");t.memberCode=i;const o=localStorage.getItem("em"),a=localStorage.getItem("ph"),c=localStorage.getItem("phForTealiumIQ")||null;o&&(t.memberHashed.emailHashed=o),a&&(t.memberHashed.phoneHashed=a),c&&(t.memberHashed.phoneHashedForTealiumIQ=c)}catch(n){ze.error(`[ERROR] tracking getUserInfo error: ${Me(n)}: ${Je(n)}`)}return t})),zc=e=>{var t,n;return`${null==(n=null==(t=Rc)?void 0:t[e])?void 0:n.title}`||e},jc=(e,t)=>t&&e?"HiddenExpressSalePage":t&&!e?"ExpressSalePage":e?"HiddenSalePage":"SalePage",Kc=()=>{const{pageType:e}=Te(),{pageTitle:t}=(0,Ze.getPageInfoByPageType)(e);return t},qc=e=>Yc(void 0,null,(function*(){let t=[];const{env:n,silo:r}=Te(),{shopId:i,market:o}=xe();return(null==kc?void 0:kc({env:n,market:o,shopId:i,silo:r}))&&(t=(yield Oc(e)).map((e=>({id:e.salePageId,price:e.price,quantity:e.quantity,name:e.title,suggestPrice:null})))),t})),$c=e=>{const{moduleId:t,materialName:n="",moduleName:r="",moduleKey:i,position:o,isShowModuleKey:a=!0}=e,c=zc(t),l=`${c}${""!==n?`_${n}`:""}`;let s="";return o>=0&&(s=""!==n?`${o+1}`:`_${o+1}`),{eventCategory:Kc(),eventAction:`點開圖片版位 (${l+s})`,eventLabel:a?`(${i})${r}`:r,contentType:c}},el=()=>{const{pageType:e}=Te(),{routerPath:t}=xe();return e===Ze.PAGE_TYPE.CUSTOM||e===Ze.PAGE_TYPE.HIDDEN?t:""},tl=()=>Ge()?null==document?void 0:document.title:"",nl=(e,t)=>{if(e===rr.jooii&&t){const{modeId:n="",version:r=""}=t;return`${e}_${n}_v${r}`}return e||""},rl=e=>e.includes("Firefox"),il=e=>e.includes("Chrome"),ol=e=>!e.includes("Chrome")&&e.includes("Safari"),al=e=>e.indexOf("Trident")>0||e.indexOf("MSIE")>0,cl=e=>/android/i.test(e)?"Android":/(iPhone|iPad|iPod|iOS)/i.test(e)?"iOS":/bot|spider|crawl/i.test(e)?"Bot":"UnKnown",ll=()=>"undefined"!=typeof window&&window.navigator&&/bot|spider|crawl/i.test(navigator.userAgent);var sl=Object.defineProperty,ul=Object.defineProperties,gl=Object.getOwnPropertyDescriptors,dl=Object.getOwnPropertySymbols,Il=Object.prototype.hasOwnProperty,pl=Object.prototype.propertyIsEnumerable,bl=(e,t,n)=>t in e?sl(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,ml=(e,t)=>{for(var n in t||(t={}))Il.call(t,n)&&bl(e,n,t[n]);if(dl)for(var n of dl(t))pl.call(t,n)&&bl(e,n,t[n]);return e},Cl=(e,t)=>ul(e,gl(t));const hl=()=>{var e;return!!(null==(e=hc.adobeAnalytics)?void 0:e.checkIsEnableAdobeTrack())},Bl=()=>!(ll()||An()||(0,Bn.checkIsServerRender)()||yn()||fn()),Al=()=>{var e,t,n,r,i,o,a,c,l;try{const{gaSetting:s,facebookConfig:u,env:g,pageType:d,silo:I,shopExtensionSetting:p,i18n:b}=Te(),{shopId:m,shopProfile:C,market:h,locale:B}=xe(),{ShopThirdPartyConfigInfo:A}=C,y=null==(t=null==(e=null==p?void 0:p.googleAnalytics)?void 0:e.sdkOption)?void 0:t.customOuidDimensionName,f=(null==(n=null==p?void 0:p.googleAnalytics)?void 0:n.isEnable)&&(null==(i=null==(r=null==p?void 0:p.googleAnalytics)?void 0:r.sdkOption)?void 0:i.isEnableVipMemberOuterIdDimension),G=null==(a=null==(o=null==p?void 0:p.googleAnalytics)?void 0:o.sdkOption)?void 0:a.isUseOriginalClientId,Q={shopId:m,gaConfig:{googleAnalyticsTrackingId:null==s?void 0:s.GoogleAnalyticsTrackingId,originDomain:null==s?void 0:s.originDomain,officialSsoDomain:null==s?void 0:s.officialSsoDomain,isEnableVipMemberOuterIdDimension:f,countryName:null==s?void 0:s.countryName,customOuidDimensionName:y,isReceiveSdkGaEvent:!0,isUseOriginalClientId:G},fbPixelConfig:{allSiteFbPixelId:null==u?void 0:u.allSiteFbPixelId,customAudiencesPixelIds:null==u?void 0:u.CustomAudiencesPixelIds,isEnableAdvancedFacebookPixel:null==u?void 0:u.IsEnableFacebookManualAdvancedMatching},gaFourConfig:{googleAnalyticsFourGTagId:null==s?void 0:s.GoogleAnalytics4TrackingId},googleAdwordsConfig:Cl(ml({},null==(c=null==A?void 0:A.GoogleConfig)?void 0:c.OfficialShopGoogleTagConfig),{isSendRemarketingFromSSR:!0}),lineAdConfig:{isEnableLineAd:!0,tagEventSet:null==(l=null==A?void 0:A.LineConfig)?void 0:l.LineADTracking},adobeAAConfig:{isEnable:!0},currency:b.defaultCurrency,shopExtensionSetting:p,env:null==g?void 0:g.toLocaleLowerCase(),market:null==h?void 0:h.toLocaleLowerCase(),silo:null==I?void 0:I.toLocaleLowerCase(),pageType:d,locale:B};(0,hc.initialize)(Q)}catch(s){ze.error(`[ERROR] tracking trackInitialize error: ${Me(s)}: ${Je(s)}`)}},yl=e=>{return n=function*(){var t,n,r;try{if(!Bl())return;const i=xe(),{i18n:o}=Te(),{preferredCurrency:a}=o,c=null==(t=hc.facebookPixel)?void 0:t.checkIsEnableAdvancedPixel(),l=dn(i),s=et("isThirdPartyNewRegistered");Xc(s)&&c&&(yield(e=>{return n=function*(){var t,n;const{shopId:r}=e;try{const i=gt(`Advertise/GetVIPMemberHashInfoForAdvertise/${r}`,e,!1),o=yield Nn(i),a=null==(t=null==o?void 0:o.Data)?void 0:t.EmailHashed,c=null==(n=null==o?void 0:o.Data)?void 0:n.PhoneHashed;return c&&localStorage.setItem("ph",c),void(a&&localStorage.setItem("em",a))}catch(i){return ze.error(`[ERROR] fetchVIPMemberHashInfoForAdvertise failed: ${Me(i)}: ${Je(i)}: shopId: ${r}`),Promise.reject(i)}},new Promise(((e,r)=>{var i=e=>{try{a(n.next(e))}catch(t){r(t)}},o=e=>{try{a(n.throw(e))}catch(t){r(t)}},a=t=>t.done?e(t.value):Promise.resolve(t.value).then(i,o);a((n=n.apply(void 0,null)).next())}));var n})(l));const u=yield qc(l),{isLogin:g,vipMemberOuterId:d,memberHashed:I}=yield Mc(l),p=(0,Nc.A)(),{pageType:b}=Te(),m=Cl(ml({},e),{pageType:b,isLogin:g,optionInfo:null==e?void 0:e.optionInfo,viewId:null==e?void 0:e.viewId,vipMemberOuterId:d,memberHashed:I,isPassOuterMemberCode:null==(r=null==(n=i.shopProfile)?void 0:n.ShopThirdPartyConfigInfo)?void 0:r.IsPassOuterMemberCode,currentCartList:u});(0,hc.pageView)(m,p,a)}catch(i){ze.error(`[ERROR] tracking trackPageView error: ${Me(i)}: ${Je(i)}`)}},new Promise(((e,r)=>{var i=e=>{try{a(n.next(e))}catch(t){r(t)}},o=e=>{try{a(n.throw(e))}catch(t){r(t)}},a=t=>t.done?e(t.value):Promise.resolve(t.value).then(i,o);a((n=n.apply(void 0,null)).next())}));var n},fl=(e,t,n)=>{var r;try{null==(r=hc.googleAnalytics)||r.trackEvent(e,t,n)}catch(i){ze.error(`[ERROR] tracking trackEvent error: ${Me(i)}: ${Je(i)}`)}},Gl=e=>{try{if(!Bl()||!e)return;(0,hc.selectContent)(e)}catch(t){ze.error(`[ERROR] trackSelectContent error: ${Me(t)}: ${Je(t)}`)}},Ql=e=>{try{if(!Bl()||!e||!e.productInfo)return;const{categoryInfo:t,pageTitle:n,productInfo:r,isHidden:i=!1,isExpress:o=!1,productDesc:a,productMainImage:c,productOuterId:l}=e,s=(0,Nc.A)(),u={categoryInfo:t,pageTitle:n,productInfo:r,viewItemType:jc(i,o),productDesc:a,productMainImage:c,productOuterId:l};(0,hc.productDetails)(u,s)}catch(t){ze.error(`[ERROR] trackProductDetails error: ${Me(t)}: ${Je(t)}`)}},Fl=(e,t,n)=>{try{if(!Bl()||!e)return;const r=(0,Nc.A)();(0,hc.addToCart)(e,r,t,n)}catch(r){ze.error(`[ERROR] trackAddToCart error: ${Me(r)}: ${Je(r)}`)}},vl=e=>{try{if(!Bl()||!e)return;(0,hc.removeFromCart)(e)}catch(t){ze.error(`[ERROR] trackRemoveFromCart error: ${Me(t)}: ${Je(t)}`)}},Zl=e=>{try{if(!Bl()||!e)return;const{id:t,skuId:n,price:r,suggestPrice:i,name:o,position:a,categoryName:c,categoryId:l}=e,s=(0,Nc.A)();(0,hc.addToFavorite)({id:t,skuId:n,price:r,suggestPrice:i,name:o,position:a,categoryName:c,categoryId:l},s)}catch(t){ze.error(`[ERROR] trackAddToFavorite error: ${Me(t)}: ${Je(t)}`)}},El=e=>{try{if(!Bl()||!e)return;const{id:t,skuId:n,price:r,suggestPrice:i,name:o,position:a,categoryName:c,categoryId:l,quantity:s}=e;(0,hc.removeFromFavorite)({id:t,name:o,categoryId:l,categoryName:c,price:r,quantity:s,suggestPrice:i,skuId:n,position:a})}catch(t){ze.error(`[ERROR] trackRemoveFromFavorite error: ${Me(t)}: ${Je(t)}`)}},Sl=(e,t)=>{try{if(!Bl()||!e)return;(0,hc.productClick)(e,t)}catch(n){ze.error(`[ERROR] trackProductClick error: ${Me(n)}: ${Je(n)}`)}},Xl=e=>{Bl()&&e&&(0,hc.sortProducts)(e)},Tl=e=>{try{if(!Bl()||!e||!e.searchTerm)return;const t=(0,Nc.A)();(0,hc.searchKeyword)(e,t)}catch(t){ze.error(`[ERROR] trackSearchKeyword error: ${Me(t)}: ${Je(t)}`)}},xl=e=>{try{if(!Bl()||!e)return;const t=(0,Nc.A)();(0,hc.searchFilter)(e,t)}catch(t){ze.error(`[ERROR] trackSearchFilter error: ${Me(t)}: ${Je(t)}`)}},Ul=(e,t,n)=>{try{if(!Bl()||!e||e.length<=0)return;(0,hc.productImpression)(e,t,n)}catch(r){ze.error(`[ERROR] trackProductImpression error: ${Me(r)}: ${Je(r)}`)}},Nl=e=>{try{if(!Bl()||!e)return;(0,hc.increaseQuantity)(e)}catch(t){ze.error(`[ERROR] trackIncreaseQuantity error: ${Me(t)}: ${Je(t)}`)}},Rl=e=>{try{if(!Bl()||!e)return;(0,hc.loadMoreProductList)(e)}catch(t){ze.error(`[ERROR] trackLoadMoreProductList error: ${Me(t)}: ${Je(t)}`)}},Ol=e=>{try{if(!Bl()||!e)return;(0,hc.productRecommendationClick)(e)}catch(t){ze.error(`[ERROR] trackProductRecommendationClick error: ${Me(t)}: ${Je(t)}`)}},Vl=e=>{try{if(!Bl()||!e)return;(0,hc.reduceQuantity)(e)}catch(t){ze.error(`[ERROR] trackReduceQuantity error: ${Me(t)}: ${Je(t)}`)}},Wl=e=>{try{if(!Bl()||!e)return;(0,hc.quickView)(e)}catch(t){ze.error(`[ERROR] trackQuickView error: ${Me(t)}: ${Je(t)}`)}},_l=e=>{try{if(!Bl()||!e)return;(0,hc.viewItemListV3)(e)}catch(t){ze.error(`[ERROR] trackViewItemList error: ${Me(t)}: ${Je(t)}`)}},wl=e=>/(.+)@(.+)\.(.+)/.test(e);var Hl=n(8709);const{buttonStyle:Yl}=se.A,{fontSizeDefault:kl}=Ce;var Dl=(e=>(e.EXLARGE="EXLARGE",e.MEDIUM="MEDIUM",e.STANDARD="STANDARD",e.SMALL="SMALL",e))(Dl||{});const Ll=K.default.div`
    position: fixed;
    width: 100%;
    height: 100%;
    top: 0;
    left: 0;

    display: flex;
    justify-content: center;
    align-items: center;

    background-color: rgba(0, 0, 0, 0.5);
    z-index: ${D};
`,Pl=K.default.div`
    display: flex;
    flex-direction: column;
    background-color: ${J.white};
    border-radius: 4px;
    position: relative;
    min-height: 120px;
    width: 288px;
    max-height: 400px;
`,Jl=K.default.div`
    display: flex;
    flex-direction: column;
    background-color: ${J.white};
    border-radius: 4px;
    position: relative;
    min-height: 120px;
    width: 90%;
    max-width: 600px;
    max-height: 80vh;
`,Ml=K.default.div`
    display: flex;
    flex-direction: column;
    background-color: ${J.white};
    border-radius: 4px;
    position: relative;
    min-height: 120px;
    width: 100%;
    max-width: 600px;
    max-height: 80vh;
`,zl=K.default.div`
    display: flex;
    flex-direction: column;
    background-color: ${J.white};
    border-radius: 4px;
    position: relative;
    width: 640px;
    height: 600px;
`,jl=16,Kl=K.default.div`
    flex: 0 0 ${46}px;
    display: flex;
    justify-content: center;
    align-items: center;
    box-sizing: border-box;
    padding: ${jl}px ${jl}px 0px ${jl}px;
`,ql=K.default.div`
    font-size: 16px;
    font-weight: 500;
    color: ${J.blackThree};
`,$l=K.default.div`
    width: 100%;
    box-sizing: border-box;
    overflow-x: hidden;
    overflow-y: auto;
    max-height: 352px;
`,es=K.default.div`
    width: 100%;
    box-sizing: border-box;
    overflow-x: hidden;
    overflow-y: auto;
    max-height: 400px;
`,ts=K.default.div`
    width: 100%;
    box-sizing: border-box;
    overflow-x: hidden;
    overflow-y: auto;
    max-height: 400px;
`,ns=K.default.div`
    width: 100%;
    height: 100%;
    box-sizing: border-box;
    overflow: hidden;
`,rs=K.default.div`
    position: absolute;
    top: ${({isInsideHeader:e})=>e?21:jl}px;
    right: ${jl}px;

    display: flex;
    justify-content: center;
    align-items: center;

    width: 20px;
    height: 20px;
    z-index: ${D};
    border-radius: 50%;

    transition: 0.15s background-color;

    :hover {
        cursor: pointer;
    }
`,is=(0,K.default)(rs)`
    right: unset;
    left: ${jl}px;
`,os=K.default.button`
    height: 40px;
    width: 100%;
    border-radius: 4px;
    text-align: center;
    cursor: pointer;
    color: ${({theme:e})=>{var t;return(null==(t=null==e?void 0:e.buttonStyle)?void 0:t.primaryBtnTextColor)||Yl.primaryBtnTextColor}};
    background-color: ${({theme:e})=>{var t;return(null==(t=null==e?void 0:e.buttonStyle)?void 0:t.primaryBtnBgColor)||Yl.primaryBtnBgColor}};
    &:hover {
        background-color: ${({theme:e})=>{var t;return Ha(.1,(null==(t=null==e?void 0:e.buttonStyle)?void 0:t.primaryBtnBgColor)||Yl.primaryBtnBgColor)}};
    }
`,as=K.default.button`
    height: 40px;
    width: 100%;
    border-radius: 4px;
    text-align: center;
    cursor: pointer;
    color: ${({theme:e})=>{var t;return(null==(t=null==e?void 0:e.buttonStyle)?void 0:t.secondBtnTextColor)||Yl.secondBtnTextColor}};
    background-color: ${({theme:e})=>{var t;return(null==(t=null==e?void 0:e.buttonStyle)?void 0:t.secondBtnBgColor)||Yl.secondBtnBgColor}};
    border: 1px solid
        ${({theme:e})=>{var t;return(null==(t=null==e?void 0:e.buttonStyle)?void 0:t.secondBtnBorderColor)||Yl.secondBtnBorderColor}};
`,cs=K.default.div`
    font-size: ${kl};
    line-height: 150%;
    font-weight: 400;
    display: flex;
    padding: 0 16px 16px 16px;
    bottom: 0;
    * + * {
        margin-left: 10px;
    }
`,ls=e=>e.stopPropagation(),ss=({children:e,onModalClick:t,title:n,modalMode:r="SMALL",handleConfirmClick:i,confirmText:o,handleCancelClick:a,cancelText:c,isShowCloseButton:l=!0,handleCloseButtonClick:s,handleBackwardButtonClick:u,isShowHeader:g})=>{const d=void 0===g?Boolean(n):g,I="function"==typeof u,p=z.createElement(is,{isInsideHeader:g,className:"ico ico-chevron-left",onClick:u}),b=z.createElement(Kl,null,z.createElement(ql,null,n)),m=z.createElement(rs,{isInsideHeader:g,className:"ico ico-close",onClick:e=>{"function"==typeof s&&(e.preventDefault(),s(e))}}),C=z.createElement(cs,{onClick:ls},c&&z.createElement(as,{onClick:a},c),o&&z.createElement(os,{onClick:i},o)),h=z.createElement(Ll,{onClick:t},"EXLARGE"===r&&z.createElement(zl,null,I&&p,d&&b,l&&m,z.createElement(ns,{onClick:ls},e),(o||c)&&C),"MEDIUM"===r&&z.createElement(Ml,null,I&&p,d&&b,l&&m,z.createElement(ts,{onClick:ls},e),(o||c)&&C),"STANDARD"===r&&z.createElement(Jl,null,I&&p,d&&b,l&&m,z.createElement(es,{onClick:ls},e),(o||c)&&C),"SMALL"===r&&z.createElement(Pl,null,I&&p,d&&b,l&&m,z.createElement($l,{onClick:ls},e),(o||c)&&C));return(0,Hl.createPortal)(h,document.querySelector("#modal-root")||document.body)},us=K.default.div`
    background: rgba(0, 0, 0, 0.4);
    z-index: ${L};

    position: fixed;
    top: 0;
    bottom: 0;
    left: 0;
    right: 0;
`,gs=K.keyframes`
    from {
        top: 100%;
        bottom: 0;
        left: 0;
        right: 0;
    }

    to {
        top: 10%;
        bottom: 0;
        left: 0;
        right: 0;
    }
`,ds=K.keyframes`
    from {
        bottom: -250px;
    }
    to {
        bottom: 0;
    }
`,Is=K.default.div`
    ${({isFullScreen:e})=>!e&&"position: absolute"};
    animation: ${gs} 0.3s ease-out 1;
    animation-fill-mode: forwards;
`,ps=K.default.div`
    background: ${J.white};
    border-radius: ${({isFullScreen:e})=>e?"0":"15px 15px 0 0"};

    display: flex;
    flex-direction: column;

    position: absolute;
    bottom: 0;

    animation: ${ds} 0.3s ease-out 1;
    animation-fill-mode: forwards;
    width: 100vw;
    ${({isFullScreen:e})=>e&&"height: 100vh; height: 100svh;"};
`,bs=16,ms=K.default.div`
    flex: 0 0 ${46}px;
    display: flex;
    align-items: center;
    justify-content: center;
    box-sizing: border-box;
    padding: ${bs}px ${bs}px 0px ${bs}px;
`,Cs=K.default.div`
    flex-grow: 1;
    ${({isFullScreen:e})=>e?"width: 100%; height: 100%; box-sizing: border-box; overflow: hidden;":"max-height: 80vh"}
`,hs=K.default.div`
    font-size: 16px;
    font-weight: 500;
    color: #333;
`,Bs=K.default.div`
    position: absolute;
    right: ${bs}px;
    top: ${({isInsideHeader:e})=>e?21:bs}px;

    width: 20px;
    height: 20px;

    display: flex;
    justify-content: center;
    align-items: center;
    z-index: ${L};
    border-radius: 50%;
    transition: 0.15s background-color;

    :hover {
        cursor: pointer;
    }
`,As=(0,K.default)(Bs)`
    right: unset;
    left: ${bs}px;
`,ys=(0,K.default)(Bs)`
    background-color: ${J.blackOpacity50};
    color: ${J.white};
`,fs=e=>{e.stopPropagation()},Gs=({title:e,children:t,handleCloseButtonClick:n,handleBackwardButtonClick:r,onModalClick:i,isWhiteCloseButton:o=!1,isShowCloseButton:a=!0,isShowHeader:c,isFullScreen:l=!1})=>{(0,z.useLayoutEffect)((()=>{const e=document.body;return e.style.overflow="hidden",()=>{e.style.overflow="unset"}}),[]);const s="function"==typeof n?n:i,u=void 0===c?Boolean(e):c,g="function"==typeof r,d=o?ys:Bs,I=z.createElement(us,{onClick:i},z.createElement(Is,{isFullScreen:l},z.createElement(ps,{onClick:fs,isFullScreen:l},g&&z.createElement(As,{className:"ico ico-chevron-left",onClick:r,isInsideHeader:u}),u&&z.createElement(ms,null,z.createElement(hs,null,e)),a&&z.createElement(d,{className:"ico ico-close",onClick:s,isInsideHeader:u}),z.createElement(Cs,{isFullScreen:l},t))));return(0,Hl.createPortal)(I,document.querySelector("#modal-root")||document.body)};var Qs=n(3559);const{buttonStyle:Fs}=se.A,vs=K.default.div`
    display: flex;
    flex-direction: column;
    height: ${({blockHeight:e})=>e||"calc(70vh - 39px)"};
`,Zs=K.default.div`
    height: 40px;
    align-items: center;
    justify-content: flex-start;
    display: flex;
    flex-shrink: 0;
`,Es=K.default.div`
    display: block;
    margin: 0 16px;
    width: 100%;
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
`,Ss=K.default.span`
    font-weight: 400;
    font-size: ${Ce.fontSizeDefault};
    color: ${J.grapefruit};
`,Xs=K.default.span`
    font-weight: 400;
    font-size: ${Ce.fontSizeDefault};
    color: ${J.blackThree};
`,Ts=K.default.div`
    overflow-x: hidden;
    overflow-y: auto;
    flex: 1;
    ${({withSubmitButton:e})=>e?`border-bottom: 1px solid ${J.grey};`:""}
`,xs=K.default.div`
    display: flex;
    height: ${({layoutMode:e})=>"narrow"===e?"36px":"44px"};
    align-items: center;
    justify-content: start;
    cursor: pointer;
    flex: 1;
    background-color: ${({isActive:e,isCategoryIdEqual0:t,isChild:n})=>e?J.whiteFour:n?J.whiteFive:t?J.whiteFour:"transparent"};
    padding-left: ${({isActive:e,isChild:t,isFriendNode:n,layoutMode:r})=>e||n?"narrow"===r?"34px":"44px":t?"narrow"===r?"46px":"56px":"narrow"===r?"0px":"16px"};
    @media (min-width: 768px) {
        :hover {
            background: ${J.whiteFour};
        }
    }
`,Us=K.default.button`
    display: block;
    font-size: ${Ce.fontSizeDefault};
    font-weight: 400;
    width: 100%;
    background-color: transparent;
    text-align: left;
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
    cursor: pointer;
    font-weight: ${({isActive:e})=>e?"bold":"normal"};
`,Ns=K.default.div`
    display: flex;
    height: 64px;
    padding: 12px 20px;
    box-sizing: border-box;
`,Rs=K.default.button`
    font-size: ${Ce.fontSizeDefault};
    border-radius: 5px;
    padding: 8px 0px;
    color: ${e=>{var t,n;return(null==(n=null==(t=e.theme)?void 0:t.buttonStyle)?void 0:n.primaryBtnTextColor)||Fs.primaryBtnTextColor}};
    background-color: ${e=>{var t,n;return(null==(n=null==(t=e.theme)?void 0:t.buttonStyle)?void 0:n.primaryBtnBgColor)||Fs.primaryBtnBgColor}};
    width: 100%;
    margin: 0 auto;
    display: flex;
    justify-content: center;
    align-items: center;
`,Os=K.default.div`
    display: flex;
    height: ${({layoutMode:e})=>"narrow"===e?"36px":"48px"};
    flex-shrink: 0;
    align-items: center;
    justify-content: flex-start;
    width: 100%;
    margin: 0 auto;
    cursor: pointer;
    @media (min-width: 768px) {
        :hover {
            background: ${J.whiteFour};
        }
    }
`,Vs=K.default.div`
    height: 1px;
    margin: 0 16px;
    background-color: ${J.grey};
`,Ws=K.default.div`
    display: block;
    color: ${J.brownishGrey};
    text-align: left;
    overflow: hidden;
    white-space: nowrap;
    text-overflow: ellipsis;
    font-size: ${Ce.fontSizeDefault};
    cursor: pointer;
`,_s=K.default.div`
    display: flex;
    justify-content: center;
    align-items: center;
    width: ${({layoutMode:e})=>"narrow"===e?"34px":"44px"};
`,ws=K.default.i`
    ${({rotateNumber:e})=>`transform: rotate(${e}deg);`}
    color: ${J.brownishGrey};
`,Hs=(e,t)=>{const{Name:n}=e;return z.createElement(z.Fragment,{key:e.Id},z.createElement(_s,{layoutMode:t},z.createElement(ws,{rotateNumber:90,className:"ico ico-chevron-down"})),z.createElement(Ws,null,n))},Ys=({blockHeight:e,breadcrumbList:t,categoryList:n,itemSelectClick:r,submitClick:i,categoryId:o,withSubmitButton:a=!0,withSelectTitle:c=!0,submitButtonText:l=`${Jn.THEME_CORE.SHOP_CATEGORY.FAST_BUY_CONFIRM}`,layoutMode:s,scrollWhenOpen:u=!0})=>{const g=o||0,d=(0,M.find)(t,(e=>e.Id===g)),I=(0,Qs.useSelector)((e=>e.user.retailStoreExpressLocationId)),p=e=>{e.Id!==g&&r(e)},b=e=>0===g?{isCategoryIdEqual0:0===e.Id,isActiveNode:!1,isFriendNode:!1,isChildNode:!1}:{isCategoryIdEqual0:!1,isActiveNode:e.Id===g,isFriendNode:d&&((0,M.find)(t,(t=>t.Id===e.ParentId))||1===d.Level)&&e.Level===d.Level,isChildNode:e.ParentId===g},m=e=>{const{ChildList:t}=e;return z.createElement(z.Fragment,{key:`RenderMultiLevelItem${e.Id}`},(e=>{const{isCategoryIdEqual0:t,isActiveNode:n,isFriendNode:r,isChildNode:i}=b(e);if(n||r){const{Id:o,Name:a}=e;return z.createElement(xs,{id:`menu-item-${e.Id}`,isCategoryIdEqual0:t,isActive:n,isChild:i,isFriendNode:r,onClick:()=>{p(e)},layoutMode:s},z.createElement(Us,{key:o,isActive:n},a))}if(i){const{Id:o,Name:a}=e;return z.createElement(xs,{isActive:n,isCategoryIdEqual0:t,isChild:i,isFriendNode:r,onClick:()=>{p(e)},layoutMode:s},z.createElement(Us,{key:o,isActive:n},a))}return null})(e),null==t?void 0:t.map((e=>m(e))))},C={Id:0,Level:1,Name:(0,ja.t)(Jn.THEME_CORE.SHOP_CATEGORY.ALL_CATEGORY)};return(0,z.useEffect)((()=>{if(u&&g&&g>0){const e=document.getElementById(`menu-item-${g}`);e&&e.scrollIntoView({behavior:"auto",inline:"center",block:"center"})}})),z.createElement(vs,{blockHeight:e},c&&z.createElement(Zs,null,z.createElement(Es,null,z.createElement(Ss,null,z.createElement(Xs,null,(0,ja.t)(Jn.THEME_CORE.SHOP_CATEGORY.CHOSEN),": "),g>0&&d?`${d.Name}`:(0,ja.t)(Jn.THEME_CORE.SHOP_CATEGORY.ALL_CATEGORY)))),g>0&&z.createElement(z.Fragment,null,!I&&z.createElement(z.Fragment,null,z.createElement(Os,{onClick:()=>{p(C)},layoutMode:s},Hs(C,s)),z.createElement(Vs,null)),null==t?void 0:t.map((e=>e.Id!==g?z.createElement(Os,{key:e.Id,onClick:()=>{p(e)},layoutMode:s},Hs(e,s)):null))),z.createElement(Ts,{withSubmitButton:a},null==n?void 0:n.map((e=>0===g?(e=>{const{isCategoryIdEqual0:t,isActiveNode:n,isFriendNode:r,isChildNode:i}=b(e),{Id:o,Name:a}=e;return z.createElement(z.Fragment,{key:e.Id},z.createElement(xs,{isCategoryIdEqual0:t,isActive:n,isChild:i,isFriendNode:r,onClick:()=>{p(e)},layoutMode:s},z.createElement(Us,{key:o,isActive:o===g},a)))})(e):m(e)))),a&&z.createElement(Ns,null,z.createElement(Rs,{type:"button",onClick:()=>{d&&i({Id:d.Id,Name:d.Name}),d||0!==g||i({Id:g,Name:(0,ja.t)(Jn.THEME_CORE.SHOP_CATEGORY.ALL_CATEGORY)})}},z.createElement(ja.HT,{value:l}))))};var ks=n(1842);const Ds="PLUS",Ls=K.css`
    display: flex;
    justify-content: center;
    align-items: center;
    cursor: pointer;
    margin: 2.5px;
`,Ps=K.default.div`
    display: flex;
`,Js=K.default.button`
    background-color: #f6f6f6;
    width: 36px;
    height: 40px;
    ${Ls}
    ${({disabled:e})=>e&&"color: #dadada;"}
`,Ms=K.default.button`
    background-color: #f6f6f6;
    width: 36px;
    height: 40px;
    ${Ls}

    ${({active:e})=>e&&"border:1px solid black;background-color: #ffffff;"}
`,zs=({selectedValue:e,pageList:t=[],totalPageNumber:n,currentPageNumber:r,pageRange:i})=>{const o=t.length>0?[...t]:Array.from(Array(i),((e,t)=>t+1)),a=o.length,c=o[0],l=o[a-1],s=(c+l)/2,u=Math.ceil(e-s);return l+u<=n&&c+u>0&&s!==e?o.map((e=>e+u)):e>r&&l+1===n&&u>0?o.map((e=>e+1)):e<r&&c-1==1&&u<0?o.map((e=>e-1)):e===n&&l<n?o.map((t=>t+e-l)):e===n-1&&l<n?o.map((t=>t+e-o[a-2])):o},js=({onClick:e,totalPageNumber:t,initPageNumber:n=1})=>{const r=t>5?5:t,[i,o]=(0,z.useState)(1),[a,c]=(0,z.useState)([]),l=e=>{const n=zs({selectedValue:e,pageList:a,totalPageNumber:t,currentPageNumber:i});o(e),c(n),window.scroll({top:0,behavior:"smooth"})};(0,z.useEffect)((()=>{c(zs({selectedValue:n,totalPageNumber:t,currentPageNumber:i,pageRange:r})),o(n)}),[r,i,t,n]);const s=t=>{const n=null==t?void 0:t.currentTarget.getAttribute("data-value"),r=n?parseInt(n,10):i;l(r),e&&e(r)},u=t=>{const n=(null==t?void 0:t.currentTarget.getAttribute("data-type"))===Ds?i+1:i-1;l(n),e&&e(n)};return z.createElement(Ps,null,z.createElement(Js,{"data-type":"MINUS",onClick:u,disabled:1===i},z.createElement("i",{className:"ico ico-chevron-left"})),a.map((e=>z.createElement(Ms,{key:`pagination-${e}`,"data-value":e,onClick:s,active:i===e},e))),z.createElement(Js,{"data-type":Ds,onClick:u,disabled:i===t},z.createElement("i",{className:"ico ico-chevron-right"})))};var Ks=n(6942),qs=n.n(Ks),$s=n(595),eu=n(2680),tu=n(5049);const nu=K.keyframes`
  from {
    transform: rotate(0deg);
  }
  to {
    transform: rotate(360deg);
  }
`,ru=K.default.div`
    margin: 15px auto;
    height: 20px;
    width: 20px;
    ${({imageUrl:e})=>`background-image: url(${e})`};
    animation: ${nu} 3s linear infinite;
`;class iu extends z.Component{constructor(e){super(e)}render(){const{imageServiceConfig:e}=xe();return this.props.isLoading?z.createElement("div",{className:"loading"},z.createElement("div",{className:"loading__backdrop"}),z.createElement("div",{className:"loading__content"},z.createElement(ru,{imageUrl:rt(e,Fo),"data-qe-id":"toast-loading-spinner"}),"loading")):null}}iu.defaultProps={isLoading:!1};const ou=e=>{return n=function*(){const{shopId:t}=e;try{const n=gt(`VipMember/GetVipMemberEmailNotification/${t}`,e,!1),{Data:i,Message:o}=yield Nn(n);return i?{email:(r=i).Email,isEnableEDM:r.IsEnableEDM,isEnableTradesOrder:r.IsEnableTradesOrder,isEnablePriceReduction:r.IsEnablePriceReduction,isEnableECouponExpire:r.IsEnableECouponExpire,isEnableCustomerServerReply:r.IsEnableCustomerServerReply,isEnableEdmSMS:r.IsEnableEdmSMS,isEnableSystemSMS:r.IsEnableSystemSMS,languageType:r.LanguageType}:(ze.error("[ERROR] fetchVipMemberEmailNotification failed: No Data"),Promise.reject(o))}catch(n){return ze.error(`[ERROR] fetchVipMemberEmailNotification failed: ${Me(n)}: ${Je(n)}: shopId: ${t}`),Promise.reject(n)}var r},new Promise(((e,r)=>{var i=e=>{try{a(n.next(e))}catch(t){r(t)}},o=e=>{try{a(n.throw(e))}catch(t){r(t)}},a=t=>t.done?e(t.value):Promise.resolve(t.value).then(i,o);a((n=n.apply(void 0,null)).next())}));var n},au=e=>{return n=[e],r=function*({streamInjection:e,params:t}){const{shopId:n}=e;try{const r=yield ou(e),i={Email:t.email||r.email,IsEnableEDM:t.isEnableEDM||r.isEnableEDM,IsEnableTradesOrder:t.isEnableTradesOrder||r.isEnableTradesOrder,IsEnablePriceReduction:t.isEnablePriceReduction||r.isEnablePriceReduction,IsEnableECouponExpire:t.isEnableECouponExpire||r.isEnableECouponExpire,IsEnableCustomerServerReply:t.isEnableCustomerServerReply||r.isEnableCustomerServerReply,IsEnableEdmSMS:t.isEnableEdmSMS||r.isEnableEdmSMS,IsEnableSystemSMS:t.isEnableSystemSMS||r.isEnableSystemSMS,LanguageType:t.languageType||r.languageType},o=gt(`VipMember/UpdateVipMemberEmailNotification/${n}`,e,!1),a={method:qt.RequestMethod.POST,body:JSON.stringify(i),timeout:{response:6e4,deadline:9e4}};yield Nn(o,a)}catch(r){return ze.error(`[ERROR] updateVipMemberEmailNotification failed: ${Me(r)}: ${Je(r)}: shopId: ${n}`),Promise.reject(r)}},new Promise(((e,i)=>{var o=e=>{try{c(r.next(e))}catch(t){i(t)}},a=e=>{try{c(r.throw(e))}catch(t){i(t)}},c=t=>t.done?e(t.value):Promise.resolve(t.value).then(o,a);c((r=r.apply(void 0,n)).next())}));var n,r};var cu=(e=>(e.AlreadyInCart="AlreadyInCart",e.BackInStockLimit="BackInStockLimit",e.Fail="Fail",e.NoMail="NoMail",e.NotLogin="NotLogin",e))(cu||{});const lu={Fail:Jn.THEME_CORE.TOAST.ADD_TO_CART_FAIL,NotLogin:Jn.THEME_CORE.PRODUCT.BACK_IN_STOCK_NOT_LOGIN,BackInStockLimit:Jn.THEME_CORE.PRODUCT.BACK_IN_STOCK_LIMIT_FIRST,AlreadyInCart:Jn.THEME_CORE.PRODUCT.ALREADY_IN_CART},su=K.default.div`
    display: flex;
    justify-content: center;
    align-items: center;
    padding: 32px 16px;
    font-size: 14px;
    line-height: 150%;
    font-weight: 400;
`,uu=K.default.div`
    line-height: 1.5;
    font-size: 13px;
    border-top: solid 1px ${J.grey};
    padding: 20px 20px 40px 20px;
`,gu=K.default.div``,du=K.default.div`
    margin: 10px 0 30px 0;
    color: ${J.brownishGrey};
`,Iu=K.default.input`
    font-size: 14px;
    box-sizing: border-box;
    width: 100%;
    height: 40px;
    padding: 7px;
    color: ${J.brownishGrey};
    border: solid 1px ${({isError:e})=>e?J.grapefruit:J.grey};
    border-radius: 3px;
    background-color: ${J.white};
`,pu=K.default.span`
    color: ${J.grapefruit};
    display: inline-block;
    margin-right: 3px;
`,bu=K.default.span`
    color: ${J.grapefruit};
`,mu=K.default.div`
    flex-direction: column;
    text-align: center;
    line-height: 1.5;
`,Cu=({modalDialogStatus:e,handleCloseDialog:t,salePageId:n,shopId:r,handleConfirmClick:i,modalDialogMessage:o})=>{const[a,c]=(0,z.useState)(""),[l,s]=(0,z.useState)(!1),[u,g]=(0,z.useState)(""),d=e=>{g(e),s(!0)};return"NoMail"===e?z.createElement(ss,{onModalClick:t,confirmText:(0,ja.t)(Jn.THEME_CORE.PRODUCT.CONFIRM),modalMode:Dl.MEDIUM,handleConfirmClick:()=>(()=>{return n=function*(){if(a)if(wl(a))try{const e=xe(),t=dn(e),n={email:a,isEnablePriceReduction:!0};yield au({streamInjection:t,params:n}),i&&i(ac.STATUS.BACK_IN_STOCK_SUBSCRIBE_SUCCESS)}catch(e){t(),i(ac.STATUS.SYSTEM_ERROR)}else d(Jn.THEME_CORE.PRODUCT.MAIL_FORMAT_ERROR);else d(Jn.THEME_CORE.PRODUCT.REQUIRED)},new Promise(((e,t)=>{var r=r=>{try{o(n.next(r))}catch(e){t(e)}},i=r=>{try{o(n.throw(r))}catch(e){t(e)}},o=t=>t.done?e(t.value):Promise.resolve(t.value).then(r,i);o((n=n.apply(void 0,null)).next())}));var n})(),title:(0,ja.t)(Jn.THEME_CORE.PRODUCT.BACK_IN_STOCK)},z.createElement(uu,null,z.createElement(gu,null,z.createElement(ja.HT,{value:Jn.THEME_CORE.PRODUCT.BACK_IN_STOCK_INPUT_MAIL_FIRST})),z.createElement(gu,null,z.createElement(ja.HT,{value:Jn.THEME_CORE.PRODUCT.BACK_IN_STOCK_INPUT_MAIL_SECOND})),z.createElement(du,null,z.createElement(ja.HT,{value:Jn.THEME_CORE.PRODUCT.BACK_IN_STOCK_INPUT_MAIL_THIRD})),z.createElement("label",{htmlFor:"mail-input"},z.createElement(pu,null,"*"),z.createElement(ja.HT,{value:Jn.THEME_CORE.PRODUCT.MAIL})),z.createElement(Iu,{id:"mail-input",type:"text",maxLength:100,placeholder:(0,ja.t)(Jn.THEME_CORE.PRODUCT.INPUT_MAIL),onChange:e=>{l&&s(!1),c(e.target.value)},value:a,isError:l}),l&&z.createElement(bu,null,z.createElement(ja.HT,{value:u})))):z.createElement(ss,{isShowCloseButton:!1,onModalClick:t,confirmText:(0,ja.t)(Jn.THEME_CORE.PRODUCT.CONFIRM),handleConfirmClick:()=>{if("NotLogin"===e){const e=_c(r);(0,Bn.addCookie)(e,n.toString(),1);const t=encodeURIComponent(window.location.href.replace(window.location.hash,""));window.location.href=`/Login/HttpLoginRelayToHttps/?rt=${t}&reason=notlogin`}"BackInStockLimit"===e&&(window.location.href="/v2/BackInStockAlertList"),i&&i()}},z.createElement(su,null,((e="Fail",t)=>"BackInStockLimit"===e?z.createElement(mu,null,z.createElement("div",null,(0,ja.t)(Jn.THEME_CORE.PRODUCT.BACK_IN_STOCK_LIMIT_FIRST)),z.createElement("div",null,(0,ja.t)(Jn.THEME_CORE.PRODUCT.BACK_IN_STOCK_LIMIT_SECOND))):z.createElement(ja.HT,{value:t||lu[e]||lu.Fail}))(e,o)))},hu=(0,z.createContext)((()=>{ze.error("[ERROR] ModalDialogContext Value not provided")})),Bu=({children:e,shopId:t,salePageId:n})=>{const[r,i]=(0,z.useState)({isOpen:!1});return z.createElement(hu.Provider,{value:i},r.isOpen&&z.createElement(Cu,{handleCloseDialog:r.handleCloseDialog,handleConfirmClick:r.handleConfirmClick,modalDialogMessage:r.modalDialogMessage,salePageId:n,shopId:t,modalDialogStatus:r.modalDialogStatus}),e)},{buttonStyle:Au,generalStyle:yu,tagStyle:fu}=se.A,Gu=K.css`
    color: ${({theme:e})=>{var t;return(null==(t=null==e?void 0:e.buttonStyle)?void 0:t.primaryBtnTextColor)||Au.primaryBtnTextColor}};
    background-color: ${({theme:e})=>{var t;return(null==(t=null==e?void 0:e.buttonStyle)?void 0:t.primaryBtnBgColor)||Au.primaryBtnBgColor}};
`,Qu=K.css`
    display: flex;
    align-items: center;
    justify-content: space-between;
    padding-left: 20px;
    border-radius: 0px;
`,Fu={discountPriceStyle:K.css`
        color: ${({theme:e})=>{var t,n;return(null==(t=null==e?void 0:e.generalStyle)?void 0:t.discountMoneyColor)||(null==(n=null==e?void 0:e.generalStyle)?void 0:n.moneyColor)||yu.discountMoneyColor}};
    `,mainInfoStyle:K.css`
        width: calc(100% - 150px);
        padding-left: 10px;
    `,containerStyle:K.css`
        margin: 0;
    `,titleStyle:K.css`
        color: #000000;
    `,priceStyle:K.css`
        color: ${({theme:e})=>{var t;return(null==(t=null==e?void 0:e.generalStyle)?void 0:t.moneyColor)||yu.moneyColor}};
    `,tagStyle:K.css`
        background-color: ${({theme:e})=>{var t;return(null==(t=null==e?void 0:e.tagStyle)?void 0:t.emphasisTagBgColor)||fu.emphasisTagBgColor}};
        color: ${({theme:e})=>{var t;return(null==(t=null==e?void 0:e.tagStyle)?void 0:t.emphasisTagTextColor)||fu.emphasisTagTextColor}};
    `},vu={customStyle:K.css`
    background-color: #fff;
    border-radius: ${Hi()?"0":"4px"};
    width: auto;
    font-size: 0.8rem;
    padding: 5px 16px;
    margin: 12px 8px 0 0;
    &:hover {
        box-shadow: ${({theme:e})=>{var t;return(null==(t=null==e?void 0:e.buttonStyle)?void 0:t.primaryBtnBgColor)||Au.primaryBtnBgColor}}
            0 0 0 1px;
    }
`,activeStyle:K.css`
    ${Gu};
    box-shadow: ${({theme:e})=>{var t;return(null==(t=null==e?void 0:e.buttonStyle)?void 0:t.primaryBtnBgColor)||Au.primaryBtnBgColor}}
        0 0 0 1px;
    width: auto;
    border-radius: ${Hi()?"0":"4px"};
    padding: 5px 16px;
    margin: 12px 8px 0 0;
`,disabledStyle:K.css`
    border-radius: ${Hi()?"0":"4px"};
    background-color: #f6f6f6;
    color: #979797;
    width: auto;
    padding: 5px 16px;
    margin: 12px 8px 0 0;
`,titleStyle:K.css`
        color: #000000;
        font-weight: 400;
    `},Zu={customStyle:K.css`
    background-color: #fff;
    border-radius: ${Hi()?"0":"4px"};
    padding: 5px 16px;
    &:hover {
        box-shadow: ${({theme:e})=>{var t;return(null==(t=null==e?void 0:e.buttonStyle)?void 0:t.primaryBtnBgColor)||Au.primaryBtnBgColor}}
            0 0 0 1px;
    }
`,activeStyle:K.css`
    ${Gu};
    border-radius: ${Hi()?"0":"4px"};
    padding: 5px 16px;
    box-shadow: none;
`,titleStyle:K.css`
        color: #000000;
        font-weight: 400;
    `,subTitleStyle:K.css`
        color: #ff5353;
        display: flex;
    `},Eu={minusButtonStyle:K.css`
    color: ${({theme:e})=>{var t;return(null==(t=null==e?void 0:e.buttonStyle)?void 0:t.primaryBtnBgColor)||Au.primaryBtnBgColor}};
    background: none;
    font-size: 1rem;
`,plusButtonStyle:K.css`
    color: ${({theme:e})=>{var t;return(null==(t=null==e?void 0:e.buttonStyle)?void 0:t.primaryBtnBgColor)||Au.primaryBtnBgColor}};
    background: none;
    font-size: 1rem;
`,disabledButtonStyle:K.css`
    color: #aaa;
    background: none;
    font-size: 1rem;

    &:hover {
        cursor: not-allowed !important;
    }
`,containerStyle:K.css`
    height: 100%;
    line-height: 42px;
    justify-content: center;
    width: 100%;
    justify-content: space-evenly;
`,inputStyle:K.css`
        color: #000000;
    `,inputBoxStyle:K.css`
        width: 30%;
    `},Su=K.css`
    flex-direction: column;
    width: calc(50% - 20px);
`,Xu={bottomStyle:K.css`
    box-shadow: none;
    border-top: 1px solid #dddddd;
    justify-content: space-between;
`,contentStyle:K.css`
    margin-bottom: 16px;
    padding: 0 16px;
`,topStyle:K.css`
    border-bottom: none;
    height: auto;
    padding: 16px;
`},Tu=K.css`
    ${Gu};
    border-radius: 4px;
    ${Hi()&&Qu};
    height: 40px;
    width: 50%;
    font-size: 0.8rem;
    &:hover {
        background-color: ${({theme:e})=>{var t;return Ha(.1,(null==(t=null==e?void 0:e.buttonStyle)?void 0:t.primaryBtnBgColor)||Au.primaryBtnBgColor)}};
    }
`,xu=K.css`
    border: 1px solid
        ${e=>{var t,n;return(null==(n=null==(t=e.theme)?void 0:t.buttonStyle)?void 0:n.secondBtnBorderColor)||Au.secondBtnBorderColor}};
    border-radius: 4px;
    ${Hi()&&Qu};
    height: 40px;
    width: 50%;
    font-size: 0.8rem;
    color: ${({theme:e})=>{var t;return(null==(t=null==e?void 0:e.buttonStyle)?void 0:t.secondBtnTextColor)||Au.secondBtnTextColor}};
    background-color: ${({theme:e})=>{var t;return(null==(t=null==e?void 0:e.buttonStyle)?void 0:t.secondBtnBgColor)||Au.secondBtnBgColor}};
    &:hover {
        background-color: ${({theme:e})=>{var t;return(null==(t=null==e?void 0:e.buttonStyle)?void 0:t.secondBtnBorderColor)||Au.secondBtnBorderColor}};
        color: ${({theme:e})=>{var t;return(null==(t=null==e?void 0:e.buttonStyle)?void 0:t.secondBtnBgColor)||Au.secondBtnBgColor}};
    }
`,Uu=K.css`
    background-color: ${Hi()?"#c8cbcc":"#cccccc"};
    ${Hi()&&Qu};
    color: #ffffff;
    height: 40px;
    width: 50%;
    font-size: 0.8rem;
    pointer-events: none;
`,Nu={productInfoStyle:Fu,skuListStyle:vu,purchaseMethodStyle:Zu,qtySelectorStyle:Eu,qtySelectorSectionStyle:Su},Ru=(0,z.createContext)({salePageId:0,currentProductInfo:{id:-1,name:"",price:-1,suggestPrice:-1,categoryId:-1,salePageCode:""},setSalePageId:e=>{},setCurrentProductInfo:e=>{}}),Ou=({children:e})=>{const[t,n]=(0,z.useState)(0),[r,i]=(0,z.useState)({id:-1,name:"",price:-1,suggestPrice:-1,categoryId:-1,salePageCode:""}),o=(0,z.useMemo)((()=>({salePageId:t,currentProductInfo:r,setSalePageId:n,setCurrentProductInfo:i})),[t,r]);return z.createElement(Ru.Provider,{value:o},e)};var Vu=n(5556);class Wu extends z.Component{constructor(e){super(e),this.successClass="ico ico-success toast__icon--success",this.warningClass="ico ico-notice toast__icon--warning",this.changeIconHandle=e=>{let t="";return"success"===e?t=this.successClass:"warning"===e&&(t=this.warningClass),t},this.state={isOpen:this.props.isOpen,animationDelay:"0s"}}UNSAFE_componentWillReceiveProps(e){if(e.isOpen&&this.state.isOpen!==e.isOpen){this.setState({isOpen:!0});const t=e.delay>1e3?(e.delay-1e3)/1e3+"s":"1s";this.setState({animationDelay:t}),setTimeout((()=>{this.setState({isOpen:!1}),this.props.afterClose&&this.props.afterClose()}),this.props.delay)}}render(){return z.createElement("div",{className:qs()("toast")},this.state.isOpen&&z.createElement("div",{className:qs()("toast--backdrop",{"toast--fade-out":this.props.isOpen}),style:{animationDelay:this.state.animationDelay}}),this.state.isOpen&&z.createElement("div",{className:qs()("toast--default",this.props.customCssClass||"",{"toast--fade-out":this.props.isOpen}),style:{animationDelay:this.state.animationDelay}},this.props.message&&z.createElement("div",{className:"toast--content"},this.props.type&&z.createElement("i",{className:qs()("toast__icon",this.changeIconHandle(this.props.type))}),z.createElement("div",{className:"toast--content-text"},this.props.message))))}}Wu.defaultProps={isOpen:!1,customCssClass:"",afterClose:()=>{},type:"",message:"",delay:2500},Wu.propTypes={isOpen:Vu.bool,customCssClass:Vu.string,afterClose:Vu.func,type:Vu.string,message:Vu.string,delay:Vu.number};const _u=(0,z.createContext)((()=>{ze.error("[ERROR] ToastContext value not provided")})),wu=({children:e})=>{const[t,n]=(0,z.useState)({});return j().createElement(_u.Provider,{value:n},j().createElement(Wu,{isOpen:t.isOpen,type:t.type,status:t.status,message:t.message,afterClose:()=>{n({isOpen:!1}),"function"==typeof t.afterClose&&t.afterClose()},delay:t.delay,customCssClass:t.customCssClass}),e)};Object.defineProperty,Object.defineProperties,Object.getOwnPropertyDescriptors,Object.getOwnPropertySymbols,Object.prototype.hasOwnProperty,Object.prototype.propertyIsEnumerable;var Hu=(e,t,n)=>new Promise(((r,i)=>{var o=e=>{try{c(n.next(e))}catch(t){i(t)}},a=e=>{try{c(n.throw(e))}catch(t){i(t)}},c=e=>e.done?r(e.value):Promise.resolve(e.value).then(o,a);c((n=n.apply(e,t)).next())})),Yu=(e=>(e.Success="API5101",e.SoldOut="API5102",e.NotOnSale="API5103",e.MaxSalePageCountLimitExceeded="API5104",e.MemberInBlackList="API5105",e.HundredTotalQtyLimitExceeded="API5106",e.SalePageIncorrect="API5107",e.AppVersionNotSupport="API5108",e.Error="API5109",e.IsExpress="API5110",e.QuantityFormatError="API5111",e.BundleLimitExceeded="API5113",e))(Yu||{});const ku=(e,t)=>({executeResultMsg:{type:"API5101"===t.ReturnCode?"success":"warning",skuId:e,message:t.Message}}),Du=e=>Hu(void 0,[e],(function*({isSkuQtyAccumulate:e=!1,streamInjection:t,payload:n}){const{shopId:r}=t,{salePageId:i,quantity:o,skuId:a,optionalTypeId:c,optionalTypeDef:l}=n;try{const n=gt("ShoppingCartV4/InsertItem",t,!1),s={method:qt.RequestMethod.POST,body:JSON.stringify({shopId:r,salePageId:i,qty:o,saleProductSKUId:a,OptionalTypeId:c,OptionalTypeDef:l,IsSkuQtyAccumulate:e,optionalInfo:null})},u=yield Nn(n,s);return"API5101"!==(null==u?void 0:u.ReturnCode)?Promise.reject(u):ku(a,u)}catch(s){return ze.error(`[ERROR] addShoppingCartItem failed: ${Me(s)}: ${Je(s)}: shopId: ${r}, payload: ${JSON.stringify(n)}`),Promise.reject(s)}})),Lu=e=>Hu(void 0,null,(function*(){const{streamInjection:t,payload:n}=e,{shopId:r}=t;try{const e=gt("ShoppingCartV4/InsertItem",t,!1),r={method:qt.RequestMethod.POST,body:JSON.stringify(n)},i=yield Nn(e,r);return"API5101"!==(null==i?void 0:i.ReturnCode)?Promise.reject(i):i}catch(i){return ze.error(`[ERROR] addShoppingCartBundleItem failed: ${Me(i)}: ${Je(i)}: shopId: ${r}, payload: ${JSON.stringify(n)}`),Promise.reject(i)}}));var Pu=n(9057);const Ju="46px",Mu=K.default.div`
    height: 100vh;
    height: 100svh;
    overflow: hidden;
`,zu=K.default.div`
    height: ${Ju};
    display: flex;
    align-items: center;
    box-sizing: border-box;
    padding: ${16}px ${16}px 0px ${16}px;
`,ju=K.default.div`
    height: calc(100vh - ${Ju});
    height: calc(100svh - ${Ju});
`,Ku=K.default.div`
    width: 20px;
    height: 20px;
    display: flex;
    justify-content: center;
    align-items: center;
    cursor: pointer;
    ${({isShow:e})=>e?"":"visibility: hidden; pointer-events: none;"}
`,qu=K.default.div`
    flex-grow: 1;
    text-align: center;
    min-width: 1px;
`,$u=({handleBackwardButtonClick:e,handleCloseButtonClick:t,title:n,children:r})=>{const i="function"==typeof e,o="function"==typeof t;return j().createElement(Mu,null,j().createElement(zu,null,j().createElement(Ku,{isShow:i,className:"ico ico-chevron-left",onClick:e}),j().createElement(qu,null,n),j().createElement(Ku,{isShow:o,className:"ico ico-close",onClick:t})),j().createElement(ju,null,r))},eg=({children:e})=>j().createElement(Mu,null,e),tg=({browsingMode:e,children:t,onModalClick:n,title:r,modalMode:i=Dl.MEDIUM,isFullScreenSheet:o=!1,isShowHeader:a,handleCloseButtonClick:c,handleBackwardButtonClick:l})=>e===P.DESKTOP?j().createElement(ss,{onModalClick:n,modalMode:i,title:r,isShowHeader:a,handleCloseButtonClick:c,handleBackwardButtonClick:l},t):j().createElement(Gs,{onModalClick:n,title:r,isFullScreen:o,isShowHeader:a,handleCloseButtonClick:c,handleBackwardButtonClick:l},t);var ng=n(2838),rg=n.n(ng);const ig=K.default.div`
    width: 100%;
    height: 100%;
    overflow: auto;
`,og=K.default.div`
    padding: 15px;

    * {
        all: revert;
    }
`,ag=(0,z.createContext)((()=>ze.error("[ERROR] SpecChartModalContext value not provided"))),cg=({browsingMode:e,title:t,content:n,afterCloseSpecChartModal:r,children:i,modalMode:o})=>{const[a,c]=(0,z.useState)(!1);return j().createElement(ag.Provider,{value:c},i,a&&j().createElement(tg,{browsingMode:e,title:t,isFullScreenSheet:!0,handleCloseButtonClick:function(){c(!1),"function"==typeof r&&r()},onModalClick:function(e){e.target===e.currentTarget&&(c(!1),"function"==typeof r&&r())},modalMode:o},j().createElement(ig,null,j().createElement(og,{className:"jodit-default",dangerouslySetInnerHTML:{__html:rg().sanitize(n)}}))))};var lg=n(9324);const sg={revalidateIfStale:!1,revalidateOnFocus:!1,revalidateOnReconnect:!1,revalidateOnMount:!0,dedupingInterval:500,shouldRetryOnError:!1},ug=({children:e})=>j().createElement(lg.BE,{value:sg},e),gg=$t.P5;var dg=n(6449),Ig=(e=>(e.SPECIAL_PRICE_FRONTEND_SORT="specialPriceFrontendSort",e))(Ig||{});const pg=e=>{return n=[e],r=function*({shopId:e,key:t}){try{const n=`/cms/api/config/${t}?shopId=${e}`,r={method:qt.RequestMethod.GET};return yield Nn(n,r)}catch(n){return ze.error(`[ERROR] fetchCmsS3ConfigStream failed: ${Me(n)}: ${Je(n)}: shopId: ${e}, key: ${t}`),null}},new Promise(((e,i)=>{var o=e=>{try{c(r.next(e))}catch(t){i(t)}},a=e=>{try{c(r.throw(e))}catch(t){i(t)}},c=t=>t.done?e(t.value):Promise.resolve(t.value).then(o,a);c((r=r.apply(void 0,n)).next())}));var n,r},bg=e=>{return n=[e],r=function*({shopId:e}){try{const t=`${It()}/salepage-listing/api/recommendation/setting-get/${e}/jooii`,n={method:qt.RequestMethod.GET,timeout:{response:3e3,deadline:8e3}},{data:r}=yield Nn(t,n);return Promise.resolve(!!(null==r?void 0:r.is_active))}catch(t){return ze.error(`[ERROR] fetchJooiiBapiStatus failed: ${Me(t)}: ${Je(t)}. shopId: ${e}`),Promise.resolve(!1)}},new Promise(((e,i)=>{var o=e=>{try{c(r.next(e))}catch(t){i(t)}},a=e=>{try{c(r.throw(e))}catch(t){i(t)}},c=t=>t.done?e(t.value):Promise.resolve(t.value).then(o,a);c((r=r.apply(void 0,n)).next())}));var n,r},mg=(e=[])=>e.map((e=>{const{TypeDef:t,TypeDefDesc:n}=e;return{typeId:t,typeName:n}})),Cg=e=>{return n=function*(){try{const{shopId:t}=e,n=gt(`SearchV2/GetShopPayTypeAndShippingTypeList?shopId=${t}`,e,!0);return(e=>{const{PayTypeList:t,ShippingTypeList:n}=(null==e?void 0:e.Data)||{};return{payTypeList:mg(t),shippingTypeList:mg(n)}})(yield Nn(n))}catch(t){return Promise.reject(t)}},new Promise(((e,r)=>{var i=e=>{try{a(n.next(e))}catch(t){r(t)}},o=e=>{try{a(n.throw(e))}catch(t){r(t)}},a=t=>t.done?e(t.value):Promise.resolve(t.value).then(i,o);a((n=n.apply(void 0,null)).next())}));var n};var hg=(e,t,n)=>new Promise(((r,i)=>{var o=e=>{try{c(n.next(e))}catch(t){i(t)}},a=e=>{try{c(n.throw(e))}catch(t){i(t)}},c=e=>e.done?r(e.value):Promise.resolve(e.value).then(o,a);c((n=n.apply(e,t)).next())}));const Bg=e=>hg(void 0,null,(function*(){const{shopId:t}=e,n=gt(`Shop/GetShopCategoryListV3/${t}`,e,!0);return yield Nn(n)})),Ag=(e,t)=>hg(void 0,null,(function*(){const{shopId:n}=e,r=gt(`ShopCategory/GetShopCategoryTreeListByLevel/${n}?locationId=${t}&isRetailStoreExpress=${!!t}`,e,!0);return(yield Nn(r)).Data})),yg=(e,t,n,r=0)=>hg(void 0,null,(function*(){var i,o,a,c,l;const{shopId:s}=e,u=gt(`ShopCategory/GetShopCategoryTreeByShopCategoryId/${s}/${t}?locationId=${r}&isRetailStoreExpress=${!!r}`,e,!0),g=gt(`ShopCategory/GetShopCategoryTreeListByLevel/${s}?level=2&locationId=${r}&isRetailStoreExpress=${!!r}`,e,!0);if(n){const e=yield Nn(u);return{breadcrumbList:(null==(i=null==e?void 0:e.Data)?void 0:i.Breadcrumb)||[],categoryId:t,singleTree:(null==(o=null==e?void 0:e.Data)?void 0:o.Tree)||null}}const d=yield Nn(g),I=yield Nn(u);return{breadcrumbList:(null==(a=null==I?void 0:I.Data)?void 0:a.Breadcrumb)||[],allTreeWithLevel1AndLevel2List:(null==(c=null==d?void 0:d.Data)?void 0:c.List)||[],singleTree:(null==(l=null==I?void 0:I.Data)?void 0:l.Tree)||null,categoryId:t||0}})),fg=e=>hg(void 0,[e],(function*({streamInjection:e,payload:t}){const{shopId:n}=e,{serviceType:r,locationId:i}=t,o=gt(`Shop/GetShopCategoryListV3/${n}?serviceType=${r}&locationId=${i}`,e,!0);return yield Nn(o)})),Gg=(e,t=0)=>{return r=function*(){const{shopId:n}=e,r=gt(`ShoppingCartV2/GetCount?locationId=${t}`,e,!1),i={method:qt.RequestMethod.POST,body:JSON.stringify({shopId:n})};return yield Nn(r,i)},new Promise(((e,t)=>{var i=e=>{try{a(r.next(e))}catch(n){t(n)}},o=e=>{try{a(r.throw(e))}catch(n){t(n)}},a=t=>t.done?e(t.value):Promise.resolve(t.value).then(i,o);a((r=r.apply(void 0,null)).next())}));var r},Qg=e=>{return n=function*(){try{const t=`/cms/api/smartTag/setting/${e}`,n={method:qt.RequestMethod.GET};return yield Nn(t,n)}catch(t){return ze.error(`[ERROR] fetchSmartTagSettingStream error: ${Me(t)}: ${Je(t)}, shopId: ${e}`),Promise.reject(t)}},new Promise(((e,r)=>{var i=e=>{try{a(n.next(e))}catch(t){r(t)}},o=e=>{try{a(n.throw(e))}catch(t){r(t)}},a=t=>t.done?e(t.value):Promise.resolve(t.value).then(i,o);a((n=n.apply(void 0,null)).next())}));var n};var Fg=(e,t,n)=>new Promise(((r,i)=>{var o=e=>{try{c(n.next(e))}catch(t){i(t)}},a=e=>{try{c(n.throw(e))}catch(t){i(t)}},c=e=>e.done?r(e.value):Promise.resolve(e.value).then(o,a);c((n=n.apply(e,t)).next())}));const vg=(e,t)=>Fg(void 0,null,(function*(){try{const{shopId:n,locale:r}=e,i=`${It()}/salepage-listing/api/salepage/additional-info/${n}/${t}?lang=${r}`,o={method:qt.RequestMethod.GET,timeout:{response:3e3,deadline:4e3}},{data:a}=yield Nn(i,o);return(e=>({restrictedPurchaseInfoList:(e.promotionInfoList||[]).filter((e=>"RestrictedPurchasesByMember"===e.promotionType)).sort(((e,t)=>t.id-e.id)),specChartData:(null==e?void 0:e.specChartData)||null}))(a)}catch(n){const{shopId:r}=e;throw ze.error(`[ERROR] fetchSalePageAdditionalInfo error: ${Je(n)}, shopId: ${r}`),n}}));var Zg=n(4225),Eg=n(3616),Sg=Object.defineProperty,Xg=Object.defineProperties,Tg=Object.getOwnPropertyDescriptors,xg=Object.getOwnPropertySymbols,Ug=Object.prototype.hasOwnProperty,Ng=Object.prototype.propertyIsEnumerable,Rg=(e,t,n)=>t in e?Sg(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n;function Og(e){return Number.isInteger(e)&&e>0}function Vg(e){return Array.isArray(e)?e:[]}var Wg=Object.getOwnPropertySymbols,_g=Object.prototype.hasOwnProperty,wg=Object.prototype.propertyIsEnumerable;function Hg(e){const{salePageId:t,withFetcher:n}=e;return(0,Zg.A)((()=>Og(t)?`salepage-listing/api/salepage/additional-info/${t}`:null),n?()=>{const e=xe(),n=dn(e);return vg(n,t)}:void 0)}var Yg=Object.defineProperty,kg=Object.defineProperties,Dg=Object.getOwnPropertyDescriptors,Lg=Object.getOwnPropertySymbols,Pg=Object.prototype.hasOwnProperty,Jg=Object.prototype.propertyIsEnumerable,Mg=(e,t,n)=>t in e?Yg(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,zg=(e,t)=>{for(var n in t||(t={}))Pg.call(t,n)&&Mg(e,n,t[n]);if(Lg)for(var n of Lg(t))Jg.call(t,n)&&Mg(e,n,t[n]);return e},jg=(e,t)=>kg(e,Dg(t)),Kg=(e,t,n)=>new Promise(((r,i)=>{var o=e=>{try{c(n.next(e))}catch(t){i(t)}},a=e=>{try{c(n.throw(e))}catch(t){i(t)}},c=e=>e.done?r(e.value):Promise.resolve(e.value).then(o,a);c((n=n.apply(e,t)).next())}));const qg={OutOfStock:Jn.THEME_CORE.PRODUCT.SOLD_OUT,Restock:Jn.THEME_CORE.PRODUCT.RESTOCK,NoRestock:Jn.THEME_CORE.PRODUCT.NO_RESTOCK,BackInStockAlert:Jn.THEME_CORE.PRODUCT.BACK_IN_STOCK},$g={AddBackInStock:Jn.THEME_CORE.PRODUCT.ADD_BACK_IN_STOCK,CancelBackInStock:Jn.THEME_CORE.PRODUCT.CANCEL_BACK_IN_STOCK};var ed=(e=>(e[e.Accumulate=0]="Accumulate",e[e.Overwrite=1]="Overwrite",e))(ed||{});const td={[Mn.AppOnly]:Mn.AppOnly,[Mn.ShareToBuy]:Mn.ShareToBuy,[Mn.Normal]:Mn.Normal},nd=K.default.span`
    font-size: 13px;
    color: #ff5353;
`,rd=e=>z.createElement(nd,null,z.createElement(ja.HT,{value:Jn.THEME_CORE.PRODUCT.LIMIT_MAX_VALUE_MSG,maxValue:e})),id=({maxQuantity:e})=>z.createElement(nd,null,z.createElement(ja.HT,{value:Jn.THEME_CORE.PRODUCT.LIMIT_MAX_VALUE_MSG,maxValue:e})),od=({status:e,customButtonDisplayText:t,isEnableBackInStock:n,salePageBundleInfo:r})=>r&&Vg(r.bundleBlocks).some((e=>e.salepageScopes[0].isSoldout||new Date(e.salepageScopes[0].sellingStartDateTime)>new Date||new Date(e.salepageScopes[0].sellingEndDateTime)<new Date||e.salepageScopes[0].isClosed||e.salepageScopes[0].hasSku&&0===e.salepageScopes[0].skuInfo.length))?{text:(0,ja.t)(zn[Mn.SubSalePageCanNotBuy]),disabled:!0}:e===Mn.SoldOut&&n?{text:(0,ja.t)($g.AddBackInStock),disabled:!1}:e===Mn.Normal&&t?{text:t,disabled:!1}:{text:(0,ja.t)(zn[e]||zn.Normal),disabled:jn[e]||!1},ad=(e,t)=>e.some((e=>e.skuId===t)),cd=e=>(null==e?void 0:e.StatusDef)===Mn.AppOnly||(null==e?void 0:e.StatusDef)===Mn.ShareToBuy,ld=e=>cd(e)?K.css`
              display: none;
              & + * {
                  width: 100%;
              }
          `:Nu.qtySelectorSectionStyle,sd=e=>{const{bottomStyle:t}=Xu,n=String(t);return jg(zg({},Xu),{bottomStyle:cd(e)?K.css`
                  ${n}
                  justify-content: center;
              `:t})},ud=e=>{var t,n,r;const{shopId:i,salePageId:o,salePageCode:a,isAddOnsItem:c,displayMode:l,browsingMode:s}=e,u=(0,z.useRef)();(0,z.useEffect)((()=>{u.current=new tu.Ay}),[]);const g=(0,z.useContext)(_u),{data:d,isMutating:I,trigger:p,reset:b}=function(e){const t=e,{onSuccess:n,onError:r}=t,i=((e,t)=>{var n={};for(var r in e)_g.call(e,r)&&t.indexOf(r)<0&&(n[r]=e[r]);if(null!=e&&Wg)for(var r of Wg(e))t.indexOf(r)<0&&wg.call(e,r)&&(n[r]=e[r]);return n})(t,["onSuccess","onError"]),{salePageId:o,salePageCode:a}=i;return(0,Eg.A)((()=>Og(o)||a?`Sku/GetSkuPopupInfo/MainSalePage/${o}/${a}`:null),(()=>{const e=xe(),t=dn(e);return Pn({streamInjection:t,payload:i})}),{populateCache:!0,throwOnError:!1,onSuccess:n,onError:r})}({salePageId:o,salePageCode:a,forbidStatusChange:c,onSuccess:e=>{e.StatusDef===Mn.NoStart&&G({status:ac.STATUS.NO_START,afterClose:Q})},onError:()=>{if(An()&&u.current&&"page"===l){const e="useFetchMainSalePageInfo";u.current.showPopup({requestCode:e,showPopupData:{title:"",message:"無法載入商品資訊，請稍後再試",buttonA:{text:"重新整理",data:null},buttonB:null}}).then((()=>{Q(),location.reload()})).catch((t=>ze.error(`[ERROR] ${e} jsi showPopup: ${Me(t)} ${Je(t)}`)))}else G({status:ac.STATUS.SYSTEM_ERROR,afterClose:Q})}}),{data:m,mutate:C}=Hg({salePageId:o,withFetcher:!0}),{data:h,mutate:B}=function(e){const{shopId:t,specChartId:n,specChartVersion:r,withFetcher:i}=e;return(0,Zg.A)((()=>"number"==typeof t&&"number"==typeof n&&"string"==typeof r?`salepage-listing/api/salepage/spec-chart/${t}/${n}/${r}`:null),i?()=>{const e=xe();return((e,t,n)=>Fg(void 0,null,(function*(){try{const{shopId:r,locale:i}=e;if("number"!=typeof r)return"";if("number"!=typeof t)return"";if("string"!=typeof n)return"";const o=`${It()}/salepage-listing/api/salepage/spec-chart/${r}/${t}?t=${n}&lang=${i}`,a={method:qt.RequestMethod.GET,timeout:{response:3e3,deadline:4e3}},{data:c}=yield Nn(o,a),{content:l=""}=c;return l}catch(r){return ze.error(`[ERROR] getSalePageSpecChart error: ${Je(r)}, shopId: ${null==e?void 0:e.shopId}`),Promise.reject(r)}})))(dn(e),n,r)}:void 0)}({shopId:i,specChartId:null==(t=null==m?void 0:m.specChartData)?void 0:t.specChartId,specChartVersion:null==(n=null==m?void 0:m.specChartData)?void 0:n.specChartVersion,withFetcher:!0}),A=null==(r=null==m?void 0:m.specChartData)?void 0:r.title,y=(0,z.useCallback)((()=>{An()&&u.current&&u.current.setAppHeaderIcon({ios:{eventType:tu.AH.HeaderBackAction,data:{icon:"Nothing",action:"JsiBack"}},android:{eventType:tu.AH.HeaderBackAction,data:{icon:"Nothing",action:"JsiBack"}}})}),[]),f=(0,z.useCallback)((()=>{An()&&u.current&&u.current.setAppHeaderIcon({ios:{eventType:tu.AH.HeaderBackAction,data:{icon:"Close",action:"JsiBack"}},android:{eventType:tu.AH.HeaderBackAction,data:{icon:"Back",action:"JsiBack"}}})}),[]),G=(0,z.useCallback)((e=>{const{status:t,afterClose:n}=e,r=lc(t);r&&g({isOpen:!0,message:r.message,type:r.type,status:r.status,afterClose:n})}),[g]);function Q(){C(void 0,{revalidate:!1}),B(void 0,{revalidate:!1}),"function"==typeof e.afterClose&&e.afterClose()}(0,z.useEffect)((()=>{Og(o)&&(b(),p())}),[o,a,c]);const F=Boolean(!I&&d&&(null==d?void 0:d.StatusDef)!==Mn.NoStart);return z.createElement(cg,{browsingMode:"page"===l?P.MOBILE:s,title:A,content:h,afterCloseSpecChartModal:f,modalMode:(null==d?void 0:d.IsSalePageBundle)?Dl.EXLARGE:Dl.MEDIUM},F&&(null==d?void 0:d.IsSalePageBundle)&&z.createElement(dd,{shopId:e.shopId,displayMode:e.displayMode,salePageCode:a,salePageId:o,rate:e.rate,decimal:e.decimal,symbol:e.symbol,isPriceOnTop:e.isPriceOnTop,isSuggestPriceShowPrice:e.isSuggestPriceShowPrice,isEnableOriginalPrice:e.isEnableOriginalPrice,customButtonDisplayText:e.customButtonDisplayText,afterSuccess:e.afterSuccess,afterClose:Q,browsingMode:e.browsingMode,facebook:e.facebook,handleRedirectDeepLink:e.handleRedirectDeepLink,isEnableAddShoppingCartItem:e.isEnableAddShoppingCartItem,skuQtyMode:e.skuQtyMode,handleOpenSpecChartJSIEvent:y,handleToastStatus:G}),F&&!(null==d?void 0:d.IsSalePageBundle)&&z.createElement(gd,{afterClose:Q,afterSuccess:e.afterSuccess,browsingMode:e.browsingMode,decimal:e.decimal,facebook:e.facebook,handleAddQuantity:e.handleAddQuantity,handleRedirectDeepLink:e.handleRedirectDeepLink,handleRemoveQuantity:e.handleRemoveQuantity,isEnableAddShoppingCartItem:e.isEnableAddShoppingCartItem,isEnablePurchaseMethod:e.isEnablePurchaseMethod,isPriceOnTop:e.isPriceOnTop,isSuggestPriceShowPrice:e.isSuggestPriceShowPrice,isEnableSpecialPrice:e.isEnableSpecialPrice,rate:e.rate,salePageId:o,shopId:e.shopId,symbol:e.symbol,customButtonDisplayText:e.customButtonDisplayText,isEnableBackInStockFeature:e.isEnableBackInStockFeature,skuQtyMode:e.skuQtyMode,enableSkuList:e.enableSkuList,isEnablePointPayOption:e.isEnablePointPayOption,isEnableOriginalPrice:e.isEnableOriginalPrice,displayMode:e.displayMode,salePageInfo:d,salePageSpecChartData:null==m?void 0:m.specChartData,handleOpenSpecChartJSIEvent:y}),z.createElement(iu,{isLoading:I}))},gd=({afterClose:e,afterSuccess:t,browsingMode:n,decimal:r,facebook:i,handleAddQuantity:o,handleRedirectDeepLink:a,handleRemoveQuantity:c,isEnableAddShoppingCartItem:l=!0,isEnablePurchaseMethod:s=!0,isPriceOnTop:u=!1,isSuggestPriceShowPrice:g=!1,isEnableSpecialPrice:d=!0,rate:I,salePageId:p,shopId:b,symbol:m,customButtonDisplayText:C,isEnableBackInStockFeature:h=!0,skuQtyMode:B,enableSkuList:A=[],isEnablePointPayOption:y=!0,isEnableOriginalPrice:f=!0,displayMode:G,salePageInfo:Q,salePageSpecChartData:F,handleOpenSpecChartJSIEvent:v})=>{const Z=(0,z.useContext)(ag),[E,S]=(0,z.useState)(!1),[X,T]=(0,z.useState)(!1),[x,U]=(0,z.useState)(!1),[N,R]=(0,z.useState)(!1),[O,V]=(0,z.useState)(""),[W,_]=(0,z.useState)(""),[w,H]=(0,z.useState)(""),[Y,k]=(0,z.useState)(null),[D,L]=(0,z.useState)(""),[J,j]=(0,z.useState)(""),[K,q]=(0,z.useState)(null),[$,ee]=(0,z.useState)([]),[te,ne]=(0,z.useState)([]),[re,ie]=(0,z.useState)(!1),[oe,ae]=(0,z.useState)(null),[ce,le]=(0,z.useState)(!1),[se,ue]=(0,z.useState)(!1),{currentProductInfo:ge,setCurrentProductInfo:de}=(0,z.useContext)(Ru),Ie=0===B,pe=(0,Qs.useSelector)((e=>e.user.memberCollectionIdList)),be=Nt.concat(pe||[]),[me,Ce]=(0,z.useState)([]),[he,Be]=(0,z.useState)(null),[Ae,ye]=(0,z.useState)([]),fe=({isOpenModal:e})=>{T((()=>(document.body.style.overflowY=e?"hidden":null,e)))},Ge=(0,z.useMemo)((()=>se?{customStyle:Uu}:{customStyle:ce?xu:Tu,disabledStyle:Uu}),[se,ce]),Qe=()=>{fe({isOpenModal:!1}),S(!1),q(null),le(!1),e&&e()},Fe=e=>{const t=lc(e);t&&(U(!0),H(t.message),V(t.type),_(t.status))},ve=e=>Kg(void 0,null,(function*(){S(!0);const n=xe(),r=dn(n);try{yield Du({streamInjection:r,payload:e,isSkuQtyAccumulate:Ie}),t&&t(e),Qe(),Fe(ac.STATUS.ADD_SUCCESS)}catch(i){if((null==i?void 0:i.ReturnCode)||ze.error(`[ERROR] handleAddShoppingCartItem error: ${Me(i)}: ${Je(i)}`),Qe(),i===cu.AlreadyInCart)return void k(cu.AlreadyInCart);k(cu.Fail),L((null==i?void 0:i.Message)||""),R(!0)}})),Ze=e=>Kg(void 0,[e],(function*({isEnablePriceReduction:e,productInfo:t}){try{const n=xe(),r=dn(n);if(!e){const e={isEnablePriceReduction:!0};yield au({streamInjection:r,params:e})}yield(e=>{return n=[e],r=function*({streamInjection:e,payload:t}){const{shopId:n,locale:r,apiConfig:i}=e,{ftsHost:o}=i,{salePageId:a,skuId:c}=t;try{const e=(0,Bn.getCookie)("MID"),t=`${o}/user/backInStock/subscribeProductSku/${n}`,i={method:qt.RequestMethod.POST,headers:{"NY-MID":e},body:JSON.stringify({shopId:n,salePageId:a,skuIdList:[c],lang:r})};yield Nn(t,i)}catch(l){return ze.error(`[ERROR] subscribeProductSku failed: ${Me(l)}: ${Je(l)}: shopId: ${n}, salePageId: ${a}, skuId: ${c}`),Promise.reject(l)}},new Promise(((e,i)=>{var o=e=>{try{c(r.next(e))}catch(t){i(t)}},a=e=>{try{c(r.throw(e))}catch(t){i(t)}},c=t=>t.done?e(t.value):Promise.resolve(t.value).then(o,a);c((r=r.apply(void 0,n)).next())}));var n,r})({streamInjection:r,payload:t}),Gl({contentType:"BackInStockAlert",id:null==t?void 0:t.skuId.toString(),name:"貨到通知我",linkUrl:""}),fl(Kc(),"click","BackInStockAlert"),Qe(),Fe(ac.STATUS.BACK_IN_STOCK_SUBSCRIBE_SUCCESS)}catch(n){Qe(),Fe(ac.STATUS.SYSTEM_ERROR)}})),Ee=(0,Qs.useSelector)((e=>e.globalStyleData))||{};(0,z.useEffect)((()=>{const e=e=>Kg(void 0,null,(function*(){try{const t=xe(),r=dn(t),i=(0,M.cloneDeep)(Q);(null==i?void 0:i.CategoryId)!==(null==ge?void 0:ge.categoryId)&&de(jg(zg({},ge),{categoryId:i.CategoryId||-1}));let o=(null==i?void 0:i.SKUPropertySetList.map((e=>e.SaleProductSKUId)))||[];const a=new Map(A.map((e=>[e.skuId,e])));A&&A.length>0&&(o=o.filter((e=>a.has(e))));let c=yield(e=>{return n=[e],r=function*({streamInjection:e,payload:t}){try{const n=gt("ProductStock/GetSellingQtyListNew",e,!1),r={method:qt.RequestMethod.POST,body:JSON.stringify({ids:t.skuIdList.toString()})};return yield Nn(n,r)}catch(n){return Promise.reject(n)}},new Promise(((e,i)=>{var o=e=>{try{c(r.next(e))}catch(t){i(t)}},a=e=>{try{c(r.throw(e))}catch(t){i(t)}},c=t=>t.done?e(t.value):Promise.resolve(t.value).then(o,a);c((r=r.apply(void 0,n)).next())}));var n,r})({streamInjection:r,payload:{skuIdList:o}});const l=i.SKUPropertySetList.filter((e=>e.IsShow)).map((e=>({SkuId:e.SaleProductSKUId,Price:e.Price,SuggestPrice:e.SuggestPrice}))),s=(0,$s.filterSalePageSpecialPriceData)(i.PromotionPriceList||[],be);if(A.length>0){const e=l.reduce(((e,t)=>{const n=a.get(t.SkuId);return n&&e.push({SkuId:t.SkuId,Price:n&&n.addOnsPrice||t.Price,SuggestPrice:n&&n.originPrice||t.SuggestPrice}),e}),[]);Ce([]),Be(null),ye(e),c=c.map((e=>{const t=a.get(e.SaleProductSKUId),n=null==t?void 0:t.enableQty,r=n?(0,M.min)([n,e.SellingQty,e.StockQty]):e.SellingQty;return jg(zg({},e),{SellingQty:r})})),i.SKUPropertySetList=i.SKUPropertySetList.reduce(((e,t)=>{const n=a.get(t.SaleProductSKUId);return n&&e.push(jg(zg({},t),{Price:n&&n.addOnsPrice||t.Price,SuggestPrice:n&&n.originPrice||t.SuggestPrice})),e}),[])}else if(s.length>0&&d){const e=l.map((e=>e.SkuId)),t=(0,$s.mappingSalePageSpecialPriceList)(s).filter((t=>e.some((e=>e===t.SkuId))));Ce(t),ye((0,$s.mappingSalePagePriceRangeData)(l,t,g,l)),l.sort(((e,t)=>e.Price-t.Price));const n=l[0].Price;if(0===t.map((e=>e.Price)).indexOf(n)){const e=t.filter((e=>e.Price===n))[0],r=i.SKUPropertySetList.find((t=>t.SaleProductSKUId===e.SkuId)).Price;Be((0,$s.getSalePageSpecialPriceTagData)(t,e.SkuId,r))}else Be(null)}else Ce([]),ye(l),Be(null);y||(i.PointsPayPairsList=[]),q(i),ee(c);const u=h&&i.SoldOutActionType===Pu.x.BackInStockAlert&&(null==c?void 0:c.some((e=>e.StockQty<=0))),I=yield mn();ie(u);const m=u&&i.SKUPropertySetList.every((e=>!e.IsShow));if(ue(m),u&&I){const{subscribeList:t}=yield(e=>{return n=[e],r=function*({streamInjection:e,payload:t}){const{shopId:n,locale:r,apiConfig:i}=e,{salePageId:o}=t,{ftsHost:a}=i;try{const e=(0,Bn.getCookie)("MID"),t=`${a}/user/backInStock/getSubscribedSkuList/${n}?lang=${r}&salePageId=${o}`,i={method:qt.RequestMethod.GET,headers:{"NY-MID":e}},{result:c}=yield Nn(t,i);return c||(ze.error("[ERROR] fetchSubscribedSkuList failed: No Data"),Promise.reject())}catch(c){return ze.error(`[ERROR] fetchSubscribedSkuList failed: ${Me(c)}: ${Je(c)}: shopId: ${n}, salePageId: ${o}`),Promise.reject(c)}},new Promise(((e,i)=>{var o=e=>{try{c(r.next(e))}catch(t){i(t)}},a=e=>{try{c(r.throw(e))}catch(t){i(t)}},c=t=>t.done?e(t.value):Promise.resolve(t.value).then(o,a);c((r=r.apply(void 0,n)).next())}));var n,r})({streamInjection:r,payload:{salePageId:e}}),{skuList:n=[]}=t.find((e=>e.salePageId===p))||{};ne(n)}const C=!u&&qg[i.SoldOutActionType]||qg.OutOfStock;j(C),(({data:e,isNeedOpenSku:t})=>{var r;const{StatusDef:i,HasSKU:o}=e||{};if(!o&&n===P.MOBILE&&i===Rn.Normal&&Xi()){const{Id:t,Price:n,SaleProductSKUIdList:i,SKUPropertySetList:o,Title:a}=e||{},c=null==i?void 0:i[0],l=null==(r=null==o?void 0:o.find((e=>e.SaleProductSKUId===c)))?void 0:r.PropertyNameSet;return void ve({optionalTypeDef:"",optionalTypeId:0,price:n,points:0,quantity:1,salePageId:t,shopId:b,skuId:c,skuKey:l,title:a})}const a=i;!td[a]&&!t||a===Mn.NoStart?Fe(a):fe({isOpenModal:!0})})({data:i,isNeedOpenSku:u})}catch(t){Qe(),Fe(ac.STATUS.SYSTEM_ERROR)}})),t=_c(b),r=(0,Bn.getCookie)(t);var i;(0,Bn.deleteCookie)(t),(0!==p||r)&&(i=p||parseInt(r,10),Kg(void 0,null,(function*(){S(!0),Promise.all([e(i)]).finally((()=>{S(!1)}))})))}),[p,b]);const Se={rawSkuInfoList:$,rawSalePageInfo:K,shopId:b,handleProductToCart:(0,M.debounce)((e=>{const{StatusDef:r,SoldOutActionType:o}=K;if(e.skuId<=0)return void Fe(ac.STATUS.SELECT_ERROR);ae(e);const c=$.find((t=>(null==t?void 0:t.SellingQty)>0&&(null==t?void 0:t.SaleProductSKUId)===e.skuId));return o!==Pu.x.BackInStockAlert||c?r===Mn.ShareToBuy?(()=>{if(i){const e=`${window.location.protocol}//${window.location.host}/SalePage/Index/${p}`;i.ui({method:"feed",link:e,display:"popup"},(e=>{K.StatusDef=Mn.Normal}))}})():r===Mn.AppOnly?(fe({isOpenModal:!1}),void(n===P.MOBILE?a?a():window.location.href=`/SalePage/Index/${p}`:window.location.href=`/SalePage/ShowQRCode/${p}`)):void(l?ve(e):(t&&t(e),Qe())):(e=>Kg(void 0,null,(function*(){try{const t=xe(),n=dn(t);if(ad(te,e.skuId))return yield(e=>{return n=[e],r=function*({streamInjection:e,payload:t}){const n=(0,Bn.getCookie)("MID"),{shopId:r,locale:i,apiConfig:o}=e,{salePageId:a,skuId:c}=t,{ftsHost:l}=o;try{const e=`${l}/user/backInStock/deleteSubscribedSku/${r}/${a}/${c}/${i}`,t={method:qt.RequestMethod.DELETE,headers:{"NY-MID":n}};yield Nn(e,t)}catch(s){return ze.error(`[ERROR] deleteSubscribedSku failed: ${Me(s)}: ${Je(s)}: shopId: ${r}, payload: ${JSON.stringify(t)}`),Promise.reject(s)}},new Promise(((e,i)=>{var o=e=>{try{c(r.next(e))}catch(t){i(t)}},a=e=>{try{c(r.throw(e))}catch(t){i(t)}},c=t=>t.done?e(t.value):Promise.resolve(t.value).then(o,a);c((r=r.apply(void 0,n)).next())}));var n,r})({streamInjection:n,payload:e}),Gl({contentType:"RemoveFromBackInStockAlert",id:null==e?void 0:e.skuId.toString(),name:"取消貨到通知",linkUrl:""}),fl(Kc(),"click","RemoveFromBackInStockAlert"),Qe(),void Fe(ac.STATUS.BACK_IN_STOCK_UNSUBSCRIBE_SUCCESS);if(!(yield mn()))return fe({isOpenModal:!1}),R(!0),void k(cu.NotLogin);const{email:r,isEnablePriceReduction:i}=yield ou(n);if(!r)return fe({isOpenModal:!1}),R(!0),void k(cu.NoMail);const{subscribedSkuTotal:o}=yield(e=>{return n=[e],r=function*({streamInjection:e}){const{shopId:t,locale:n,apiConfig:r}=e,{ftsHost:i}=r;try{const e=(0,Bn.getCookie)("MID"),r=`${i}/user/backInStock/getSubscribedSkuCount/${t}?lang=${n}`,o={method:qt.RequestMethod.GET,headers:{"NY-MID":e}},{result:a}=yield Nn(r,o);return a||(ze.error("[ERROR] fetchSubscribedSkuCount failed: No Data"),Promise.reject())}catch(o){return ze.error(`[ERROR] fetchSubscribedSkuCount failed: ${Me(o)}: ${Je(o)}: shopId: ${t}`),Promise.reject(o)}},new Promise(((e,i)=>{var o=e=>{try{c(r.next(e))}catch(t){i(t)}},a=e=>{try{c(r.throw(e))}catch(t){i(t)}},c=t=>t.done?e(t.value):Promise.resolve(t.value).then(o,a);c((r=r.apply(void 0,n)).next())}));var n,r})({streamInjection:n});if(o>=100)return fe({isOpenModal:!1}),R(!0),void k(cu.BackInStockLimit);yield Ze({isEnablePriceReduction:i,productInfo:e})}catch(t){Qe(),Fe(ac.STATUS.SYSTEM_ERROR)}})))(e)}),350),decimal:r,symbol:m,rate:I,customStyles:jg(zg({},Nu),{cartButtonStyle:Ge,qtySelectorSectionStyle:ld(K)}),productToCartStyle:sd(K),handleAddQuantity:o,handleRemoveQuantity:c,isEnableBackInStock:re,isEnableCartButton:!0,buttonDisplayText:od({status:null==K?void 0:K.StatusDef,customButtonDisplayText:C,isEnableBackInStock:re}).text,skuSoldOutText:(0,ja.t)(J||qg.OutOfStock),handleUpdateSelectedSkuIdCallBack:e=>{const t=$.find((t=>(null==t?void 0:t.SellingQty)>0&&(null==t?void 0:t.SaleProductSKUId)===e));!re&&t||(ad(te,e)?le(!0):le(!1))},backInStockButtonDisplayText:ce?(0,ja.t)($g.CancelBackInStock):(0,ja.t)($g.AddBackInStock),setQtyHintText:rd,serviceType:"FRONT_STAGE",theme:Ee,isEnablePurchaseMethod:s,isPriceOnTop:u,purchaseMethodInfo:{title:(0,ja.t)(Jn.THEME_CORE.PRODUCT.CHOOSE_PURCHASE_METHOD),pointText:(0,ja.t)(Jn.THEME_CORE.PRODUCT.POINTS_STRING)},isBackInStockSubscribedSkuId:ce,isEnableAdidasCustom:Hi(),isSuggestPriceShowPrice:g,specialPriceList:me,selectedSpecialPriceData:he,salePagePriceList:Ae,isEnableOriginalPrice:f,specChartData:F,handleOpenSpecChart:()=>{Z(!0),v()}},Xe=!(G&&"page"===G);return z.createElement(z.Fragment,null,X&&K&&$&&(Xe?z.createElement(tg,{onModalClick:Qe,browsingMode:n},z.createElement(eu.nW,zg({},Se))):z.createElement(z.Fragment,null,z.createElement(eu.nW,zg({},Se)))),z.createElement(Wu,{isOpen:x,type:O,message:w,afterClose:()=>{U(!1),V(""),H(""),W!==ac.STATUS.SELECT_ERROR?Qe():_("")}}),z.createElement(iu,{isLoading:E}),N&&z.createElement(Cu,{shopId:b,modalDialogStatus:Y,handleCloseDialog:()=>{Qe(),R(!1)},salePageId:p,handleConfirmClick:e=>Kg(void 0,null,(function*(){e===oc.BACK_IN_STOCK_SUBSCRIBE_SUCCESS&&(yield Ze({isEnablePriceReduction:!1,productInfo:oe})),R(!1)})),modalDialogMessage:D}))},dd=({shopId:e,displayMode:t,salePageCode:n,salePageId:r,rate:i,decimal:o,symbol:a,isPriceOnTop:c,isSuggestPriceShowPrice:l,isEnableOriginalPrice:s,customButtonDisplayText:u,afterSuccess:g,afterClose:d,browsingMode:I,facebook:p,handleRedirectDeepLink:b,isEnableAddShoppingCartItem:m=!0,skuQtyMode:C,handleOpenSpecChartJSIEvent:h,handleToastStatus:B})=>{const A=(0,z.useRef)(-1),y=(0,z.useRef)();(0,z.useEffect)((()=>{y.current=new tu.Ay}),[]);const f=0===C,G="page"!==t,[Q,F]=(0,z.useState)(0),[v,Z]=(0,z.useState)(!1),[E,S]=(0,z.useState)(0),X=(0,Qs.useSelector)((e=>e.globalStyleData))||{},T=(0,z.useContext)(hu),x=(0,z.useContext)(ag),{data:U,isMutating:N,trigger:R}=(0,Eg.A)("Sku/GetSkuPopupInfo/SubSalePage",((e,{arg:t})=>{const n=xe(),r=dn(n);return Pn({streamInjection:r,payload:t,shouldFetchSalePageStatus:!1})})),{data:O,mutate:V}=function(e){const{salePageId:t,salePageCode:n}=e;return(0,Zg.A)((()=>Og(t)||n?`Sku/GetSkuPopupInfo/MainSalePage/${t}/${n}`:null))}({salePageId:r,salePageCode:n}),{data:W}=Hg({salePageId:r}),{data:_,isLoading:w,mutate:H}=function(e){const{salePageId:t,onError:n}=e;return(0,Zg.A)((()=>Og(t)?`salepage-listing/api/salepage/bundle-info/${t}`:null),(()=>{const e=xe();return((e,t)=>{return r=function*(){try{const{shopId:n,locale:r}=e,i=`${It()}/salepage-listing/api/salepage/bundle-info/${n}/${t}?lang=${r}`,o={method:qt.RequestMethod.GET},a=yield Nn(i,o);return(null==a?void 0:a.data)?a.data:Promise.reject((null==a?void 0:a.message)||"fetchSalePageBundleInfo error")}catch(n){const{shopId:r}=e;return ze.error(`[ERROR] fetchSalePageBundleInfo error: ${Je(n)}, shopId: ${r}`),Promise.reject(n)}},new Promise(((e,t)=>{var i=e=>{try{a(r.next(e))}catch(n){t(n)}},o=e=>{try{a(r.throw(e))}catch(n){t(n)}},a=t=>t.done?e(t.value):Promise.resolve(t.value).then(i,o);a((r=r.apply(void 0,null)).next())}));var r})(dn(e),t)}),{onError:n})}({salePageId:r,onError:()=>{if(ne()){const e="useFetchSalePageBundleInfo";y.current.showPopup({requestCode:e,showPopupData:{title:"",message:"無法載入商品資訊，請稍後再試",buttonA:{text:"重新整理",data:null},buttonB:null}}).then((()=>{"function"==typeof d&&d(),location.reload()})).catch((t=>ze.error(`[ERROR] ${e} jsi showPopup: ${Me(t)} ${Je(t)}`)))}else B({status:ac.STATUS.SYSTEM_ERROR,afterClose:()=>re(!1)})}}),{data:Y,isLoading:k,mutate:D}=function(e){const{salePageId:t,salePageBundleInfo:n,onError:r}=e;return(0,Zg.A)((()=>Og(t)&&n?`salepage-listing/api/salepage/bundle-selling-qty/${t}`:null),(()=>{var e;const r=xe();return((e,t)=>{return r=function*(){try{const{shopId:n,locale:r}=e,i=`${It()}/salepage-listing/api/salepage/bundle-selling-qty/${n}?lang=${r}`,o={method:qt.RequestMethod.POST,body:t},a=yield Nn(i,o);return(null==a?void 0:a.data)?a.data:Promise.reject((null==a?void 0:a.message)||"fetchSalePageBundleSellingQty error")}catch(n){const{shopId:r}=e;return ze.error(`[ERROR] fetchSalePageBundleSellingQty error: ${Je(n)}, shopId: ${r}`),Promise.reject(n)}},new Promise(((e,t)=>{var i=e=>{try{a(r.next(e))}catch(n){t(n)}},o=e=>{try{a(r.throw(e))}catch(n){t(n)}},a=t=>t.done?e(t.value):Promise.resolve(t.value).then(i,o);a((r=r.apply(void 0,null)).next())}));var r})(dn(r),{salepageId:t,saleProductSkuId:null==(e=null==n?void 0:n.bundleMain)?void 0:e.saleProductSkuId,salepageBundleBlocks:Vg(null==n?void 0:n.bundleBlocks).map((e=>{var t,n;return{blockId:null==e?void 0:e.blockId,salepageId:null==(t=null==e?void 0:e.salepageScopes[0])?void 0:t.salepageId,skuIds:Vg(null==(n=null==e?void 0:e.salepageScopes[0])?void 0:n.skuInfo).map((e=>e.skuId))}}))})}),{onError:r})}({salePageId:r,salePageBundleInfo:_,onError:()=>{if(ne()){const e="useFetchSalePageBundleSellingQty";y.current.showPopup({requestCode:e,showPopupData:{title:"",message:"無法載入商品資訊，請稍後再試",buttonA:{text:"重新整理",data:null},buttonB:null}}).then((()=>{"function"==typeof d&&d(),location.reload()})).catch((t=>ze.error(`[ERROR] ${e} jsi showPopup: ${Me(t)} ${Je(t)}`)))}else B({status:ac.STATUS.SYSTEM_ERROR,afterClose:()=>re(!1)})}}),{isMutating:L,trigger:J}=(0,Eg.A)("ShoppingCartV4/InsertItem",((e,{arg:t})=>{const n=xe(),r=dn(n);return Lu({streamInjection:r,payload:t})})),j=(0,z.useMemo)((()=>jg(zg({},Nu),{cartButtonStyle:{customStyle:Tu,disabledStyle:Uu},qtySelectorSectionStyle:ld(O)})),[O]),K=(0,z.useMemo)((()=>sd(O)),[O]),q=(0,z.useMemo)((()=>Vg(null==_?void 0:_.bundleBlocks).map((e=>{const{skuInfo:t}=e.salepageScopes[0];return 1===t.length?t[0].skuId:0}))),[_]),$=(0,z.useMemo)((()=>function(e){var t;const{bundleBlockIdx:n,subSalePageInfo:r,salePageBundleSellingQty:i,salePageBundleInfo:o}=e;if(n<0||!r||!i||!o)return r;const a=null==o?void 0:o.bundleBlocks[n];if(!a)return r;const c=Vg(i).find((e=>(null==e?void 0:e.blockId)===(null==a?void 0:a.blockId)));if(!c)return r;const l=Vg(null==(t=null==a?void 0:a.salepageScopes[0])?void 0:t.skuInfo).map((e=>e.skuId));return s=((e,t)=>{for(var n in t||(t={}))Ug.call(t,n)&&Rg(e,n,t[n]);if(xg)for(var n of xg(t))Ng.call(t,n)&&Rg(e,n,t[n]);return e})({},r),u={SKUPropertySetList:Vg(null==r?void 0:r.SKUPropertySetList).filter((e=>l.includes(null==e?void 0:e.SaleProductSKUId))).map((e=>{const t=Vg(null==c?void 0:c.blockSkuSellingQtyList).find((t=>(null==t?void 0:t.saleProductSkuId)===(null==e?void 0:e.SaleProductSKUId)));return"number"!=typeof(null==t?void 0:t.sellingQty)||(e.SellingQty=t.sellingQty),e}))},Xg(s,Tg(u));var s,u}({bundleBlockIdx:A.current,salePageBundleInfo:_,salePageBundleSellingQty:Y,subSalePageInfo:U})),[U,Y,_]),ee=Boolean(O&&_&&Y);function te(e){F(e),ne()&&0===e?(document.title="",y.current.setAppHeaderIcon({ios:{eventType:tu.AH.HeaderBackAction,data:{icon:"Nothing",action:"Nothing"}},android:{eventType:tu.AH.HeaderBackAction,data:{icon:"Nothing",action:"Nothing"}}})):ne()&&1===e&&(document.title="選擇商品選項",y.current.setAppHeaderIcon({ios:{eventType:tu.AH.HeaderBackAction,data:{icon:"Back",action:"JsiBack"}},android:{eventType:tu.AH.HeaderBackAction,data:{icon:"Back",action:"JsiBack"}}}),y.current.triggerWebAction((e=>{const{eventType:t}=JSON.parse(e);return t===tu.xI.OnBackPressed?(te(0),{shouldOverride:!0}):{shouldOverride:!1}})))}function ne(){return An()&&y.current&&"page"===t}function re(e){Z(e),G&&(document.body.style.overflowY=e?"hidden":null),e||(H(void 0,{revalidate:!1}),D(void 0,{revalidate:!1}),"function"==typeof d&&d())}const ie=e=>{e.stopPropagation(),te(0)};function oe(e){if(!Vg(e).every((e=>0!==e)))return;const t=Math.min(...e.map(((e,t)=>{var n,r;const i=null==(r=Vg(null==(n=Y[t])?void 0:n.blockSkuSellingQtyList).find((t=>(null==t?void 0:t.saleProductSkuId)===e)))?void 0:r.sellingQty;return Number.isInteger(i)?i:0})));S(t)}const ae=od({status:null==O?void 0:O.StatusDef,isEnableBackInStock:!1,customButtonDisplayText:u,salePageBundleInfo:_}),ce=z.createElement(eu.nW,{isEnableAdidasCustom:Hi(),buttonDisplayText:ae.text,customStyles:j,rate:i,decimal:o,isDisplayProductImage:!0,isEnableCartButton:!ae.disabled,productInfoSubTitle:void 0,serviceType:"FRONT_STAGE",handleProductToCart:t=>Kg(void 0,[t],(function*({curQuantity:t,selectedSubSalePageSkuIds:n}){var i,o,a,c;try{if(O.StatusDef===Mn.ShareToBuy)return function(){if(!p)return;const e=`${window.location.protocol}//${window.location.host}/SalePage/Index/${r}`;p.ui({method:"feed",link:e,display:"popup"},(()=>{V(jg(zg({},O),{StatusDef:Mn.Normal}),{revalidate:!1})}))}();if(O.StatusDef===Mn.AppOnly)return re(!1),void(I===P.MOBILE?"function"==typeof b?b():window.location.href=`/SalePage/Index/${r}`:window.location.href=`/SalePage/ShowQRCode/${r}`);if(n.some((e=>0===e))){if(ne()){const e=lc(oc.SELECT_ERROR);return void y.current.showToast({toastType:tu.py.alert,message:e.message})}return void B({status:oc.SELECT_ERROR})}const l={shopId:e,salePageId:r,saleProductSKUId:null==(i=null==_?void 0:_.bundleMain)?void 0:i.saleProductSkuId,qty:t,isSkuQtyAccumulate:f,optionalInfo:null,optionalTypeDef:"",optionalTypeId:0,relatedItemGroups:[{ruleTypeDef:"SalepageBundle",relatedItems:Vg(null==_?void 0:_.bundleBlocks).map(((e,r)=>{var i;return{salepageId:null==(i=null==e?void 0:e.salepageScopes[0])?void 0:i.salepageId,saleProductSKUId:n[r],qty:e.blockQtyMust*t,optionalTypeDef:"SalepageBundle",optionalTypeId:e.blockId}}))}]};if(m&&(yield J(l)),"function"==typeof g&&g({mainImageUrl:null==(o=null==O?void 0:O.ImageList[0])?void 0:o.PicUrl,optionalTypeDef:"",optionalTypeId:0,points:0,price:null==O?void 0:O.Price,quantity:t,salePageId:r,sellingQty:0,shopId:e,skuId:null==(a=null==_?void 0:_.bundleMain)?void 0:a.saleProductSkuId,skuKey:null==(c=null==O?void 0:O.SKUPropertySetList[0])?void 0:c.PropertyNameSet,suggestPrice:null==O?void 0:O.SuggestPrice,title:null==O?void 0:O.Title,specialPrice:0,isSalePageBundle:!0,bundleInfo:(0,M.cloneDeep)(_),bundleSellingQty:(0,M.cloneDeep)(Y),bundleShoppingCartItem:(0,M.cloneDeep)(l)}),ne()){if("function"==typeof d&&d(),m){const e=lc(oc.ADD_SUCCESS);y.current.showToast({message:e.message,toastType:tu.py.success})}return void y.current.closeWebView()}if(m)return void B({status:oc.ADD_SUCCESS,afterClose:()=>re(!1)});re(!1)}catch(l){!function(e){const t=String(null==e?void 0:e.ReturnCode),n=String((null==e?void 0:e.Message)||lu.Fail);switch(t){case Yu.SoldOut:case Yu.SalePageIncorrect:return ne()?void y.current.showPopup({requestCode:t,showPopupData:{title:"",message:n,buttonA:{text:"重新整理",data:null},buttonB:null}}).then((()=>{"function"==typeof d&&d(),location.reload()})).catch((e=>ze.error(`[ERROR] ${t} jsi showPopup: ${Me(e)} ${Je(e)}`))):void T({isOpen:!0,handleConfirmClick:()=>{T({isOpen:!1}),re(!1)},handleCloseDialog:()=>{T({isOpen:!1}),re(!1)},modalDialogStatus:cu.Fail,modalDialogMessage:n});default:ne()?y.current.showPopup({requestCode:t,showPopupData:{title:"",message:n,buttonA:{text:"我知道了",data:null},buttonB:null}}).then((e=>e)).catch((e=>ze.error(`[ERROR] ${t} jsi showPopup: ${Me(e)} ${Je(e)}`))):T({isOpen:!0,handleConfirmClick:()=>T({isOpen:!1}),handleCloseDialog:()=>T({isOpen:!1}),modalDialogStatus:cu.Fail,modalDialogMessage:n})}}(l)}})),productToCartStyle:K,mainSalePageInfo:O,subSalePageInfo:$,skuSoldOutText:(0,ja.t)(qg.OutOfStock),QtyHintBlock:id,symbol:a,theme:X,isPriceOnTop:c,isSuggestPriceShowPrice:l,isEnableOriginalPrice:s,specChartData:null==W?void 0:W.specChartData,handleOpenSpecChart:()=>{x(!0),h()},salePageType:"Bundle",curStep:Q,includeTheseSalePagesText:"內含以下商品",skuSelectPlaceholder:"請選擇商品選項",onClickSkuSelect:(e,t)=>Kg(void 0,null,(function*(){var n,r;A.current=t,R({salePageId:null==(n=Vg(null==e?void 0:e.salepageScopes)[0])?void 0:n.salepageId,salePageCode:null==(r=Vg(null==e?void 0:e.salepageScopes)[0])?void 0:r.salepageCode}).then((()=>te(1))).catch((()=>{ne()?y.current.showToast({toastType:tu.py.error,message:"無法載入商品資訊"}):B({status:ac.STATUS.SYSTEM_ERROR})}))})),confirmSelectedSkuText:"確認",onClickConfirmSelectedSku:({p1SelectedSubSalePageSkuIds:e,bundleBlockIdx:t})=>{if(0!==e[t])return oe(e),void te(0);if(ne()){const e=lc(oc.SELECT_ERROR);y.current.showToast({toastType:tu.py.error,message:e.message})}else B({status:oc.SELECT_ERROR})},bundleBlocks:Vg(null==_?void 0:_.bundleBlocks),maxQuantity:E,DEFAULT_SKU_ID:0,DEFAULT_MAX_QUANTITY:0,defaultSelectedSubSalePageSkuIds:q,salePageRemovedPlaceholder:"此商品已下架",notSellingMaskLabelText:"暫停販售",browsingMode:I});return(0,z.useEffect)((function(){ee&&(re(!0),oe(q))}),[ee]),z.createElement(z.Fragment,null,ee&&v&&(G?z.createElement(tg,{isShowHeader:!0,isFullScreenSheet:!0,modalMode:Dl.EXLARGE,browsingMode:I,onModalClick:e=>{e.target===e.currentTarget&&re(!1)},handleCloseButtonClick:()=>re(!1),title:1===Q?"選擇商品選項":void 0,handleBackwardButtonClick:1===Q?ie:void 0},ce):An()?z.createElement(eg,null,ce):z.createElement($u,{title:1===Q?"選擇商品選項":void 0,handleBackwardButtonClick:1===Q?ie:void 0,handleCloseButtonClick:()=>re(!1)},ce)),z.createElement(iu,{isLoading:w||k||L||N}))},Id=e=>{const{shopId:t,salePageId:n}=e;return z.createElement(ug,null,z.createElement(Bu,{salePageId:n,shopId:t},z.createElement(wu,null,z.createElement(ud,zg({},e)))))},pd=K.default.span`
    overflow: hidden;
    white-space: nowrap;
    text-overflow: ellipsis;
`,bd=({sellingStartDateTime:e})=>{const t=(0,z.useRef)(null),[n,r]=(0,z.useState)("");return(0,z.useLayoutEffect)((()=>{const n=t.current.parentElement.clientWidth<=130?"YYYY/MM/DD":"YYYY/MM/DD HH:mm";r((0,ja.t)(Jn.THEME_CORE.PRODUCT.SELLING_START_DATE_TIME,{sellingStartDateTime:Ma()(e).format(n)}))}),[]),z.createElement(pd,{ref:t},n)},md=({isEnableMask:e=!1,isComingSoon:t=!1,isSoldOut:n=!1,soldOutActionType:r="",listingStartDateTime:i=null,sellingStartDateTime:o=null,enableIsComingSoon:a=!1,isShowSellingStartDateTime:c=!1})=>{let l={};const s=ui(o)?si(o):o,u=ui(i)?si(i):i,g=(0,$s.isShowComingSoon)(s,u,a);return e&&!g&&n?l={maskType:Kp.MIDDLEMASK,maskChildren:z.createElement(pd,null,(0,ja.t)(qg[r]||Jn.THEME_CORE.PRODUCT.SOLD_OUT)),isShowMask:!0}:e&&g?l=c?{maskType:Kp.BOTTOMMASK,maskChildren:z.createElement(bd,{sellingStartDateTime:s}),isShowMask:!0}:{maskType:Kp.BOTTOMMASK,maskChildren:z.createElement(pd,null,(0,ja.t)(Jn.THEME_CORE.PRODUCT.SELLING_WILL_KICKOFF)),isShowMask:!0}:e&&t&&(l={maskType:Kp.BOTTOMMASK,maskChildren:z.createElement(pd,null,(0,ja.t)(Jn.THEME_CORE.PRODUCT.SELLING_WILL_KICKOFF)),isShowMask:!0}),l};var Cd=(e=>(e.CategoryBreadcrumbs="CategoryBreadcrumbs",e.CategoryTags="CategoryTags",e.ShopCategory="ShopCategory",e))(Cd||{});const hd={dev:{tw:[232,235]},qa:{tw:[]},stage:{tw:[11,123,815,1194,2374,4800]},prod:{tw:[11,123,815,1194,2374,4800]}},Bd={dev:{tw:[232]},qa:{tw:[]},stage:{tw:[39681]},prod:{tw:[39681]}},Ad={[P.DESKTOP]:{[Jr.H1]:Ce.fontSizeXl,[Jr.H2]:Ce.fontSizeL,[Jr.H3]:Ce.fontSizeMl},[P.MOBILE]:{[Jr.H1]:Ce.fontSizeMl,[Jr.H2]:Ce.fontSizeM,[Jr.H3]:Ce.fontSizeDefault}};var yd=n(4589);const{buttonStyle:fd}=se.A,Gd=K.default.div`
    margin: ${({isSquareCard:e})=>e?"4px":"6px"} 0;
    position: relative;
`,Qd=(K.default.div`
    position: absolute;
    padding: 10px;
    max-width: 200px;
    background-color: ${J.brownishGrey};
    border-radius: 4px;
    color: #ffffff;
    transform: translateX(${({toolTipX:e})=>e}px) translateX(-50%);
    font-size: 12px;
    display: ${({isDisplay:e})=>e?"block":"none"};
    left: 0;
    bottom: ${({isSquareCard:e})=>e?"115%":"132%"};
    z-index: ${N};

    &::after {
        content: '';
        position: absolute;
        border-width: 6px;
        border-style: solid;
        border-color: ${J.brownishGrey} transparent transparent transparent;
        transform: translate(-50%, 0%);
        left: 50%;
        bottom: -11px;
        z-index: ${N};
        display: ${({isDisplay:e})=>e?"block":"none"};
    }
`,(0,K.default)(yd.A)`
    overflow: hidden;
    padding-left: ${({isSquareCard:e})=>e?"0":`${Dt}px`};

    .slick-list {
        width: ${({isSquareCard:e})=>e?"220px":"100%"};
    }
    .slick-slide {
        margin-right: ${({isSquareCard:e})=>e?`${kt}px`:`${Mt}px`};
    }

    // 解套件搭配不固定的元素時，會在滑動產生高度偏移的問題
    .slick-slide > div {
        display: flex;
    }
`),Fd=K.default.div`
    position: relative;
    height: ${({isSquareCard:e})=>e?`${Pt}px`:`${Jt}px`};
`,vd=K.default.img`
    ${({isSquareCard:e})=>e?"":"clip-path: circle(50% at 50% 50%)"};
    background-color: ${J.whiteFour};
    width: 100%;
    height: 100%;
`,Zd=K.default.div`
    position: absolute;
    top: 0;
    left: 0;
    width: 100%;
    height: 100%;
    background-color: transparent;
    border-radius: ${({isSquareCard:e})=>e?"0":"50%"};
    box-shadow: inset ${({isSquareCard:e})=>e?"0 -1.5px 0 0":"0 0 0 1px"}
        ${e=>{var t,n;return(null==(n=null==(t=e.theme)?void 0:t.buttonStyle)?void 0:n.primaryBtnBgColor)||fd.primaryBtnBgColor}};
`,Ed=K.default.div`
    width: 20px;
    height: 20px;
    border-radius: 2px;
    background-color: ${J.white};
    opacity: 0.6;
    display: ${({isDisplay:e})=>e?"flex":"none"};
    align-items: center;
    justify-content: center;
    position: absolute;
    top: 50%;
    transform: translateY(-50%);
    z-index: ${R};

    left: ${({isNext:e})=>e?"auto":"0px"};
    right: ${({isNext:e})=>e?"0px":"auto"};
    margin-left: ${({isNext:e})=>e?"0px":"4px"};
    margin-right: ${({isNext:e})=>e?"4px":"0px"};
`,Sd=K.default.i`
    color: ${J.brownishGrey};
    font-weight: 700;
`;var Xd=Object.defineProperty,Td=Object.defineProperties,xd=Object.getOwnPropertyDescriptors,Ud=Object.getOwnPropertySymbols,Nd=Object.prototype.hasOwnProperty,Rd=Object.prototype.propertyIsEnumerable,Od=(e,t,n)=>t in e?Xd(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n;const Vd=({mainSalePageId:e,salePageGroup:t,handleProductGroupClick:n})=>{const[r,i]=(0,z.useState)(!1),[o,a]=(0,z.useState)(!1),[c,l]=(0,z.useState)(0),[s,u]=(0,z.useState)(e),{GroupIconStyle:g,SalePageItems:d}=t,I=g===Yt.SQUAER,p=e=>e?Math.trunc(c/Lt)!==Math.trunc((d.length-1)/Lt):0!==c,b=({onClick:e,isNext:t})=>{const n=t?z.createElement(Sd,{className:"ico ico-chevron-right"}):z.createElement(Sd,{className:"ico ico-chevron-left"});return z.createElement(Ed,{onClick:t=>{t.preventDefault(),t.stopPropagation(),e(t)},isNext:t,isDisplay:r&&p(t)},n)},m={dots:!1,infinite:!1,variableWidth:!0,initialSlide:0,slidesToScroll:Lt,slidesToShow:d.length%5==0?Lt:d.length%5,beforeChange:(e,t)=>{a(!0),setTimeout((()=>{l(t),a(!1)}),700)}};return z.createElement(Gd,{onMouseEnter:()=>{i(!0)},onMouseLeave:()=>{i(!1)},onClick:e=>{e.preventDefault(),e.stopPropagation()},isSquareCard:I},z.createElement(Qd,(C=((e,t)=>{for(var n in t||(t={}))Nd.call(t,n)&&Od(e,n,t[n]);if(Ud)for(var n of Ud(t))Rd.call(t,n)&&Od(e,n,t[n]);return e})({},m),Td(C,xd({nextArrow:z.createElement(b,{isNext:!0}),prevArrow:z.createElement(b,{isNext:!1}),isSquareCard:I}))),d.map(((t,r)=>z.createElement(Fd,{key:t.SalePageId,isSquareCard:I,onClick:r=>((t,r)=>{t.preventDefault(),t.stopPropagation();const{SalePageId:i}=r;o||i!==e&&s===i||(n(i),s!==i&&u(i))})(r,t),style:I?{width:Pt}:{width:Jt}},z.createElement(vd,{loading:"lazy",src:t.ItemUrl,isSquareCard:I}),s===t.SalePageId&&z.createElement(Zd,{isSquareCard:I}))))));var C},{buttonStyle:Wd}=se.A,_d=K.default.div`
    margin: ${({isSquareCard:e})=>e?"4px":"6px"} 0;
    padding-left: ${({isSquareCard:e})=>e?"0":`${Dt}px`};
    position: relative;
`,wd=(0,K.default)(yd.A)`
    .slick-slide {
        margin-right: ${({isSquareCard:e})=>e?`${kt}px`:`${Kt}px`};
    }

    // 解套件搭配不固定的元素時，會在滑動產生高度偏移的問題
    .slick-slide > div {
        display: flex;
    }
`,Hd=K.default.div`
    position: relative;
    height: ${({isSquareCard:e})=>e?zt:jt};
`,Yd=K.default.img`
    ${({isSquareCard:e})=>e?"":"clip-path: circle(50% at 50% 50%)"};
    background-color: ${J.whiteFour};
    width: 100%;
    height: 100%;
`,kd=K.default.div`
    position: absolute;
    top: 0;
    left: 0;
    width: 100%;
    height: 100%;
    background-color: transparent;
    border-radius: ${({isSquareCard:e})=>e?"0":"50%"};
    box-shadow: inset ${({isSquareCard:e})=>e?"0 -1.5px 0 0":"0 0 0 1px"}
        ${e=>{var t,n;return(null==(n=null==(t=e.theme)?void 0:t.buttonStyle)?void 0:n.primaryBtnBgColor)||Wd.primaryBtnBgColor}};
`;var Dd=Object.defineProperty,Ld=Object.defineProperties,Pd=Object.getOwnPropertyDescriptors,Jd=Object.getOwnPropertySymbols,Md=Object.prototype.hasOwnProperty,zd=Object.prototype.propertyIsEnumerable,jd=(e,t,n)=>t in e?Dd(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n;const Kd=({mainSalePageId:e,salePageGroup:t,handleProductGroupClick:n})=>{const[r,i]=(0,z.useState)(e),{GroupIconStyle:o,SalePageItems:a}=t,c=o===Yt.SQUAER;return z.createElement(_d,{isSquareCard:c,onClick:e=>{e.preventDefault(),e.stopPropagation()}},z.createElement(wd,(l=((e,t)=>{for(var n in t||(t={}))Md.call(t,n)&&jd(e,n,t[n]);if(Jd)for(var n of Jd(t))zd.call(t,n)&&jd(e,n,t[n]);return e})({},{dots:!1,infinite:!1,swipeToSlide:!0,variableWidth:!0,arrows:!1,initialSlide:0,slidesToScroll:1,slidesToShow:1}),Ld(l,Pd({isSquareCard:c}))),a.map((t=>z.createElement(Hd,{key:t.SalePageId,isSquareCard:c,onClick:o=>((t,o)=>{t.preventDefault(),t.stopPropagation();const{SalePageId:a}=o;a!==e&&r===a||(n(a),r!==a&&i(a))})(o,t),style:c?{width:zt}:{width:jt}},z.createElement(Yd,{loading:"lazy",src:t.ItemUrl,isSquareCard:c}),r===t.SalePageId&&z.createElement(kd,{isSquareCard:c}))))));var l};var qd=(e=>(e[e.NOT_LOGGED_IN=0]="NOT_LOGGED_IN",e[e.UNQUALIFIED=1]="UNQUALIFIED",e))(qd||{});const $d={purchaseQualificationInvalidModal:{isOpen:!1,invalidType:0,restrictedPurchaseInfos:[]},closePurchaseQualificationInvalidModal:()=>{},checkPurchaseQualificationValid:e=>Promise.resolve(!0)},eI=(0,z.createContext)($d),tI=({children:e})=>{const t=(0,Qs.useSelector)((e=>e.dependencies)),n=dn(t),r=(0,Qs.useSelector)((e=>e.user.memberCollectionIdList)),i=(0,Qs.useSelector)((e=>e.user.isSkipPurchaseQualificationValid)),o=(0,Qs.useSelector)((e=>e.user.isLogin)),[a,c]=(0,z.useState)($d.purchaseQualificationInvalidModal),l=(0,z.useCallback)((()=>{c($d.purchaseQualificationInvalidModal)}),[a,c]),s=(0,z.useCallback)((e=>{return a=function*(){var t,a,l;try{if(o){if(i)return!0;const t=yield vg(n,e);if((null==(a=null==t?void 0:t.restrictedPurchaseInfoList)?void 0:a.length)&&!(null==(l=(0,M.intersection)(r,t.restrictedPurchaseInfoList.map((e=>e.memberCollectionId))))?void 0:l.length))return c({isOpen:!0,invalidType:1,restrictedPurchaseInfos:t.restrictedPurchaseInfoList}),!1}else{const r=yield vg(n,e);if(null==(t=null==r?void 0:r.restrictedPurchaseInfoList)?void 0:t.length)return c({isOpen:!0,invalidType:0,restrictedPurchaseInfos:[]}),!1}}catch(s){ze.error(`[ERROR] checkAddShoppingCartValid error: ${Je(s)}`)}return!0},new Promise(((e,n)=>{var r=e=>{try{o(a.next(e))}catch(t){n(t)}},i=e=>{try{o(a.throw(e))}catch(t){n(t)}},o=t=>t.done?e(t.value):Promise.resolve(t.value).then(r,i);o((a=a.apply(void 0,null)).next())}));var a}),[t,r,i,o,a,l]),u=(0,z.useMemo)((()=>({purchaseQualificationInvalidModal:a,closePurchaseQualificationInvalidModal:l,checkPurchaseQualificationValid:s})),[a,l,s]);return j().createElement(eI.Provider,{value:u},e)},nI=(0,z.createContext)({isClickEntryButton:!1,setIsClickEntryButton:e=>e,handlePopUpToggleFn:null,setHandlePopUpToggleFn:e=>e}),rI=({children:e})=>{const[t,n]=(0,z.useState)(!1),[r,i]=(0,z.useState)(null),o=(0,z.useMemo)((()=>({isClickEntryButton:t,setIsClickEntryButton:n,handlePopUpToggleFn:r,setHandlePopUpToggleFn:i})),[t,r]);return z.createElement(nI.Provider,{value:o},e)};var iI=(e,t,n)=>new Promise(((r,i)=>{var o=e=>{try{c(n.next(e))}catch(t){i(t)}},a=e=>{try{c(n.throw(e))}catch(t){i(t)}},c=e=>e.done?r(e.value):Promise.resolve(e.value).then(o,a);c((n=n.apply(e,t)).next())}));const oI=e=>iI(void 0,[e],(function*({streamInjection:e,payload:{salePageIds:t,favList:n,memberCollectionIdList:r,includeSalePageGroup:i=!1,includeInvisibleSalepage:o=!0}}){const{shopId:a}=e;try{const r=t.join(),a=gt(`Cms/GetSalePageListById?salePageIds=${r}&includeSalePageGroup=${i}&includeInvisibleSalepage=${o}`,e,!0),c=yield Nn(a);if(!c.Data)throw new Error("[ERROR] fetchSalePageList failed: No Data");return function({Data:e=[]},t){return{productList:e.map((({DisplayTags:e=[],Id:n,Title:r="",PicList:i=[],PicUrl:o="",SalePageCode:a,Price:c,SuggestPrice:l,IsSoldOut:s,IsComingSoon:u,SoldOutActionType:g="",PairsPoints:d,PairsPrice:I,PriceDisplayType:p,SubTitle:b="",Rank:m=0,Information:C="",PromotionPriceList:h=[],IsRestricted:B,SalePageGroup:A={},StatusDef:y,EnableIsComingSoon:f,IsShowSellingStartDateTime:G,SellingStartDateTime:Q,ListingStartDateTime:F,Metafields:v})=>({displayTags:e,id:n,title:r,imageList:i,imageSrc:o,salePageCode:a,link:`/SalePage/Index/${a||n}`,currency:"$",price:c,suggestPrice:l,isFav:!!t&&(0,M.indexOf)(t,n)>=0,isSoldOut:s,isComingSoon:u,soldOutActionType:g,pairsPoints:d,pairsPrice:I,priceDisplayType:p,subTitle:b,rank:m,information:C,promotionPriceList:h,isRestricted:B,salePageGroup:A,statusDef:y,enableIsComingSoon:f,isShowSellingStartDateTime:G,sellingStartDateTime:Q,listingStartDateTime:F,metafields:Uc(v)})))}}(c,n)}catch(c){return ze.error(`[ERROR] fetchSalePageList failed: ${Me(c)}: ${Je(c)}: shopId: ${a}, salePageIds: ${t}`),Promise.reject(c)}})),aI=K.default.div`
    display: flex;
    flex-direction: column;
    gap: 2px;
    margin-top: 8px;
    margin-bottom: 8px;
`,cI=K.default.div`
    ${({fontSize:e,color:t,fontWeight:n})=>`\n        font-weight: ${n};\n        color: ${t};\n        ${Be(e,2,1.5*e)}\n    `}
`,lI=K.default.div`
    display: flex;
    gap: 4px;
    flex-wrap: wrap;
`,sI=K.default.div`
    font-size: 10px;
    font-weight: 400;
    padding: 3px 4px;
    border-radius: ${Hi()?"0":"2px"};
    display: inline-block;
    white-space: nowrap;
    border: 1px solid ${({color:e})=>e};
    line-height: 1.5;
`,uI=(0,K.default)(sI)`
    color: ${({color:e})=>e};
    background-color: white;
`,gI=(0,K.default)(sI)`
    color: white;
    background-color: ${({color:e})=>e};
`,dI=({displayType:e,color:t,children:n})=>{const r=n;return"string"!=typeof r?null:e===ha.SalepageMetafieldDisplayTypeEnum.SECONDARY_LABEL?j().createElement(j().Fragment,null,r.split(",").map(((e,n)=>j().createElement(uI,{key:n,color:t},e)))):j().createElement(j().Fragment,null,r.split(",").map((e=>j().createElement(gI,{color:t},e))))},II=({displayType:e=ha.SalepageMetafieldDisplayTypeEnum.TEXT,textSize:t="14px",textColor:n="black",textWeight:r="400",value:i=""})=>{if(e===ha.SalepageMetafieldDisplayTypeEnum.PRIMARY_LABEL||e===ha.SalepageMetafieldDisplayTypeEnum.SECONDARY_LABEL)return j().createElement(lI,null,j().createElement(dI,{displayType:e,color:n},i));const o="string"==typeof t?Number(t.toLowerCase().replace("px","")):14;return j().createElement(cI,{fontSize:o,color:n,fontWeight:r},i)},pI=({metafields:e=[]})=>j().createElement(aI,null,e.map((e=>j().createElement(II,{key:e.key,displayType:e.displayType,textSize:e.textSize,textColor:e.textColor,textWeight:e.textWeight,value:e.value})))),bI=e=>{const t=e.filter((e=>!0===e)).length;return{visibleButtonCount:t,calcWidth:t*Ft+(t-1)*vt}},{buttonStyle:mI}=se.A,CI=(0,K.default)(Ie)`
    color: ${({isShoppingCartDisable:e,theme:t})=>{var n;return e?J.whiteThree:`${(null==(n=null==t?void 0:t.buttonStyle)?void 0:n.secondHeartBtnBgColor)||(null==mI?void 0:mI.secondHeartBtnBgColor)}`}};
`,hI=(0,K.default)(Ie)`
    color: ${({isShoppingCartDisable:e})=>e?J.whiteThree:mI.primaryBtnTextColor};
    width: 22px;
    height: 22px;
    border-radius: 50%;
    background-color: ${({isShoppingCartDisable:e})=>e?"transparent":mI.primaryBtnBgColor};
`,BI=(0,K.default)(pe)`
    max-width: 99px;
    border: solid 1px ${J.grey};
    background-color: ${J.white};
`,AI=K.default.i`
    margin-left: 2px;
`,yI=K.default.span`
    margin-left: 6px;

    font-size: 13px;
    font-weight: normal;
    font-style: normal;
    font-stretch: normal;
    line-height: normal;
    letter-spacing: normal;
    color: ${J.brownishGrey};

    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
    max-width: 55%;
`,fI=()=>z.createElement("i",{className:"ico ico-shopping"}),GI=({btnType:e,btnStyle:t,onBtnClick:n,isShoppingCartDisable:r=!1})=>{const i=e=>{e.preventDefault(),e.stopPropagation(),n(e)};return e===Zt.ICON?t===St.COLOR_ROUNDED_BACKGROUND?r?z.createElement(hI,{isShoppingCartDisable:r,"data-qe-id":"product-card-cart-btn"},z.createElement(fI,null)):z.createElement(hI,{isShoppingCartDisable:r,onClick:i,"data-qe-id":"product-card-cart-btn"},z.createElement(fI,null)):r?z.createElement(CI,{isShoppingCartDisable:r,"data-qe-id":"product-card-cart-btn"},z.createElement(fI,null)):z.createElement(CI,{isShoppingCartDisable:r,onClick:i,"data-qe-id":"product-card-cart-btn"},z.createElement(fI,null)):z.createElement(BI,{onClick:i,"data-qe-id":"product-card-cart-btn"},z.createElement(AI,{className:"ico ico-shopping"}),z.createElement(yI,null,(0,ja.t)(Jn.THEME_CORE.PRODUCT.ADD_TO_CART)))},{buttonStyle:QI}=se.A,FI=(0,K.default)(Ie)`
    ${({isFav:e,isFavDisable:t,theme:n})=>{var r,i;return t?`color: ${J.whiteThree}`:e?`color: ${(null==(r=null==n?void 0:n.buttonStyle)?void 0:r.primaryHeartBtnBgColor)||(null==QI?void 0:QI.primaryHeartBtnBgColor)}`:`color: ${(null==(i=null==n?void 0:n.buttonStyle)?void 0:i.secondHeartBtnBgColor)||(null==QI?void 0:QI.secondHeartBtnBgColor)}`}}
`,vI=(0,K.default)(Ie)`
    ${({isFav:e,isFavDisable:t,theme:n})=>{var r,i;return t?`color: ${J.whiteThree}`:e?`color: ${(null==(r=null==n?void 0:n.buttonStyle)?void 0:r.primaryHeartBtnBgColor)||J.grapefruit}`:`color: ${(null==(i=null==n?void 0:n.buttonStyle)?void 0:i.secondHeartBtnBgColor)||J.gunmetal}`}}
    width: 22px;
    height: 22px;
    border-radius: 50%;
    background-color: ${J.whiteTwo};
`,ZI=(0,K.default)(pe)`
    max-width: 99px;
    border: solid 1px ${({isFav:e})=>e?J.whiteTwo:J.grey};
    background-color: ${({isFav:e})=>e?J.whiteTwo:J.white};
`,EI=K.default.i`
    margin-left: 2px;

    color: ${J.grapefruit};
`,SI=K.default.span`
    margin-left: 6px;

    font-size: 13px;
    font-weight: normal;
    font-style: normal;
    font-stretch: normal;
    line-height: normal;
    letter-spacing: normal;
    color: ${J.brownishGrey};

    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
    max-width: 55%;
`,XI=({isFav:e})=>z.createElement("i",{className:qs()("ico",e?"ico-heart-fill":"ico-heart")}),TI=({btnType:e,btnStyle:t,isFav:n,onBtnClick:r,isFavDisable:i=!1})=>e===Zt.ICON?t===Xt.GRAY_ROUNDED_BACKGROUND?i?z.createElement(vI,{isFavDisable:i,isFav:n,"data-qe-id":"product-card-favor-btn"},z.createElement(XI,{isFav:n})):z.createElement(vI,{isFavDisable:i,isFav:n,onClick:r,"data-qe-id":"product-card-favor-btn"},z.createElement(XI,{isFav:n})):i?z.createElement(FI,{isFavDisable:i,isFav:n,"data-qe-id":"product-card-favor-btn"},z.createElement(XI,{isFav:n})):z.createElement(FI,{isFavDisable:i,isFav:n,onClick:r,"data-qe-id":"product-card-favor-btn"},z.createElement(XI,{isFav:n})):z.createElement(ZI,{isFav:n,onClick:r,"data-qe-id":"product-card-favor-btn"},z.createElement(EI,{className:qs()("ico",n?"ico-heart-fill":"ico-heart")}),z.createElement(SI,null,(0,ja.t)(Jn.THEME_CORE.PRODUCT.ADD_FAVORITE))),xI=K.default.div`
    display: flex;
    min-width: fit-content;
    justify-content: ${({areaRenderInfo:e})=>1===e.visibleButtonCount?"flex-end":"space-between"};

    ${({isVertical:e,isActionBtnNewLine:t})=>e?K.css`
                  position: ${t?"relative":"absolute"};
                  right: 0;
                  bottom: 3px;
              `:K.css`
                  justify-content: flex-end;
                  width: 100%;
              `}
`,UI=K.default.div`
    display: grid;
    gap: 5px;
    grid-template-columns: 1fr;
    margin-top: 10px;
`,NI=K.default.span`
    width: 28px;
    height: 28px;
    display: flex;
    justify-content: center;
    align-items: center;
`,RI=({btnType:e,isShowShoppingCart:t,isShowFav:n,isFavDisable:r=!1,isShoppingCartDisable:i=!1,isFav:o,isActionBtnNewLine:a=!1,onAddFavorite:c,onAddToCart:l,isVertical:s})=>{const u=()=>z.createElement(z.Fragment,null,n?z.createElement(NI,null,z.createElement(TI,{isFavDisable:r,btnType:e,isFav:o,onBtnClick:c})):null,t?z.createElement(NI,null,z.createElement(GI,{btnType:e,onBtnClick:l,isShoppingCartDisable:i})):null);return e===Zt.BUTTON?z.createElement(UI,null,u()):z.createElement(xI,{areaRenderInfo:bI([n,t]),isVertical:s,isActionBtnNewLine:a},u())},OI=e=>{const t=z.Children.toArray(e).reduce(((e,t)=>(z.isValidElement(t)&&("img"===t.type?e[0].push(t):e[1].push(t)),e)),[[],[]]);return{restrictedChild:t[0],maskChild:t[1]}},VI=K.default.div`
    position: absolute;
    left: 0;
    top: 0;
    width: 100%;
    height: 100%;
    pointer-events: none;
    z-index: ${he.componentZindex.base};
`,WI=K.default.div`
    box-sizing: border-box;
    width: 100%;

    position: absolute;
    bottom: 0;
    background-color: rgba(0, 0, 0, 0.6);
    padding: 8px 0;

    display: flex;
    justify-content: center;
    align-items: center;

    font-size: 12px;
    font-weight: normal;
    font-style: normal;
    font-stretch: normal;
    line-height: 1;
    letter-spacing: normal;
    color: ${J.white};
    z-index: ${he.componentZindex.base};
`,_I=K.default.div`
    display: flex;
    justify-content: center;
    align-items: center;
    width: 100%;
    height: 100%;
    background: rgba(255, 255, 255, 0.6);
    backdrop-filter: blur(2px);
    position: absolute;
    z-index: 2;
`,wI=({children:e})=>{const{restrictedChild:t,maskChild:n}=OI(e);return z.createElement(VI,null,t.length>0&&z.createElement(_I,null,t),z.createElement(WI,null,n))},HI=K.default.div`
    position: absolute;
    left: 0;
    top: 0;
    width: 100%;
    height: 100%;
    pointer-events: none;
    z-index: ${he.componentZindex.base};
`,YI=K.default.img`
    height: 100%;
    pointer-events: none;
    width: auto;
    position: absolute;
    top: 0;
    left: 50%;
    transform: translate(-50%, 0px);
`,kI=({productBadgeImage:e})=>e?z.createElement(HI,null,z.createElement(YI,{src:e,alt:`productBadgeImage_${e}`})):null,DI=({isEditMode:e,isVertical:t,imageSrc:n,edgeScale:r,title:i,figureStyle:o,productBadgeImage:a})=>{const c=(0,z.useCallback)((({currentTarget:e})=>{const{clientWidth:n,clientHeight:r}=e;if(n>r){const n=t?"product-card__vertical__media-wide":"product-card__horizontal__media-wide",r=t?"product-card__vertical__media-tall":"product-card__horizontal__media-tall";e.classList.add(n),e.classList.remove(r)}else{const n=t?"product-card__vertical__media-tall":"product-card__horizontal__media-tall",r=t?"product-card__vertical__media-wide":"product-card__horizontal__media-wide";e.classList.add(n),e.classList.remove(r)}}),[t]);return z.createElement("figure",{style:o,className:qs()({"product-card__vertical__frame":t,"product-card__vertical__frame-square":t&&r===Bt.ONE_TO_ONE,"product-card__vertical__frame-rectangle":t&&r===Bt.THREE_TO_FOUR,"product-card__horizontal__frame":!t,"product-card__horizontal__frame-square":!t&&r===Bt.ONE_TO_ONE,"product-card__horizontal__frame-rectangle":!t&&r===Bt.THREE_TO_FOUR})},a&&z.createElement(kI,{productBadgeImage:a}),e?z.createElement("img",{loading:"lazy",className:qs()({"product-card__vertical__media":t,"product-card__horizontal__media":!t}),src:n,onLoad:c,alt:i}):z.createElement("img",{loading:"lazy",className:qs()({"product-card__vertical__media":t,"product-card__vertical__media-tall":t,"product-card__horizontal__media":!t,"product-card__horizontal__media-tall":!t}),src:n,alt:i}))},LI=K.default.div`
    box-sizing: border-box;
    margin-bottom: 5px;
    overflow: hidden;
    font-size: 13px;
    color: ${J.brownishGrey};
    line-height: 20px;
    text-overflow: ellipsis;
    white-space: nowrap;
`,PI=({isVertical:e,children:t})=>z.createElement(LI,{isVertical:e},t),JI=K.default.div`
    font-size: 12px;
    line-height: 18px;
    font-weight: normal;
    color: ${J.brownishGrey};
    position: absolute;
    bottom: 10px;
`,MI=({text:e})=>z.createElement(JI,null,e);var zI=n(8103),jI=n(2325);const KI=(e,t)=>{const{sourceType:n,moduleKey:r}=t;return{sourceType:n,dataKey:xa(r,n)}},qI=()=>(0,jI.Mz)([e=>e.shop,KI],((e,{sourceType:t,dataKey:n})=>{const{categoryName:r}=e[n]||{categoryName:""};return"categoryId"===t?r:""})),$I=(e,t)=>{const{isEditMode:n,defaultCount:r,sourceType:i,moduleKey:o}=t;return{sourceType:i,dataKey:xa(o,i),defaultProductList:n?((e=0)=>[...Array(e)].map(((e,t)=>({id:t+1,title:"商品名稱 Product Name 商品名稱 Product Name 商品名稱 Product Name 商品名稱 Product Name",imageSrc:"",link:"",currency:"$",price:99,suggestPrice:100,isFav:!1,isComingSoon:!1,isSoldOut:!1,isRestricted:!1}))))(r):[],defaultIsFetching:!1}},ep=()=>(0,jI.Mz)([e=>e.shop,e=>e.salePage,$I],((e,t,{sourceType:n,dataKey:r,defaultProductList:i,defaultIsFetching:o})=>{if(n===Dr.CATEGORY_ID){const{productList:t,isFetching:n}=e[r]||{productList:i,isFetching:o};return{productList:t,isFetching:n}}const{productList:a,isFetching:c}=t[r]||{productList:i,isFetching:o};return{productList:a,isFetching:c}})),tp=(0,jI.Mz)([e=>e.locale.allCurrencies,e=>e.locale.preferredCurrency],((e,t)=>e.find((e=>e.code===t))||{decimalDigits:0,symbol:"$",rate:1})),np=({value:e})=>{const{decimalDigits:t,symbol:n,rate:r=1}=(0,Qs.useSelector)(tp);return Qe()?null:z.createElement(z.Fragment,null,(0,zI.formatMoney)(e*r,n,t))},{generalStyle:rp}=se.A,ip=K.default.div`
    box-sizing: border-box;

    display: flex;
    flex-direction: ${({isPriceOnTop:e})=>e?"column-reverse":"column"};
    justify-content: flex-end;
    width: 100%;
`,op=K.default.div.attrs((e=>({style:e.style})))`
    visibility: ${e=>e.isVisible?"visible":"hidden"};

    color: ${e=>e.isVertical?"#aaaaaa":"#999999"};
    font-weight: ${e=>e.isVertical?"unset":500};
    font-size: 12px;
    text-decoration: line-through;
    ${({isVertical:e})=>e&&Be(12,1,12,"break-all")}
    ${({isPriceOnTop:e,offsetWidth:t,isVertical:n})=>e?K.css`
                  ${n&&`width: min(100%, calc(100% - ${t}px));`}
                  line-height: 24px;
                  max-height: unset;
              `:K.css`
                  line-height: 12px;
              `};
`,ap=K.default.div.attrs((e=>({style:e.style})))`
    ${({isUseDiscountMoneyColor:e,theme:t})=>{var n,r,i;return e?K.css`
                  color: ${(null==(n=null==t?void 0:t.generalStyle)?void 0:n.discountMoneyColor)||(null==(r=null==t?void 0:t.generalStyle)?void 0:r.moneyColor)||rp.discountMoneyColor};
              `:K.css`
                  color: ${(null==(i=null==t?void 0:t.generalStyle)?void 0:i.moneyColor)||rp.moneyColor};
              `}};
    font-weight: ${e=>e.isVertical?"unset":500};
    font-size: 14px;
    ${Be(14,1,14,"break-all")}
    ${({isPriceOnTop:e,offsetWidth:t,isVertical:n,isPriceWidthExtendAllLine:r})=>e?K.css`
                  line-height: 14px;
              `:K.css`
                  ${n&&(r?"width: 100%":`width: min(100%, calc(100% - ${t}px))`)};
                  line-height: 24px;
                  max-height: unset;
              `};
`,cp=({isPriceWidthExtendAllLine:e=!1,isShowSuggestPrice:t,isShowPrice:n,isSuggestPriceShowPrice:r,isVertical:i,isMobile:o,suggestPrice:a,specialPrice:c,price:l,priceStyle:s,priceDisplayType:u,pairsPrice:g,pairsPoints:d,isShowShoppingCart:I,isShowFav:p,isPriceOnTop:b})=>{const m=bI([p,I]).calcWidth-6,C=u===Qt.POINT_PAY?a:(0,$s.getDisplaySuggestPrice)(l,a,c,r),h=(0,$s.getDisplayPrice)(l,c),B=t&&(0,$s.isShowSuggestPrice)(u,h,C,g),A=C>h;return z.createElement(ip,{isVertical:i,isPriceOnTop:b},z.createElement(op,{isVisible:B,isVertical:i,offsetWidth:m,isPriceOnTop:b},z.createElement(np,{value:C||0})),n&&h>0?z.createElement(ap,{isVertical:i,style:s,isPriceOnTop:b,offsetWidth:m,isPriceWidthExtendAllLine:e,isUseDiscountMoneyColor:A},u===Qt.PRICE&&z.createElement(np,{value:h}),u===Qt.POINT_PAY&&z.createElement(z.Fragment,null,z.createElement("span",null,z.createElement(ja.HT,{value:Jn.THEME_CORE.PRODUCT.POINTS,points:(0,zI.formatNumber)(d)}),"+"),z.createElement(np,{value:g}))):null)},lp=K.default.div`
    box-sizing: border-box;
    margin-bottom: 5px;
    overflow: hidden;
    font-weight: 400;
    font-size: 12px;
    color: ${J.warmGrey};
    line-height: 16px;
    text-overflow: ellipsis;
    white-space: nowrap;
`,sp=({isVertical:e,children:t})=>z.createElement(lp,{isVertical:e},t),{tagStyle:up}=se.A,gp=K.default.div`
    display: flex;
    margin-bottom: 4px;
    flex-wrap: wrap;
    gap: 4px;
`,dp=K.default.div`
    background-color: ${({theme:e})=>{var t;return(null==(t=null==e?void 0:e.tagStyle)?void 0:t.emphasisTagBgColor)||up.emphasisTagBgColor}};
    color: ${({theme:e})=>{var t;return(null==(t=null==e?void 0:e.tagStyle)?void 0:t.emphasisTagTextColor)||up.emphasisTagTextColor}};
    padding: 0 4px;
    font-size: 12px;
    border-radius: 2px;
    height: 20px;
    box-sizing: border-box;
    line-height: 20px;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
`,Ip=({tagList:e})=>z.createElement(gp,null,e.map(((e,t)=>z.createElement(dp,{key:`${t}_${e}`},e)))),{fontSizeDefault:pp}=Ce,bp=K.default.div.attrs((e=>({style:e.style})))`
    box-sizing: border-box;
    margin-bottom: 4px;
    height: 36px;

    overflow: hidden;
    font-weight: normal;
    font-size: ${pp};
    color: ${J.blackTwo};
    line-height: 18px;
    text-overflow: ellipsis;
    white-space: normal;

    display: -webkit-box;
    -webkit-line-clamp: 2;
    -webkit-box-orient: vertical;
`,mp=({isVertical:e,customStyle:t,titleTag:n,children:r})=>z.createElement(bp,{isVertical:e,style:null==t?void 0:t.titleStyle},n||null,r),Cp={position:"absolute",left:0,top:0,width:"100%",height:"100%",backgroundColor:"rgba(255, 255, 255, 0.75)",pointerEvents:"none",zIndex:he.componentZindex.base},hp={boxSizing:"border-box",maxWidth:"90%",position:"absolute",left:"50%",top:"50%",transform:"translate(-50%, -50%)",height:"28px",borderRadius:"16px",backgroundColor:"rgba(0, 0, 0, 0.7)",padding:"0 0.7em",display:"flex",justifyContent:"center",alignItems:"center",fontSize:"15px",fontWeight:"normal",fontStyle:"normal",fontStretch:"normal",lineHeight:"normal",letterSpacing:"normal",color:"#ffffff",pointerEvents:"none",zIndex:he.componentZindex.base},Bp={display:"flex",justifyContent:"center",alignItems:"center",width:"100%",height:"100%",background:"rgba(255, 255, 255, 0.60)",backdropFilter:"blur(2px)",position:"absolute",zIndex:2},Ap=({children:e})=>{const{restrictedChild:t,maskChild:n}=OI(e);return z.createElement("div",{style:Cp},t.length>0&&z.createElement("div",{style:Bp},t),n.length>0&&z.createElement("div",{style:hp},n))},yp=K.default.div`
    position: absolute;
    left: 0;
    top: 0;
    filter: drop-shadow(0px 2px 2px rgba(0, 0, 0, 0.05));
    z-index: ${he.componentZindex.base};
`,fp=K.default.svg`
    flex: none;
    width: 26px;
    height: 32px;
`,Gp=K.default.span`
    position: absolute;
    top: 9px;
    left: 50%;
    transform: translateX(-50%);
    color: ${J.white};
    font-weight: 900;
    font-size: ${Ce.fontSizeXs};
    text-shadow: 0px 1px 1px rgba(0, 0, 0, 0.1);
`,Qp=({rank:e})=>z.createElement(yp,null,z.createElement(fp,{viewBox:"0 0 26 32"},z.createElement("path",{d:"M0 0H26V26.5974L13 32L0 26.5974V0Z",fill:J.yellow})),z.createElement(Gp,null,e)),Fp=K.default.div`
    padding-top: 5px;
    position: absolute;
    right: ${({distance:e})=>e};
    button {
        width: auto;
        height: auto;
        font-size: ${({bottomFontSize:e})=>e};
    }
`,vp=K.default.i`
    color: ${J.darkGrey};
    margin-left: 5px;
    cursor: pointer;
`,Zp=({removeHandler:e,isVertical:t,isMobile:n})=>{const{bottomFontSize:r,distance:i}=(({isVertical:e,isMobile:t})=>{let n="0px",r="13px";return e||t?!e&&t?(n="10px",r="13px"):e&&!t?(n="8px",r="16px"):e&&t&&(n="6px",r="13px"):(n="15px",r="16px"),{distance:n,bottomFontSize:r}})({isVertical:t,isMobile:n});return z.createElement(Fp,{bottomFontSize:r,distance:i},z.createElement(vp,{className:"ico ico-close",onClick:t=>{t.stopPropagation(),e()}}))};var Ep=Object.defineProperty,Sp=Object.getOwnPropertySymbols,Xp=Object.prototype.hasOwnProperty,Tp=Object.prototype.propertyIsEnumerable,xp=(e,t,n)=>t in e?Ep(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n;const Up=(0,K.default)(yd.A)`
    // 解套件搭配不固定的元素時，會在滑動產生高度偏移的問題
    .slick-slide > div {
        display: flex;
    }
`,Np=K.default.div`
    border-radius: 6px;
    display: inline-block;
    margin: 0px 1.5px;
    width: ${({size:e})=>e};
    height: ${({size:e})=>e};
    background-color: ${({dotColor:e})=>e};
    vertical-align: middle;
    transition-property: background-color, font-size;
    transition-duration: 0.1s;
    transition-timing-function: ease-out;
`,Rp=K.default.div`
    display: flex;
    transform: ${({transformNumber:e})=>`translate(${e}, 0px);`};
    transition-duration: 0.2s;
`,Op=K.default.div`
    position: absolute;
    bottom: 6px;
    width: 100%;
    display: flex;
    justify-content: center;
    align-items: center;
    z-index: ${he.componentZindex.sliderDots};
`,Vp=({listLength:e,children:t})=>{const n=50/(e-1),[r,i]=(0,z.useState)(0),[o,a]=(0,z.useState)(0),[c,l]=(0,z.useState)(4),[s,u]=(0,z.useState)("25%"),g={dots:!0,infinite:!0,speed:500,slidesToShow:1,slidesToScroll:1,dotsClass:"",appendDots:e=>z.createElement(Op,null,z.createElement(Rp,{transformNumber:s},e)),customPaging:e=>(e=>{let t="4px",n="#DDDDDD";return e===r&&(t="6px",n="#999999"),o<=e&&c>=e?z.createElement(Np,{key:e,size:t,dotColor:n}):z.createElement(Np,{key:e,size:t,dotColor:"transparent"})})(e),afterChange:t=>{u(25-t*n+"%"),i(t),(t=>{t<3?(a(0),l(4)):t>e-3?(a(e-5),l(e)):(a(t-2),l(t+2))})(t)}};return z.createElement(Up,((e,t)=>{for(var n in t||(t={}))Xp.call(t,n)&&xp(e,n,t[n]);if(Sp)for(var n of Sp(t))Tp.call(t,n)&&xp(e,n,t[n]);return e})({},g),t)},Wp=K.default.a`
    display: block;
    position: relative;
    border-bottom: none;
`,_p=K.default.div`
    box-sizing: border-box;
    position: relative;
    overflow: hidden;
    background-color: rgba(255, 255, 255, 0.9);
    padding: 6px;
    flex: ${({isVertical:e})=>e?"unset":1};
    display: flex;
    flex-direction: column;
    justify-content: ${({isVertical:e})=>e?"space-between":"unset"};
`,wp=K.default.div`
    display: flex;
    justify-content: space-between;
    flex-direction: ${({isButton:e,isActionBtnNewLine:t})=>e||t?"column":"row"};
    align-items: ${({isButton:e})=>e?"unset":"flex-end"};

    ${({isVertical:e})=>!e&&K.css`
            flex: 1;
            flex-direction: column;
            align-items: flex-start;
            justify-content: space-between;
        `}
`,Hp=K.default.div`
    ${({hasRemoveIcon:e})=>e?"padding-right: 20px":""}
`,Yp=K.default.div`
    position: relative;
    width: 100%;
    height: 100%;
    overflow: hidden;
`;var kp=Object.defineProperty,Dp=Object.defineProperties,Lp=Object.getOwnPropertyDescriptors,Pp=Object.getOwnPropertySymbols,Jp=Object.prototype.hasOwnProperty,Mp=Object.prototype.propertyIsEnumerable,zp=(e,t,n)=>t in e?kp(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,jp=(e,t)=>{for(var n in t||(t={}))Jp.call(t,n)&&zp(e,n,t[n]);if(Pp)for(var n of Pp(t))Mp.call(t,n)&&zp(e,n,t[n]);return e},Kp=(e=>(e.BOTTOMMASK="bottom-mask",e.MIDDLEMASK="middle-mask",e))(Kp||{});const qp=({maskConfig:e})=>{const{maskType:t,isShowMask:n,maskChildren:r}=e;return n&&t?"middle-mask"===t?z.createElement(Ap,null,r):"bottom-mask"===t?z.createElement(wI,null,r):null:null},$p={width:"65%"},eb=({maskConfig:e,imageServiceConfig:t,imgAlt:n})=>{const{maskType:r,isShowMask:i,maskChildren:o}=e,a=z.createElement("img",{loading:"lazy",style:$p,src:rt(t,uo),alt:n});return i&&r?"middle-mask"===r?z.createElement(Ap,null,a,o):"bottom-mask"===r?z.createElement(wI,null,a,o):null:z.createElement(Ap,null,a)},tb=({bottomButtonBlock:e,contentbottomBlock:t,isVertical:n=!0,subTitle:r,displayMode:i=Gt.DESKTOP,cardEdgeScale:{selectedValue:o}={selectedValue:"1:1"},customStyle:a,columnCount:c,title:l="",information:s="",salePageId:u=0,position:g,isEditMode:d=!1,imageSrc:I,moduleId:p="",isEnableProudctCardGroup:b=!1,isEnableMask:m=!1,imageServiceConfig:C,maskConfig:h={isShowMask:!1},categoryId:B,salePageCode:A="",favoriteList:y=[],favoriteConfig:f={isShowFav:!1,isFav:!1,isDisable:!1,buttonType:Zt.ICON,onAddFavorite:()=>{}},tagList:G=[],priceConfig:Q={price:0,isShowPrice:!1,suggestPrice:0,specialPrice:0,isShowSuggestPrice:!1,isPriceOnTop:!0,isSuggestPriceShowPrice:!1,priceDisplayType:Qt.PRICE},pointPayConfig:F={pairsPoints:0,pairsPrice:0},productBadgeImage:v,shoppingCartConfig:Z={isShowShoppingCart:!0,isDisable:!1,onAddShoppingCart:()=>{}},rank:E,cardLink:S={link:"",target:"_blank",toSalePageCallBackFunction:()=>{}},removeIconConfig:X={hasRemoveIcon:!1,removeHandler:()=>{}},imageList:T=[],titleTag:x,note:U="",salePageGroup:N,promotionMemberCollectionIdList:R=[],isRestricted:O=!1,sourceType:V,combinedMetafields:W=[]})=>{var _,w;const{price:H,isShowPrice:Y,suggestPrice:k,isShowSuggestPrice:D,isPriceOnTop:L,priceDisplayType:P,isSuggestPriceShowPrice:J,specialPrice:M}=Q,{pairsPoints:j,pairsPrice:K}=F,{link:q,target:$,toSalePageCallBackFunction:ee}=S,{isShowFav:te,isFav:ne,buttonType:re,onAddFavorite:ie}=f,{isClickEntryButton:oe,handlePopUpToggleFn:ae}=(0,z.useContext)(nI),[ce,le]=(0,z.useState)({id:u,link:q,imageSrc:I,imageList:T,title:l,isFav:ne,suggestPrice:k,price:H,pairsPoints:j,pairsPrice:K,priceDisplayType:P,rank:E,maskConfig:h,information:s,subTitle:r,salePageCode:A,productBadgeImage:v,specialPrice:M,tagList:G,isRestricted:O}),[se,ue]=(0,z.useState)(ne||!1),[ge,de]=(0,z.useState)(),{setSalePageId:Ie,setCurrentProductInfo:pe}=(0,z.useContext)(Ru),be=(0,z.useMemo)((()=>{const e=Oi(),{productCard:t}=e;return Object.keys(e).length&&t?jp(jp({},a),t):a}),[]),me=JSON.stringify(G);(0,z.useEffect)((()=>{ue(ne||(null==y?void 0:y.includes(ce.id)))}),[ne,y]),(0,z.useEffect)((()=>{ce.isRestricted&&"false"!==(0,Bn.getCookie)("isRestricted")?de(!0):de(!1)}),[oe]),(0,z.useEffect)((()=>{le({id:u,link:q,imageSrc:I,imageList:T,title:l,isFav:ne,suggestPrice:k,price:H,pairsPoints:j,pairsPrice:K,priceDisplayType:P,rank:E,maskConfig:h,information:s,subTitle:r,salePageCode:A,productBadgeImage:v,specialPrice:M,tagList:JSON.parse(me),isRestricted:O}),O&&"false"!==(0,Bn.getCookie)("isRestricted")?de(!0):de(!1)}),[u,H,k,me]);const Ce=({salePageId:e,title:t,price:n,suggestPrice:r,position:i,link:o,toSalePageCallBackFunction:a,target:c="_blank"})=>{a&&a(e,t,n,r,o?window.location.origin+o:"",i),o&&window.open(o,c)},he=(({salePageId:e,title:t,price:n,suggestPrice:r,position:i,isFav:o,setIsFav:a,onAddFavorite:c})=>(0,z.useCallback)((l=>{if(l.preventDefault(),l.stopPropagation(),!e)return;const s=!o;a(s),c&&c(e,t,n,r,s,i)}),[e,o,a,c,t,n,r,i]))({salePageId:ce.id,title:ce.title,price:ce.price,suggestPrice:ce.suggestPrice,position:g,isFav:se,setIsFav:ue,onAddFavorite:ie}),{checkPurchaseQualificationValid:Be}=(0,z.useContext)(eI),Ae=()=>{Z.onAddShoppingCart?Z.onAddShoppingCart():(0,Hl.flushSync)((()=>{Ie(ce.id),pe({id:ce.id,name:ce.title,price:ce.price,suggestPrice:ce.suggestPrice,categoryId:B,salePageCode:ce.salePageCode})}))},ye=e=>{const t=xe(),n=dn(t),{shopId:r}=n;oI({streamInjection:n,payload:{salePageIds:[e],favList:y}}).then((({productList:e})=>{const{isComingSoon:t,isSoldOut:n,soldOutActionType:r,displayTags:i,isFav:a,priceDisplayType:c,promotionPriceList:l,isRestricted:s,price:u,enableIsComingSoon:g,isShowSellingStartDateTime:d,sellingStartDateTime:I,listingStartDateTime:p}=e[0],b=md({isEnableMask:m,isComingSoon:t,isSoldOut:n,soldOutActionType:r,enableIsComingSoon:g,isShowSellingStartDateTime:d,sellingStartDateTime:I,listingStartDateTime:p})||{},C=Ea(i,o),h=(0,$s.mappingSpecialPriceData)(l,R),B=h?h.price:0,A=(0,$s.mappingSpecialPriceDataLabel)(h,u,c),y=A?[A]:[];var f;le((f=jp({},e[0]),Dp(f,Lp({maskConfig:b,productBadgeImage:C,specialPrice:B,tagList:y})))),ue(a),s&&"false"!==(0,Bn.getCookie)("isRestricted")?de(!0):setTimeout((()=>de(!1)),At)})).catch((t=>{ze.error(`[ERROR] fetchSalePageList: ${Me(t)}: ${Je(t)}: shopId: ${r}, salePageId: ${e}`)}))},fe=(0,z.useMemo)((()=>rt(C,d?"recommendationId"===V?Ki:ji:Li)),[d,C,V]),Ge=D||Y&&ce.price>0,Qe="ProductC"===p&&i===Gt.MOBILE;return z.createElement(Wp,{href:ce.link||"javascript:void(0)",onClick:e=>{e.preventDefault(),ce.isRestricted&&"false"!==(0,Bn.getCookie)("isRestricted")&&ae?ae(!0,(()=>Ce({salePageId:ce.id,title:ce.title,price:ce.price,suggestPrice:ce.suggestPrice,position:g,link:ce.link,toSalePageCallBackFunction:ee,target:$}))):Ce({salePageId:ce.id,title:ce.title,price:ce.price,suggestPrice:ce.suggestPrice,position:g,link:ce.link,toSalePageCallBackFunction:ee,target:$})},className:qs()({"product-card__vertical":n,"product-card__vertical--hover":n&&i===Gt.DESKTOP,"product-card__horizontal":!n,"new-product-card":!0}),style:null==be?void 0:be.bannerStyle},z.createElement("div",{className:qs()({"product-card__vertical__wrapper":n,"product-card__horizontal__wrapper":!n})},z.createElement("div",{className:qs()({"product-card__vertical__media-container":n,"product-card__horizontal__media-container":!n})},ce.imageList&&ce.imageList.length>1&&i===Gt.MOBILE&&n?z.createElement(Vp,{listLength:ce.imageList.length},ce.imageList.map(((e,t)=>z.createElement(Yp,{key:e},z.createElement(DI,{isEditMode:d,isVertical:n,imageSrc:e||fe,edgeScale:o,title:ce.title,figureStyle:null==a?void 0:a.figureStyle,productBadgeImage:0===t?ce.productBadgeImage:""}))))):z.createElement(Yp,null,z.createElement(DI,{isEditMode:d,isVertical:n,imageSrc:ce.imageSrc||fe,edgeScale:o,title:ce.title,figureStyle:null==be?void 0:be.figureStyle,productBadgeImage:ce.productBadgeImage})),ge?!yn()&&z.createElement(eb,{maskConfig:ce.maskConfig,imageServiceConfig:C,imgAlt:ce.title}):(null==(_=ce.maskConfig)?void 0:_.isShowMask)&&z.createElement(qp,{maskConfig:ce.maskConfig}),ce.rank?z.createElement(Qp,{rank:ce.rank}):null),b&&(null==(w=null==N?void 0:N.SalePageItems)?void 0:w.length)>0&&n&&1!==c&&(i===Gt.MOBILE?z.createElement(Kd,{mainSalePageId:u,salePageGroup:N,handleProductGroupClick:ye}):z.createElement(Vd,{mainSalePageId:u,salePageGroup:N,handleProductGroupClick:ye})),z.createElement(_p,{isVertical:n},ce.subTitle?z.createElement(sp,{isVertical:n},ce.subTitle):null,(Fe=W,Array.isArray(Fe)&&0!==Fe.length?z.createElement(pI,{metafields:W}):z.createElement(z.Fragment,null,ce.title&&z.createElement(Hp,{hasRemoveIcon:null==X?void 0:X.hasRemoveIcon},z.createElement(mp,{isVertical:n,customStyle:be,titleTag:x},ce.title)))),ce.information?z.createElement(PI,{isVertical:n},ce.information):null,ce.tagList.filter((e=>!!e)).length>0&&z.createElement(Ip,{tagList:ce.tagList}),z.createElement(wp,{isVertical:n,isButton:re===Zt.BUTTON,isActionBtnNewLine:Qe},Ge&&z.createElement(cp,{isPriceWidthExtendAllLine:"ProductC"===p&&i===Gt.MOBILE,isShowSuggestPrice:D,isShowPrice:Y,isSuggestPriceShowPrice:J,isVertical:n,specialPrice:ce.specialPrice,suggestPrice:ce.suggestPrice,price:ce.price,priceStyle:null==be?void 0:be.priceStyle,"data-qe-id":"product_card_price",isShowShoppingCart:Z.isShowShoppingCart,isShowFav:te,isPriceOnTop:L,isMobile:i===Gt.MOBILE,priceDisplayType:ce.priceDisplayType,pairsPrice:ce.pairsPrice,pairsPoints:ce.pairsPoints}),Z.isShowShoppingCart||te?z.createElement(RI,{btnType:re,isShowShoppingCart:Z.isShowShoppingCart,isShoppingCartDisable:Z.isDisable,isFavDisable:f.isDisable,isShowFav:te,isFav:se,isActionBtnNewLine:Qe,isVertical:n,onAddFavorite:he,onAddToCart:()=>{return e=function*(){var e;try{if(!(yield Be(ce.id)))return}catch(t){null==(e=Pe)||e.sendLogs([{severity:"ERROR",message:"[components/cross/ProductCard/index.tsx] onCheckValidBeforeAddShoppingCart error",customPayload:{stack:t.stack,errorInfo:t.message}}])}ce.isRestricted&&"false"!==(0,Bn.getCookie)("isRestricted")&&ae?ae(!0,Ae):Ae()},new Promise(((n,r)=>{var i=n=>{try{a(e.next(n))}catch(t){r(t)}},o=n=>{try{a(e.throw(n))}catch(t){r(t)}},a=e=>e.done?n(e.value):Promise.resolve(e.value).then(i,o);a((e=e.apply(void 0,null)).next())}));var e}}):null,U&&z.createElement(MI,{text:U}),t||null)),e||null,(null==X?void 0:X.hasRemoveIcon)&&z.createElement(Zp,{removeHandler:X.removeHandler,isVertical:n,isMobile:i===Gt.DESKTOP})));var Fe};var nb=Object.defineProperty,rb=Object.defineProperties,ib=Object.getOwnPropertyDescriptors,ob=Object.getOwnPropertySymbols,ab=Object.prototype.hasOwnProperty,cb=Object.prototype.propertyIsEnumerable,lb=(e,t,n)=>t in e?nb(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n;const sb=({columnCount:e,columnGutter:t=0,rowGutter:n=0,customCssClass:{wrapperCssClass:r="",containerCssClass:i="",contentCssClass:o="",columnItemCssClass:a=""}={},customStyles:c={},children:l})=>{const s=qs()("column-grid-container",i),u=qs()("column-grid-container__wrapper",r),g=qs()("column-grid-container__content",o),d=qs()("column-grid-container__column",a),{containerStyle:I={},wrapperStyle:p={},columnItemStyle:b={}}=c,m={width:`calc((100% - ${t*(e-1)}px) / ${e})`,padding:b.padding,position:b.position||"static",display:b.display||"initial"},C=z.Children.count(l),h=z.Children.map(l,((r,i)=>{const o=Math.ceil((i+1)/e)>=Math.ceil(C/e),a=(c=((e,t)=>{for(var n in t||(t={}))ab.call(t,n)&&lb(e,n,t[n]);if(ob)for(var n of ob(t))cb.call(t,n)&&lb(e,n,t[n]);return e})({},m),rb(c,ib({marginRight:`${(i+1)%e==0?0:t}px`,marginBottom:`${o?0:n}px`})));var c;return z.createElement("li",{key:i,className:d,style:a},r)}));return z.createElement("div",{className:s,style:I},z.createElement("div",{className:u,style:p},z.createElement("ul",{className:g},h)))},ub=K.default.div`
    display: flex;
    min-width: fit-content;
    width: ${({areaRenderInfo:e})=>`calc(min(${e.calcWidth}px, 100%))`};
    justify-content: ${({areaRenderInfo:e})=>1===e.visibleButtonCount?"flex-end":"space-between"};
`,gb=K.default.div`
    display: grid;
    gap: 5px;
    grid-template-columns: 1fr;
    margin-top: 10px;
`,db=({addToCartBtnStyle:e,btnType:t,favoriteBtnStyle:n,favoriteBtnPosition:r,isShowShoppingCart:i,isShowFav:o,isVertical:a,isFav:c,onAddFavorite:l,onAddToCart:s})=>{const u=()=>z.createElement(z.Fragment,null,o&&r===Tt.ACTION_BTN_AREA?z.createElement(TI,{btnType:t,btnStyle:n,isFav:c,onBtnClick:l}):null,i?z.createElement(GI,{btnType:t,btnStyle:e,onBtnClick:s}):null);return t===Zt.BUTTON?z.createElement(gb,null,u()):z.createElement(ub,{areaRenderInfo:(e=>{const t=e.filter((e=>!0===e)).length;return{visibleButtonCount:t,calcWidth:16*t+20*(t-1)}})([o&&r===Tt.ACTION_BTN_AREA,i])},u())},Ib=({isEditMode:e,isVertical:t,imageSrc:n,edgeScale:r,title:i,figureStyle:o})=>{const a=(0,z.useCallback)((({currentTarget:e})=>{const{clientWidth:n,clientHeight:r}=e;if(n>r){const n=t?"product-card__vertical__media-wide":"product-card__horizontal__media-wide",r=t?"product-card__vertical__media-tall":"product-card__horizontal__media-tall";e.classList.add(n),e.classList.remove(r)}else{const n=t?"product-card__vertical__media-tall":"product-card__horizontal__media-tall",r=t?"product-card__vertical__media-wide":"product-card__horizontal__media-wide";e.classList.add(n),e.classList.remove(r)}}),[t]);return z.createElement("figure",{style:o,className:qs()({"product-card__vertical__frame":t,"product-card__vertical__frame-square":t&&r===Bt.ONE_TO_ONE,"product-card__vertical__frame-rectangle":t&&r===Bt.THREE_TO_FOUR,"product-card__horizontal__frame":!t,"product-card__horizontal__frame-square":!t&&r===Bt.ONE_TO_ONE,"product-card__horizontal__frame-rectangle":!t&&r===Bt.THREE_TO_FOUR})},e?z.createElement("img",{loading:"lazy",className:qs()({"product-card__vertical__media":t,"product-card__horizontal__media":!t}),src:n,onLoad:a,alt:i}):z.createElement("img",{loading:"lazy",className:qs()({"product-card__vertical__media":t,"product-card__vertical__media-tall":t,"product-card__horizontal__media":!t,"product-card__horizontal__media-tall":!t}),src:n,alt:i}))},pb=K.default.div`
    box-sizing: border-box;
    margin-bottom: 5px;
    overflow: hidden;
    font-size: 13px;
    color: ${J.brownishGrey};
    line-height: 20px;
    text-overflow: ellipsis;
    white-space: nowrap;
`,bb=({isVertical:e,children:t})=>z.createElement(pb,{isVertical:e},t),{generalStyle:mb}=se.A,Cb=K.default.div`
    box-sizing: border-box;

    display: flex;
    flex-direction: column;
    justify-content: flex-end;
`,hb=K.default.div.attrs((e=>({style:e.style})))`
    visibility: ${e=>e.isVisible?"visible":"hidden"};

    color: ${e=>e.isVertical?"#aaaaaa":"#999999"};
    font-weight: ${e=>e.isVertical?"unset":500};
    font-size: 12px;
    line-height: 1.2;
    text-decoration: line-through;
`,Bb=K.default.div.attrs((e=>({style:e.style})))`
    color: ${e=>{var t,n;return(null==(n=null==(t=e.theme)?void 0:t.generalStyle)?void 0:n.moneyColor)||mb.moneyColor}};
    font-weight: ${e=>e.isVertical?"unset":500};
    font-size: 14px;
    line-height: 1.2;
`,Ab=({isShowSuggestPrice:e,isShowPrice:t,isVertical:n,suggestPrice:r,price:i,priceStyle:o})=>z.createElement(Cb,{isVertical:n},z.createElement(hb,{isVisible:e&&r>i,isVertical:n},z.createElement(np,{value:r||0})),t&&i>0?z.createElement(Bb,{isVertical:n,style:o},z.createElement(np,{value:i})):null),yb=K.default.div`
    box-sizing: border-box;
    margin-bottom: 5px;
    overflow: hidden;
    font-weight: 400;
    font-size: 12px;
    color: ${J.warmGrey};
    line-height: 16px;
    text-overflow: ellipsis;
    white-space: nowrap;
`,fb=({isVertical:e,children:t})=>z.createElement(yb,{isVertical:e},t),{fontSizeDefault:Gb}=Ce,Qb=K.default.div.attrs((e=>({style:e.style})))`
    box-sizing: border-box;
    margin-bottom: 5px;
    height: 40px;

    overflow: hidden;

    font-weight: normal;
    font-size: ${Gb};
    color: ${J.blackTwo};
    line-height: 20px;
    text-overflow: ellipsis;
    white-space: normal;

    display: -webkit-box;
    -webkit-line-clamp: 2;
    -webkit-box-orient: vertical;
`,Fb=({isVertical:e,customStyle:t,children:n})=>z.createElement(Qb,{isVertical:e,style:null==t?void 0:t.titleStyle},n),vb=K.default.div`
    position: absolute;
    right: 0;
    top: 0;
    filter: drop-shadow(0px 2px 2px rgba(0, 0, 0, 0.05));
    z-index: ${he.componentZindex.base};
`,Zb=K.default.svg`
    flex: none;
    width: 26px;
    height: 32px;
`,Eb=K.default.span`
    position: absolute;
    top: 9px;
    left: 50%;
    transform: translateX(-50%);
    color: ${J.white};
    font-weight: 900;
    font-size: ${Ce.fontSizeXs};
    text-shadow: 0px 1px 1px rgba(0, 0, 0, 0.1);
`,Sb=({rank:e})=>z.createElement(vb,null,z.createElement(Zb,{viewBox:"0 0 26 32"},z.createElement("path",{d:"M0 0H26V26.5974L13 32L0 26.5974V0Z",fill:J.yellow})),z.createElement(Eb,null,e)),Xb=K.default.div`
    position: absolute;
    left: 0;
    top: 0;
    width: 100%;
    height: 100%;
`,Tb=K.default.div`
    box-sizing: border-box;
    max-width: 90%;

    position: absolute;
    left: 50%;
    bottom: 8px;
    transform: translate(-50%);
    height: 22px;
    border-radius: 11px;
    background-color: rgba(0, 0, 0, 0.7);
    padding: 0 0.7em;

    display: flex;
    justify-content: center;
    align-items: center;

    font-size: 12px;
    font-weight: normal;
    font-style: normal;
    font-stretch: normal;
    line-height: normal;
    letter-spacing: normal;
    color: #ffffff;
`,xb=K.default.span`
    overflow: hidden;
    white-space: nowrap;
    text-overflow: ellipsis;
`,Ub=({children:e})=>z.createElement(Xb,null,z.createElement(Tb,null,z.createElement(xb,null,e))),Nb=(K.default.div`
    position: absolute;
    left: 0;
    top: 0;
    width: 100%;
    height: 100%;
    background-color: rgba(255, 255, 255, 0.75);
`,K.default.div`
    box-sizing: border-box;
    max-width: 90%;

    position: absolute;
    left: 50%;
    top: 50%;
    transform: translate(-50%, -50%);
    height: 28px;
    border-radius: 16px;
    background-color: rgba(0, 0, 0, 0.7);
    padding: 0 0.7em;

    display: flex;
    justify-content: center;
    align-items: center;

    font-size: 15px;
    font-weight: normal;
    font-style: normal;
    font-stretch: normal;
    line-height: normal;
    letter-spacing: normal;
    color: #ffffff;
`,K.default.span`
    overflow: hidden;
    white-space: nowrap;
    text-overflow: ellipsis;
`,{position:"absolute",left:0,top:0,width:"100%",height:"100%",backgroundColor:"rgba(255, 255, 255, 0.75)"}),Rb={boxSizing:"border-box",maxWidth:"90%",position:"absolute",left:"50%",top:"50%",transform:"translate(-50%, -50%)",height:"28px",borderRadius:"16px",backgroundColor:"rgba(0, 0, 0, 0.7)",padding:"0 0.7em",display:"flex",justifyContent:"center",alignItems:"center",fontSize:"15px",fontWeight:"normal",fontStyle:"normal",fontStretch:"normal",lineHeight:"normal",letterSpacing:"normal",color:"#ffffff"},Ob={overflow:"hidden",whiteSpace:"nowrap",textOverflow:"ellipsis"},Vb=({children:e})=>z.createElement("div",{style:Nb},z.createElement("div",{style:Rb},z.createElement("span",{style:Ob},e)));var Wb=n(7475);const _b=(0,Wb.createAction)("FETCH_ACTIVITY_LIST")(),wb=(0,Wb.createCustomAction)("FETCH_ACTIVITY_LIST_FULFILLED",(e=>({payload:e,module:"activity",dataSource:"activityList"}))),Hb=(0,Wb.createAction)("FETCH_ACTIVITY_LIST_REJECTED")(),Yb=(0,Wb.createAction)("FETCH_COUPON_LIST")(),kb=(0,Wb.createCustomAction)("FETCH_COUPON_LIST_FULFILLED",(e=>({payload:e,dataSource:"couponList"}))),Db=(0,Wb.createAction)("FETCH_COUPON_LIST_REJECTED")(),Lb=(0,Wb.createAction)("FETCH_ECOUPON_LIST")(),Pb=(0,Wb.createCustomAction)("FETCH_ECOUPON_LIST_FULFILLED",(e=>({payload:e,dataSource:"ecouponList"}))),Jb=(0,Wb.createAction)("FETCH_ECOUPON_LIST_REJECTED")(),Mb=(0,Wb.createAction)("FETCH_FAVORITE_LIST")(),zb=(0,Wb.createCustomAction)("FETCH_FAVORITE_LIST_FULFILLED",(e=>({payload:e,dataSource:"favoriteList"}))),jb=(0,Wb.createCustomAction)("FETCH_FAVORITE_LIST_REJECTED",(e=>({errorMsg:e}))),Kb=(0,Wb.createAction)("FETCH_FAVORITE_COUNT")(),qb=(0,Wb.createCustomAction)("FETCH_FAVORITE_COUNT_FULFILLED",(e=>({payload:e,dataSource:"favoriteCount"}))),$b=(0,Wb.createCustomAction)("FETCH_FAVORITE_COUNT_REJECTED",(e=>({errorMsg:e}))),em=(0,Wb.createAction)("ADD_FAVORITE")(),tm=(0,Wb.createCustomAction)("ADD_FAVORITE_FULFILLED",(e=>({payload:e,dataSource:"addFavoriteResult"}))),nm=(0,Wb.createAction)("ADD_FAVORITE_REJECTED")(),rm=(0,Wb.createCustomAction)("REMOVE_FAVORITE",(e=>e)),im=(0,Wb.createAction)("REMOVE_FAVORITE_FULFILLED")(),om=(0,Wb.createAction)("REMOVE_pFAVORITE_REJECTED")(),am=(0,Wb.createAction)("SET_EXCHANGE_RATES")(),cm=(0,Wb.createAction)("SET_AVAILABLE_CURRENCIES")(),lm=(0,Wb.createAction)("SET_PREFERRED_CURRENCY")(),sm=(0,Wb.createAction)("INIT_LANG_INFO")(),um=(0,Wb.createCustomAction)("FETCH_RECAPTCHA_KEY",(()=>({}))),gm=(0,Wb.createCustomAction)("FETCH_RECAPTCHA_KEY_FULFILLED",(e=>({payload:e,dataSource:"reCaptchaKey"}))),dm=(0,Wb.createAction)("FETCH_RECAPTCHA_KEY_REJECTED")(),Im=(0,Wb.createCustomAction)("SEND_APP_DOWNLOAD_LINK",((e,t)=>({phoneNumber:e,reCaptchaToken:t}))),pm=(0,Wb.createCustomAction)("SEND_APP_DOWNLOAD_LINK_FULFILLED",(e=>({payload:e,dataSource:"sendAppResult"}))),bm=(0,Wb.createAction)("SEND_APP_DOWNLOAD_LINK_REJECTED")(),mm=(0,Wb.createAction)("INIT_MESSAGE")(),Cm=(0,Wb.createAction)("SHOW_MESSAGE")(),hm=(0,Wb.createAction)("SWITCH_LOADING")(),Bm=(0,Wb.createAction)("FETCH_PROMOTION_COUNT")(),Am=(0,Wb.createAction)("FETCH_PROMOTION_COUNT_FULFILLED")(),ym=(0,Wb.createAction)("FETCH_PROMOTION_COUNT_REJECTED")(),fm=(0,Wb.createAction)("FETCH_PROMOTION_TARGET_LIST")(),Gm=(0,Wb.createCustomAction)("FETCH_PROMOTION_TARGET_LIST_FULFILLED",(e=>({payload:e,dataSource:"promotionTargetList"}))),Qm=(0,Wb.createAction)("FETCH_PROMOTION_TARGET_LIST_REJECTED")(),Fm=(0,Wb.createCustomAction)("FETCH_PROMOTION_LIST",(({moduleKey:e,orderBy:t,startIndex:n,maxCount:r,typeDef:i,promotionListFromType:o})=>({moduleKey:e,orderBy:t,startIndex:n,maxCount:r,typeDef:i,promotionListFromType:o}))),vm=(0,Wb.createCustomAction)("FETCH_PROMOTION_LIST_FULFILLED",((e,t)=>({moduleKey:e,payload:t}))),Zm=(0,Wb.createAction)("FETCH_PROMOTION_LIST_REJECTED")(),Em=(0,Wb.createCustomAction)("FETCH_PROMOTION_LIST_BY_ID",(({moduleKey:e,promotionIdList:t,promotionListFromType:n})=>({moduleKey:e,promotionIdList:t,promotionListFromType:n}))),Sm=(0,Wb.createCustomAction)("FETCH_PROMOTION_LIST_BY_ID_FULFILLED",((e,t)=>({moduleKey:e,payload:t}))),Xm=(0,Wb.createCustomAction)("FETCH_PROMOTION_LIST_BY_ID_REJECTED",(e=>({error:e}))),Tm=(0,Wb.createAction)("FETCH_PROMOTION_LIST_IN_SHOP_CATEGORY")(),xm=(0,Wb.createAction)("FETCH_PROMOTION_LIST_IN_SHOP_CATEGORY_FULFILLED")(),Um=(0,Wb.createAction)("FETCH_PROMOTION_LIST_IN_SHOP_CATEGORY_REJECTED")(),Nm=(0,Wb.createAction)("FETCH_RETAIL_STORE_CUSTOM_LINK_SETTING_LIST")(),Rm=(0,Wb.createAction)("FETCH_RETAIL_STORE_CUSTOM_LINK_SETTING_LIST_FULFILLED")(),Om=(0,Wb.createAction)("FETCH_RETAIL_STORE_CUSTOM_LINK_SETTING_LIST_REJECTED")(),Vm=(0,Wb.createCustomAction)("FETCH_HISTORY_SALEPAGE_LIST",(e=>({salePageIds:e}))),Wm=(0,Wb.createCustomAction)("FETCH_HISTORY_SALEPAGE_LIST_FULFILLED",(e=>({payload:e,dataSource:"historySalePageList"}))),_m=(0,Wb.createAction)("FETCH_HISTORY_SALEPAGE_LIST_REJECTED")(),wm=(0,Wb.createCustomAction)("FETCH_SALEPAGE_INFO",(e=>({salePageId:e}))),Hm=(0,Wb.createAction)("FETCH_SALEPAGE_INFO_FULFILLED")(),Ym=(0,Wb.createAction)("FETCH_SALEPAGE_INFO_REJECTED")(),km=(0,Wb.createCustomAction)("FETCH_SALEPAGE_STATUS",(e=>({salePageId:e}))),Dm=(0,Wb.createAction)("FETCH_SALEPAGE_STATUS_FULFILLED")(),Lm=(0,Wb.createAction)("FETCH_SALEPAGE_STATUS_REJECTED")(),Pm=(0,Wb.createAction)("UPDATE_SALEPAGE_STOCK")(),Jm=(0,Wb.createAction)("UPDATE_SALEPAGE_STOCK_FULFILLED")(),Mm=(0,Wb.createAction)("UPDATE_SALEPAGE_STOCK_REJECTED")(),zm=(0,Wb.createCustomAction)("FETCH_SALEPAGE_LIST",((e,t)=>({dataKey:e,salePageIds:t}))),jm=(0,Wb.createCustomAction)("FETCH_SALEPAGE_LIST_FULFILLED",((e,t)=>({dataKey:e,payload:t}))),Km=(0,Wb.createCustomAction)("FETCH_SALEPAGE_LIST_REJECTED",(e=>({dataKey:e}))),qm=(0,Wb.createCustomAction)("FETCH_SALEPAGE_LIST_BY_OUTER_IDS",((e,t,n,r)=>({dataKey:e,outerIds:t,defaultLocationId:n,isPreview:r}))),$m=(0,Wb.createCustomAction)("FETCH_SALEPAGE_LIST_BY_OUTER_IDS_FULFILLED",((e,t)=>({dataKey:e,payload:t}))),eC=(0,Wb.createAction)("FETCH_SALEPAGE_LIST_BY_OUTER_IDS_REJECTED")(),tC=(0,Wb.createCustomAction)("FETCH_SEARCH_LIST",(e=>({keyword:e}))),nC=(0,Wb.createCustomAction)("FETCH_SEARCH_LIST_FULFILLED",((e,t)=>({payload:t,shopId:e,dataSource:"searchList"}))),rC=(0,Wb.createCustomAction)("FETCH_SEARCH_LIST_REJECTED",((e,t)=>({shopId:e,payload:t}))),iC=(0,Wb.createCustomAction)("FETCH_HOT_SEARCH_LIST",(e=>({shopId:e}))),oC=(0,Wb.createCustomAction)("FETCH_HOT_SEARCH_LIST_FULFILLED",((e,t)=>({dataSource:"hotSearchList",shopId:e,payload:t}))),aC=(0,Wb.createCustomAction)("FETCH_HOT_SEARCH_LIST_REJECTED",((e,t)=>({shopId:e,payload:t}))),cC=(0,Wb.createAction)("FETCH_SHOPCATEGORY_LIST")(),lC=((0,Wb.createAction)("FETCH_BRAND_LIST")(),(0,Wb.createAction)("FETCH_MULTISHOPCATEGORY_LIST")()),sC=(0,Wb.createAction)("FETCH_MULTISHOPCATEGORYBREADCRUMB_LIST")(),uC=(0,Wb.createCustomAction)("FETCH_MULTISHOPCATEGORY_LIST_FULFILLED",(e=>({payload:e,dataSource:"multiShopCategoryList"}))),gC=(0,Wb.createCustomAction)("FETCH_MULTISHOPCATEGORYBREADCRUMB_LIST_FULFILLED",(e=>({payload:e,dataSource:"multiShopCategoryBreadcrumbList"}))),dC=(0,Wb.createCustomAction)("FETCH_SHOPCATEGORY_LIST_BY_SERVICE_TYPE",((e,t)=>({serviceType:e,locationId:t}))),IC=(0,Wb.createCustomAction)("FETCH_SHOPCATEGORY_LIST_FULFILLED",(e=>({payload:e,dataSource:"shopCategoryList"}))),pC=(0,Wb.createCustomAction)("FETCH_BRAND_LIST_FULFILLED",(e=>({payload:e,dataSource:"brandList"}))),bC=(0,Wb.createAction)("FETCH_SHOPCATEGORY_LIST_REJECTED")(),mC=(0,Wb.createAction)("FETCH_SHOPCATEGORY_BREADCRUMB_LIST_REJECTED")(),CC=((0,Wb.createAction)("FETCH_BRAND_LIST_REJECTED")(),(0,Wb.createCustomAction)("FETCH_CATEGORY_SALEPAGE_LIST",((e,{categoryId:t,orderBy:n,startIndex:r,maxCount:i,isCuratorable:o})=>({dataKey:e,categoryId:t,orderBy:n,startIndex:r,maxCount:i,isCuratorable:o})))),hC=(0,Wb.createCustomAction)("FETCH_CATEGORY_SALEPAGE_LIST_FULFILLED",((e,{dataKey:t})=>({dataKey:t,payload:e}))),BC=(0,Wb.createCustomAction)("FETCH_CATEGORY_SALEPAGE_LIST_REJECTED",(e=>({dataKey:e}))),AC=(0,Wb.createAction)("FETCH_RETAIL_STORE_CHANNEL")(),yC=(0,Wb.createAction)("FETCH_RETAIL_STORE_CHANNEL_FULFILLED")(),fC=(0,Wb.createAction)("FETCH_RETAIL_STORE_CHANNEL_REJECTED")(),GC=(0,Wb.createAction)("SET_CATEGORY_SERVICE_TYPE")(),QC=(0,Wb.createAction)("ETCH_ENABLE_DISPLAY_STORE_LIST")(),FC=(0,Wb.createAction)("FETCH_ENABLE_DISPLAY_STORE_LIST_FULFILLED")(),vC=(0,Wb.createAction)("FETCH_ENABLE_DISPLAY_STORE_LIST_REJECTED")(),ZC=(0,Wb.createAction)("FETCH_SHOPPINGCART_COUNT")(),EC=(0,Wb.createCustomAction)("FETCH_SHOPPINGCART_COUNT_FULFILLED",(e=>({payload:e,dataSource:"shoppingCartCount"}))),SC=(0,Wb.createAction)("FETCH_SHOPPINGCART_COUNT_REJECTED")(),XC=(0,Wb.createAction)("FETCH_SHOPPINGCART_PREVIEW_LIST")(),TC=(0,Wb.createCustomAction)("FETCH_SHOPPINGCART_PREVIEW_LIST_FULFILLED",(e=>({payload:e,dataSource:"shoppingCartPreviewList"}))),xC=(0,Wb.createAction)("FETCH_SHOPPINGCART_PREVIEW_LIST_REJECTED")(),UC=(0,Wb.createAction)("\bADD_SHOPPINGCART_ITEM")(),NC=(0,Wb.createAction)("\bADD_SHOPPINGCART_ITEM_FULFILLED")(),RC=(0,Wb.createAction)("\bADD_SHOPPINGCART_ITEM_REJECTED")(),OC=(0,Wb.createAction)("REMOVE_SHOPPINGCART_ITEM")(),VC=(0,Wb.createAction)("REMOVE_SHOPPINGCART_ITEM_FULFILLED")(),WC=(0,Wb.createAction)("REMOVE_SHOPPINGCART_ITEM_REJECTED")(),_C=(0,Wb.createAction)("PREPARE_ADD_TO_CART")(),wC=(0,Wb.createAction)("PREPARE_ADD_TO_CART_FULFILLED")(),HC=(0,Wb.createAction)("PREPARE_ADD_TO_CART_REJECTED")(),YC=(0,Wb.createAction)("FETCH_MEMBER_COLLECTION_ID_LIST")(),kC=(0,Wb.createCustomAction)("FETCH_MEMBER_COLLECTION_ID_LIST_FULFILLED",(e=>({payload:e,dataSource:"memberCollectionIdList"}))),DC=(0,Wb.createAction)("FETCH_MEMBER_COLLECTION_ID_LIST_REJECTED")(),LC=(0,Wb.createAction)("FETCH_AUTH_ISLOGIN")(),PC=(0,Wb.createCustomAction)("FETCH_AUTH_ISLOGIN_FULFILLED",(e=>({payload:e,dataSource:"isLogin"}))),JC=(0,Wb.createAction)("FETCH_AUTH_ISLOGIN_REJECTED")(),MC=(0,Wb.createAction)("LINE_LOGIN",((e,t)=>({streamInjection:e,payload:t})))(),zC=(0,Wb.createAction)("LINE_LOGIN_REJECTED")(),jC=(0,Wb.createAction)("LOGOUT")(),KC=(0,Wb.createCustomAction)("LOGOUT_FULFILLED",(e=>({payload:e,dataSource:"isLogOut"}))),qC=(0,Wb.createAction)("LOGOUT_REJECTED")(),$C=(0,Wb.createAction)("SET_RETAIL_STORE_LOCATION_ID")(),eh=(0,Wb.createAction)("FETCH_USER_RETAIL_STORE_EXPRESS")(),th=(0,Wb.createCustomAction)("FETCH_USER_RETAIL_STORE_EXPRESS_FULFILLED",(e=>({payload:e,dataSource:"retailStoreExpress"}))),nh=(0,Wb.createAction)("FETCH_USER_RETAIL_STORE_EXPRESS_REJECTED")(),rh=(0,Wb.createAction)("FETCH_USER_RETAIL_STORE_EXPRESS_LOCATION_ID")(),ih=(0,Wb.createCustomAction)("FETCH_USER_RETAIL_STORE_EXPRESS_LOCATION_ID_FULFILLED",(e=>({payload:e,dataSource:"retailStoreExpressLocationId"}))),oh=(0,Wb.createAction)("FETCH_USER_RETAIL_STORE_EXPRESS_LOCATION_ID_REJECTED")(),ah=(0,Wb.createAction)("FETCH_SP_CAT_AD_OFFICIAL_DATA")(),ch=(0,Wb.createAction)("FETCH_SP_CAT_AD_OFFICIAL_DATA_FULFILLED")(),lh=(0,Wb.createAction)("FETCH_SP_CAT_AD_OFFICIAL_DATA_REJECTED")(),sh=(0,Wb.createAction)("FETCH_OFFICIAL_CUSTOM_LINK")(),uh=(0,Wb.createAction)("FETCH_OFFICIAL_CUSTOM_LINK_FULFILLED")(),gh=(0,Wb.createAction)("FETCH_OFFICIAL_CUSTOM_LINK_REJECTED")(),dh=(0,Wb.createAction)("SWITCH_CATEGORY")(),Ih=(0,Wb.createAction)("SWITCH_CATEGORY_FULFILLED")(),ph=(0,Wb.createAction)("SWITCH_CATEGORY_REJECTED")(),bh=(0,Wb.createAction)("SWITCH_CATEGORY_ORDER_BY")(),mh=(0,Wb.createAction)("SWITCH_CATEGORY_ORDER_BY_FULFILLED")(),Ch=(0,Wb.createAction)("SWITCH_CATEGORY_ORDER_BY_REJECTED")(),hh=(0,Wb.createAction)("FETCH_CATEGORY_MORE_PRODUCTS")(),Bh=(0,Wb.createAction)("FETCH_CATEGORY_MORE_PRODUCTS_FULFILLED")(),Ah=(0,Wb.createAction)("FETCH_CATEGORY_MORE_PRODUCTS_EMPTY")(),yh=(0,Wb.createAction)("FETCH_CATEGORY_MORE_PRODUCTS_REJECTED")(),fh=(0,Wb.createAction)("FETCH_RELATIVE_TAGS_LIST")(),Gh=(0,Wb.createAction)("FETCH_RELATIVE_TAGS_LIST_FULFILLED")(),Qh=(0,Wb.createAction)("FETCH_RELATIVE_TAGS_LIST_REJECTED")(),Fh=(0,Wb.createAction)("FETCH_SMART_TAG_SETTING_FULFILLED")();var vh=Object.defineProperty,Zh=Object.getOwnPropertySymbols,Eh=Object.prototype.hasOwnProperty,Sh=Object.prototype.propertyIsEnumerable,Xh=(e,t,n)=>t in e?vh(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,Th=(e,t)=>{for(var n in t||(t={}))Eh.call(t,n)&&Xh(e,n,t[n]);if(Zh)for(var n of Zh(t))Sh.call(t,n)&&Xh(e,n,t[n]);return e};const xh=K.default.div`
    box-sizing: border-box;
    position: relative;
    overflow: hidden;
    background-color: rgba(255, 255, 255, 0.9);
    padding: ${({isVertical:e})=>e?"10px":"8px 13px"};
    flex: ${({isVertical:e})=>e?"unset":1};
    display: flex;
    flex-direction: column;
    justify-content: space-between;
`,Uh=K.default.div`
    display: flex;
    justify-content: space-between;
    flex-direction: ${({isButton:e})=>e?"column":"row"};
    align-items: ${({isButton:e})=>e?"unset":"flex-end"};
`,Nh=K.default.div`
    position: absolute;
    top: 5px;
    right: 5px;
`,Rh=K.default.div`
    height: 32px;
    display: flex;
    align-items: flex-end;
`,Oh=({isFav:e,cardEdgeScale:{selectedValue:t}={selectedValue:"1:1"},isEditMode:n=!1,imageServiceConfig:r,isVertical:i=!0,displayMode:o=Gt.DESKTOP,customStyle:a,link:c="",rank:l,imageSrc:s="",title:u="",isShowSuggestPrice:g=!0,isShowPrice:d=!0,suggestPrice:I=0,price:p=0,btnType:b=Zt.ICON,addToCartBtnStyle:m=St.DEFAULT,favoriteBtnStyle:C=Xt.DEFAULT,favoriteBtnPosition:h=Tt.ACTION_BTN_AREA,isEnableMask:B=!1,isComingSoon:A=!1,isSoldOut:y=!0,isShowShoppingCart:f=!0,isShowFav:G=!0,id:Q=0,categoryId:F=0,onTrackProductClick:v,position:Z,information:E="",subTitle:S="",onAddFavorite:X=()=>{},onCheckValidBeforeAddShoppingCart:T=()=>Promise.resolve(!0),isTargetBlank:x=!1,setToastInfo:U,salePageCode:N="",soldOutActionType:R=Pu.x.OutOfStock,soldOutOperationBtn:O})=>{const V=y&&R!==Pu.x.BackInStockAlert&&!!O,W=!V&&(g||d&&p>0),[_,w]=(0,z.useState)(e),H=(0,z.useMemo)((()=>{const e=Oi(),{productCard:t}=e;return Object.keys(e).length&&t?Th(Th({},a),t):a}),[]);(0,z.useEffect)((()=>{w(e)}),[e]);const{setSalePageId:Y,setCurrentProductInfo:k}=(0,z.useContext)(Ru),D=(0,z.useMemo)((()=>rt(r,n?ji:Li)),[n,r]),L=(({id:e,title:t,price:n,suggestPrice:r,position:i,link:o,onTrackProductClick:a,isTargetBlank:c=!1})=>(0,z.useCallback)((l=>{l.preventDefault(),a(e,t,n,r,o?window.location.origin+o:"",i),o&&(c?window.open(o,"_blank"):window.location.href=o)}),[e,o,a,i,n,r,t]))({id:Q,title:u,price:p,suggestPrice:I,position:Z,link:c,onTrackProductClick:v,isTargetBlank:x}),P=(({id:e,title:t,price:n,suggestPrice:r,position:i,isFav:o,setIsFav:a,setToastInfo:c,onAddFavorite:l})=>{const s=(0,Qs.useDispatch)();return(0,z.useCallback)((u=>{if(u.preventDefault(),u.stopPropagation(),!e)return;const g=!o,d=Kc();a(g);const I=g?(0,ja.t)(Jn.THEME_CORE.TOAST.ADD_TO_WISHLIST_SUCCESSFULLY):(0,ja.t)(Jn.THEME_CORE.TOAST.REMOVED_FROM_WISHLIST_SUCCESSFULLY);c&&c({isOpen:!0,message:I}),g?l(e,t,n,r,i,d):(s(rm({id:e,name:t,price:n,suggestPrice:r})),fl(d,"移除收藏",e.toString()))}),[e,o,a,l,t,n,r,i,s,c])})({id:Q,title:u,price:p,suggestPrice:I,position:Z,isFav:_,setIsFav:w,setToastInfo:U,onAddFavorite:X});return z.createElement("div",{className:qs()({"product-card__vertical":i,"product-card__vertical--hover":i&&o===Gt.DESKTOP,"product-card__horizontal":!i}),style:null==H?void 0:H.bannerStyle},z.createElement("a",{href:c||"javascript:void(0)",onClick:L},z.createElement("div",{className:qs()({"product-card__vertical__wrapper":i,"product-card__horizontal__wrapper":!i})},l?z.createElement(Sb,{rank:l}):null,z.createElement("div",{className:qs()({"product-card__vertical__media-container":i,"product-card__horizontal__media-container":!i})},z.createElement(Ib,{isEditMode:n,isVertical:i,imageSrc:s||D,edgeScale:t,title:u,figureStyle:null==H?void 0:H.figureStyle}),B&&!A&&y?z.createElement(Vb,null,(0,ja.t)(qg[R]||Jn.THEME_CORE.PRODUCT.SOLD_OUT)):null,B&&A?z.createElement(Ub,null,(0,ja.t)(Jn.THEME_CORE.PRODUCT.SELLING_WILL_KICKOFF)):null,G&&h===Tt.IMAGE_UPPER_RIGHT?z.createElement(Nh,null,z.createElement(TI,{btnType:b,btnStyle:C,isFav:_,onBtnClick:P})):null),z.createElement(xh,{isVertical:i},S?z.createElement(fb,{isVertical:i},S):null,u?z.createElement(Fb,{isVertical:i,customStyle:H},u):null,E?z.createElement(bb,{isVertical:i},E):null,z.createElement(Uh,{isVertical:i,isButton:b===Zt.BUTTON},W&&z.createElement(Ab,{isShowSuggestPrice:g,isShowPrice:d,isVertical:i,suggestPrice:I,price:p,priceStyle:null==H?void 0:H.priceStyle,"data-qe-id":"product_card_price"}),V&&z.createElement(Rh,null,O),f||G?z.createElement(db,{addToCartBtnStyle:m,btnType:b,favoriteBtnStyle:C,favoriteBtnPosition:h,isShowShoppingCart:f&&!V,isShowFav:G,isVertical:i,isFav:_,onAddFavorite:P,onAddToCart:()=>{return n=function*(){try{if(!(yield T(Q)))return}catch(e){}Y(Q),k({id:Q,name:u,price:p,suggestPrice:I,categoryId:F,salePageCode:N})},new Promise(((e,r)=>{var i=e=>{try{a(n.next(e))}catch(t){r(t)}},o=e=>{try{a(n.throw(e))}catch(t){r(t)}},a=t=>t.done?e(t.value):Promise.resolve(t.value).then(i,o);a((n=n.apply(void 0,null)).next())}));var n}}):null)))))};var Vh=n(255);const Wh=K.default.div`
    width: ${({cardWidth:e})=>e};
    display: flex;
    flex-direction: column;
    height: auto;
`,_h=K.default.div`
    padding: 6px;
`,wh=(0,K.default)(Vh.A)`
    margin-bottom: 6px;
`,Hh=({columnCount:e,useType:t,columnGutter:n=8,customCardWidth:r=null,customCardHeight:i=null})=>{const o=xe(),{device:a=P.DESKTOP}=o,c=n*(e-1),l=r||`calc((100% - ${c}px) / ${e})`,s=i||(()=>{let n;return n=a===P.DESKTOP?t===wr.module?"1180px":"880px":"100vw - 20px",`calc((${n} - ${c}px) / ${e})`})();return j().createElement(Wh,{cardWidth:l},j().createElement(Vh.A,{height:s,borderRadius:0}),j().createElement(_h,null,j().createElement(wh,{count:2}),j().createElement(Vh.A,{width:"50%"})))},Yh=K.default.div`
    display: flex;
    flex-direction: column;
`,kh=K.default.div`
    width: 100%;
    display: flex;
    gap: ${({columnGutter:e})=>e}px;
    flex-wrap: wrap;
    margin-bottom: 8px;
`,Dh=K.default.div`
    width: 100%;
    padding: 16px 0 32px;
    text-align: ${({textAlign:e})=>e};
`,Lh=({isShowTitle:e=!1,textAlign:t="center",columnCount:n,useType:r,columnGutter:i=8,productCount:o=0})=>{return j().createElement(Yh,null,e&&j().createElement(Dh,{textAlign:t},j().createElement(Vh.A,{height:25,width:100})),j().createElement(kh,{columnGutter:i},(a=o,Array.from({length:a},((e,t)=>j().createElement(Hh,{columnCount:n,columnGutter:i,useType:r,key:t}))))));var a},Ph=(K.default.div`
    position: absolute;
    width: ${({width:e})=>e};
    height: ${({height:e})=>e};

    & span {
        height: ${({height:e})=>e};
    }
`,K.default.div`
    display: flex;
    flex-wrap: ${({isDesktop:e})=>e?"wrap":"nowrap"};
    overflow-x: auto;
`),Jh=(0,K.default)(Vh.A)`
    margin-right: 10px;
    margin-bottom: ${({isDesktop:e})=>e?"10":"0"}px;
`,Mh=({tagCount:e,isDesktop:t})=>{const[n,r]=(0,z.useState)([]);return(0,z.useEffect)((()=>{(e=>{const n=Array.from({length:e},((e,n)=>j().createElement(Jh,{isDesktop:t,borderRadius:100,width:Math.floor(76*Math.random())+50,height:27,key:n})));r(n)})(e)}),[]),j().createElement(Ph,{isDesktop:t},n)},zh=(0,K.default)(Vh.A)`
    margin-bottom: 16px;
`,jh=(0,K.default)(Vh.A)`
    margin: 5px 0;
`,Kh=({isShowTitle:e=!0})=>j().createElement(j().Fragment,null,e&&j().createElement(zh,{width:100,height:20}),j().createElement(jh,{width:"50%",height:16}),j().createElement(jh,{width:"90%",height:16}),j().createElement(jh,{width:"70%",height:16}),j().createElement(jh,{width:"50%",height:16,style:{marginTop:"20px"}}),j().createElement(jh,{width:"90%",height:16}),j().createElement(jh,{width:"70%",height:16})),qh=K.default.div`
    margin: 18px 0;
`,$h=(0,K.default)(Vh.A)`
    margin-bottom: 18px;
`,eB=K.default.div`
    display: flex;
    justify-content: space-between;
    margin-bottom: 6px;
`,tB=K.default.div`
    display: flex;
    align-items: center;
    margin-top: 10px;
`,nB=(0,K.default)(Vh.A)`
    margin-right: 8px;
`,rB=K.default.div`
    display: flex;
    align-items: center;
    justify-content: space-between;
    margin-bottom: 10px;
`,iB=({itemsLength:e,type:t})=>t===Hr.Price?j().createElement(qh,null,j().createElement(eB,null,j().createElement(Vh.A,{width:100,height:20})),j().createElement(rB,null,j().createElement(Vh.A,{width:110,height:40}),j().createElement(Vh.A,{width:16,height:10}),j().createElement(Vh.A,{width:110,height:40}))):j().createElement(qh,null,j().createElement($h,{width:"100%",height:10}),j().createElement(eB,null,j().createElement(Vh.A,{width:100,height:20}),j().createElement(Vh.A,{width:20,height:20})),Array.from({length:e},((e,t)=>j().createElement(tB,{key:t},j().createElement(nB,{width:14,height:14}),j().createElement(Vh.A,{width:100,height:16}))))),oB=(0,jI.Mz)([e=>e.shop,(e,t)=>xa(t.moduleKey,t.sourceType)],((e,t)=>{const{categoryName:n}=e[t]||{categoryName:""};return n})),aB=({moduleKey:e,sourceType:t,categoryId:n,setToastInfo:r})=>{const i=(0,Qs.useSelector)((n=>oB(n,{moduleKey:e,sourceType:t}))),o=(0,Qs.useDispatch)();return(0,z.useCallback)(((e,t,a,c,l,s)=>{const u={id:e,name:t,price:a,suggestPrice:c,categoryId:n,categoryName:i,position:s},g=Kc(),d=l?(0,ja.t)(Jn.THEME_CORE.TOAST.ADD_TO_WISHLIST_SUCCESSFULLY):(0,ja.t)(Jn.THEME_CORE.TOAST.REMOVED_FROM_WISHLIST_SUCCESSFULLY);r&&r({isOpen:!0,message:d}),l?o(em({productInfo:u})):(o(rm({id:e,name:t,price:a,suggestPrice:c})),fl(g,"移除收藏",e.toString()))}),[n,i,o,r])};Object.defineProperty,Object.defineProperties,Object.getOwnPropertyDescriptors,Object.getOwnPropertySymbols,Object.prototype.hasOwnProperty,Object.prototype.propertyIsEnumerable,(0,z.createContext)({moduleId:"ShopCategory",cardEdgeScale:{selectedValue:"1:1"},buttonVisibility:{isFavoriteVisible:!0,isAddToCartVisible:!0},categoryFilterSwitch:{isEnableShopAttribute:!0}});const cB={defaultCategoryId:0,categoryMap:new Map,setCategoryMap:e=>{}},lB=(0,z.createContext)(cB),sB={breadcrumbsPathMap:new Map,setBreadcrumbsPathMap:e=>{}},uB=((0,z.createContext)(sB),(0,z.createContext)(null),(0,z.createContext)(null),(0,z.createContext)({moduleId:"ShopCategory",cardEdgeScale:{selectedValue:"1:1"},buttonVisibility:{isFavoriteVisible:!0,isAddToCartVisible:!0},categoryFilterSwitch:{isEnableShopAttribute:!0}}),{defaultCategoryId:0,categoryMap:new Map,setCategoryMap:e=>{}}),gB=(0,z.createContext)(uB),dB=((0,z.createContext)(null),(0,z.createContext)(null),e=>e===P.DESKTOP?lB:gB),IB=({isPriceOnTop:e=!1,skuQtyMode:t=ed.Accumulate,isSuggestPriceShowPrice:n=!1})=>{const{salePageId:r,currentProductInfo:i,setSalePageId:o,setCurrentProductInfo:a}=(0,z.useContext)(Ru),{name:c,suggestPrice:l,price:s,categoryId:u,salePageCode:g}=i,{shopId:d,browsingMode:I,shopProfile:p}=xe(),{IsEnabledBackInStockAlert:b=!1}=(null==p?void 0:p.ShopBasicInfo)||{},m=dB(I),{categoryMap:C}=(0,z.useContext)(m),{decimalDigits:h,symbol:B,rate:A}=(0,Qs.useSelector)(tp),y=(0,Qs.useDispatch)();return(0,z.useEffect)((()=>{r&&Wl({id:r,price:s,name:c,suggestPrice:l})}),[r,s,c,l]),z.createElement(Id,{decimal:h,symbol:B,rate:A,shopId:d,salePageId:r,facebook:window.FB,afterSuccess:e=>{const{name:t=""}=C.size>0&&C.get(Number(u))||{};y(XC()),y(ZC());const n={categoryId:u,categoryName:t,id:e.salePageId,name:e.title,price:e.price,quantity:e.quantity,skuId:e.skuId,skuName:e.skuKey,suggestPrice:l};Fl(n,e.quantity),o(0),a({id:-1,name:"",price:-1,suggestPrice:-1,categoryId:-1,salePageCode:""})},afterClose:()=>{o(0),a({id:-1,name:"",price:-1,suggestPrice:-1,categoryId:-1,salePageCode:""})},handleRedirectDeepLink:()=>{const e=`${window.location.origin}/SalePage/Index/${r}`;Bi(e).catch((e=>null))},handleAddQuantity:()=>{Nl({id:r,price:s,name:c,suggestPrice:l})},handleRemoveQuantity:()=>{Vl({id:r,price:s,name:c,suggestPrice:l})},browsingMode:I,salePageCode:g,isEnableAddShoppingCartItem:!0,isEnablePurchaseMethod:!0,isEnableBackInStockFeature:b,skuQtyMode:t,isPriceOnTop:e,isSuggestPriceShowPrice:n})},pB=K.default.div`
    display: flex;
    gap: 8px;
    overflow: hidden;
    padding: ${({isDesktop:e})=>e?"6":"0"}px;
    margin-right: ${({isDesktop:e})=>e?"14":"0"}px;
    margin-left: ${({isDesktop:e})=>e?"8":"0"}px;
`,bB=K.default.div`
    flex-shrink: 0;
`,mB=K.default.div`
    ${({customStyle:e})=>K.css`
        padding-top: ${e.paddingTop}px;
        padding-bottom: ${e.paddingBottom}px;
    `};
`,CB=K.default.p`
    display: flex;
    flex-direction: row;
    justify-content: space-between;
    align-items: flex-end;
    height: 24px;
    margin-bottom: ${({customStyle:e})=>e.marginBottom}px;
    font-size: 16px;
    font-weight: 400;
    line-height: 24px;
    color: ${J.black};
`,hB=K.default.div`
    display: flex;
    justify-content: flex-end;
    align-items: center;
`,BB=K.default.span`
    font-size: 12px;
    font-weight: 400;
    color: ${J.whiteThree};
    line-height: 16px;
`,AB=K.default.div`
    padding-right: ${({isDesktop:e})=>e?"14":"0"}px;
    padding-left: ${({isDesktop:e})=>e?"8":"0"}px;
    position: relative;
`,yB=(0,K.default)(yd.A)`
    .slick-list {
        padding: ${({isDesktop:e})=>e?"6":"0"}px;
        padding-bottom: 6px;
        overflow: hidden;
    }
    .slick-slide {
        margin-right: 8px;
    }
`,fB=K.default.div`
    position: relative;
`,GB=K.default.div`
    width: 20px;
    height: 20px;
    cursor: pointer;
    opacity: ${({isDisable:e})=>e?"0.2":"1"};
    pointer-events: ${({isDisable:e})=>e?"none":"auto"};
    align-items: center;
    justify-content: center;
    position: absolute;
    top: 50%;
    transform: translateY(-50%);
    z-index: ${R};

    left: ${({isNext:e})=>e?"auto":"0px"};
    right: ${({isNext:e})=>e?"0px":"auto"};
    margin-left: ${({isNext:e})=>e?"0px":"-20px"};
    margin-right: ${({isNext:e})=>e?"-20px":"0px"};
`,QB=K.default.i`
    color: ${J.brownishGrey};
    font-weight: 700;
`;var FB=Object.defineProperty,vB=Object.defineProperties,ZB=Object.getOwnPropertyDescriptors,EB=Object.getOwnPropertySymbols,SB=Object.prototype.hasOwnProperty,XB=Object.prototype.propertyIsEnumerable,TB=(e,t,n)=>t in e?FB(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,xB=(e,t)=>{for(var n in t||(t={}))SB.call(t,n)&&TB(e,n,t[n]);if(EB)for(var n of EB(t))XB.call(t,n)&&TB(e,n,t[n]);return e},UB=(e,t)=>vB(e,ZB(t));const NB=({moduleId:e,categoryId:t,isEditMode:n,onProductCardClick:r,isTargetBlank:i,isPriceOnTop:o=!0,isSuggestPriceShowPrice:a=!1,imageServiceConfig:c,productDisplayMode:l,sourceType:s,productList:u,pageType:g})=>{const{favoriteList:d=[]}=(0,Qs.useSelector)((e=>e.favorite))||{},I=(0,Qs.useSelector)((e=>e.user.memberCollectionIdList)),p=Nt.concat(I||[]),[b,m]=(0,z.useState)({isOpen:!1,message:""}),[C,h]=(0,z.useState)(0),B=aB({moduleKey:e,sourceType:s,categoryId:t,setToastInfo:m}),A=e=>e?Math.trunc(C/6)===Math.trunc((u.length-1)/6):0===C,y=({onClick:e,isNext:t})=>{if(l===Gt.MOBILE)return null;const n=t?j().createElement(QB,{className:"ico ico-chevron-right"}):j().createElement(QB,{className:"ico ico-chevron-left"});return j().createElement(GB,{onClick:e,isNext:t,isDisable:A(t)},n)},f={dots:!1,infinite:!1,lazyLoad:!1,initialSlide:0,slidesToShow:1,slidesToScroll:l===Gt.MOBILE?1:6,swipeToSlide:l===Gt.MOBILE,variableWidth:!0,beforeChange:(e,t)=>{h(t)}},G=()=>u.map(((o,s)=>{const{id:u,link:g,imageSrc:I,title:b,suggestPrice:m,price:C,pairsPoints:h,pairsPrice:A,priceDisplayType:y,rank:f=0,information:G,subTitle:Q,salePageCode:F,displayTags:v,promotionPriceList:Z,isRestricted:E,isComingSoon:S,isSoldOut:X,enableIsComingSoon:T,isShowSellingStartDateTime:x,sellingStartDateTime:U,listingStartDateTime:N}=o,R=d.includes(u),O=Ea(v,"1:1"),V=md({isEnableMask:!0,isComingSoon:S,isSoldOut:X,enableIsComingSoon:T,isShowSellingStartDateTime:x,sellingStartDateTime:U,listingStartDateTime:N})||{},W=(0,$s.mappingSpecialPriceData)(Z,p),_=W?W.price:0;return j().createElement(fB,{style:{width:130},key:u},j().createElement(tb,{salePageId:u,categoryId:t,favoriteList:d,favoriteConfig:{isShowFav:!0,isDisable:!1,isFav:R,buttonType:Zt.ICON,onAddFavorite:B},shoppingCartConfig:{isDisable:!1,isShowShoppingCart:!0},imageSrc:I,title:b,rank:f,isEditMode:n,imageServiceConfig:c,position:s,displayMode:l,information:G,subTitle:Q,moduleId:e,salePageCode:F,priceConfig:{price:C,isShowPrice:!0,suggestPrice:m,specialPrice:_,isShowSuggestPrice:!1,isPriceOnTop:!0,isSuggestPriceShowPrice:a,priceDisplayType:y||Qt.PRICE},pointPayConfig:{pairsPoints:h,pairsPrice:A},cardLink:{link:g,target:i?"_blank":"_self",toSalePageCallBackFunction:r},productBadgeImage:O,promotionMemberCollectionIdList:p,isRestricted:E,maskConfig:V}))}));return g===nr.tagCategory?j().createElement(Ou,null,j().createElement(AB,{isDesktop:l===Gt.DESKTOP},j().createElement(yB,UB(xB({},f),{isDesktop:l===Gt.DESKTOP,nextArrow:j().createElement(y,{isNext:!0}),prevArrow:j().createElement(y,{isNext:!1})}),G())),Ge()&&j().createElement(j().Fragment,null,j().createElement(IB,{isPriceOnTop:o,isSuggestPriceShowPrice:a}),j().createElement(Wu,{type:"success",isOpen:b.isOpen,message:b.message,afterClose:()=>m({isOpen:!1,message:""})}))):j().createElement(j().Fragment,null,j().createElement(AB,{isDesktop:l===Gt.DESKTOP},j().createElement(yB,UB(xB({},f),{isDesktop:l===Gt.DESKTOP,nextArrow:j().createElement(y,{isNext:!0}),prevArrow:j().createElement(y,{isNext:!1})}),G())),Ge()&&j().createElement(Wu,{type:"success",isOpen:b.isOpen,message:b.message,afterClose:()=>m({isOpen:!1,message:""})}))},RB=({moduleId:e,categoryId:t,onProductCardClick:n,onRowInViewOnce:r,isTargetBlank:i,isPriceOnTop:o=!0,isSuggestPriceShowPrice:a=!1,imageServiceConfig:c,productDisplayMode:l,columnGutter:s,rowGutter:u,sourceType:g,moduleDisplayName:d,productList:I})=>j().createElement(j().Fragment,null,j().createElement(rA,{isEnableMask:!0,isEnableProudctCardGroup:!0,isShowCardFav:!0,isShowCardShoppingCart:!0,isTargetBlank:i,customCssClass:"medium-container module-vertical-spacing",moduleDisplayName:d,imageServiceConfig:c,moduleKey:e,columnCount:l===Gt.DESKTOP?4:2,columnGutter:s,rowGutter:u,productDisplayMode:l,categoryId:t,sourceType:g,productList:I,onRowInViewOnce:r,onProductCardClick:n,containerStyle:{width:"100%",minHeight:"50px"},isPriceOnTop:o,isSuggestPriceShowPrice:a})),OB=({type:e,moduleId:t,categoryId:n,onRowInViewOnce:r=()=>null,isTargetBlank:i=!1,productDisplayMode:o,sourceType:a,columnGutter:c=0,rowGutter:l=0,moduleDisplayName:s,trackingContentType:u,isShowTitle:g=!0,pageType:d,recommendationSectionData:I})=>{var p,b;try{const m=xe(),{imageServiceConfig:C,shopProfile:h}=m,{setting:B,data:A}=I,{productList:y=[],title:f="",isFetching:G=!1,mode:Q,itemListId:F}=A||{},v=(null==(p=null==h?void 0:h.ShopFunction)?void 0:p.IsPriceOnTop)||!1,Z=(null==(b=null==h?void 0:h.ShopFunction)?void 0:b.IsSuggestPriceShowPrice)||!1,E=o===Gt.DESKTOP,S={RecommendationBlock:{paddingTop:"0",paddingBottom:"0"},RecommendationTitle:{marginBottom:"0"}},[X,T]=(0,z.useState)(S),x=()=>e===tr.productCarousel?{RecommendationBlock:{paddingTop:E?"12":"6",paddingBottom:E?"12":"6"},RecommendationTitle:{marginBottom:E?"12":"6"}}:e===tr.productGrid?{RecommendationBlock:{paddingTop:"12",paddingBottom:"12"},RecommendationTitle:{marginBottom:"12"}}:S,U=()=>{const e=x();T(e)};(0,z.useEffect)((()=>{U()}),[]);const N=({contentType:e,sourceType:t,listName:n})=>(r,i,o,a,c,l)=>{const s={id:r,name:i,price:o,suggestPrice:a,position:l},u=el(),g=tl(),d=nl(t,Q);Sl(s,n),Gl({id:null==r?void 0:r.toString(),name:i,linkUrl:null!=c?c:"",contentType:e,viewTitle:g,viewId:u,itemListId:F,contentSource:d})},R=()=>{var t;const n=E?20:10,r=E?4:2;switch(e){case tr.productCarousel:return j().createElement(pB,{isDesktop:E},Array.from({length:n},((e,t)=>j().createElement(bB,{key:t},j().createElement(Hh,{columnCount:n,columnGutter:c,customCardWidth:"130px",customCardHeight:"130px",useType:wr.page,key:t})))));case tr.productGrid:return j().createElement(Lh,{columnCount:r,productCount:(null==(t=null==B?void 0:B.sourceInfo)?void 0:t.quantity)||n,useType:wr.page});default:return null}},O=()=>{switch(e){case tr.productCarousel:return j().createElement(NB,{moduleId:t,categoryId:n,onProductCardClick:N({contentType:u,sourceType:null==B?void 0:B.sourceType,listName:s}),isTargetBlank:i,isPriceOnTop:v,isSuggestPriceShowPrice:Z,imageServiceConfig:C,productDisplayMode:o,sourceType:a,productList:y,pageType:d});case tr.productGrid:return j().createElement(RB,{columnGutter:c,rowGutter:l,moduleId:t,categoryId:n,onProductCardClick:N({contentType:u,sourceType:null==B?void 0:B.sourceType,listName:s}),onRowInViewOnce:r,sourceType:a,isTargetBlank:i,isPriceOnTop:v,isSuggestPriceShowPrice:Z,imageServiceConfig:C,productDisplayMode:o,moduleDisplayName:s,productList:y});default:return null}},V=()=>G?j().createElement(Vh.A,{width:"85px"}):f?j().createElement("span",null,f):null;return!G&&y.length<=0?null:j().createElement(mB,{customStyle:X.RecommendationBlock},j().createElement(CB,{customStyle:X.RecommendationTitle},g&&j().createElement(V,null)),G?R():O(),!G&&(null==B?void 0:B.sourceType)===rr.jooii&&j().createElement(hB,null,j().createElement(BB,null,"Powered by jooii - 91APP Retail AI")))}catch(m){return ze.error(`[ERROR] Render ${d} RecommendationSection failed: ${Me(m)}: ${Je(m)}`),null}};var VB=(e=>(e.CUSTOM="custom",e.DEFAULT="default",e))(VB||{});const WB="1180px",_B=e=>.01*parseInt(e),wB=K.css`
    padding-left: calc((100% - ${WB}) / 2);
    padding-right: calc((100% - ${WB}) / 2);
`,HB=K.css`
    padding-left: 10px;
    padding-right: 10px;
`,YB=K.default.div`
    ${({backgroundColor:e})=>e?`background-color: ${e};`:""}
    ${({imageUrl:e})=>e?`background-image: url(${e});`:"background-image: unset;"}
    background-position: center;
    background-size: cover;

    padding-top: 7.5px;
    padding-bottom: 7.5px;

    ${({isMobile:e})=>e?HB:wB}
`,kB=K.default.div`
    ${({backgroundColor:e})=>e?`background-color: ${e};`:""}
    ${({imageUrl:e})=>e?`background-image: url(${e});`:"background-image: unset;"}
    background-position: center;
    background-size: cover;

    padding-top: ${({paddingTop:e})=>e||ka.top};
    padding-bottom: ${({paddingBottom:e})=>e||ka.bottom};

    ${({isEnableSetHorizontalSpacing:e,isMobile:t,paddingLeft:n,paddingRight:r})=>e?K.css`
                padding-left: ${n||ka.left};
                padding-right: ${r||ka.right};
            `:t?HB:wB}
`,DB=K.default.div`
    ${({backgroundColor:e})=>e?`background-color: ${e};`:""}

    /* 文字模組之預設上下間距為 0 */
    ${({paddingTop:e})=>e&&`padding-top: ${e};`}
    ${({paddingBottom:e})=>e&&`padding-bottom: ${e};`}

    ${({isMobile:e,paddingLeft:t,paddingRight:n})=>e?K.css`
                padding-left: ${t||ka.left};
                padding-right: ${n||ka.right};
            `:K.css`
            padding-left: calc(
                (100% - ${WB}) / 2 + ${WB} *
                    ${_B(t||ka.left)}
            );
            padding-right: calc(
                (100% - ${WB}) / 2 + ${WB} *
                    ${_B(n||ka.right)}
            );
        `}
`,LB=e=>void 0===e?"":`${e}%`,PB=({moduleId:e,spaceInfo:t,isMobile:n,tagName:r="div",children:i,imageUrl:o})=>{const a="BlogB"===e,c="CateringReservation"===e,{spacingSetting:l=(a?"custom":"default"),paddingTop:s,paddingBottom:u,paddingLeft:g,paddingRight:d,backgroundColor:I=(c?J.whiteTen:J.white),backgroundType:p}=t||{},b="custom"===l,m=Pa(e),C=LB(s),h=LB(u),B=LB(g),A=LB(d);return z.createElement(z.Fragment,null,a&&z.createElement(DB,{as:r,paddingTop:b&&C,paddingBottom:b&&h,paddingLeft:b&&B,paddingRight:b&&A,backgroundColor:I,isMobile:n,"data-qe-id":"module_container"},i),!a&&(t&&b?z.createElement(kB,{as:r,imageUrl:o,backgroundType:p,paddingTop:C,paddingBottom:h,paddingLeft:B,paddingRight:A,backgroundColor:I,isEnableSetHorizontalSpacing:m,isMobile:n,"data-qe-id":"module_container"},i):z.createElement(YB,{as:r,imageUrl:o,backgroundColor:I,isMobile:n},i)))},JB=K.default.div`
    position: relative;
    min-height: 20px;
    padding: ${me} 0 32px;

    ${({isMobile:e})=>e&&"  padding: 12px 0;"}
    ${({isNeedDefaultLeftPadding:e})=>e&&`padding-left: ${ka.left};`}
    ${({isNeedDefaultRightPadding:e})=>e&&`padding-right: ${ka.right};`}
`,MB=K.default.a`
    font-size: ${Ce.fontSizeS};

    position: absolute;
    top: ${({isMobile:e})=>e?"0px":"5px"};
    right: ${({isMobile:e})=>e?"15px":"0px"};

    color: ${J.windowsBlue};
    &:hover {
        color: ${Ha(10,J.windowsBlue)};
    }
`,zB=({moduleId:e,spaceInfo:t={},isMobile:n=!1,text:r="",seeMoreText:i="",seeMoreLink:o="",textStyle:a={},isContentInfo:c=!1})=>{const[l,s]=(0,z.useState)(!1),u=n?P.MOBILE:P.DESKTOP,{heading:g="div",color:d=J.blackTwo,align:I=Pr.CENTER}=a,p=K.default[g]`
        font-size: ${c?Jr.H3:Ad[u][g]};
        font-weight: normal;
        line-height: 1.25;
        text-align: ${I};
        word-break: break-all;
        color: ${d};
    `;(0,z.useEffect)((()=>{s(!0)}),[]);const{spacingSetting:b=("BlogB"===e?VB.CUSTOM:VB.DEFAULT),paddingLeft:m,paddingRight:C}=t,h=b===VB.CUSTOM,B=Pa(e),A=B&&h&&I===Pr.LEFT&&0===m,y=B&&h&&I===Pr.RIGHT&&0===C;return l&&z.createElement(JB,{"data-qe-id":"section_header",isMobile:n,isNeedDefaultLeftPadding:A,isNeedDefaultRightPadding:y},r&&z.createElement(p,null,r),i&&z.createElement(MB,{isMobile:n,href:o},i))};var jB=n(7837),KB=n(1742);const qB=({moduleId:e,isMobile:t,spaceInfo:n,containerStyle:r,customCssClass:i,children:o})=>z.createElement(z.Fragment,null,e&&n?z.createElement(PB,{moduleId:e,isMobile:t,spaceInfo:n},o):z.createElement("div",{style:r,className:qs()("product-container",i||"")},o)),$B=K.default.div`
    :last-child .product-card__horizontal {
        border-bottom: none;
    }
`,eA=K.default.div`
    display: flex;
    flex-direction: column;
`,tA=K.default.div`
    display: flex;
    justify-content: flex-end;
`,nA=K.default.span`
    font-size: 12px;
    font-weight: 400;
    color: ${J.whiteThree};
    line-height: 16px;
`,rA=({imageServiceConfig:e,categoryId:t,sourceType:n,productList:r,moduleKey:i,isEditMode:o=!1,isEnableMask:a=!1,title:c={isTurnOn:!1,text:""},moduleId:l,spaceInfo:s,containerStyle:u={},columnCount:g=4,columnGutter:d=0,rowGutter:I=0,productDisplayMode:p=Gt.DESKTOP,customCssClass:b="",cardEdgeScale:m={selectedValue:"1:1"},isHorizontalList:C=!1,cardFavBtnType:h=Zt.ICON,addToCartBtnStyle:B=St.DEFAULT,favoriteBtnStyle:A=Xt.DEFAULT,favoriteBtnPosition:y=Tt.ACTION_BTN_AREA,cardCustomStyle:f,isShowCardSuggestPrice:G=!0,isShowCardPrice:Q=!0,isShowCardFav:F=!0,isShowCardShoppingCart:v=!0,isPriceOnTop:Z=!0,isSuggestPriceShowPrice:E=!1,onRowInViewOnce:S=()=>null,onProductCardClick:X=()=>null,isTargetBlank:T=!1,startIndex:x=0,SoldOutOperationBtn:U,moduleDisplayName:N,isEnableProudctCardGroup:R=!1,isEnableSpecialPriceFrontendSort:O=!1,productListFrontendSortEntity:V,recommendationItemData:W,totalListLength:_,provider:w=""})=>{var H,Y;const{type:k,direction:D}=V||{},L=O&&k===jB.r3.SPECIAL_PRICE&&!!D,P=c.isTurnOn,J="string"==typeof w?w:ir[w]||"",j=g,{favoriteList:K=[]}=(0,Qs.useSelector)((e=>e.favorite))||{},q=(0,Qs.useSelector)((e=>e.user.memberCollectionIdList)),$=Nt.concat(q||[]),[ee,te]=(0,z.useState)({isOpen:!1,message:""}),ne=(({moduleKey:e,sourceType:t,categoryId:n})=>{const r=(0,Qs.useSelector)((n=>oB(n,{moduleKey:e,sourceType:t}))),i=(0,Qs.useDispatch)();return(0,z.useCallback)(((e,t,o,a,c)=>{i(em({productInfo:{id:e,name:t,price:o,suggestPrice:a,categoryId:n,categoryName:r,position:c}}))}),[n,r,i])})({moduleKey:i,sourceType:n,categoryId:t}),re=aB({moduleKey:i,sourceType:n,categoryId:t,setToastInfo:te}),ie=C?eA:sb,oe=xe(),ae=(null==(Y=null==(H=null==oe?void 0:oe.shopProfile)?void 0:H.ShopFunction)?void 0:Y.IsEnabledNewProductCard)||!1,{isEnableRecommendationItem:ce=!1,recommendationItemSetting:le,recommendationData:se}=W||{},{embeddedFirstRow:ue=-1,embeddedInterval:ge=-1}=(null==le?void 0:le.additionalInfo)||{},de=-1!==ge?ge:ue,Ie=r.map((e=>{const{promotionPriceList:t,price:n,priceDisplayType:r}=e,i=(0,$s.mappingSpecialPriceData)(t,$),o=i?i.price:0,a=(0,$s.mappingSpecialPriceDataLabel)(i,n,r),c=a?[a]:[],l=(0,$s.getDisplayPrice)(n,o);return e.specialPrice=o,e.displayPrice=l,e.tagList=c,e})),pe=L?Ie.sort(((e,t)=>e.displayPrice===t.displayPrice?t.id-e.id:D===jB.UE.ASC?e.displayPrice-t.displayPrice:t.displayPrice-e.displayPrice)):Ie;return z.createElement(Ou,null,z.createElement(qB,{moduleId:l,spaceInfo:s,containerStyle:u,customCssClass:b,isMobile:p===Gt.MOBILE},z.createElement("div",{className:"product-container--wrapper"},P?z.createElement(zB,{moduleId:l,spaceInfo:s,isMobile:p===Gt.MOBILE,text:c.text||(0,ja.t)(Jn.THEME_CORE.DEFAULT.CUSTOM_TITLE),textStyle:null==c?void 0:c.textStyle}):null,(0,M.chunk)(pe,j).map(((r,i,c)=>{const s=x+i*j,u=s/j+1,g=i!==c.length-1?{containerStyle:{marginBottom:"8px"}}:void 0,{showFirstItem:b,showIntervalItem:O}=(e=>ce?{showFirstItem:0===ue&&1===e,showIntervalItem:e<ue?e===_:e===ue||(-1!==ge?(e-(-1===ue?0:ue))%ge==0:void 0)}:{showFirstItem:!1,showIntervalItem:!1})(u);return z.createElement(z.Fragment,{key:`${j}_${s}`},b&&z.createElement(OB,{type:tr.productCarousel,moduleId:l,categoryId:t,isTargetBlank:T,productDisplayMode:p,sourceType:n,columnGutter:d,moduleDisplayName:N,trackingContentType:"ProductRecommend_A_Carousel",pageType:nr.salePageList,recommendationSectionData:{setting:le,data:se}}),z.createElement(KB.pL,{triggerOnce:!0,as:"div",onChange:e=>e&&S(s,r)},z.createElement(ie,{columnCount:j,columnGutter:d,rowGutter:I,customStyles:g},r.map(((r,i)=>{const{id:c,link:u,imageSrc:g,imageList:d,title:I,suggestPrice:b,price:S,pairsPoints:x,pairsPrice:N,priceDisplayType:O,rank:V=0,isComingSoon:W,isSoldOut:_,information:w,subTitle:H,salePageCode:Y,soldOutActionType:k,displayTags:D,salePageGroup:L,isRestricted:P,specialPrice:J,tagList:M,enableIsComingSoon:q,isShowSellingStartDateTime:ee,sellingStartDateTime:ie,listingStartDateTime:oe,combinedMetafields:ce}=r,le=s+i,se=K.includes(c),ue=md({isEnableMask:a,isComingSoon:W,isSoldOut:_,soldOutActionType:k,enableIsComingSoon:q,isShowSellingStartDateTime:ee,sellingStartDateTime:ie,listingStartDateTime:oe})||{},ge=Ea(D,m.selectedValue);return z.createElement($B,{key:`${j}_${le}`},ae?z.createElement(tb,{salePageId:c,categoryId:t,favoriteList:K,favoriteConfig:{isShowFav:F,isDisable:!1,isFav:se,buttonType:h,onAddFavorite:re},shoppingCartConfig:{isDisable:!1,isShowShoppingCart:v},isVertical:!C,isEnableProudctCardGroup:R,columnCount:j,customStyle:f,imageSrc:g,isEnableMask:a,title:I,rank:V,isEditMode:o,imageServiceConfig:e,position:le,salePageGroup:L,cardEdgeScale:m,displayMode:p,information:w,subTitle:H,moduleId:l,salePageCode:Y,priceConfig:{price:S,isShowPrice:Q,suggestPrice:b,specialPrice:J,isShowSuggestPrice:G,isPriceOnTop:Z,isSuggestPriceShowPrice:E,priceDisplayType:O||Qt.PRICE},pointPayConfig:{pairsPoints:x,pairsPrice:N},maskConfig:ue,cardLink:{link:u,target:T?"_blank":"_self",toSalePageCallBackFunction:X},imageList:d||[],productBadgeImage:ge,tagList:M,promotionMemberCollectionIdList:$,isRestricted:P,sourceType:n,combinedMetafields:ce}):z.createElement(Oh,{id:c,categoryId:t,isFav:se,isVertical:!C,customStyle:f,link:u,imageSrc:g,title:I,isShowSuggestPrice:G,isShowPrice:Q,suggestPrice:b,price:S,rank:V,btnType:h,addToCartBtnStyle:B,favoriteBtnStyle:A,favoriteBtnPosition:y,isShowShoppingCart:v,isShowFav:F,isEnableMask:a,isComingSoon:W,isSoldOut:_,isEditMode:o,imageServiceConfig:e,position:le,cardEdgeScale:m,displayMode:p,onAddFavorite:ne,onTrackProductClick:X,information:w,subTitle:H,isTargetBlank:T,setToastInfo:te,salePageCode:Y,soldOutActionType:k,soldOutOperationBtn:U&&z.createElement(U,{productInfo:r})}))})))),Number.isInteger(_)&&_>=de&&_>i+1&&O&&z.createElement(OB,{type:tr.productCarousel,moduleId:l,categoryId:t,isTargetBlank:T,productDisplayMode:p,sourceType:n,columnGutter:d,moduleDisplayName:N,trackingContentType:"ProductRecommend_A_Carousel",pageType:nr.salePageList,recommendationSectionData:{setting:le,data:se}}))})),n===Dr.RECOMMENDATION_ID&&(J===rr.jooii?z.createElement(tA,null,z.createElement(nA,null,"Powered by jooii - 91APP Retail AI")):null))),Ge()&&z.createElement(IB,{isPriceOnTop:Z,isSuggestPriceShowPrice:E}),Ge()&&z.createElement(Wu,{type:"success",isOpen:ee.isOpen,message:ee.message,afterClose:()=>te({isOpen:!1,message:""})}))},iA=K.default.div`
    padding: 15px 20px;
    font-size: 13px;
`,oA=K.default.div`
    text-align: center;
`,aA=K.default.ul`
    padding-left: 20px;
    margin-top: 8px;
`,cA=K.default.li`
    list-style-type: disc;
    padding-top: 4px;
`,lA=()=>{const{purchaseQualificationInvalidModal:e={isOpen:!1,invalidType:qd.NOT_LOGGED_IN,restrictedPurchaseInfos:[]},closePurchaseQualificationInvalidModal:t}=(0,z.useContext)(eI),{isOpen:n,invalidType:r,restrictedPurchaseInfos:i}=e;return n?j().createElement(ss,{modalMode:Dl.SMALL,title:(0,ja.t)(Jn.THEME_CORE.PRODUCT.UNABLE_TO_ADD_CART),handleConfirmClick:()=>{if(r===qd.NOT_LOGGED_IN){const e=window.location.href;window.location.href=`/Login/HttpLoginRelayToHttps?rt=${encodeURIComponent(e)}`}t()},confirmText:r===qd.NOT_LOGGED_IN?(0,ja.t)(Jn.THEME_CORE.PRODUCT.LOGIN):(0,ja.t)(Jn.THEME_CORE.PRODUCT.CONFIRM),isShowCloseButton:r===qd.NOT_LOGGED_IN,handleCloseButtonClick:t,handleCancelClick:t,onModalClick:()=>{}},j().createElement(iA,null,r===qd.NOT_LOGGED_IN&&j().createElement(oA,null,(0,ja.t)(Jn.THEME_CORE.PRODUCT.LOGIN_AND_TRY_AGAIN)),r===qd.UNQUALIFIED&&1===(null==i?void 0:i.length)&&j().createElement(oA,null,j().createElement(ja.HT,{value:Jn.THEME_CORE.PRODUCT.ITS_RESTRICTED_PRODUCT,label:i[0].label})),r===qd.UNQUALIFIED&&(null==i?void 0:i.length)>1&&j().createElement(j().Fragment,null,j().createElement(oA,null,(0,ja.t)(Jn.THEME_CORE.PRODUCT.PURCHASE_QUALIFICATION_REQUIRED)),j().createElement(aA,null,i.map((e=>j().createElement(cA,{key:e.id},e.label))))))):null},sA=JSON.parse('{"name":"@91app/nineyi.lib.themecore","version":"3.49.2","description":"","repository":{"type":"git","url":"git@gitlab.91app.com:rd6/nineyi.lib.cms-theme-core.git"},"license":"ISC","author":"91APP/F2E","types":"out/src/index.d.ts","main":"out/src/index.js","scripts":{"start":"./tools/dev/build-dev.sh","build:prod":"./tools/deploy/build-theme-all.sh","build:sass":"sass --load-path=node_modules --style=compressed ./src/sass/desktop.default.scss:./public/themecore/css/desktop.default.css && sass --load-path=node_modules --style=compressed ./src/sass/mobile.default.scss:./public/themecore/css/mobile.default.css && sass --load-path=node_modules --style=compressed ./src/sass/letterpress.default.scss:./public/themecore/css/letterpress.default.css","build:ts":"tsc && tsc-alias","build:ts:watch":"tsc -w & tsc-alias -w","build:dts":"rimraf dts && node copy-dts.js","init:i18n":"./tools/locale/fetch-i18n.sh","init:i18n:dev":"npm run init:i18n && node ./tools/locale/createTranslationConstants.js","lint":"./tools/dev/run-lint.sh --quiet","lint:fix":"./tools/dev/run-lint.sh --fix","prettier:check":"prettier --check \'./src\'","prettier:fix":"prettier --write \'./src\'","sync:libs":"sh ./tools/dev/sync-libs.sh","sync:to:catalog":"sh ./tools/dev/sync-themecore-to-catalog.sh","sync:to:letterpress":"sh ./tools/dev/sync-themecore-to-letterpress.sh","sync:to:mweb":"npm run build:prod && cp -r ./public/ ../nineyi.webstore.mobilewebmall/WebStore/Frontend/MobileWebMallV2/ClientApp/node_modules/@91app/nineyi.lib.themecore/public && cp -r ./dts/ ../nineyi.webstore.mobilewebmall/WebStore/Frontend/MobileWebMallV2/ClientApp/node_modules/@91app/nineyi.lib.themecore.types","sync:to:cartMweb":"npm run build:prod && cp -r ./public/ ../nineyi.webstore.mobilewebmall/WebStore/Frontend/MobileWebMallV2/CartClientApp/node_modules/@91app/nineyi.lib.themecore/public && cp -r ./dts/ ../nineyi.webstore.mobilewebmall/WebStore/Frontend/MobileWebMallV2/CartClientApp/node_modules/@91app/nineyi.lib.themecore.types","test":"jest --config=test/jest.config.json","test:coverage":"jest --config=test/jest.config.json --coverage","test:update":"jest -u --config=test/jest.config.json","precommit":"npm run prettier:fix && npm run lint:fix && npm run test && npm run build:prod"},"scriptsComments":{"start":"watch client, server bundle files in webpack and watch sass files","build:prod":"build webpack in production mode and build ts, dts and sass","sync:to:catalog":"sync bundle, css and locale files to catalog for dev","sync:to:letterpress":"sync bundle, css and locale files to letterpress for dev","sync:libs":"sync the libs folder to letterpress and catalog for dev","sync:to:mweb":"run prod first, sync js to mweb","sync:to:cartMweb":"run prod first, sync js to mweb","precommit":"本機開發commit前的檢查，prettier, eslint, test, build，避免推到 gitlab 才發現 pipeline failed"},"dependencies":{"@91app/nine1.lib.custom-setting":"1.0.7","@91app/nine1.lib.custom-translation":"1.0.5","@91app/nine1.lib.jsi":"1.0.13","@91app/nine1.lib.key2image":"^1.1.0","@91app/nineyi.component.product-to-cart":"^1.5.2","@91app/nineyi.config.cms-globla-style":"^1.0.8","@91app/nineyi.config.i18n":"0.0.10","@91app/nineyi.lib.common-utility":"^2.0.0","@91app/nineyi.lib.display-text":"1.2.1","@91app/nineyi.lib.line-express":"^1.1.0","@91app/nineyi.utility.log.client":"^2.1.6","@91app/nineyi.utility.pagelink":"^2.3.30","@91app/nineyi.utility.request":"^2.0.0","@91app/nineyi.utility.tracking":"^2.38.0","@apollo/react-hooks":"^3.1.3","@google-cloud/error-reporting":"^3.0.5","@reduxjs/toolkit":"^1.9.3","accounting":"^0.4.1","apollo-cache-inmemory":"^1.6.5","apollo-client":"^2.6.8","apollo-link-http":"^1.5.16","classnames":"^2.5.1","cross-fetch":"^3.1.4","date-fns":"^3.6.0","dayjs":"^1.11.11","dompurify":"^3.1.2","graphql":"14.7.0","graphql-tag":"2.10.3","jsonpath":"^1.1.1","lodash":"^4.17.21","loglevel":"^1.8.1","loglevel-format":"^1.1.2","object-path":"^0.11.8","polished":"^4.2.2","prop-types":"^15.8.1","qrcode.react":"3.1.0","react":"16.14.0","react-dom":"16.14.0","react-google-recaptcha-v3":"^1.8.0","react-i18nify":"^5.0.3","react-intersection-observer":"^8.32.0","react-loading-skeleton":"^3.4.0","react-player":"2.12.0","react-redux":"^7.2.3","react-router-dom":"5.3.4","react-select":"1.2.1","react-slick":"0.29.0","react-tooltip":"3.7.0","redux":"^4.0.5","redux-mock-store":"1.5.4","redux-observable":"1.2.0","redux-thunk":"2.3.0","rxjs":"6.5.2","sass":"^1.58.3","serialize-error":"^11.0.0","stacktrace-js":"^2.0.2","statuses":"2.0.1","styled-components":"5.3.9","superagent":"8.0.9","swr":"2.2.5","typesafe-actions":"^5.1.0","uuid":"^9.0.1"},"devDependencies":{"@babel/preset-env":"^7.24.5","@types/accounting":"^0.4.5","@types/dompurify":"3.0.5","@types/facebook-pixel":"0.0.24","@types/google.analytics":"0.0.42","@types/jest":"^29.4.0","@types/jsonpath":"^0.2.0","@types/lodash":"^4.14.191","@types/object-path":"^0.11.1","@types/prop-types":"^15.7.5","@types/qrcode.react":"^1.0.2","@types/react":"16.14.5","@types/react-dom":"16.9.12","@types/react-redux":"^7.1.12","@types/react-router-dom":"5.1.8","@types/react-slick":"^0.14.1","@types/react-tooltip":"^3.3.2","@types/statuses":"^2.0.5","@types/styled-components":"^5.0.0","@types/superagent":"^8.1.7","@types/uuid":"^9.0.8","@types/webpack":"^5.28.5","@types/webpack-env":"^1.18.5","@typescript-eslint/eslint-plugin":"^5.62.0","@typescript-eslint/parser":"^5.62.0","babel-jest":"^29.5.0","enzyme":"3.10.0","enzyme-adapter-react-16":"^1.15.7","enzyme-to-json":"^3.6.2","esbuild-loader":"^3.0.1","eslint":"^8.57.0","eslint-config-prettier":"^9.1.0","jest":"^29.5.0","jest-environment-jsdom":"^29.5.0","nock":"^13.5.4","prettier":"^3.2.5","progress-bar-webpack-plugin":"^2.1.0","sinon":"^15.0.4","terser-webpack-plugin":"^5.3.10","thread-loader":"^3.0.4","ts-jest":"^29.0.5","tsc-alias":"^1.8.8","tsconfig-paths-webpack-plugin":"^4.0.0","typescript":"4.9.5","webpack":"^5.91.0","webpack-bundle-analyzer":"^4.10.2","webpack-cli":"^5.1.4","webpack-merge":"^5.10.0"},"engines":{"node":">= 18.9.0"}}');var uA=Object.getOwnPropertySymbols,gA=Object.prototype.hasOwnProperty,dA=Object.prototype.propertyIsEnumerable;const IA={L:320,M:160,S:80},pA=K.default.img`
    ${({size:e})=>"Custom"!==e&&K.css`
            width: ${IA[e]}px;
        `}
`,bA=e=>{var t=e,{setting:n}=t,r=((e,t)=>{var n={};for(var r in e)gA.call(e,r)&&t.indexOf(r)<0&&(n[r]=e[r]);if(null!=e&&uA)for(var r of uA(e))t.indexOf(r)<0&&dA.call(e,r)&&(n[r]=e[r]);return n})(t,["setting"]);try{const{imgKey:e,isDefaultImageEnabled:t=!1,size:i="M",styles:o}=n,{market:a,shopId:c,env:l}=xe(),[s,u]=(0,z.useState)(null),g=e=>e?`${e}?v=${sA.dependencies["@91app/nine1.lib.key2image"]}`:null;return(0,z.useEffect)((()=>{var i;i=function*(){try{const n=new ks.L;yield n.initialize({market:a,env:l});const r=n.img_t({shopId:c,key:e,isDefaultImageEnabled:t});u(g(r))}catch(n){ze.error(`[ERROR] fetching image failed: ${Me(n)}: ${Je(n)}: imgKey: ${e}, imgAlt: ${r.alt}, isDefaultImageEnabled: ${t}`)}},new Promise(((e,t)=>{var r=e=>{try{a(i.next(e))}catch(n){t(n)}},o=e=>{try{a(i.throw(e))}catch(n){t(n)}},a=t=>t.done?e(t.value):Promise.resolve(t.value).then(r,o);a((i=i.apply(void 0,null)).next())}))}),[a,c,l,e]),s?j().createElement(pA,{src:s,alt:r.alt,size:i,loading:r.loading,style:"Custom"===i?o:void 0}):null}catch(i){ze.error(`[ERROR] Render SystemImage failed: ${Me(i)}: ${Je(i)}: imgKey: ${n.imgKey}, imgAlt: ${r.alt}, isDefaultImageEnabled: ${n.isDefaultImageEnabled}`)}},mA=K.default.a`
    font-size: ${Ce.fontSizeS};
    line-height: ${"20px"};
    justify-content: center;
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    transform: translateZ(0);
    background-color: ${({bgColor:e})=>e};
    color: ${({textColor:e})=>e};
    padding: 7px 16px;
    &:hover {
        text-decoration: ${({isEnableLink:e})=>e?"underline":"none"};
        cursor: ${({isEnableLink:e})=>e?"pointer":"default"};
    }
`,CA={wordBreak:"break-word",textAlign:"center",display:"flex",alignItems:"center"},hA={textDecoration:"none",verticalAlign:"middle",marginLeft:"8px",fontSize:`${Ce.fontSizeM}`,fontWeight:600},BA=z.forwardRef(((e,t)=>{const{backgroundColor:n=J.reddishPink,color:r=J.white,text:i="",linkUrl:o="",urlType:a="",linkInfo:c,isEditMode:l}=e,{pageType:s=""}=c||{},u=!(a===Ze.URL_TYPE.NONE)&&(a===Ze.URL_TYPE.CUSTOM?!!o:a===Ze.URL_TYPE.INTERNAL?!!s:void 0),g=l?u:!!o;return z.createElement(mA,{ref:t,"data-qe-id":"top_message",href:g?o:"#",bgColor:n,textColor:r,isEnableLink:g,onClick:e=>{g?(fl("首頁","click",`RibbonBar_${i}`),(0,hc.selectContent)({id:"",linkUrl:o,name:i,contentType:"RibbonBar"})):e.preventDefault()}},z.createElement("span",{style:CA},i||(0,ja.t)(Jn.THEME_CORE.HEADER.TOP_MESSAGE),g&&z.createElement("i",{style:hA,className:"ico ico-chevron-right"})))}));class AA extends z.Component{constructor(e){super(e),this.componentDidMount=()=>{window.addEventListener("scroll",this.handleScrollThrottle)},this.componentWillUnmount=()=>{window.addEventListener("scroll",this.handleScrollThrottle)},this.handleScroll=()=>{const{documentElement:e}=document,t=window.pageYOffset||e.scrollTop;this.setState({scrollY:t})},this.handleBackToTop=()=>{window.scroll({top:0,left:0,behavior:"smooth"})},this.state={scrollY:0},this.handleScrollThrottle=(0,M.throttle)(this.handleScroll,250)}render(){return this.state.scrollY>=this.props.showAtPosition&&z.createElement("div",{onClick:this.handleBackToTop},this.props.children)}}function yA(){const{innerWidth:e,innerHeight:t}=window;return{width:e,height:t}}AA.defaultProps={showAtPosition:500};var fA=Object.defineProperty,GA=Object.defineProperties,QA=Object.getOwnPropertyDescriptors,FA=Object.getOwnPropertySymbols,vA=Object.prototype.hasOwnProperty,ZA=Object.prototype.propertyIsEnumerable,EA=(e,t,n)=>t in e?fA(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,SA=(e,t)=>{for(var n in t||(t={}))vA.call(t,n)&&EA(e,n,t[n]);if(FA)for(var n of FA(t))ZA.call(t,n)&&EA(e,n,t[n]);return e},XA=(e,t)=>GA(e,QA(t));const TA=K.default.div`
    position: relative;
    display: flex;
    flex-direction: row;
    width: ${({imgWidth:e})=>e}px;
    height: ${({imgHeight:e,imgWidth:t,mobile:n})=>n?4*t/3+"px":`${e}px`};
`,xA=K.default.div`
    position: absolute;
    background-color: ${({backgroundColor:e})=>e||"transparent"};
    top: 0;
    overflow: hidden;
    width: 100%;
    height: 100%;
    z-index: ${({zIndex:e})=>e||10};
`,UA=K.default.div`
    display: flex;
    position: absolute;
    /* 正在播放的圖片會在上面，其他圖片z-index 應該為0 */
    z-index: ${({imgIndex:e,currentIndex:t,arrayLength:n})=>{const r=t<n,i=e<n;return r&&i||!r&&!i?10:0}};
    width: ${({imgWidth:e,mobile:t})=>t&&!e?"auto":`${e}px`};
    height: ${({imgHeight:e,mobile:t})=>t&&!e?"auto":`${e}px`};
    transition: 0s;
`,NA=K.default.div`
    height: 10px;
    width: 100%;
    display: flex;
    justify-content: center;
    margin-top: 12px;
    margin-bottom: ${({mobile:e})=>e?"24":"68"}px;
`,RA=K.default.div`
    width: 8px;
    height: 8px;
    border-radius: 100%;
    background-color: ${({active:e})=>e?"#4B4E5B":"#d8d9d8"};
    margin-right: 10px;
    &:last-child {
        margin-right: 0;
    }
    cursor: pointer;
`,OA=K.default.i`
    width: fit-content;
    height: fit-content;
    background-color: transparent;
    color: #666666;
    position: absolute;
    cursor: pointer;
    bottom: ${({imgHeight:e})=>e/2}px;
    z-index: 15;
    right: ${({gutter:e,direction:t})=>"right"===t?e:null}px;
    left: ${({gutter:e,direction:t})=>"left"===t?e:null}px;
    &::before {
        font-size: ${({size:e})=>"large"===e?42:32}px;
    }
`,VA=({settings:e,children:t,collectionItemId:n})=>{const r=j().Children.toArray(t).filter((e=>"object"==typeof e)),[i,o]=(0,z.useState)(0),[a,c]=(0,z.useState)(!1),[l,s]=(0,z.useState)(!1),[u,g]=(0,z.useState)(!1),[d,I]=(0,z.useState)(!1),[p,b]=(0,z.useState)({}),[m,C]=(0,z.useState)(!1),h=(0,z.useRef)([]),B=(0,z.useRef)(),A=(0,z.useRef)(Array(r.length).fill({playbackRate:1,previousIntersectionStatus:!1,progress:0,updateTime:0,previousPlayStatus:"play"})),y=(0,z.useRef)(null),f=(0,z.useRef)([]),G=(0,z.useRef)([]),{width:Q}=function(){const[e,t]=(0,z.useState)(yA());return(0,z.useEffect)((()=>{function e(){t(yA())}return window.addEventListener("resize",e),()=>window.removeEventListener("resize",e)}),[]),e}(),{imgWidth:F,imgHeight:v,autoplay:Z,mobile:E,arrows:S}=e,X=F||Q,T=X/4,x=null==r?void 0:r.length,U=2*x,N=(e,t,n)=>{e.style[t]=n},R=function(e,{threshold:t=0,root:n=null,rootMargin:r="0%",freezeOnceVisible:i=!1}){const[o,a]=(0,z.useState)(),c=(null==o?void 0:o.isIntersecting)&&i,l=([e])=>{a(e)};return(0,z.useEffect)((()=>{const i=null==e?void 0:e.current;if(!window.IntersectionObserver||c||!i)return;const o=new IntersectionObserver(l,{threshold:t,root:n,rootMargin:r});return o.observe(i),()=>o.disconnect()}),[null==e?void 0:e.current,JSON.stringify(t),n,r,c]),o}(y,{threshold:.01,root:null,rootMargin:"0%",freezeOnceVisible:!1}),O=!!(null==R?void 0:R.isIntersecting),V=e=>e>U-1?0:e<0?U-1:e,W=(e,t)=>e>t?e-t:e+t,_=(0,z.useCallback)((0,M.throttle)((()=>{o((e=>V(e-1))),A.current.forEach((e=>{e.previousPlayStatus="play"}))}),550),[U]),w=(0,z.useCallback)((0,M.throttle)((()=>{o((e=>V(e+1))),A.current.forEach((e=>{e.previousPlayStatus="play"}))}),550),[U]),H=(0,z.useRef)([]),Y=(0,z.useCallback)(((e,t)=>{const n=e-i,r=i<t,o=e<t;return r&&i%t==0&&!o?(n-2*t)*X:!r&&i%t!=0&&o?(n+2*t)*X:n*X}),[X,i]);(0,z.useEffect)((()=>{H.current.length<1||H.current.forEach(((e,t)=>{N(e,"left",`${Y(t,x)}px`),N(e,"transitionDuration","0.5s")}))}),[x,Y,H.current.length]);const k=()=>{const e=f.current[f.current.length-1]-f.current[0];H.current.forEach((e=>{N(e,"transitionDuration","0.5s")})),e>T&&!d&&(s(!0),_(),H.current.forEach(((e,t)=>{N(e,"left",`${Y(t,x)}px`)})),setTimeout((()=>{s(!1)}),500)),e<-T&&!d&&(s(!0),H.current.forEach((e=>{N(e,"transitionDuration","0.5s")})),w(),H.current.forEach(((e,t)=>{N(e,"left",`${Y(t,x)}px`)})),setTimeout((()=>{s(!1)}),500)),e>=-T&&e<=T&&!d&&(s(!0),H.current.forEach(((e,t)=>{N(e,"left",`${Y(t,x)}px`),N(e,"transitionDuration","0.5s")})),setTimeout((()=>{s(!1)}),500)),f.current=[],G.current=[]},D=e=>{if(f.current.push(e.touches[0].clientX),G.current.push(e.touches[0].clientY),f.current.length<3||G.current.length<3)return;const t=f.current[2]-f.current[0],n=G.current[2]-G.current[0];if(Math.abs(n)>Math.abs(t))return I(!0),void(B.current.style.touchAction="pan-x");Math.abs(n)<Math.abs(t)&&(I(!1),B.current.style.touchAction="pan-y"),u||!O||l||d||f.current[f.current.length-1]-f.current[0]>X||(H.current.forEach((e=>{N(e,"transitionDuration","0s")})),H.current.forEach((e=>{const t=(0,M.toNumber)((0,M.trimEnd)(e.style.left,"px")),n=(0,M.toNumber)(f.current[f.current.length-1]-f.current[f.current.length-2]);e.style.left=`${t+n}px`})),e.stopPropagation())},L={root:y.current,rootMargin:"0px",threshold:.99},P=(0,z.useCallback)((e=>{e.forEach((e=>{var t,n;const r=null==e?void 0:e.target;if(e.isIntersecting||(null==r||r.pause(),b({})),!e.isIntersecting&&!0===(null==(t=A.current[(0,M.toNumber)(r.id)])?void 0:t.previousIntersectionStatus)){const t=XA(SA({updateTime:0},A.current[(0,M.toNumber)(r.id)]),{progress:r.currentTime,playbackRate:r.playbackRate});A.current[(0,M.toNumber)(null==(n=null==e?void 0:e.target)?void 0:n.id)]=t,A.current[W((0,M.toNumber)(e.target.id),x)]=t,h.current[W((0,M.toNumber)(e.target.id),x)].currentTime=A.current[(0,M.toNumber)(r.id)].progress,h.current[W((0,M.toNumber)(e.target.id),x)].playbackRate=A.current[(0,M.toNumber)(r.id)].playbackRate,A.current[(0,M.toNumber)(r.id)].previousIntersectionStatus=!1}if(e.isIntersecting){b({});const e=XA(SA({},A.current[(0,M.toNumber)(r.id)]),{previousIntersectionStatus:!0,updateTime:Date.now()});A.current[(0,M.toNumber)(r.id)]=e}}))}),[x]);return(0,z.useEffect)((()=>{const e=new IntersectionObserver(P,L);h.current.forEach((t=>{"true"!==t.getAttribute("hasObserver")&&(e.observe(t),t.setAttribute("hasObserver","true"))}))}),[h.current.length,i]),(0,z.useEffect)((()=>{h.current.forEach((e=>{var t;(u||!O||l)&&e.pause(),O&&(0,M.toNumber)(e.id)===(0,M.toNumber)(i)&&e.currentTime!==e.duration&&A.current[(0,M.toNumber)(e.id)]&&"pause"!==(null==(t=A.current[(0,M.toNumber)(e.id)])?void 0:t.previousPlayStatus)&&(null==e||e.play())}))}),[O,i,u,l,p]),(0,z.useEffect)((()=>{h.current.forEach((e=>e.load())),h.current.forEach((e=>e.setAttribute("controlsList","nodownload"))),h.current.forEach((e=>{e.addEventListener("enterpictureinpicture",(()=>{g(!0)})),e.addEventListener("leavepictureinpicture",(()=>{g(!1)}))}))}),[]),function(e,t,n){const r=(0,z.useRef)(e),[i,o]=(0,z.useState)(!1),a=(0,z.useRef)(null);(0,z.useEffect)((()=>{r.current=e}),[e]),(0,z.useEffect)((()=>{if(t||0===t)return a.current=setInterval((()=>{i||n||(r.current(),o(!0))}),t),()=>{clearInterval(a.current),o(!1)}}),[t,n])}((()=>Z?o((e=>V(e+1))):null),2e3,a),(({SLIDER_LENGTH:e,videoRef:t,currentIndex:n,ReactChildrenArray:r,collectionItemId:i})=>{const[o,a]=(0,z.useState)(0);let c;const l=t=>t>=e?t-e:t,s=()=>{var e;const t=r[l(n)];let i;return(0,z.isValidElement)(t)&&(i=null==(e=t.props)?void 0:e.src),i},u=()=>{const e=t.current[l(n)],r=(null==e?void 0:e.duration)||0,i=(null==e?void 0:e.currentTime)||0;return{videoDuration:r,videoCurrentTime:i,playedPercent:(i/r*100).toFixed(0)}},g=()=>{const{videoCurrentTime:e,videoDuration:t,playedPercent:n}=u();if(!isNaN(e)&&!isNaN(t)){switch(n){case"10":case"25":case"50":case"75":case"100":n!==c&&I(t,n)}Sc(n)&&(c=n)}},d=()=>{const{videoCurrentTime:e,videoDuration:t,playedPercent:n}=u();isNaN(e)||isNaN(t)||"0"!==n||I(t,n)},I=(e,t)=>{switch(t){case"0":(0,hc.videoStart)({duration:e,title:i,url:s()});break;case"100":(0,hc.videoComplete)({duration:e,title:i,url:s()});break;default:(0,hc.videoProgress)({duration:e,title:i,url:s(),percent:t})}};(0,z.useEffect)((()=>(o!==l(n)&&((0,hc.selectContent)({contentType:"CollectionContents",id:"",name:"切換圖片",viewId:i,linkUrl:s()}),a(l(n))),t.current.forEach((e=>{e.addEventListener("timeupdate",g),e.addEventListener("play",d)})),()=>{t.current.forEach((e=>{e.removeEventListener("timeupdate",g),e.removeEventListener("play",d)}))})),[l(n)])})({SLIDER_LENGTH:x,videoRef:h,currentIndex:i,ReactChildrenArray:r,collectionItemId:n}),j().createElement("div",{ref:B,onMouseEnter:()=>Z?c(!0):null,onMouseLeave:()=>Z?c(!1):null},j().createElement(TA,{imgWidth:X,imgHeight:v,mobile:!0},x>1&&S&&j().createElement(OA,{className:"ico ico-chevron-left",direction:"left",size:"default",gutter:12,imgHeight:v,onClick:!u&&_}),x>1&&S&&j().createElement(OA,{className:"ico ico-chevron-right",direction:"right",size:"default",gutter:12,imgHeight:v,onClick:!u&&w}),x>0&&j().createElement(xA,{ref:y},j().Children.map([...r,...r],((e,t)=>j().createElement(UA,{ref:e=>{H.current[t]=e},mobile:E,key:(0,M.toString)(t),currentIndex:i,imgIndex:t,imgWidth:X,imgHeight:v,arrayLength:x,onTouchMove:D,onTouchEnd:k},((e,t)=>{const n={controls:!0,muted:!0,id:(0,M.toString)(t),onEnded:()=>{A.current[t].progress=h.current[t].duration},onPause:()=>{A.current[t].previousPlayStatus="pause"},onPlay:()=>{A.current[t].previousPlayStatus="play"},onClick:()=>{C(!0)},width:X,ref:e=>{h.current[t]=e},loop:!1,playsInline:!0};return"video"===e.type?j().cloneElement(e,SA(SA({key:(0,M.toString)(t)},e.props),n)):"img"===e.type?j().cloneElement(e,SA(SA({key:(0,M.toString)(t)},e.props),{width:"100%",height:"auto"})):j().cloneElement(e,SA({},e.props))})(e,t)))))),j().createElement(NA,{mobile:E},x>1&&r.map(((e,t)=>j().createElement(RA,{key:(0,M.toString)(t),active:i%x==t%x,onClick:()=>{o(i>=x?(0,M.toNumber)(t)+x:t),A.current.forEach((e=>{e.previousPlayStatus="play"}))}})))))};class WA extends z.Component{constructor(){super(...arguments),this.freezeAsidePushMenu=e=>{var t;const n=null==(t=this.slidePushMenuLeftElem)?void 0:t.classList;this.browsingMode!==P.DESKTOP&&n&&ol(navigator.userAgent)&&(e?n.add("slide-push-menu--freeze"):n.remove("slide-push-menu--freeze"))}}componentDidMount(){this.slidePushMenuLeftElem=document.getElementById("slide-push-menu__left-containter");const{isOpen:e}=this.props,{browsingMode:t}=xe();this.browsingMode=t,Gi(e)}UNSAFE_componentWillReceiveProps(e){const{isOpen:t}=this.props;t!==e.isOpen&&(Gi(e.isOpen),this.freezeAsidePushMenu(e.isOpen))}render(){const{title:e,isOpen:t,isMaskOpacity:n,onCloseDialog:r,onConfirmDialog:i,customStyle:o,customCssClass:a,isShowClose:c,children:l,cancelText:s,confirmText:u}=this.props;return z.createElement("div",{className:qs()("dialog",!0===t?"dialog--open":"")},t&&z.createElement("div",{className:qs()("dialog__backdrop",n?"dialog__backdrop--opacity":""),onClick:r}),t&&z.createElement("div",{style:o,className:qs()("dialog--default",a||"")},c&&z.createElement("div",{className:"modal__header"},z.createElement("a",{className:"close",onClick:r},z.createElement("i",{className:"ico ico-close"})),e&&z.createElement("h2",{className:"modal__title"},e)),!l&&z.createElement("div",{className:"modal__loading black-spinner "}),l&&z.createElement("div",{className:"modal__body"},l),s||u?z.createElement("div",{className:"modal__footer"},s&&z.createElement("button",{type:"button",className:"cancel-btn",onClick:r},s),u&&z.createElement("button",{type:"button",className:"confirm-btn",onClick:i},u)):null))}}WA.defaultProps={isOpen:!1,isShowClose:!0,isMaskOpacity:!0,title:"",confirmText:"",cancelText:""};const _A=K.default.label`
    width: 12px;
    height: 12px;
    border-radius: 50%;
    background: white;
    border: 2px solid #dddddd;
    margin-right: 18px;

    &::after {
        content: '';
        display: block;
        border-radius: 50%;
        width: 8px;
        height: 8px;
        margin: 2px;
        background: transparent;
    }
`,wA=K.default.input`
    cursor: pointer;
    opacity: 0;
    z-index: ${x};
    border-radius: 50%;
    width: 100%;
    height: 100%;
    margin-right: 10px;
    position: absolute;

    &:hover ~ ${_A} {
        background: #fff;
        border: 2px solid #bebebe;
        &::after {
            content: '';
            display: block;
            border-radius: 50%;
            width: 8px;
            height: 8px;
            margin: 2px;
            background: #bebebe;
        }
    }
    &:checked + ${_A} {
        background: #fff;
        border: 2px solid #4a90e2;
        &::after {
            content: '';
            display: block;
            border-radius: 50%;
            width: 8px;
            height: 8px;
            margin: 2px;
            background: #4a90e2;
        }
    }
`,HA=K.default.div`
    display: flex;
    align-items: center;
    height: 48px;
    position: relative;
    margin-right: 10px;
`,YA=K.default.div`
    width: 100%;
`,kA=e=>{const{currentItem:t,itemList:n,onAfterChanged:r}=e,[i,o]=(0,z.useState)(t),a=e=>{const t=e.target.value;o(t),r(t)};return z.createElement(z.Fragment,null,n.map((e=>z.createElement(HA,{key:e.value},z.createElement(wA,{type:"radio",value:e.value,checked:e.value===i,onChange:a}),z.createElement(_A,null),z.createElement(YA,null,e.title)))))};kA.defaultProps={itemList:[],currentItem:""};const DA=kA,LA=K.default.i`
    font-size: 24px;
`,PA=e=>e===qr.FACEBOOK_PAGE?"#1877f2":e===qr.FACEBOOK_MESSENGER?"#fffff":e===qr.LINE?"#06c755":e===qr.IG?"#ff0076":"#fffff",JA=({id:e,size:t})=>(e=>e===qr.FACEBOOK_PAGE||e===qr.FACEBOOK_MESSENGER||e===qr.LINE||e===qr.IG)(e)?{fontSize:t/.9+"px",width:"0.9em",height:"0.9em",borderRadius:"100%",background:`${PA(e)}`}:{fontSize:`${t}px`},MA=e=>{const{id:t}=e,n={fb_page:"ico-facebook",line:"ico-line-fill",ig:"ico-instagram",fb_messenger:"ico-messenger-fill",store_info:"ico-store",coupon:"ico-coupon",top:"ico-skip-up",cumulative:"ico-apps"}[t]||"ico-shortcut";return z.createElement(LA,{className:`toolbox__icon ico ${n}`})},zA=e=>{const{id:t,href:n,onClick:r,size:i=40,imageUrl:o,customTitle:a,eventLabel:c}=e;return z.createElement("a",{rel:"noreferrer",className:"toolbox__button toolbox__button--shadow",style:JA({id:t,size:i}),href:n,target:"_blank",onClick:e=>{fl("全站_懸浮工具列","click",`懸浮工具列_${c}`),(0,hc.selectContent)({id:t.toString(),contentType:"FloatButton",linkUrl:n,name:c}),r&&(r(e),e.preventDefault())}},t===qr.CUSTOM&&o?z.createElement("img",{loading:"lazy",className:"toolbox__button--custom",src:(t=>{const{imageServiceConfig:n,shopId:r}=e;return xo(r,n,t)})(o),alt:a||"toolbox__button--custom"}):z.createElement(MA,{id:t}))};var jA=n(5963),KA=n.n(jA);class qA extends z.Component{static hide(e){KA().hide(e)}render(){return z.createElement(z.Fragment,null,this.props.isCustomTriggerNode||z.createElement("div",{className:"tooltip tooltip__icon","data-for":this.props.id,"data-tip":"tooltip",style:this.props.style},z.createElement("i",{className:"ico ico-question"})),z.createElement(KA(),{place:this.props.place,id:this.props.id,type:this.props.type,effect:"solid",class:`tooltip--custom tooltip--custom--clickable ${this.props.tooltipCustomClass}`,globalEventOff:"click"},this.props.imageSrc&&z.createElement("figure",{className:"tooltip__image-frame"},z.createElement("img",{loading:"lazy",className:"tooltip__image",src:this.props.imageSrc,alt:"tooltip"})),this.props.wording&&z.createElement("span",null,this.props.wording),this.props.children))}}qA.defaultProps={imageSrc:"",wording:"",place:"right",type:"light"},qA.propTypes={imageSrc:Vu.string,wording:Vu.string,place:Vu.string,type:Vu.string};const $A=K.default.div`
    width: 100%;
    height: 100%;
    min-height: 50vh;
    background-color: ${J.white};
    text-align: center;
    margin-top: 10%;
`,ey=K.default.div`
    margin-top: 31px;
    width: 100%;
`,ty=({text:e,children:t})=>z.createElement($A,null,z.createElement(bA,{setting:{imgKey:ks.e.NO_RESULT},alt:"NotFound"}),z.createElement(ey,null," ",e),t),ny=K.default.svg`
    display: flex;
    justify-content: center;
    align-items: center;

    width: ${32}px;
    height: ${32}px;
    box-sizing: border-box;
    border-radius: 100%;
    background-color: ${J.blackThree};
    overflow: visible;

    text {
        text-anchor: middle;
        dominant-baseline: central;
        fill: ${J.white};
        cursor: default;
    }
`,ry=K.keyframes`
    from {
        stroke-dashoffset: 0;
    }
    to {
        stroke-dashoffset: ${32*Math.PI}px;
    }
`,iy=K.default.circle`
    transform-origin: center;
    transform: rotateY(-180deg) rotateZ(-90deg);
    stroke: ${J.white};
    stroke-width: ${2}px;
    fill: none;

    stroke-dasharray: ${32*Math.PI}px;
    stroke-dashoffset: 0;
    animation: ${({isEnableAnimation:e})=>e?ry:"none"};
    animation-duration: ${({countdownSeconds:e})=>e}s;
    animation-fill-mode: forwards;
    animation-iteration-count: 1;
    animation-timing-function: linear;
`,oy=K.default.div`
    width: 100vw;
    height: 100vh;
    padding: 0 20px;
    box-sizing: border-box;
    background-color: rgba(0, 0, 0, 0.5);
    z-index: ${_};

    position: fixed;
    top: 0;
    left: 0;

    display: flex;
    flex-direction: column;
    justify-content: center;
    align-items: center;
    ${({isEditMode:e})=>e&&"\n        width: 100%;\n        height: 100%;\n        position: absolute;\n        overflow: hidden;\n    "}
`,ay=K.default.img`
    width: 100%;
    height: auto;
    display: ${({hasError:e})=>e?"none":"block"};
`,cy=K.default.div`
    width: 100%;
    height: 100%;
    max-width: ${({imgWidth:e})=>e}px;
    max-height: ${({imgHeight:e})=>e}px;
    min-height: calc((100vw - 40px) * ${({imgHeight:e})=>e} / ${({imgWidth:e})=>e});

    display: flex;
    flex-direction: column;
    justify-content: center;
    align-items: flex-end;

    svg {
        transform: translate(-${2}px, calc(-${2}px - 10px));
    }
`;var ly=Object.defineProperty,sy=Object.defineProperties,uy=Object.getOwnPropertyDescriptors,gy=Object.getOwnPropertySymbols,dy=Object.prototype.hasOwnProperty,Iy=Object.prototype.propertyIsEnumerable,py=(e,t,n)=>t in e?ly(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,by=(e,t)=>{for(var n in t||(t={}))dy.call(t,n)&&py(e,n,t[n]);if(gy)for(var n of gy(t))Iy.call(t,n)&&py(e,n,t[n]);return e},my=(e,t)=>sy(e,uy(t));const Cy="FullScreenAdStoreInfo",hy=864e5,By=()=>{const{locale:e,shopId:t}=xe(),n=localStorage.getItem(Cy)||(0,Bn.getCookie)(Cy),r=localStorage.getItem("FullScreenAd");if(n){const r=JSON.parse(n);return r[t]&&r[t][e]?r[t][e]:{updateTimestamp:"",cycleStartTime:"",cycleDisplayCounter:0}}return r?JSON.parse(r):{updateTimestamp:"",cycleStartTime:"",cycleDisplayCounter:0}},Ay=e=>{const t=(null==e?void 0:e.length)>0&&e[0]||{},{scheduleList:n}=t,r=((e,t)=>{var n={};for(var r in e)dy.call(e,r)&&t.indexOf(r)<0&&(n[r]=e[r]);if(null!=e&&gy)for(var r of gy(e))t.indexOf(r)<0&&Iy.call(e,r)&&(n[r]=e[r]);return n})(t,["scheduleList"]);if(n&&n.length>0){const e=n.filter((e=>Ma()().isBefore(e.endTime))).sort(((e,t)=>Ma()(e.startTime).diff(Ma()(t.startTime))));return by(by({},e[0]),r)}return{}},yy=({materialItem:e={},isEditMode:t=!1,isShowInPreview:n=!1,browsingMode:r,handlePopoverClose:i})=>{const o=xe(),{imageServiceConfig:a,shopId:c}=o,{title:l,adsCloseType:s,countdownSeconds:u,linkUrl:g,altText:d,mobileImageInfo:I={},desktopImageInfo:p={},imageUrlMobile:b,imageUrl:m,isSplitPicture:C,updateTimestamp:h,compressVersion:B}=e,A=r===P.MOBILE,y=xo(c,a,A||!C?b:m),[f,G]=(0,z.useState)(u),[{imageWebPSrcSet:Q,imageHasError:F},v]=(0,z.useState)((()=>{let e=[];return A&&I?e=I.resizeList||[]:!A&&p&&(e=p.resizeList||[]),{imageWebPSrcSet:No(y,e,o,B),imageHasError:!1}})),Z=A||!C?I:p,E=Q&&!t,S="CountDown"===s;(0,z.useEffect)((()=>{if(S&&!t){const e=setInterval((()=>G((e=>e-1))),1e3);setTimeout((()=>{clearInterval(e),i(),(0,hc.selectContent)({id:"",linkUrl:st(g),name:`close_${l}`,contentType:"PopupAd"})}),1e3*f)}}),[]),(0,z.useEffect)((()=>{if(!n){const{updateTimestamp:e,cycleStartTime:t,cycleDisplayCounter:n}=By(),r=e!==h||Ma()().valueOf()-hy>Ma()(t).valueOf();(({updateTimestamp:e,cycleStartTime:t,cycleDisplayCounter:n})=>{const{locale:r,shopId:i}=xe(),o=JSON.parse(localStorage.getItem(Cy))||{},a=o[i]||{},c=my(by({},o),{[i]:my(by({},a),{[r]:{updateTimestamp:e,cycleStartTime:t,cycleDisplayCounter:n}})});localStorage.setItem(Cy,JSON.stringify(c)),(0,Bn.addCookie)(Cy,JSON.stringify(c),1)})({updateTimestamp:h,cycleStartTime:r?Ma()().toISOString():t,cycleDisplayCounter:r?1:n+1})}}),[n]);const X=e=>{fl(Kc(),"click_PopupAd",`${e}{${l}}`)};return j().createElement(oy,{isEditMode:t,onClick:()=>{S||(X("close"),i(),(0,hc.selectContent)({id:"",linkUrl:st(g),name:`close_${l}`,contentType:"PopupAd"}))}},j().createElement(cy,{imgWidth:String(Z.width),imgHeight:String(Z.height)},j().createElement(ny,{width:32,height:32,viewBox:"0 0 32 32"},j().createElement(iy,{cx:16,cy:16,r:16,isEnableAnimation:S&&!t,countdownSeconds:u}),j().createElement("text",{x:16,y:16},S?`${f}s`:"✕")),j().createElement(ay,my(by({src:y},E&&{srcSet:Q}),{alt:d||Ke(je.FULL_SCREEN_ADS),hasError:F,onLoad:()=>{v((e=>my(by({},e),{imageHasError:!1})))},onError:()=>{v({imageWebPSrcSet:"",imageHasError:!0})},onClick:e=>{e.stopPropagation(),X("open"),(0,hc.selectContent)({id:"",linkUrl:st(g),name:`open_${l}`,contentType:"PopupAd"}),window.location.href.replace(/^(http(s?)):/i,"")===g.replace(/^(http(s?)):/i,"")?(i(),(0,hc.selectContent)({id:"",linkUrl:st(g),name:`close_${l}`,contentType:"PopupAd"})):window.location.href=g}}))))},fy=({browsingMode:e,materialList:t,isEditMode:n=!1})=>{const{pageName:r,previewPageName:i}=xe(),o=(0,z.useMemo)((()=>n||r===Se.PREVIEW&&i===Se.INDEX),[n,r,i]),a=(0,Qs.useSelector)((e=>e.construct)),{fullScreenAds:c={}}=a&&La(a)||{},l=(0,z.useMemo)((()=>{var e,r;return n?Ay(t):o&&(null==(e=c.materialList)?void 0:e.length)>0&&c.materialList[0]&&!c.materialList[0].adsCloseType?Ay(c.materialList):(null==(r=c.materialList)?void 0:r.length)>0&&c.materialList[0]||{}}),[n,c.materialList,t]),s=(0,z.useMemo)((()=>(r===Se.INDEX||o)&&!!l.adsCloseType),[r,o,l]),[u,g]=(0,z.useState)(!1);return(0,z.useEffect)((()=>{if(s)if(o)g(!0);else{const{updateTimestamp:e,cycleStartTime:t,cycleDisplayCounter:n}=By();g(l.updateTimestamp!==e||n<l.displayFrequencyPerDay||Ma()().valueOf()-hy>Ma()(t).valueOf())}}),[s,o]),j().createElement(j().Fragment,null,Ge()&&s&&u&&j().createElement(yy,{materialItem:l,isEditMode:n,browsingMode:e,isShowInPreview:o,handlePopoverClose:()=>g(!1)}))},Gy=K.default.ol`
    display: flex;
    align-items: center;
    width: 100%;
    height: 20px;
    padding: 3px 0px;
`,Qy=K.default.li`
    display: flex;
`,Fy=K.default.a`
    display: flex;
    align-items: center;
    margin-right: 5px;
    font-size: ${Ce.fontSizeDefault};
    letter-spacing: normal;
    color: ${({isLast:e})=>e?J.blackThree:J.brownishGrey};
    cursor: ${({isLast:e})=>e?"default":"pointer"};
    :hover {
        text-decoration: ${({isLast:e})=>e?"":"underline"};
    }
`,vy=K.default.h1`
    font-weight: normal;
`,Zy=K.default.i`
    display: flex;
    align-items: center;
    margin-right: 5px;
    color: ${J.blackThree};
`,Ey=e=>{const{data:t,onItemClick:n,isUseH1:r}=e;return z.createElement(Gy,null,t.map(((e,i)=>{const{name:o,link:a,isUseHref:c=!0,isUseOnClick:l=!0}=e,s=i===t.length-1,u=c&&a||a||null;return z.createElement(Qy,{key:o+i},z.createElement(Fy,{href:u,onClick:t=>{l&&n&&n({item:e,index:i,isLast:s}),c||t.preventDefault()},isLast:s},s&&r?z.createElement(vy,null,e.name):z.createElement("span",null,e.name)),!s&&z.createElement(Zy,{className:"ico ico-chevron-right"}))})))},Sy=K.default.div`
    position: fixed;
    padding: 20px 16px;
    width: 820px;
    min-height: 52px;
    background: ${({headerBackgroundColor:e})=>e||"#FFFFFF"};
    color: ${({navTextColor:e})=>e||"#000"};
    mix-blend-mode: normal;
    box-shadow: 0 1px 4px rgba(151, 151, 151, 0.5);
    border-radius: 4px;
    display: inline-flex;
    left: 50%;
    top: 90vh;
    transform: translate(-50%, -50%);
    z-index: ${w};
`,Xy=K.default.div`
    width: 690px;
    font-size: 12px;
    line-height: 17px;
`,Ty=K.default.p`
    -webkit-line-clamp: 2;
    -webkit-box-orient: vertical;
    white-space: normal;
    display: ${e=>e.isOpenPrivacyBlock?"initial":"-webkit-box"};
    overflow: hidden;
`,xy=K.default.a`
    text-decoration-line: underline;
    color: ${({navTextColor:e})=>e||"#333"};
`,Uy=K.default.a`
    font-style: normal;
    font-weight: bold;
    font-size: 14px;
    line-height: 20px;
    align-items: center;
    text-align: center;
    color: ${({navTextColor:e})=>e||"#333"};
    margin: auto;
    display: flex;
    flex-direction: column;
    cursor: pointer;
`,Ny=K.default.a`
    font-weight: 500;
    font-size: 12px;
    line-height: 17px;
    text-decoration-line: underline;
    color: ${({navTextColor:e})=>e||"#333"};
    cursor: pointer;
`,Ry=()=>{const[e,t]=(0,z.useState)(!1),[n,r]=(0,z.useState)(Ge()&&!fn()&&!(0,Bn.getCookie)(Vc)&&!An()&&!(Ge()&&(0,Ze.getPageInfoByPathRegex)(window.location.pathname).pageType===Ze.PAGE_TYPE.APP_DOWNLOAD)),i=(0,Qs.useSelector)((e=>e.construct)),o=(0,Qs.useSelector)((e=>e.dependencies)),{shopDomainName:a,shopId:c}=o,{headerStyle:l,navStyle:s}=La(i)||{};return n?z.createElement(Sy,{headerBackgroundColor:null==l?void 0:l.backgroundColor,navTextColor:null==s?void 0:s.color},z.createElement(Xy,null,z.createElement(Ty,{isOpenPrivacyBlock:e},(0,ja.t)(Jn.THEME_CORE.DEFAULT.PRIVACY_TIP_INFO_FIRST),z.createElement(xy,{href:`//${a}/MyAccount/Privacy?shopId=${c}`,navTextColor:null==s?void 0:s.color},(0,ja.t)(Jn.THEME_CORE.DEFAULT.PRIVACY_TIP_INFO_SECOND)),(0,ja.t)(Jn.THEME_CORE.DEFAULT.PRIVACY_TIP_INFO_THIRD)),e?null:z.createElement(Ny,{href:"#",onClick:e=>{e.preventDefault(),t(!0)},navTextColor:null==s?void 0:s.color},(0,ja.t)(Jn.THEME_CORE.DEFAULT.PRIVACY_TIP_INFO_READ_MORE))),z.createElement(Uy,{navTextColor:null==s?void 0:s.color,href:"#",onClick:e=>{e.preventDefault(),(0,Bn.addCookie)(Vc,(!0).toString(),365),r(!1)}},(0,ja.t)(Jn.THEME_CORE.DEFAULT.PRIVACY_TIP_INFO_CHECK))):null},Oy=({text:e})=>z.createElement("span",{"data-nosnippet":!0},e),Vy=K.css`
    float: left;
`,Wy={left:"400px;",middle:"155px;",menu:"100%;"},_y=K.default.footer`
    box-sizing: border-box;
    min-width: ${ue};
    height: ${ge};
    margin-top: 64px;
    padding: 24px 0;
    background: #f0f2f5;
`,wy=K.default.div`
    ${({section:e})=>"left"===e?"\n            float: left;\n            margin-right: 40px;\n            ":Vy}
    box-sizing: border-box;
    ${({section:e})=>`\n        width: ${Wy[e]}\n        `}
`,Hy=K.default.a`
    display: flex;
    align-items: center;
    height: 42px;
`,Yy=K.default.img`
    width: 140px;
    display: flex;
    justify-content: start;
`,ky=K.default.ul`
    list-style: none;
    display: flex;
    gap: 0 8px;
    margin-top: 80px;
`,Dy=K.default.a`
    width: 28px;
    height: 28px;
    background-color: #9d9da0;
    border-radius: 100%;
    color: #ffffff;
    display: flex;
    justify-content: center;
    align-items: center;
`,Ly=K.default.i`
    font-size: 16px;
`,Py=K.default.div`
    display: flex;
    flex-direction: column;
    max-height: 96px;
    flex-wrap: wrap;
    gap: 8px 40px;
    width: 100%;
`,Jy=K.default.li`
    font-size: 12px;
    font-style: normal;
    font-weight: 400;
    line-height: 150%;
`,My=K.default.a`
    ${ye}
    color: #3C3C43;
    &:hover {
        cursor: pointer;
    }
`,zy=K.default.div`
    float: left;
    box-sizing: border-box;
    width: 100%;
    margin-top: 36px;
    text-align: right;
`,jy=K.default.small`
    ${ye}
    font-size: 12px;
    line-height: 150%;
    color: #3c3c43;
    ${({size:e})=>{if("copyright"===e)return"\n            padding-top: 3px;\n            float: left;\n            "}}
`,Ky=K.default.div`
    float: left;
    color: #f0f2f5;
    padding-left: 15px;
`,qy=e=>{const{shopName:t,logoSrc:n,dependencies:r,logoLink:i}=e,{imageServiceConfig:o}=r,a=n||co;return z.createElement("div",null,z.createElement(Hy,{href:i,title:t},z.createElement(Yy,{loading:"lazy",src:rt(o,a),alt:`${t}`,className:"logo-img"})))},$y=({socialSectionLink:e})=>{const{lineUrl:t,fbUrl:n,youtubeUrl:r,instagramUrl:i}=e;return z.createElement(ky,null,t&&z.createElement("li",null,z.createElement(Dy,{target:"_blank",rel:"noopener noreferrer",href:t},z.createElement(Ly,{className:"ico ico-line-fill"}))),n&&z.createElement("li",null,z.createElement(Dy,{target:"_blank",rel:"noopener noreferrer",href:n},z.createElement(Ly,{className:"ico ico-facebook"}))),r&&z.createElement("li",null,z.createElement(Dy,{target:"_blank",rel:"noopener noreferrer",href:r},z.createElement(Ly,{className:"ico ico-youtube-fill"}))),i&&z.createElement("li",null,z.createElement(Dy,{target:"_blank",rel:"noopener noreferrer",href:i},z.createElement(Ly,{className:"ico ico-instagram"}))))},ef=K.default.div`
    font-size: 0.7em;
    font-weight: normal;
    color: ${J.warmGrey};
    ${ye}
`,tf=K.css`
    float: left;
    padding-right: 1.04167%;
    padding-left: 1.04167%;
`,nf={left:"32%;",middle:"50%;",right:"18%;",menu:"50%;"},rf=K.default.div`
    ${({section:e})=>"left"===e||"right"===e?"float: left;":tf}
    box-sizing: border-box;
    ${({section:e})=>`\n        width: ${nf[e]}\n        `}
`,of=K.default.div`
    margin-top: ${me};
`,af=K.default.div`
    ${ye}
    line-height: 2.2;
    font-size: 1em;
    font-weight: 500;
    color: ${J.gunmetal};
`,cf=K.default.a`
    ${ye}
    line-height: 2.2;
    font-size: 0.8em;
    font-weight: normal;
    color: ${J.brownishGrey};
    &:hover {
        cursor: pointer;
        text-decoration: underline;
    }
`,lf=K.default.small`
    ${ye}
    font-size: 0.7em;
    line-height: 1;
    color: ${J.warmGrey};
    ${({size:e})=>{if("copyright"===e)return"\n            padding-top: 3px;\n            float: left;\n            "}}
`,sf=K.default.div`
    float: left;
    color: ${J.white};
    padding-left: 15px;
`,uf=K.default.div`
    float: left;
    box-sizing: border-box;
    width: 100%;
    margin-top: ${me};
    text-align: right;
`,gf=K.default.footer.attrs({className:"layout-footer-wrapper"})`
    box-sizing: border-box;
    min-width: ${ue};
    height: ${ge};
    margin-top: 64px;
    padding: ${"30px"} 0;
    border-top: 1px solid #dadada;
    background: ${J.white};
`,df=K.default.div`
    max-width: ${ue};
    margin: 0 auto;
    ${Ae}
`,If=K.default.div`
    float: left;
    box-sizing: border-box;
    width: 100%;
`,pf=({dependencies:e})=>{const{shopProfile:t,machineName:n}=e,{ShopBasicInfo:r}=t;return z.createElement(_y,null,z.createElement(df,null,z.createElement(If,null,z.createElement(wy,{section:"left"},z.createElement(qy,{dependencies:e,logoLink:"https://shop.muji.tw",logoSrc:lo,shopName:r.ShopName}),z.createElement($y,{socialSectionLink:_t})),z.createElement(wy,{section:"middle"},z.createElement(Py,null,wt.map(((e,t)=>z.createElement(wy,{section:"menu",key:t},z.createElement("ul",null,z.createElement(Jy,null,z.createElement(My,{href:e.link},e.name))))))))),z.createElement(zy,null,z.createElement(jy,{size:"copyright"},z.createElement("a",{href:Ht},"台灣")),z.createElement(jy,{size:"surfbrowser"},"Copyright©Ryohin Keikaku Co., Ltd. ©MUJI (Taiwan) Co., Ltd. All rights reserved.擁有及保留本網站所有權利。"),z.createElement(Ky,null,z.createElement(Oy,{text:n})))))},bf=({activity:e})=>({activityList:(null==e?void 0:e.activityList)||[]}),mf=e=>({fetchActivityList(){e(_b())}}),Cf=({coupon:e})=>({couponList:(null==e?void 0:e.couponList)||[]}),hf=e=>({fetchCouponList(){e(Yb())}}),Bf=({ecoupon:e})=>({ecouponList:(null==e?void 0:e.ecouponList)||[]}),Af=e=>({fetchECouponList(){e(Lb())}}),yf=({favorite:e})=>({favoriteCount:(null==e?void 0:e.favoriteCount)||0,favoriteList:(null==e?void 0:e.favoriteList)||[]}),ff=e=>({fetchFavoriteCount(){e(Kb())},fetchFavoriteList(){e(Mb())},addFavorite(t){e(em(t))}}),Gf=({official:e})=>({sendAppResult:null==e?void 0:e.sendAppResult,reCaptchaKey:null==e?void 0:e.reCaptchaKey}),Qf=e=>({sendAppDownloadLink({phoneNumber:t,reCaptchaToken:n}){e(Im(t,n))},fetchReCaptchaKey(){e(um())}}),Ff=({construct:e,pageMetaData:t,globalStyleData:n,messageData:r})=>({construct:e||{},pageMetaData:t||{},globalStyleData:n,message:(null==r?void 0:r.message)||"",isLoading:(null==r?void 0:r.isLoading)||!1}),vf=e=>({initMessage(){e(mm())},switchLoading(){e(hm())}}),Zf=({promotion:e})=>({promotionCount:(null==e?void 0:e.promotionCount)||0,promotionTargetList:(null==e?void 0:e.promotionTargetList)||{},promotionSourceTypeList:null==e?void 0:e.promotionSourceTypeList,promotionSourceTypeId:null==e?void 0:e.promotionSourceTypeId}),Ef=e=>({fetchPromotionCount(){e(Bm())},fetchPromotionTargetList(){e(fm())},fetchPromotionList(t){e(Fm(t))},fetchPromotionListById(t){e(Em(t))}}),Sf=({retailStore:e})=>({retailStoreCustomLinkSettingList:e.retailStoreCustomLinkSettingList}),Xf=e=>({fetchRetailStoreCustomLinkSettingList(){e(Nm())}});var Tf=Object.defineProperty,xf=Object.defineProperties,Uf=Object.getOwnPropertyDescriptors,Nf=Object.getOwnPropertySymbols,Rf=Object.prototype.hasOwnProperty,Of=Object.prototype.propertyIsEnumerable,Vf=(e,t,n)=>t in e?Tf(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n;const Wf=({salePage:e})=>{return t=((e,t)=>{for(var n in t||(t={}))Rf.call(t,n)&&Vf(e,n,t[n]);if(Nf)for(var n of Nf(t))Of.call(t,n)&&Vf(e,n,t[n]);return e})({},e),n={historySalePageList:(null==e?void 0:e.historySalePageList)||[],salePageInfo:null==e?void 0:e.salePageInfo,skuInfoList:null==e?void 0:e.skuInfoList,isSkuStockUpdated:null==e?void 0:e.isSkuStockUpdated,[null==e?void 0:e.dataKey]:(null==e?void 0:e[e.dataKey])||[]},xf(t,Uf(n));var t,n},_f=e=>({fetchHistorySalePageList(t){e(Vm(t))},fetchSalePageInfo(t){e(wm(t))},updateSalePageSkuStock(){e(Pm())},fetchSalePageList(t,n){e(zm(t,n))}}),wf=({search:e})=>({searchList:(null==e?void 0:e.searchList)||[],hotSearchList:(null==e?void 0:e.hotSearchList)||[]}),Hf=e=>({fetchSearchList(t){e(tC(t))},fetchHotSearchList(t){e(iC(t))}});var Yf=Object.defineProperty,kf=Object.defineProperties,Df=Object.getOwnPropertyDescriptors,Lf=Object.getOwnPropertySymbols,Pf=Object.prototype.hasOwnProperty,Jf=Object.prototype.propertyIsEnumerable,Mf=(e,t,n)=>t in e?Yf(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n;const zf=({shop:e})=>{const t=null==e?void 0:e.dataKey;return n=((e,t)=>{for(var n in t||(t={}))Pf.call(t,n)&&Mf(e,n,t[n]);if(Lf)for(var n of Lf(t))Jf.call(t,n)&&Mf(e,n,t[n]);return e})({},e),r={shopCategoryList:(null==e?void 0:e.shopCategoryList)||{},[t]:(null==e?void 0:e[t])||[]},kf(n,Df(r));var n,r},jf=e=>({fetchShopCategoryList(){e(cC())},fetchCategorySalePageList(t,n){e(CC(t,n))},fetchMultiShopCategoryList({locationId:t}){e(lC({locationId:t}))},fetchEnableDisplayStoreList(){e(QC())}}),Kf=({shoppingCart:e})=>({shoppingCartCount:(null==e?void 0:e.shoppingCartCount)||0,shoppingCartPreviewList:(null==e?void 0:e.shoppingCartPreviewList)||[],executeResultMsg:null==e?void 0:e.executeResultMsg,isAdding:null==e?void 0:e.isAdding,prepareProductInfo:null==e?void 0:e.prepareProductInfo}),qf=e=>({fetchShoppingCartPreviewList(){e(XC())},removeShoppingCartItem(t){e(OC(t))},addShoppingCartItem(t){e(UC(t))},prepareAddToCart(t){e(_C(t))},fetchShoppingCartCount(){e(ZC())}}),$f=({user:e})=>({isLogin:(null==e?void 0:e.isLogin)||!1,locationId:(null==e?void 0:e.retailStoreExpressLocationId)||0}),eG=e=>({logOut(){e(jC())},fetchAuthIsLogin(){e(LC())},loginLineMember(t,n){e(MC(t,n))},fetchMemberCollectionIdList(){e(YC())},fetchUserRetailStoreExpress(){e(eh())},fetchUserRetailStoreExpressLocationId(){e(rh())}});var tG=n(7290),nG=n(9123);const{buttonStyle:rG}=se.A,iG=K.default.button`
    border-radius: 4px;
    font-size: 15px;
    height: 44px;
    line-height: 1.5;
    cursor: pointer;
    border: none;
    color: ${e=>{var t,n;return(null==(n=null==(t=e.theme)?void 0:t.buttonStyle)?void 0:n.primaryBtnTextColor)||rG.primaryBtnTextColor}};
    background-color: ${e=>{var t,n;return(null==(n=null==(t=e.theme)?void 0:t.buttonStyle)?void 0:n.primaryBtnBgColor)||rG.primaryBtnBgColor}};
    &:hover {
        background: ${e=>{var t,n;return Ha(.1,(null==(n=null==(t=e.theme)?void 0:t.buttonStyle)?void 0:n.primaryBtnBgColor)||rG.primaryBtnBgColor)}};
    }
    &:active {
        box-shadow: inset 0 -3px 0 0 rgba(#000, 0.2);
    }
`,oG=(0,K.default)(iG)`
    display: block;
    font-size: 0.8em;
    width: 100%;
    height: 40px;
    margin-bottom: 8px;
    margin-left: 0;
    -webkit-appearance: none;
`,aG=K.default.i`
    display: inline-block;
    background-repeat: no-repeat;
    background-size: contain;
    width: 100%;
    height: inherit;
    ${({iconUrl:e})=>`background-image: url(${e})`};
`;class cG extends z.Component{constructor(e){super(e),this.appUrlConfig={TW:{iosAppUrl:"https://itunes.apple.com/tw/app/id",androidAppUrl:"https://play.google.com/store/apps/details?id="},MY:{iosAppUrl:"https://itunes.apple.com/my/app/id",androidAppUrl:"https://play.google.com/store/apps/details?id="},HK:{iosAppUrl:"https://itunes.apple.com/hk/app/id",androidAppUrl:"https://play.google.com/store/apps/details?id="}},this.changeNumberInputHandler=e=>{const t=e.currentTarget.value;this.setState({phoneNumber:t})},this.checkIsValidPhoneNumber=(e,t)=>{const{regexPhone:n}=this.getRegionPhoneConfig(t);return n.test(e)},this.sendPhoneNumber=()=>{return e=this,n=function*(){const{phoneNumber:e,sendedPhoneNumber:t}=this.state,{market:n}=this.props;if(!this.checkIsValidPhoneNumber(e,n))return void this.setState({isShowInvalidError:!0});if(e===t)return void this.setState({isShowQRCode:!0});const{sendAppDownloadLink:r,isEnableSendAppDownLoadLinkReCaptcha:i}=this.props;let o=null;if(i){try{const{executeRecaptcha:t}=this.props.googleReCaptchaProps;if(!t)return console.log("reCAPTCHA not available"),void r({phoneNumber:e,reCaptchaToken:""});const n=t("homepage");let i=!1;const a=new Promise((e=>{setTimeout((()=>{i=!0,e(null)}),3e4)}));o=yield Promise.race([n,a]),console.log("reCAPTCHA token:",o)}catch(a){console.error("reCAPTCHA error:",a)}r({phoneNumber:e,reCaptchaToken:o})}else console.log("no recaptch sendPhoneNumber"),r({phoneNumber:e,reCaptchaToken:""})},new Promise(((r,i)=>{var o=e=>{try{c(n.next(e))}catch(t){i(t)}},a=e=>{try{c(n.throw(e))}catch(t){i(t)}},c=e=>e.done?r(e.value):Promise.resolve(e.value).then(o,a);c((n=n.apply(e,null)).next())}));var e,n},this.getAndroidAppUrl=()=>{const{market:e,androidPackageName:t}=this.props,n=this.appUrlConfig[e];return n?n.androidAppUrl+t:""},this.getIosAppUrl=()=>{const{market:e,iosAppId:t}=this.props,n=this.appUrlConfig[e];return n?n.iosAppUrl+t:""},this.afterInvalidErrorClose=()=>{this.setState({isShowInvalidError:!1})},this.closeQRCodeWindow=()=>{this.setState({isShowQRCode:!1})},this.getRegionPhoneConfig=e=>e===Vt.TW?{regexPhone:/^09[0-9]{8}$/,inputCellphoneKey:Jn.THEME_CORE.HEADER.INPUT_CELLPHONE}:{regexPhone:/^\d+$/,inputCellphoneKey:Jn.THEME_CORE.HEADER.INPUT_CELLPHONE_GLOBAL},this.qrCodeImage=e=>z.createElement("div",{className:"qr-code-image"},z.createElement(tG.Ay,{renderAs:"canvas",value:e})),this.sendAppLinkSmsDownloadLinkComponent=()=>{const{market:e,refUrl:t,sendAppResult:n}=this.props,{inputCellphoneKey:r}=this.getRegionPhoneConfig(e),{isShowInvalidError:i,isShowQRCode:o}=this.state,{apple:a,google:c}=To,{imageServiceConfig:l}=xe(),{returnCode:s,message:u}=n;return z.createElement("section",null,z.createElement("input",{className:"download-app-menu-input form-input",type:"tel",name:"phoneInput",onChange:this.changeNumberInputHandler,placeholder:(0,ja.t)(r)}),z.createElement(oG,{type:"button",onClick:this.sendPhoneNumber},z.createElement(ja.HT,{value:Jn.THEME_CORE.HEADER.FREE_SEND_DOWNLOAD_APP})),z.createElement(Wu,{isOpen:i,afterClose:this.afterInvalidErrorClose,message:"API0005"!==s?(0,ja.t)(Jn.THEME_CORE.HEADER.INVALID_CELLPHONE_FORMAT):u}),z.createElement(WA,{onCloseDialog:this.closeQRCodeWindow,isOpen:o,customCssClass:"download-app-wrapper",isShowClose:!0},z.createElement("div",{className:"download-app-popup"},z.createElement("div",{className:"content-img"},o&&this.qrCodeImage(t),z.createElement("div",{className:"link"},z.createElement("a",{className:"link-content",href:this.getIosAppUrl(),target:"_blank",rel:"noopener noreferrer"},z.createElement(aG,{iconUrl:rt(l,a)})),z.createElement("a",{className:"link-content",href:this.getAndroidAppUrl(),target:"_blank",rel:"noopener noreferrer"},z.createElement(aG,{iconUrl:rt(l,c)})))))))},this.state={isShowQRCode:!1,downloadDescription:"",phoneNumber:"",isShowInvalidError:!1}}UNSAFE_componentWillReceiveProps(e){const{sendAppResult:t}=this.props;if(Ge()&&e.sendAppResult!==t){const{message:t,sendedPhoneNumber:n,returnCode:r}=e.sendAppResult;if("API0005"===r)return void this.setState({isShowInvalidError:!0});this.setState({isShowQRCode:!0,downloadDescription:t,sendedPhoneNumber:n})}}render(){const{apple:e,google:t}=To,{imageServiceConfig:n}=xe(),{isEnableSendAppLinkSms:r,type:i,refUrl:o,isDownloadAndroidAPK:a}=this.props;return Ge()&&z.createElement("div",null,!0===r?this.sendAppLinkSmsDownloadLinkComponent():z.createElement("section",null,"header"===i&&z.createElement("div",{className:"download-app-menu-text qr-code-text"},z.createElement(ja.HT,{value:Jn.THEME_CORE.HEADER.SCAN_QR_DOWNLOAD})),this.qrCodeImage(o)),!a&&z.createElement("div",{className:"download-app-menu-icon"},z.createElement("a",{className:"download-app-menu-link",href:this.getAndroidAppUrl(),target:"_blank",rel:"noopener noreferrer"},z.createElement(aG,{iconUrl:rt(n,t)})),z.createElement("a",{className:"download-app-menu-link",href:this.getIosAppUrl(),target:"_blank",rel:"noopener noreferrer"},z.createElement(aG,{iconUrl:rt(n,e)}))))}}cG.defaultProps={shopId:0,iosAppId:"",isEnableSendAppLinkSms:!1,refUrl:"",androidPackageName:"",isDownloadAndroidAPK:!1,isEnableSendAppDownLoadLinkReCaptcha:!1};const lG=(0,nG.NF)(cG);class sG extends z.Component{constructor(e){super(e),this.state={isSdkInitialized:!1}}render(){return z.createElement("div",{className:"goya-facebook-fans"},""!==this.props.page&&z.createElement("div",{className:"fb-page","data-href":this.props.page,"data-width":this.props.width,"data-height":this.props.height,"data-hide-cover":this.props.hideCover,"data-show-posts":this.props.posts,"data-show-facepile":this.props.faces}))}componentDidMount(){const e=window.FB;e?setTimeout((()=>e.XFBML.parse()),1e3):ze.warn("[components/desktop/footer/shared/facebookFansPage] FB SDK is not loaded")}}sG.defaultProps={page:"",height:130,faces:!1,posts:!0,hideCover:!1,width:342};const uG={fb:"#1877f2",line:"#4cc764",ig:"#dc3175"},gG=(K.default.li`
    display: inline-block;
    margin-right: ${be};
`,K.default.i`
    font-size: 22px;
    color: ${({socialId:e})=>uG[e]};
`),dG={display:"inline-block",marginRight:be};class IG extends z.Component{render(){var e,t,n,r,i,o;const a=null==(t=null==(e=this.props.shopThirdPartyConfigInfo)?void 0:e.FacebookConfig)?void 0:t.FansPageUrl,c=null==(r=null==(n=this.props.shopThirdPartyConfigInfo)?void 0:n.LineConfig)?void 0:r.LineUserId,l=null==(o=null==(i=this.props.shopThirdPartyConfigInfo)?void 0:i.InstagramConfig)?void 0:o.ShopInstagramUrl;return(a||c||l)&&z.createElement("ul",{className:"social-ul"},a&&z.createElement("li",{style:dG},z.createElement("a",{target:"_blank",rel:"noopener noreferrer",href:a},z.createElement(gG,{className:"ico ico-facebook-fill",socialId:"fb"}))),c&&z.createElement("li",{style:dG},z.createElement("a",{target:"_blank",rel:"noopener noreferrer",href:`https://line.me/R/ti/p/${c}`},z.createElement(gG,{className:"ico ico-line-fill",socialId:"line"}))),l&&z.createElement("li",{style:dG},z.createElement("a",{target:"_blank",rel:"noopener noreferrer",href:l},z.createElement(gG,{className:"ico ico-instagram-fill",socialId:"ig"}))))}}class pG extends z.Component{componentDidMount(){const{fetchEnableDisplayStoreList:e}=this.props;e()}render(){var e,t,n,r,i;const{style:o,dependencies:a,sendAppDownloadLink:c,sendAppResult:l,enableDisplayStoreList:s}=this.props,u={backgroundColor:null==o?void 0:o.backgroundColor,color:null==o?void 0:o.fontColor},{shopProfile:g,machineName:d,market:I}=a,p=null==(n=null==(t=null==(e=Te())?void 0:e.i18n)?void 0:t.salesMarketSettings)?void 0:n.salesMarket,b=(null==p?void 0:p.toLowerCase())===Wt.HK,{ShopBasicInfo:m,ShopThirdPartyConfigInfo:C,ShopFunction:h}=g,{FacebookConfig:B}=C,A=null==B?void 0:B.FansPageUrl,y=m.HasBrandStory||!1,f=m.StoreTotalCount>0||!1,G=m.HasApp||!1,Q=!h||!(0,M.isBoolean)(h.IsShowQuestionInsert)||h.IsShowQuestionInsert,F=!h||!(0,M.isBoolean)(h.IsShowShopIntroduce)||h.IsShowShopIntroduce,v=m.SupplierName||"",{IsAntiFraud:Z}=m,E=null==s?void 0:s.Data,S=(null==(i=null==(r=null==a?void 0:a.shopProfile)?void 0:r.ShopFunction)?void 0:i.IsEnableSendAppDownLoadLinkReCaptcha)||!1,X=Ri()||z.createElement(ja.HT,{value:Jn.THEME_CORE.FOOTER.MESSAGE});return z.createElement(gf,{style:u},z.createElement(df,null,z.createElement(If,null,z.createElement(rf,{section:"left"},A&&z.createElement(sG,{page:A,faces:!1,width:342,posts:!1,hideCover:!1}),C&&z.createElement(of,null,z.createElement(IG,{shopThirdPartyConfigInfo:C}))),z.createElement(rf,{section:"middle"},z.createElement(rf,{section:"menu"},z.createElement(af,null,z.createElement(ja.HT,{value:Jn.THEME_CORE.FOOTER.ABOUT_US})),z.createElement("div",{className:"footer-menu-content"},z.createElement("ul",{className:"footer-menu-content-ul"},y&&z.createElement("li",{className:"footer-menu-content-li"},z.createElement(cf,{href:"/v2/Official/BrandStory"},z.createElement(ja.HT,{value:Jn.THEME_CORE.FOOTER.BRAND_STORY}))),F&&z.createElement("li",{className:"footer-menu-content-li"},z.createElement(cf,{href:`/shop/introduce/${m.ShopId}?t=1`},z.createElement(ja.HT,{value:Jn.THEME_CORE.FOOTER.STORE_INTRODUCTION}))),m&&f&&E&&z.createElement("li",{className:"footer-menu-content-li"},z.createElement(cf,{href:`/v2/Shop/StoreList/${m.ShopId}`},z.createElement(ja.HT,{value:Jn.THEME_CORE.FOOTER.STORE_INFO}))),m&&z.createElement("li",{className:"footer-menu-content-li"},z.createElement(cf,{href:`/MyAccount/Privacy/${m.ShopId}`},z.createElement(ja.HT,{value:Jn.THEME_CORE.FOOTER.PRIVACY})))))),z.createElement(rf,{section:"menu"},z.createElement(af,null,z.createElement(ja.HT,{value:Jn.THEME_CORE.FOOTER.SERVICE_INFORMATION})),z.createElement("div",{className:"footer-menu-content"},z.createElement("ul",{className:"footer-menu-content-ul"},m&&z.createElement("li",{className:"footer-menu-content-li"},z.createElement(cf,{href:`/Shop/Introduce/${m.ShopId}?t=2`},z.createElement(ja.HT,{value:Jn.THEME_CORE.FOOTER.SHOPPING_INSTRUCTIONS}))),m&&Q&&z.createElement("li",{className:"footer-menu-content-li"},z.createElement(cf,{href:`/Question/QuestionInsert/0?sId=${m.ShopId}`},X)),z.createElement("li",{className:"footer-menu-content-li"},z.createElement(cf,{href:"/V2/MyAccount/VipMemberBenefits"},z.createElement(ja.HT,{value:b?Jn.THEME_CORE.FOOTER.TERMS_AND_CONDITIONS:Jn.THEME_CORE.FOOTER.BENEFIT_TERMS}))),m&&z.createElement("li",{className:"footer-menu-content-li"},z.createElement(cf,{href:`/Shop/Introduce/${m.ShopId}?t=3`},z.createElement(ja.HT,{value:Jn.THEME_CORE.FOOTER.CONTACT_US}))))))),m&&G&&z.createElement(rf,{section:"right"},z.createElement(af,null,z.createElement(ja.HT,{value:Jn.THEME_CORE.FOOTER.OFFICIAL_APP})),z.createElement(lG,{iosAppId:m.IosAppId,androidPackageName:m.AndroidPackageName,sendAppDownloadLink:c,shopId:m.ShopId,sendAppResult:l,isEnableSendAppLinkSms:m.EnableSendAppLinkSMS,refUrl:(null==m?void 0:m.RefUrl)||"",type:"footer",market:I,isDownloadAndroidAPK:m.IsDownloadAndroidAPK,isEnableSendAppDownLoadLinkReCaptcha:S}))),z.createElement(uf,null,Z&&z.createElement(ef,null,z.createElement(ja.HT,{value:Jn.THEME_CORE.FOOTER.ANTI_FRAUD_DESC})),z.createElement(lf,{size:"copyright"},`© ${Ma()().year()} by ${v}`),z.createElement(lf,{size:"surfbrowser"},z.createElement(ja.HT,{value:Jn.THEME_CORE.FOOTER.BEST_VIEW})),z.createElement(sf,null,z.createElement(Oy,{text:d})))))}}pG.defaultProps={sendAppResult:{}};const{mapStateToProps:bG,mapDispatchToProps:mG}=Ca([p,A]),CG=(0,Qs.connect)(bG,mG)(pG);class hG extends z.Component{render(){const{dependencies:e}=this.props;return _i()?z.createElement(pf,{dependencies:e}):z.createElement(CG,{dependencies:e})}}const{mapStateToProps:BG,mapDispatchToProps:AG}=Ca([A]),yG=(0,Qs.connect)(BG,AG)(hG);var fG=n(7872),GG=n.n(fG);class QG extends z.PureComponent{componentDidMount(){const{browsingMode:e}=xe();this.browsingMode=e}render(){const{linkUrl:e,onClick:t,className:n,children:r}=this.props;return z.createElement("a",{href:at(e),onClick:"mobile"!==this.browsingMode?t:void 0,onTouchStart:"mobile"===this.browsingMode?t:void 0,className:qs()(n||"",{"link--cursor-default":!e})},r)}}var FG=Object.defineProperty,vG=Object.defineProperties,ZG=Object.getOwnPropertyDescriptors,EG=Object.getOwnPropertySymbols,SG=Object.prototype.hasOwnProperty,XG=Object.prototype.propertyIsEnumerable,TG=(e,t,n)=>t in e?FG(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,xG=(e,t)=>{for(var n in t||(t={}))SG.call(t,n)&&TG(e,n,t[n]);if(EG)for(var n of EG(t))XG.call(t,n)&&TG(e,n,t[n]);return e},UG=(e,t)=>vG(e,ZG(t));class NG extends j().Component{constructor(e){super(e),this.handleImageError=()=>{this.props.setIsImageLoaded&&this.props.setIsImageLoaded(!0),this.setState({imageHasError:!0,imageWebPSrcSet:""})},this.handleImageLoad=()=>{this.props.setIsImageLoaded&&this.props.setIsImageLoaded(!0),this.setState(UG(xG({},this.state),{imageHasError:!1}))},this.onImageBannerClick=()=>{const{onTrackClick:e,itemIndex:t,linkUrl:n,altText:r}=this.props;e&&e({linkUrl:st(n),altText:r,position:t})};const{imageUrl:t,resizeList:n,dependencies:r,isEnableCompress:i,compressVersion:o}=this.props,a=i?No(t,n,r,o):"";this.state={imageWebPSrcSet:a,imageHasError:!1}}render(){const{linkUrl:e,imageUrl:t,altText:n,isEditMode:r,compressVersion:i,customClassName:o}=this.props,{imageWebPSrcSet:a,imageHasError:c}=this.state,l=qs()("image-banner",o);if(i===jr.COMPRESS_TO_WEBP_V1||i===jr.COMPRESS_TO_WEBP_V2){const i=a&&!r;return j().createElement(QG,{className:l,linkUrl:e,onClick:this.onImageBannerClick},j().createElement("figure",{className:"image-banner__frame"},j().createElement("img",UG(xG({loading:"lazy",className:"image-banner__picture",alt:n,style:{width:c?"initial":"100%",display:c?"none":"block"},src:t},i&&{srcSet:a}),{onLoad:this.handleImageLoad,onError:this.handleImageError}))))}return j().createElement(QG,{className:l,linkUrl:e,onClick:this.onImageBannerClick},j().createElement("img",{loading:"lazy",className:"image-banner__picture",src:t,alt:n,onLoad:this.handleImageLoad}))}}NG.displayName="ImageBanner",NG.defaultProps={linkUrl:"",imageUrl:"",customClassName:""};var RG=Object.defineProperty,OG=Object.defineProperties,VG=Object.getOwnPropertyDescriptors,WG=Object.getOwnPropertySymbols,_G=Object.prototype.hasOwnProperty,wG=Object.prototype.propertyIsEnumerable,HG=(e,t,n)=>t in e?RG(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,YG=(e,t)=>{for(var n in t||(t={}))_G.call(t,n)&&HG(e,n,t[n]);if(WG)for(var n of WG(t))wG.call(t,n)&&HG(e,n,t[n]);return e},kG=(e,t)=>OG(e,VG(t));Ma().extend(GG());const DG=K.default.a`
    position: absolute;
    z-index: 1;
    bottom: ${"calc(50% - 26px)"};

    display: block;

    width: ${50}px;
    height: ${50}px;
    margin-top: -35px;
    text-align: center;

    color: ${J.lighterGreyishBrown};
    border: solid 1px ${J.paleGreyTwo};
    border-radius: 100px;
    background: rgba(255, 255, 255, 0.9);

    ${({isPrev:e})=>e?"left: 10px":"right: 10px"};

    &:hover {
        border: solid 1px ${J.grey};
        box-shadow: 0 2px 4px 0 rgba(0, 0, 0, 0.5);
    }
`,LG=(0,K.default)(DG)`
    position: ${({isFixed:e})=>e?"fixed":"absolute"};
    bottom: ${({isFixed:e})=>e&&"calc(50vh - 26px)"};
`,PG=({onClick:e,children:t,isPrevious:n})=>z.createElement(DG,{onClick:e,isPrev:n},t),JG=({onClick:e,children:t,isFixed:n,isPrevious:r})=>z.createElement(LG,{onClick:e,isFixed:n,isPrev:r},t),MG=({isDisplayArrow:e,isPrevious:t,isEnableFixedArrowEffect:n,isArrowFixed:r})=>{const i=t?z.createElement("i",{className:"ico ico-chevron-left"}):z.createElement("i",{className:"ico ico-chevron-right"});return e?n?z.createElement(JG,{isFixed:r,isPrevious:t},i):z.createElement(PG,{isPrevious:t},i):null},zG=e=>{try{const{title:t="",second:n=3,dataSource:r=[],isEditMode:i=!1,isDisplayArrow:o=!0,moduleId:a,moduleKey:c,moduleName:l,materialName:s,isShowModuleKey:u}=e,[g,d]=(0,z.useState)(!1),I=o&&Da.includes(a)&&Ge(),{carouselRef:p,isArrowFixed:b}=((e=!1)=>{const[t,n]=(0,z.useState)(null),[r,i]=(0,z.useState)(!1),[o,a]=(0,z.useState)(!1),c=(0,z.useCallback)((e=>{null!==e&&n(e)}),[]),l=(0,z.useCallback)((()=>{const e=window.innerHeight,{top:n,bottom:r}=null==t?void 0:t.getBoundingClientRect();n<e&&r>0&&a(r>=e?e=>e||!e:e=>e?!e:e)}),[t]),s=(0,z.useCallback)((()=>{const e=window.innerHeight,{height:n}=null==t?void 0:t.getBoundingClientRect();n>e-60&&(i(!0),l(),window.addEventListener("scroll",l))}),[t,l]);return(0,z.useEffect)((()=>(e&&t&&s(),()=>{e&&t&&r&&window.removeEventListener("scroll",l)})),[t,e,r,s,l]),{carouselRef:c,isArrowFixed:o}})(I),m=(0,z.useMemo)((()=>({className:"carousel-container--content",dots:!0,infinite:!0,touchMove:!0,autoplay:!0,slidesToShow:1,slidesToScroll:1,autoplaySpeed:1e3*n,speed:1e3,draggable:!1,nextArrow:MG({isDisplayArrow:o,isPrevious:!1,isEnableFixedArrowEffect:I,isArrowFixed:b}),prevArrow:MG({isDisplayArrow:o,isPrevious:!0,isEnableFixedArrowEffect:I,isArrowFixed:b})})),[n,o,b,I]),C=t=>{const{dependencies:n,defaultImage:r}=e;return it(n.shopId,n.imageServiceConfig,r,t)};(0,z.useEffect)((()=>{i||"complete"===document.readyState?d(!0):window.addEventListener("load",(()=>{d(!0)}))}),[]),(0,z.useEffect)((()=>{i&&setTimeout((()=>{window.dispatchEvent(new Event("resize"))}),0)}),[g]);const h=e=>{const{position:t,linkUrl:n,altText:r}=e,o=el();if(!i){const{eventCategory:e,eventAction:i,eventLabel:g,contentType:d}=$c({materialName:s,moduleId:a,moduleName:l,moduleKey:c,position:t,isShowModuleKey:u});fl(e,i,g),(0,hc.selectContent)(YG({contentType:d,id:a,name:r,linkUrl:n},o&&{viewId:o}))}},B=e=>{const{isSplitPicture:t,isEnableCompressDesktop:n,isEnableCompressMobile:r,compressVersion:i}=e,o=Vi();return i===jr.COMPRESS_TO_WEBP_V1?!!o&&(t?n:r):t?n:r},A=e=>z.createElement("div",{className:qs()("single-carousel-item",{"carousel-is-not-ready":!g})},z.createElement(NG,kG(YG({},e),{onTrackClick:h,itemIndex:0,altText:e.altText||Ke(je.CAROUSEL,a),isEditMode:i,isEnableCompress:B(e)}))),y=(e,t)=>{const n=Ec(e);if((null==n?void 0:n.scheduleList)&&i){let e=!1;if(n.scheduleList.forEach((t=>{const r=Ma()().isBetween(null==t?void 0:t.startTime,null==t?void 0:t.endTime);e=e||r,r&&(n.imageUrl=C(t))})),!e&&!1===(null==n?void 0:n.isPresetImage))return null}else if(!1===(null==n?void 0:n.isPresetImage))return null;return z.createElement("div",{className:"mutiple-carousel-item",key:t},z.createElement(NG,kG(YG({},n),{onTrackClick:h,itemIndex:t,altText:n.altText||Ke(je.CAROUSEL,a,t),isEditMode:i,isEnableCompress:B(e)})))};return r&&0!==r.length?g?z.createElement(z.Fragment,null,r.length>1?z.createElement("div",{className:"carousel-container",ref:p},z.createElement(yd.A,YG({},m),r.map(((e,t)=>y(e,t))))):r.map(((e,t)=>y(e,t)))):A(r.find((e=>!(!1===e.isPresetImage)))||r[0]):null}catch(t){return ze.error(`[ERROR] Render desktop Carousel failed: ${Me(t)}: ${Je(t)}`),null}},jG=e=>{var t;const{shopName:n,logoSrc:r,dependencies:i,customCssClass:o}=e,{shopId:a,imageServiceConfig:c,shopDomainName:l}=i,s=(0,Ze.getPageUrl)(l,Ze.PAGE_TYPE.INDEX);return z.createElement("div",{className:qs()(o,"logo-container")},z.createElement("a",{className:"logo-link",href:s,title:n},z.createElement("img",{loading:"lazy",src:(null==(t=r.materialItem)?void 0:t.imageUrl)&&xo(a,c,r.materialItem.imageUrl)||rt(c,co),alt:`${n}`,className:"logo-img","data-qe-id":"header-logo-img"})))};jG.defaultProps={logoSrc:{materialItem:{}}};const KG=jG;var qG=n(3813);const $G=e=>{switch(e){case"dev":case"qa":return"qa";default:return e}},eQ=(e,t,n)=>n.reduce(((n,r)=>{var i;return n[r]=(null==(i=null==e?void 0:e[t])?void 0:i[r])||null,n}),{});var tQ=n(3065);class nQ extends z.Component{constructor(e){var t,n;super(e),this.onLogInHandle=()=>{this.onTrackEventClick("Menu_會員登入/註冊");const e=encodeURIComponent(window.location.href.replace(window.location.hash,""));window.location.href=`//${this.props.shopDomain}/Login/HttpLoginRelayToHttps/?rt=${e}&reason=notlogin`},this.onLogOutHandle=()=>{this.onTrackEventClick("Menu_會員登出"),this.props.logOut()},this.onTrackEventClick=e=>()=>{fl("全站_Header","我的帳戶",e)},this.getTranslationDom=(e,t)=>null!=e?e:z.createElement(ja.HT,{value:t});const r=xe();this.isEnabledCustomTranslation=(null==(n=null==(t=r.shopProfile)?void 0:t.ShopFunction)?void 0:n.IsEnabledCustomTranslation)||!1,this.locale=r.locale,this.state={customTransData:null,isCustomTransDataFetching:!0}}componentDidMount(){return e=this,n=function*(){try{if(!this.isEnabledCustomTranslation)return;const e=yield((e,t,n)=>{return r=function*(){var r;const i=xe(),o=dn(i),{env:a}=i,c=$G(a),l=null==(r=sA)?void 0:r.version;try{const r=gt(`translations/GetCustomClientLocale/${e}/mweb/cms/${c}?ts=${l}`,o,!0),i={method:qt.RequestMethod.GET},a=yield Nn(r,i);return a?Promise.resolve(eQ(a,t,n)):Promise.resolve(null)}catch(s){return ze.error(`[ERROR] fetchCustomTranslationData failed: ${Me(s)}: ${Je(s)}: shopId: ${e}`),Promise.reject(s)}},new Promise(((e,t)=>{var n=e=>{try{o(r.next(e))}catch(n){t(n)}},i=e=>{try{o(r.throw(e))}catch(n){t(n)}},o=t=>t.done?e(t.value):Promise.resolve(t.value).then(n,i);o((r=r.apply(void 0,null)).next())}));var r})(this.props.shopId,this.locale,[qG.mwebTranslationKeyEnum.frontend_common_vip_member_zone,qG.mwebTranslationKeyEnum.frontend_common_order_search,qG.mwebTranslationKeyEnum.frontend_common_my_ecoupon]);this.setState({customTransData:e})}catch(e){tQ.error(`[ERROR] desktop headerAccount getCustomTransData failed: ${Me(e)}: ${Je(e)}`)}finally{this.setState({isCustomTransDataFetching:!1})}},new Promise(((r,i)=>{var o=e=>{try{c(n.next(e))}catch(t){i(t)}},a=e=>{try{c(n.throw(e))}catch(t){i(t)}},c=e=>e.done?r(e.value):Promise.resolve(e.value).then(o,a);c((n=n.apply(e,null)).next())}));var e,n}render(){const{isCustomTransDataFetching:e,customTransData:t}=this.state,n=!e&&this.getTranslationDom(null==t?void 0:t.frontend_common_order_search,Jn.THEME_CORE.HEADER.MY_ORDERS),r=!e&&this.getTranslationDom(null==t?void 0:t.frontend_common_vip_member_zone,Jn.THEME_CORE.HEADER.MY_MEMBERSHIP),i=!e&&this.getTranslationDom(null==t?void 0:t.frontend_common_my_ecoupon,Jn.THEME_CORE.HEADER.MY_COUPONS);return z.createElement("div",{className:"nav-my-account"},z.createElement("ul",{className:"nav-my-account-ul"},z.createElement("li",{className:"nav-my-account-li"},z.createElement("a",{href:`//${this.props.shopDomain}/V2/TradesOrder/TradesOrderList?shopId=${this.props.shopId}`,onClick:this.onTrackEventClick("Menu_訂單查詢"),rel:"nofollow",className:"nav-my-account-link","data-qe-id":"menu_check_order"},n)),z.createElement("li",{className:"nav-my-account-li"},z.createElement("a",{href:`//${this.props.shopDomain}/V2/VipMember/VIPMemberRelay?shopId=${this.props.shopId}`,onClick:this.onTrackEventClick("Menu_會員專區"),rel:"nofollow",className:"nav-my-account-link","data-qe-id":"menu_member_center"},r)),z.createElement("li",{className:"nav-my-account-li"},z.createElement("a",{href:`//${this.props.shopDomain}/TraceSalePageList/TraceSalePageList`,onClick:this.onTrackEventClick("Menu_我的收藏"),rel:"nofollow",className:"nav-my-account-link","data-qe-id":"menu_my_fav"},z.createElement(ja.HT,{value:Jn.THEME_CORE.HEADER.MY_FAVORITE}))),z.createElement("li",{className:"nav-my-account-li"},z.createElement("a",{href:`//${this.props.shopDomain}/v2/ECoupon/MyECoupon`,onClick:this.onTrackEventClick("Menu_我的折價券"),rel:"nofollow",className:"nav-my-account-link","data-qe-id":"menu_my_coupon"},i)),z.createElement("li",{className:"nav-my-account-li"},this.props.isLogin?z.createElement("a",{className:"nav-my-account-link",rel:"nofollow",onClick:this.onLogOutHandle,"data-qe-id":"menu_logout"},z.createElement(ja.HT,{value:Jn.THEME_CORE.HEADER.LOG_OUT})):z.createElement("a",{className:"nav-my-account-link",rel:"nofollow",onClick:this.onLogInHandle,"data-qe-id":"menu_login_reg"},z.createElement(ja.HT,{value:Jn.THEME_CORE.HEADER.LOGIN_SIGNUP})))))}}nQ.defaultProps={shopId:void 0,isLogin:!1,favoriteCount:0,shopDomain:"",logOut:()=>{tQ.warn("[components/desktop/header/shared/headerNavMenu/headerAccount]logOut action isn't connected")},fetchFavoriteCount:()=>{tQ.warn("[components/desktop/header/shared/headerNavMenu/headerAccount]fetchFavoriteCount action isn't connected")}};const{mapStateToProps:rQ,mapDispatchToProps:iQ}=Ca([f,I]),oQ=(0,Qs.connect)(rQ,iQ)(nQ),aQ=({linkItem:e,navStyle:t,customerConfig:n,dataType:r})=>{var i,o;const a=(null==(i=null==n?void 0:n.font)?void 0:i.weight)?`w-${null==(o=null==n?void 0:n.font)?void 0:o.weight}`:"";return z.createElement("li",{className:"nav-menu-li"},z.createElement("a",{onClick:()=>((e,t)=>{const{text:n,linkUrl:r}=t,i=st(r||"");e===Ut.CUSTOM_LINK&&Gl({contentType:$r.CustomMenuLayerOne,linkUrl:i,id:null,name:n})})(r,e),className:"nav-menu-link",href:e.linkUrl,style:t},z.createElement("div",{className:`nav-menu-title ${a}`},e.text?e.text:(0,ja.t)(Jn.THEME_CORE.HEADER.LINK_WORD))))};aQ.displayName="HeaderCustomTextLinkMenu";const cQ=aQ;var lQ=(e=>(e.ARROW_DOWN="ico-chevron-down",e.ARROW_LEFT="ico-chevron-left",e.ARROW_RIGHT="ico-chevron-right",e.ARROW_UP="ico-chevron-up",e.CLOSE="ico-close",e))(lQ||{});const sQ=K.default.a`
    padding: 0 12px;
    flex-grow: 1;
    display: inline-flex;
    justify-content: flex-start;
    align-items: center;
`,uQ=K.default.div`
    display: inline-block;
    height: 30px;
    line-height: 30px;
    font-weight: ${({weight:e})=>""!==e?e:"normal"};
    flex-grow: 1;
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
    max-width: 255px;
    ${({iconClassName:e})=>"ico-close"===e?"cursor: auto;":""}
    ${({isActive:e})=>e?"text-decoration: underline;":""}
    &:hover {
        ${({iconClassName:e})=>"ico-close"===e?"":"text-decoration: underline;"}
    }
`,{tagStyle:gQ}=se.A,dQ=K.default.span`
    display: inline-block;

    padding: 4px;
    border-radius: 2px;
    margin-left: 5px;
    line-height: normal;
    font-size: 11px;
    color: ${({theme:e})=>{var t;return(null==(t=null==e?void 0:e.tagStyle)?void 0:t.generalTagTextColor)||gQ.generalTagTextColor}};
    background-color: ${({theme:e})=>{var t;return(null==(t=null==e?void 0:e.tagStyle)?void 0:t.generalTagBgColor)||gQ.generalTagBgColor}};
`,IQ=K.default.li`
    display: flex;
    align-items: center;
    width: 300px;
    height: 30px;
    padding: 0 3px;
    box-sizing: border-box;

    ${({isActive:e})=>e?`\n    background: ${J.white};\n    a > :first-child {\n        text-decoration: underline;\n    } \n    `:`\n    &:hover {\n        background: ${J.white};\n        a > :first-child {\n            text-decoration: underline;\n        }\n    }\n    `}
`,pQ=({elmRef:e=null,handleIconClick:t=null,hasIcon:n=!1,iconClassName:r,link:i,navStyle:o=null,titleText:a,isActive:c=!1,isHasFreeGift:l=!1,customerConfig:s,onClickHandler:u})=>{var g,d,I;const p=null==(d=null==(g=null==s?void 0:s.icon)?void 0:g.display)||d;return z.createElement(sQ,{style:o,href:n?null:i,ref:e,onClick:u},z.createElement(uQ,{iconClassName:r,isActive:c,weight:`${(null==(I=null==s?void 0:s.font)?void 0:I.weight)||""}`},a||(0,ja.t)(Jn.THEME_CORE.HEADER.LINK_WORD),l&&z.createElement(dQ,null,z.createElement(ja.HT,{value:Jn.THEME_CORE.HEADER.CATEGORY_BADGE_GIFT}))),n&&p&&z.createElement("i",{className:`ico ${r}`,onClick:t?()=>t():null}))},bQ=340;var mQ=(e=>(e.NEXT="next",e.PREV="prev",e))(mQ||{});const CQ=K.default.div`
    display: block;
    max-width: ${({maxVisibleMenuNumber:e})=>bQ*e}px;
    overflow: hidden;
`,hQ=K.default.div`
    display: flex;
    transform: translateX(${({sliderTransitionX:e})=>e}px);
    transition: transform 500ms ease-in-out 25ms;
`,BQ=K.default.div`
    position: absolute;
    top: 30px;

    width: 50px;
    height: 50px;
    text-align: center;

    color: ${J.gunmetal};
    border: solid 1px ${J.paleGreyTwo};
    border-radius: 100px;
    background: ${J.white};
    cursor: pointer;

    ${({isDisable:e})=>e?`\n            color: ${J.grey};\n            cursor: default;\n        `:`\n            &:hover {\n                border: solid 1px ${J.grey};\n                box-shadow: 0 1px 2px 0 rgba(0, 0, 0, 0.5);\n            }\n        `}
`,AQ=(0,K.default)(BQ)`
    left: 10px;
`,yQ=(0,K.default)(BQ)`
    right: 10px;
`,fQ=K.default.i`
    font-size: 18px;
    line-height: 50px;
    vertical-align: middle;
    ${({isDisable:e})=>e?"":`color: ${J.blackTwo}`};
`,GQ=({sliderType:e,handleClick:t,isDisable:n})=>"prev"===e?z.createElement(AQ,{isDisable:n,onClick:t},z.createElement(fQ,{isDisable:n,className:"ico ico-chevron-left"})):z.createElement(yQ,{isDisable:n,onClick:t},z.createElement(fQ,{isDisable:n,className:"ico ico-chevron-right"})),QQ=({children:e,maxVisibleMenuNumber:t,sliderTransitionX:n})=>z.createElement(CQ,{maxVisibleMenuNumber:t},z.createElement(hQ,{sliderTransitionX:n},e));var FQ=Object.defineProperty,vQ=Object.defineProperties,ZQ=Object.getOwnPropertyDescriptors,EQ=Object.getOwnPropertySymbols,SQ=Object.prototype.hasOwnProperty,XQ=Object.prototype.propertyIsEnumerable,TQ=(e,t,n)=>t in e?FQ(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,xQ=(e,t)=>{for(var n in t||(t={}))SQ.call(t,n)&&TQ(e,n,t[n]);if(EQ)for(var n of EQ(t))XQ.call(t,n)&&TQ(e,n,t[n]);return e},UQ=(e,t)=>vQ(e,ZQ(t));const NQ=K.default.div`
    display: flex;
    position: relative;
    background: ${J.white};
    padding: 10px 0;

    ${({isEnableSliding:e})=>e&&"\n            padding-left: 90px; \n            padding-right: 90px;\n    "}
`,RQ=K.default.ul`
    width: ${bQ}px;
    max-height: 535px;
    box-sizing: border-box;
    overflow: hidden;

    padding: 10px 20px;
    flex-shrink: 0;

    &:not(:last-child) {
        border-right: dashed 1px ${J.grey};
    }
`,OQ=({isEnableSliding:e,chunkedSecondLevelList:t,triggerThirdLevelMenu:n,dataType:r,setActiveItems:i,activeItems:o})=>{const a=(0,z.useMemo)((()=>(3-t.length)*bQ),[t.length]),[c,l]=(0,z.useState)(0);return z.createElement(NQ,{isEnableSliding:e},z.createElement(QQ,{maxVisibleMenuNumber:3,sliderTransitionX:c},t.map(((e,t)=>z.createElement(RQ,{key:t},e.map((e=>z.createElement(IQ,{key:e.key,onClick:t=>{var a;if(r===Ut.CUSTOM_LINK){const t=st((null==e?void 0:e.link)||"");Gl({contentType:$r.CustomMenuLayerTwo,linkUrl:t,id:null,name:null==e?void 0:e.title})}if(e.hasChildList)t.preventDefault(),i(UQ(xQ({},o),{firstLevel:null==e?void 0:e.title,secondLevel:""})),n(e.key);else if(r===Ut.CATEGORY){const t=st((null==e?void 0:e.link)||"");i(UQ(xQ({},o),{firstLevel:null==e?void 0:e.title,secondLevel:""}));const n=null==e?void 0:e.title;(0,hc.selectContent)({id:null==(a=null==e?void 0:e.key)?void 0:a.toString(),name:n,contentType:"Category",linkUrl:t})}else!e.hasChildList&&e.link&&(window.location.href=e.link)}},z.createElement(pQ,{titleText:e.title,link:e.link,hasIcon:e.hasChildList,iconClassName:lQ.ARROW_RIGHT,isHasFreeGift:null==e?void 0:e.isHasFreeGift,navStyle:{color:"#333"}})))))))),e&&z.createElement(z.Fragment,null,z.createElement(GQ,{sliderType:mQ.PREV,isDisable:0===c,handleClick:()=>{l(Math.min(c+bQ,0))}}),z.createElement(GQ,{sliderType:mQ.NEXT,isDisable:c===a,handleClick:()=>{l(Math.max(c-bQ,a))}})))};var VQ=Object.defineProperty,WQ=Object.defineProperties,_Q=Object.getOwnPropertyDescriptors,wQ=Object.getOwnPropertySymbols,HQ=Object.prototype.hasOwnProperty,YQ=Object.prototype.propertyIsEnumerable,kQ=(e,t,n)=>t in e?VQ(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n;const DQ=K.default.div`
    display: flex;
    background: ${J.white};
    padding: 0;
`,LQ=K.default.ul`
    width: ${bQ}px;
    max-height: 535px;
    box-sizing: border-box;
    overflow: hidden;
    &:not(:last-child) {
        border-right: dashed 1px ${J.grey};
    }
`,PQ=K.default.div`
    width: ${bQ}px;
    box-sizing: border-box;
    background: ${J.whiteFive};
    border-right: solid 1px ${J.grey};
`,JQ=(0,K.default)(LQ)`
    padding: 20px;
`,MQ=K.default.div`
    display: flex;
    align-items: center;
    width: 270px;
    height: 30px;
    padding: 0;
    position: absolute;
    margin-left: 15px;
    top: 20px;
    left: 20px;
    a {
        padding: 0;
        border-bottom: solid 1px ${J.blackTwo};
    }
    a > :first-child {
        font-weight: 900;
    }

    ${({isEnableSliding:e})=>e&&"\n            margin-left: 100px;\n    "}
`,zQ=K.default.div`
    display: flex;
    position: relative;
    padding: 60px 0 20px;

    ${({isEnableSliding:e})=>e&&"\n            padding-left: 85px; \n            padding-right: 85px;\n    "}
`,jQ=(0,K.default)(LQ)`
    padding: 0 20px;
    flex-shrink: 0;
`,KQ=({isEnableSliding:e,chunkedThirdLevelList:t,secondLevelKey:n,secondLevelList:r,triggerThirdLevelMenu:i,dataType:o,setActiveItems:a,activeItems:c})=>{const l=(0,z.useMemo)((()=>r.find((e=>e.key===n))),[r,n]),s=(0,z.useMemo)((()=>(2-t.length)*bQ),[t.length]),[u,g]=(0,z.useState)(0);return(0,z.useEffect)((()=>{0!==u&&g(0)}),[n]),z.createElement(DQ,null,z.createElement(PQ,null,z.createElement(JQ,null,r.map((e=>z.createElement(IQ,{key:e.key,isActive:n===e.key,onClick:t=>{e.hasChildList&&(t.preventDefault(),i(e.key))}},z.createElement(pQ,{titleText:e.title,link:e.link,hasIcon:e.hasChildList,iconClassName:lQ.ARROW_RIGHT,isHasFreeGift:null==e?void 0:e.isHasFreeGift,navStyle:{color:"#333"}})))))),z.createElement(zQ,{isEnableSliding:e},z.createElement(MQ,{isEnableSliding:e},z.createElement(pQ,{titleText:l.title,link:l.link,hasIcon:l.hasChildList,iconClassName:lQ.CLOSE,handleIconClick:()=>i(""),navStyle:{color:"#333"}})),z.createElement(QQ,{maxVisibleMenuNumber:2,sliderTransitionX:u},t.map(((e,t)=>z.createElement(jQ,{key:t},e.map((e=>z.createElement(IQ,{key:e.key,onClick:t=>{var n,r,l;if(o===Ut.CUSTOM_LINK){const t=st((null==e?void 0:e.link)||"");Gl({contentType:$r.CustomMenuLayerThree,linkUrl:t,id:null,name:null==e?void 0:e.title})}if(e.hasChildList)t.preventDefault(),i(e.key);else if(o===Ut.CATEGORY){const t=st((null==e?void 0:e.link)||"");a((r=((e,t)=>{for(var n in t||(t={}))HQ.call(t,n)&&kQ(e,n,t[n]);if(wQ)for(var n of wQ(t))YQ.call(t,n)&&kQ(e,n,t[n]);return e})({},c),l={secondLevel:null==e?void 0:e.title},WQ(r,_Q(l))));const i="category_all"===e.key?`${null==c?void 0:c.firstLevel}-${null==e?void 0:e.title}`:null==e?void 0:e.title;(0,hc.selectContent)({id:null==(n=null==e?void 0:e.key)?void 0:n.toString(),name:i,contentType:"SubCategory",linkUrl:t})}}},z.createElement(pQ,{titleText:e.title,link:e.link,hasIcon:e.hasChildList,iconClassName:lQ.ARROW_RIGHT,isHasFreeGift:null==e?void 0:e.isHasFreeGift,navStyle:{color:"#333"}})))))))),e&&z.createElement(z.Fragment,null,z.createElement(GQ,{sliderType:mQ.PREV,isDisable:0===u,handleClick:()=>{g(Math.min(u+bQ,0))}}),z.createElement(GQ,{sliderType:mQ.NEXT,isDisable:u===s,handleClick:()=>{g(Math.max(u-bQ,s))}}))))},qQ=K.default.div`
    display: ${({isShowMenu:e})=>e?"block":"none"};
    position: absolute;
    overflow: hidden;
    box-shadow: 0 2px 4px 0 rgb(0, 0, 0, 0.1);
    transition: width 0.2s ease;
    z-index: 650;
    background-color: #ffffff;

    ${({leftOffset:e})=>`left: ${e}px;`}
    ${({menuWidth:e})=>`max-width: ${e}px;`}
    ${({menuHeight:e})=>`max-height: ${e}px;`}
`,$Q=K.default.div`
    display: flex;
    transform: translateX(${({sliderTransitionX:e})=>e}px);
`,eF=e=>e<=3?bQ*e:1200,tF=({title:e,link:t,childList:n,additionalChildListData:r,navStyle:i,isDefaultOpen:o,currentEditingItemKey:a,isHeaderCommonMenu:c,dataType:l,customerConfig:s})=>{const[u,g]=(0,z.useState)(!1),[d,I]=(0,z.useState)({firstLevel:"",secondLevel:""});(0,z.useEffect)((()=>{g(o)}),[o]);const p=(0,z.useRef)(null),[b,m]=(0,z.useState)(""),C=(0,z.useMemo)((()=>(0,M.chunk)(n,15)),[n]),h=(0,z.useMemo)((()=>(0,M.chunk)(r[b]||[],15)),[r,b]),B=(0,z.useMemo)((()=>""===b?[]:C.find((e=>e.some((e=>e.key===b))))),[C,b]),A=(0,z.useMemo)((()=>C.length),[C.length]),y=(0,z.useMemo)((()=>h.length),[h.length]),f=(0,z.useMemo)((()=>A>3),[A]),G=(0,z.useMemo)((()=>y>2),[y]),[Q,F]=(0,z.useState)(0);let v;(0,z.useEffect)((()=>()=>{v&&clearTimeout(v)}),[v]);const[Z,E]=(0,z.useState)(!1),S=e=>{""!==e?(m(e),F(2e3),E(!0)):(F(2e3),E(!1))};(0,z.useEffect)((()=>{var e;a&&(null==(e=r[a])?void 0:e.length)?S(a):S("")}),[a,r]);const X=(0,z.useMemo)((()=>Z?-eF(A):0),[Z,A]),T=(0,z.useMemo)((()=>{return Z?(e=y)<=2?bQ*(1+e):1190:eF(A);var e}),[Z,A,y]),x=(0,z.useMemo)((()=>{var e,t;const n=(null==(e=C[0])?void 0:e.length)||0,r=(null==(t=h[0])?void 0:t.length)||0;return Z?80+30*Math.max(n,r):40+30*n}),[Z,C,h]),U=(0,z.useMemo)((()=>{const e=p.current;if(e){const{left:t}=e.getBoundingClientRect(),n=document.body.clientWidth;return n-t-12-16>=T?12:n-T-16-t}return 12}),[Z,A,y,u]);return z.createElement("li",{style:{position:"relative",float:"left"},onMouseEnter:()=>{p.current||E(!1),g(!0)},onMouseLeave:()=>{v=setTimeout((()=>{E(!1),g(!1)}),Q)},onMouseOver:()=>{Q&&(F(0),clearTimeout(v))}},z.createElement(pQ,{elmRef:p,titleText:e,link:t,navStyle:i,hasIcon:!0,iconClassName:lQ.ARROW_DOWN,isActive:c&&u,customerConfig:s,onClickHandler:()=>{Gl({contentType:$r.CustomMenuLayerOne,linkUrl:t,id:null,name:e})}}),z.createElement(qQ,{menuWidth:T,menuHeight:x,leftOffset:U,isShowMenu:u,isShowThirdLevelMenu:Z},z.createElement($Q,{sliderTransitionX:X},z.createElement(OQ,{chunkedSecondLevelList:C,triggerThirdLevelMenu:S,isEnableSliding:f,dataType:l,activeItems:d,setActiveItems:I}),b&&z.createElement(KQ,{secondLevelKey:b,secondLevelList:B,chunkedThirdLevelList:h,triggerThirdLevelMenu:S,isEnableSliding:G,dataType:l,activeItems:d,setActiveItems:I}))))};var nF=Object.defineProperty,rF=Object.defineProperties,iF=Object.getOwnPropertyDescriptors,oF=Object.getOwnPropertySymbols,aF=Object.prototype.hasOwnProperty,cF=Object.prototype.propertyIsEnumerable,lF=(e,t,n)=>t in e?nF(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n;const sF=({title:e,dataSource:t,navStyle:n,currentEditingItemKey:r,dataType:i,shopDomain:o,promotionTargetList:a,customerConfig:c})=>{const l=(0,Qs.useDispatch)(),[s,u]=(0,z.useState)([]),g=(0,z.useCallback)((e=>(0,Ze.getPageUrl)(o,Ze.PAGE_TYPE.CATEGORY,{id:e})),[o]),d=(0,z.useCallback)((e=>((null==a?void 0:a.freeGift)||[]).includes(e)),[null==a?void 0:a.freeGift]),I=(0,z.useCallback)((t=>{var n;const r=[{itemIndex:0,childList:[],text:e||"",additionalChildList:[],itemKey:""}];for(let e=0;e<(null==(n=null==t?void 0:t.List)?void 0:n.length);e+=1){const n=t.List[e],o=n.Id,a=(null==n?void 0:n.ChildList)||[],c=[];for(let e=0;e<a.length;e+=1){const t=a[e],n=g(null==t?void 0:t.Id),r=d(null==t?void 0:t.Id);c.push({itemIndex:e,itemKey:null==t?void 0:t.Id,text:null==t?void 0:t.Name,linkUrl:n,isHasFreeGift:r})}c.length>0&&(i===Ut.CATEGORY&&c.unshift({itemIndex:-1,itemKey:"category_all",text:(0,ja.t)(Jn.THEME_CORE.HEADER.CATEGORY_ALL),linkUrl:g(null==n?void 0:n.Id),isHasFreeGift:!1}),(0,M.head)(r).additionalChildList.push({parentItemKey:null==n?void 0:n.Id,level:3,itemList:c}));const l=g(o),s=d(null==n?void 0:n.Id);(0,M.head)(r).childList.push({itemIndex:e,linkInfo:{pageType:""},linkUrl:l,urlType:"custom",text:null==n?void 0:n.Name,itemKey:null==n?void 0:n.Id,isHasFreeGift:s})}u(r)}),[g,d,e,i]),p=(0,z.useCallback)((t=>{const n=[{itemIndex:0,childList:[],text:e||"",additionalChildList:[],itemKey:""}];for(let e=0;e<(null==t?void 0:t.length);e+=1){const r=t[e];(0,M.head)(n).childList.push({itemIndex:e,linkInfo:{pageType:""},linkUrl:null==r?void 0:r.link,urlType:"custom",text:null==r?void 0:r.title,itemKey:`${(null==r?void 0:r.title)||""}${e}`})}u(n)}),[e]);return(0,z.useEffect)((()=>{i===Ut.CATEGORY&&(l(cC()),l(fm()))}),[i,l]),(0,z.useEffect)((()=>{switch(i){case Ut.CATEGORY:I(t);break;case Ut.ACTIVITY:p(t)}}),[t,i,I,p]),z.createElement(z.Fragment,null,s.map(((e,t)=>{const{itemKey:o,text:a,linkUrl:l="",additionalChildList:s=[]}=e;if((null==e?void 0:e.childList)&&e.childList.length>0){const t=s.reduce(((e,t)=>{return n=((e,t)=>{for(var n in t||(t={}))aF.call(t,n)&&lF(e,n,t[n]);if(oF)for(var n of oF(t))cF.call(t,n)&&lF(e,n,t[n]);return e})({},e),r={[t.parentItemKey]:t.itemList.map((e=>({key:e.itemKey,title:e.text,link:e.linkUrl,isHasFreeGift:(null==e?void 0:e.isHasFreeGift)||!1})))},rF(n,iF(r));var n,r}),{}),u=e.childList.map((e=>({key:e.itemKey,title:e.text||(0,ja.t)(Jn.THEME_CORE.HEADER.LINK_WORD),link:e.linkUrl||"",hasChildList:!!t[e.itemKey],isHasFreeGift:(null==e?void 0:e.isHasFreeGift)||!1})));return z.createElement(tF,{key:o,title:a,link:l,childList:u,additionalChildListData:t,navStyle:n,currentEditingItemKey:r,isDefaultOpen:r===o||(null==u?void 0:u.some((e=>e.key===r))),isHeaderCommonMenu:!0,dataType:i,customerConfig:c})}return i===Ut.CATEGORY?null:z.createElement(cQ,{key:`custom-link-${t}`,navStyle:n,linkItem:e,customerConfig:c})})))};var uF=n(1829),gF=Object.defineProperty,dF=Object.defineProperties,IF=Object.getOwnPropertyDescriptors,pF=Object.getOwnPropertySymbols,bF=Object.prototype.hasOwnProperty,mF=Object.prototype.propertyIsEnumerable,CF=(e,t,n)=>t in e?gF(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n;const hF=(0,Wb.createReducer)({}).handleAction(wb,((e,t)=>{return n=((e,t)=>{for(var n in t||(t={}))bF.call(t,n)&&CF(e,n,t[n]);if(pF)for(var n of pF(t))mF.call(t,n)&&CF(e,n,t[n]);return e})({},e),r={[t.dataSource]:t.payload},dF(n,IF(r));var n,r}));var BF=Object.defineProperty,AF=Object.defineProperties,yF=Object.getOwnPropertyDescriptors,fF=Object.getOwnPropertySymbols,GF=Object.prototype.hasOwnProperty,QF=Object.prototype.propertyIsEnumerable,FF=(e,t,n)=>t in e?BF(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n;const vF=(0,Wb.createReducer)({}).handleAction(kb,((e,t)=>{return n=((e,t)=>{for(var n in t||(t={}))GF.call(t,n)&&FF(e,n,t[n]);if(fF)for(var n of fF(t))QF.call(t,n)&&FF(e,n,t[n]);return e})({},e),r={[t.dataSource]:t.payload},AF(n,yF(r));var n,r}));var ZF=Object.defineProperty,EF=Object.defineProperties,SF=Object.getOwnPropertyDescriptors,XF=Object.getOwnPropertySymbols,TF=Object.prototype.hasOwnProperty,xF=Object.prototype.propertyIsEnumerable,UF=(e,t,n)=>t in e?ZF(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n;const NF=(0,Wb.createReducer)({}).handleAction(Pb,((e,t)=>{return n=((e,t)=>{for(var n in t||(t={}))TF.call(t,n)&&UF(e,n,t[n]);if(XF)for(var n of XF(t))xF.call(t,n)&&UF(e,n,t[n]);return e})({},e),r={[t.dataSource]:t.payload},EF(n,SF(r));var n,r}));var RF=Object.defineProperty,OF=Object.defineProperties,VF=Object.getOwnPropertyDescriptors,WF=Object.getOwnPropertySymbols,_F=Object.prototype.hasOwnProperty,wF=Object.prototype.propertyIsEnumerable,HF=(e,t,n)=>t in e?RF(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,YF=(e,t)=>{for(var n in t||(t={}))_F.call(t,n)&&HF(e,n,t[n]);if(WF)for(var n of WF(t))wF.call(t,n)&&HF(e,n,t[n]);return e};const kF=(0,Wb.createReducer)({favoriteCount:0,favoriteList:[]}).handleAction([qb,zb],((e,t)=>{return n=YF({},e),r={[t.dataSource]:t.payload},OF(n,VF(r));var n,r})).handleAction([tm,im],((e,t)=>YF(YF({},e),t.payload)));var DF=Object.defineProperty,LF=Object.defineProperties,PF=Object.getOwnPropertyDescriptors,JF=Object.getOwnPropertySymbols,MF=Object.prototype.hasOwnProperty,zF=Object.prototype.propertyIsEnumerable,jF=(e,t,n)=>t in e?DF(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,KF=(e,t)=>{for(var n in t||(t={}))MF.call(t,n)&&jF(e,n,t[n]);if(JF)for(var n of JF(t))zF.call(t,n)&&jF(e,n,t[n]);return e},qF=(e,t)=>LF(e,PF(t));const $F=(0,Wb.createReducer)({}).handleAction(pm,((e,t)=>qF(KF({},e),{[t.dataSource]:t.payload}))).handleAction(gm,((e,t)=>qF(KF({},e),{[t.dataSource]:t.payload})));var ev=Object.defineProperty,tv=Object.defineProperties,nv=Object.getOwnPropertyDescriptors,rv=Object.getOwnPropertySymbols,iv=Object.prototype.hasOwnProperty,ov=Object.prototype.propertyIsEnumerable,av=(e,t,n)=>t in e?ev(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,cv=(e,t)=>{for(var n in t||(t={}))iv.call(t,n)&&av(e,n,t[n]);if(rv)for(var n of rv(t))ov.call(t,n)&&av(e,n,t[n]);return e},lv=(e,t)=>tv(e,nv(t));const sv=(0,Wb.createReducer)({header:[],center:[],footer:[],left:[],right:[]}),uv=(0,Wb.createReducer)({}),gv=(0,Wb.createReducer)({}),dv=(0,Wb.createReducer)(null),Iv=(0,Wb.createReducer)({message:"",isLoading:!1}).handleAction(mm,(()=>({}))).handleAction(Cm,((e,t)=>lv(cv({},e),{message:t.payload}))).handleAction(hm,(e=>lv(cv({},e),{isLoading:!e.isLoading})));var pv=Object.defineProperty,bv=Object.defineProperties,mv=Object.getOwnPropertyDescriptors,Cv=Object.getOwnPropertySymbols,hv=Object.prototype.hasOwnProperty,Bv=Object.prototype.propertyIsEnumerable,Av=(e,t,n)=>t in e?pv(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,yv=(e,t)=>{for(var n in t||(t={}))hv.call(t,n)&&Av(e,n,t[n]);if(Cv)for(var n of Cv(t))Bv.call(t,n)&&Av(e,n,t[n]);return e},fv=(e,t)=>bv(e,mv(t));const Gv=(0,Wb.createReducer)({promotionCount:0,promotionSourceTypeList:{},promotionSourceTypeId:{},promotionTargetList:{freeGift:[]},promotionListInShopCategory:[]}).handleAction(Am,((e,t)=>fv(yv({},e),{promotionCount:t.payload}))).handleAction(Gm,((e,t)=>fv(yv({},e),{[t.dataSource]:t.payload}))).handleAction(vm,((e,t)=>fv(yv({},e),{promotionSourceTypeList:fv(yv({},e.promotionSourceTypeList),{[t.moduleKey]:{promotionList:t.payload.promotionList}})}))).handleAction(Sm,((e,t)=>fv(yv({},e),{promotionSourceTypeId:fv(yv({},e.promotionSourceTypeId),{[t.moduleKey]:{promotionList:t.payload.promotionList}})}))).handleAction(xm,((e,t)=>fv(yv({},e),{promotionListInShopCategory:t.payload})));var Qv=Object.defineProperty,Fv=Object.defineProperties,vv=Object.getOwnPropertyDescriptors,Zv=Object.getOwnPropertySymbols,Ev=Object.prototype.hasOwnProperty,Sv=Object.prototype.propertyIsEnumerable,Xv=(e,t,n)=>t in e?Qv(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n;const Tv=(0,Wb.createReducer)({retailStoreCustomLinkSettingList:[]}).handleAction(Rm,((e,t)=>{return n=((e,t)=>{for(var n in t||(t={}))Ev.call(t,n)&&Xv(e,n,t[n]);if(Zv)for(var n of Zv(t))Sv.call(t,n)&&Xv(e,n,t[n]);return e})({},e),r={retailStoreCustomLinkSettingList:t.payload},Fv(n,vv(r));var n,r}));var xv=Object.defineProperty,Uv=Object.defineProperties,Nv=Object.getOwnPropertyDescriptors,Rv=Object.getOwnPropertySymbols,Ov=Object.prototype.hasOwnProperty,Vv=Object.prototype.propertyIsEnumerable,Wv=(e,t,n)=>t in e?xv(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,_v=(e,t)=>{for(var n in t||(t={}))Ov.call(t,n)&&Wv(e,n,t[n]);if(Rv)for(var n of Rv(t))Vv.call(t,n)&&Wv(e,n,t[n]);return e},wv=(e,t)=>Uv(e,Nv(t));const Hv=(0,Wb.createReducer)({salePageInfo:{},isFetching:!1,browsingHistoryInfo:{productList:[]},historySalePageList:[]}).handleAction(Wm,((e,t)=>wv(_v({},e),{[t.dataSource]:t.payload}))).handleAction(Hm,((e,t)=>wv(_v({},e),{salePageInfo:t.payload.salePageInfo,skuInfoList:t.payload.skuInfoList}))).handleAction(Dm,((e,t)=>wv(_v({},e),{salePageInfo:{status:t.payload}}))).handleAction(Pm,(e=>wv(_v({},e),{isSkuStockUpdated:!1}))).handleAction(Jm,((e,t)=>wv(_v({},e),{isSkuStockUpdated:!0,skuInfoList:t.payload}))).handleAction(zm,((e,t)=>wv(_v({},e),{isFetching:!0,[t.dataKey]:{productList:[],isFetching:!0}}))).handleAction(jm,((e,t)=>wv(_v({},e),{isFetching:!1,dataKey:t.dataKey,[t.dataKey]:wv(_v({},t.payload),{isFetching:!1})}))).handleAction(Km,((e,t)=>wv(_v({},e),{isFetching:!1,dataKey:t.dataKey,[t.dataKey]:{productList:[],isFetching:!1}}))).handleAction(qm,(e=>wv(_v({},e),{isFetching:!0}))).handleAction($m,((e,t)=>wv(_v({},e),{isFetching:!1,dataKey:t.dataKey,[t.dataKey]:t.payload})));var Yv=Object.defineProperty,kv=Object.defineProperties,Dv=Object.getOwnPropertyDescriptors,Lv=Object.getOwnPropertySymbols,Pv=Object.prototype.hasOwnProperty,Jv=Object.prototype.propertyIsEnumerable,Mv=(e,t,n)=>t in e?Yv(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n;const zv=(0,Wb.createReducer)({searchList:[],hotSearchList:[]}).handleAction([nC,oC],((e,t)=>{return n=((e,t)=>{for(var n in t||(t={}))Pv.call(t,n)&&Mv(e,n,t[n]);if(Lv)for(var n of Lv(t))Jv.call(t,n)&&Mv(e,n,t[n]);return e})({},e),r={[t.dataSource]:t.payload},kv(n,Dv(r));var n,r}));var jv=Object.defineProperty,Kv=Object.defineProperties,qv=Object.getOwnPropertyDescriptors,$v=Object.getOwnPropertySymbols,eZ=Object.prototype.hasOwnProperty,tZ=Object.prototype.propertyIsEnumerable,nZ=(e,t,n)=>t in e?jv(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,rZ=(e,t)=>{for(var n in t||(t={}))eZ.call(t,n)&&nZ(e,n,t[n]);if($v)for(var n of $v(t))tZ.call(t,n)&&nZ(e,n,t[n]);return e},iZ=(e,t)=>Kv(e,qv(t));const oZ=(0,Wb.createReducer)({shopCategoryList:{Count:0,List:[],MaxChildListCount:0},enableDisplayStoreList:{ReturnCode:"",Data:!1,Message:""},multiShopCategoryBreadcrumbList:{isFetching:!1,allTreeWithLevel1AndLevel2List:[],breadcrumbList:[],categoryId:0,singleTree:null},brandList:{data:{boardModule:{boardContent:{boards:[]}}}}}).handleAction(IC,((e,t)=>iZ(rZ({},e),{[t.dataSource]:t.payload}))).handleAction(pC,((e,t)=>iZ(rZ({},e),{[t.dataSource]:t.payload}))).handleAction(CC,((e,t)=>iZ(rZ({},e),{[t.dataKey]:{productList:[],isFetching:!0}}))).handleAction(hC,((e,t)=>iZ(rZ({},e),{dataKey:t.dataKey,[t.dataKey]:iZ(rZ({},t.payload),{isFetching:!1})}))).handleAction(BC,((e,t)=>iZ(rZ({},e),{dataKey:t.dataKey,[t.dataKey]:{productList:[],isFetching:!1}}))).handleAction(yC,((e,t)=>iZ(rZ({},e),{retailStoreCategoryList:t.payload}))).handleAction(GC,((e,t)=>iZ(rZ({},e),{categoryServiceType:t.payload}))).handleAction(uC,((e,t)=>iZ(rZ({},e),{[t.dataSource]:t.payload}))).handleAction(FC,((e,t)=>iZ(rZ({},e),{enableDisplayStoreList:t.payload}))).handleAction(sC,((e,t)=>{const n=iZ(rZ(rZ({},e.multiShopCategoryBreadcrumbList),t.payload),{isFetching:!0});return iZ(rZ({},e),{multiShopCategoryBreadcrumbList:n})})).handleAction(gC,((e,t)=>{const n=iZ(rZ(rZ({},e.multiShopCategoryBreadcrumbList),t.payload),{isFetching:!1});return iZ(rZ({},e),{multiShopCategoryBreadcrumbList:n})})).handleAction(mC,(e=>{const t=iZ(rZ({},e.multiShopCategoryBreadcrumbList),{isFetching:!1});return iZ(rZ({},e),{multiShopCategoryBreadcrumbList:t})}));var aZ=Object.defineProperty,cZ=Object.defineProperties,lZ=Object.getOwnPropertyDescriptors,sZ=Object.getOwnPropertySymbols,uZ=Object.prototype.hasOwnProperty,gZ=Object.prototype.propertyIsEnumerable,dZ=(e,t,n)=>t in e?aZ(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,IZ=(e,t)=>{for(var n in t||(t={}))uZ.call(t,n)&&dZ(e,n,t[n]);if(sZ)for(var n of sZ(t))gZ.call(t,n)&&dZ(e,n,t[n]);return e},pZ=(e,t)=>cZ(e,lZ(t));const bZ=(0,Wb.createReducer)({shoppingCartCount:0,shoppingCartPreviewList:[]}).handleAction([EC,TC],((e,t)=>pZ(IZ({},e),{[t.dataSource]:t.payload}))).handleAction(NC,((e,t)=>IZ(IZ({},e),t.payload))).handleAction(_C,(e=>pZ(IZ({},e),{isAdding:!0}))).handleAction(wC,((e,t)=>pZ(IZ({},e),{isAdding:!0,prepareProductInfo:IZ({},t.payload)}))).handleAction(HC,(e=>pZ(IZ({},e),{isAdding:!1,prepareProductInfo:{}})));var mZ=Object.defineProperty,CZ=Object.defineProperties,hZ=Object.getOwnPropertyDescriptors,BZ=Object.getOwnPropertySymbols,AZ=Object.prototype.hasOwnProperty,yZ=Object.prototype.propertyIsEnumerable,fZ=(e,t,n)=>t in e?mZ(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,GZ=(e,t)=>{for(var n in t||(t={}))AZ.call(t,n)&&fZ(e,n,t[n]);if(BZ)for(var n of BZ(t))yZ.call(t,n)&&fZ(e,n,t[n]);return e},QZ=(e,t)=>CZ(e,hZ(t));const FZ=Ge()&&+(0,Bn.getCookie)("rsLocId")?+(0,Bn.getCookie)("rsLocId"):null,vZ=(0,Wb.createReducer)({retailStoreLocationId:FZ,isSkipPurchaseQualificationValid:!0}).handleAction(PC,((e,t)=>QZ(GZ({},e),{[t.dataSource]:t.payload}))).handleAction(kC,((e,t)=>QZ(GZ({},e),{[t.dataSource]:t.payload,isSkipPurchaseQualificationValid:!1}))).handleAction(DC,(e=>QZ(GZ({},e),{memberCollectionIdList:[],isSkipPurchaseQualificationValid:!0}))).handleAction(KC,(e=>QZ(GZ({},e),{isLogin:!1}))).handleAction($C,((e,t)=>QZ(GZ({},e),{retailStoreLocationId:t.payload}))).handleAction(th,((e,t)=>QZ(GZ({},e),{retailStoreExpress:t.payload}))).handleAction(nh,(e=>QZ(GZ({},e),{retailStoreExpress:null}))).handleAction(ih,((e,t)=>QZ(GZ({},e),{retailStoreExpressLocationId:t.payload}))).handleAction(oh,(e=>QZ(GZ({},e),{retailStoreExpressLocationId:0})));var ZZ=Object.defineProperty,EZ=Object.defineProperties,SZ=Object.getOwnPropertyDescriptors,XZ=Object.getOwnPropertySymbols,TZ=Object.prototype.hasOwnProperty,xZ=Object.prototype.propertyIsEnumerable,UZ=(e,t,n)=>t in e?ZZ(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,NZ=(e,t)=>{for(var n in t||(t={}))TZ.call(t,n)&&UZ(e,n,t[n]);if(XZ)for(var n of XZ(t))xZ.call(t,n)&&UZ(e,n,t[n]);return e},RZ=(e,t)=>EZ(e,SZ(t));const OZ={errorMsg:"",allCurrencies:dg.allCurrencies,availableCurrencies:[],preferredCurrency:"",isEnableLanguage:!1,allLanguages:[],availableLanguages:[],preferredLanguage:""},VZ=(0,Wb.createReducer)(OZ).handleAction(am,((e,t)=>{const{payload:n}=t,r=e.allCurrencies.map((e=>RZ(NZ({},e),{rate:n[e.code]||1})));return RZ(NZ({},e),{allCurrencies:r})})).handleAction(lm,((e,t)=>{const{payload:n}=t;return e.allCurrencies.some((e=>e.code===n))?RZ(NZ({},e),{preferredCurrency:n}):e})).handleAction(cm,((e,t)=>{const{payload:n}=t,r=e.allCurrencies.filter((e=>n.includes(e.code))).map((e=>e.code));return RZ(NZ({},e),{availableCurrencies:r})})).handleAction(sm,((e,t)=>{const{payload:n}=t;return NZ(NZ({},e),n)}));var WZ=Object.defineProperty,_Z=Object.defineProperties,wZ=Object.getOwnPropertyDescriptors,HZ=Object.getOwnPropertySymbols,YZ=Object.prototype.hasOwnProperty,kZ=Object.prototype.propertyIsEnumerable,DZ=(e,t,n)=>t in e?WZ(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,LZ=(e,t)=>{for(var n in t||(t={}))YZ.call(t,n)&&DZ(e,n,t[n]);if(HZ)for(var n of HZ(t))kZ.call(t,n)&&DZ(e,n,t[n]);return e},PZ=(e,t)=>_Z(e,wZ(t));const JZ=(0,Wb.createReducer)({spCatAdOfficial:[],officialCustomLink:[]}).handleAction(ch,((e,t)=>PZ(LZ({},e),{spCatAdOfficial:t.payload}))).handleAction(uh,((e,t)=>PZ(LZ({},e),{officialCustomLink:t.payload})));var MZ=Object.defineProperty,zZ=Object.defineProperties,jZ=Object.getOwnPropertyDescriptors,KZ=Object.getOwnPropertySymbols,qZ=Object.prototype.hasOwnProperty,$Z=Object.prototype.propertyIsEnumerable,eE=(e,t,n)=>t in e?MZ(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,tE=(e,t)=>{for(var n in t||(t={}))qZ.call(t,n)&&eE(e,n,t[n]);if(KZ)for(var n of KZ(t))$Z.call(t,n)&&eE(e,n,t[n]);return e},nE=(e,t)=>zZ(e,jZ(t));const rE=(0,Wb.createReducer)({isExist:!0,categoryId:-1,isShowCurator:!1,orderBy:"",productList:[],cursor:0,totalSize:0,isFetching:!1}).handleAction([dh,bh,hh],(e=>nE(tE({},e),{isFetching:!0}))).handleAction([Ih,mh],((e,t)=>nE(tE(tE({},e),t.payload),{isFetching:!1}))).handleAction(Bh,((e,{payload:{productList:t,cursor:n,totalSize:r}})=>nE(tE({},e),{productList:[...e.productList,...t],cursor:n,totalSize:r,isFetching:!1}))).handleAction(Ah,(e=>nE(tE({},e),{isFetching:!1}))).handleAction([ph,Ch,yh],(e=>nE(tE({},e),{isFetching:!1})));var iE=Object.defineProperty,oE=Object.defineProperties,aE=Object.getOwnPropertyDescriptors,cE=Object.getOwnPropertySymbols,lE=Object.prototype.hasOwnProperty,sE=Object.prototype.propertyIsEnumerable,uE=(e,t,n)=>t in e?iE(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,gE=(e,t)=>{for(var n in t||(t={}))lE.call(t,n)&&uE(e,n,t[n]);if(cE)for(var n of cE(t))sE.call(t,n)&&uE(e,n,t[n]);return e},dE=(e,t)=>oE(e,aE(t));const IE=(0,Wb.createReducer)({tagList:[],smartTag:{},isFetching:!1}).handleAction(fh,(e=>dE(gE({},e),{isFetching:!0}))).handleAction(Gh,((e,t)=>dE(gE({},e),{isFetching:!1,tagList:t.payload}))).handleAction(Qh,(e=>dE(gE({},e),{isFetching:!1}))).handleAction(Fh,((e,t)=>dE(gE({},e),{smartTag:t.payload})));(0,uF.HY)({construct:sv,pageMetaData:gv,globalStyleData:uv,dependencies:dv,activity:hF,coupon:vF,ecoupon:NF,favorite:kF,official:$F,messageData:Iv,promotion:Gv,salePage:Hv,search:zv,shop:oZ,shoppingCart:bZ,retailStore:Tv,user:vZ,locale:VZ,layoutTemplateData:JZ,shopCategory:rE,tagCategory:IE});const pE=(e,t)=>{var n;if(!e)return[];switch(t){case rr.jooii:return e.data;case rr.eLAND:return null==(n=e.products)?void 0:n.map((e=>+e.product_uuid));default:return[]}},bE=(e,t,n,r,i)=>{var o;const{categoryId:a,tags:c=[]}=i,l={[rr.jooii]:()=>{switch(e){case nr.salePageList:case nr.cmsModule:{const e=(0,Bn.getCookie)("MID");return{userId:e||(0,Bn.getCookie)("gaClientId")||"",userType:e?"nmc":"fvi"}}case nr.tagCategory:case nr.searchResultPage:return{tags:c};default:return{}}},[rr.eLAND]:()=>({top_n:r,behavior:(()=>{switch(e){case nr.salePageList:return[{page:t,param:`${a}`}];case nr.tagCategory:return[{page:t,param:null==c?void 0:c.join(",")}];default:return[]}})()})};return(null==(o=l[n])?void 0:o.call(l))||{}};var mE=Object.defineProperty,CE=Object.defineProperties,hE=Object.getOwnPropertyDescriptors,BE=Object.getOwnPropertySymbols,AE=Object.prototype.hasOwnProperty,yE=Object.prototype.propertyIsEnumerable,fE=(e,t,n)=>t in e?mE(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,GE=(e,t)=>{for(var n in t||(t={}))AE.call(t,n)&&fE(e,n,t[n]);if(BE)for(var n of BE(t))yE.call(t,n)&&fE(e,n,t[n]);return e},QE=(e,t)=>CE(e,hE(t)),FE=(e,t,n)=>new Promise(((r,i)=>{var o=e=>{try{c(n.next(e))}catch(t){i(t)}},a=e=>{try{c(n.throw(e))}catch(t){i(t)}},c=e=>e.done?r(e.value):Promise.resolve(e.value).then(o,a);c((n=n.apply(e,t)).next())}));const vE=({setting:e,pageType:t,trackingContentType:n,trackingItemListName:r,fetchDataParams:i={},dependencies:o,isEnableRecommendation:a,isFetchingInitCategoryProduct:c})=>{const{tags:l=[],categoryId:s}=i||{},{sourceType:u="",sourceInfo:g={}}=e||{},{shopId:d}=o,I=dn(o),[p,b]=(0,z.useState)(null),[m,C]=(0,z.useState)(""),[h,B]=(0,z.useState)(!1),A=(e,t,i,o)=>{try{const a=el(),c=tl(),l=(0,Nc.A)(),s=nl(u,i),g=()=>t.map(((t,n)=>{var r;return{itemId:null==(r=t.id)?void 0:r.toString(),itemName:t.title,price:t.price,affiliation:e[n]}}));return _l({itemListId:l,itemListName:r||o,contentType:n,contentSource:s,viewId:a,viewTitle:c,itemList:g()}),l}catch(a){const t=(0,Nc.A)();return ze.error(`[ERROR] handleTrackRecommendationProductData failed: ${Me(a)}: ${Je(a)}`),t}},y=()=>FE(void 0,null,(function*(){try{if(yield FE(void 0,null,(function*(){return u!==rr.jooii||t!==nr.cmsModule||(yield bg({shopId:d}))}))){const{title:e,productIdList:n,fallbackType:r,mode:i}=yield(e=>{return n=[e],r=function*({streamInjection:e,sourceInfo:t,sourceType:n,pageType:r,params:i}){const{shopId:o,locale:a}=e;try{if(!r)throw new Error("Invalid pageType");const{quantity:e,sourceId:c}=t,l=`${It()}/salepage-listing/api/recommendation/salepage-listing/${o}/${n}${((e,t,n,r,i)=>({[rr.jooii]:`?quantity=${e}&modeId=${t}&viewType=${ar[r]}&lang=${i}`,[rr.eLAND]:""}[n]||""))(e,c,n,r,a)}`,s={method:qt.RequestMethod.POST,body:JSON.stringify(bE(r,c,n,e,i)),timeout:{response:3e3,deadline:8e3}},{data:u}=yield Nn(l,s);let g="",d=[],I=null;return u&&"data"in u&&(g=u.title||"",d=u.fallbackType||[],I=u.mode||null),{title:g,productIdList:pE(u,n)||[],fallbackType:d,mode:I}}catch(c){return ze.error(`[ERROR] fetchRecommendationData failed: ${Me(c)}: ${Je(c)}. shopId: ${o}. pageType: ${r}`),Promise.reject(c)}},new Promise(((e,i)=>{var o=e=>{try{c(r.next(e))}catch(t){i(t)}},a=e=>{try{c(r.throw(e))}catch(t){i(t)}},c=t=>t.done?e(t.value):Promise.resolve(t.value).then(o,a);c((r=r.apply(void 0,n)).next())}));var n,r})({streamInjection:I,sourceInfo:g,sourceType:u,pageType:t,params:{categoryId:s,tags:l}}),o=yield(e=>FE(void 0,null,(function*(){try{const n=null==e?void 0:e.map((e=>{const n={payload:{salePageIds:[e],includeSalePageGroup:t!==nr.cmsModule,includeInvisibleSalepage:!1},streamInjection:I};return oI(n)}));return(yield Promise.allSettled(n))||[]}catch(n){return[]}})))(n),{filteredProductList:a,filteredFallbackType:c}=((e,t)=>{const n=[],r=[],i=e.length===t.length;return e.forEach(((e,o)=>{var a,c,l,s;"fulfilled"===e.status&&!1===(null==(c=null==(a=e.value.productList)?void 0:a[0])?void 0:c.isSoldOut)&&"Hidden"!==(null==(s=null==(l=e.value.productList)?void 0:l[0])?void 0:s.statusDef)&&(n.push(...e.value.productList),(e=>{u===rr.jooii?i?r.push(t[e]):r.push(""):r.push("third_party")})(o))})),{filteredProductList:n,filteredFallbackType:r}})(o,r);return{title:e||m,filteredProductList:a,filteredFallbackType:c,mode:i}}return{title:"",filteredProductList:[],filteredFallbackType:[],mode:null}}catch(e){return ze.error(`[ERROR] getRecommendationData failed: ${Me(e)}: ${Je(e)}. shopId: ${d}. pageType: ${t}.`),{title:"",filteredProductList:[],filteredFallbackType:[],mode:null}}}));return(0,z.useEffect)((()=>{u&&t&&((()=>{var e;const n=(0,ja.t)(Jn.THEME_CORE.RECOMMENDATION_SECTION.YOU_MIGHT_LIKE),r=(0,ja.t)(Jn.THEME_CORE.RECOMMENDATION_SECTION.RECOMMENDED_TO_YOU),i=(0,ja.t)(Jn.THEME_CORE.RECOMMENDATION_SECTION.OTHER_PEOPLE_WATCHING),o={[rr.eLAND]:{[nr.cmsModule]:n,[nr.salePageList]:n,[nr.tagCategory]:n,[nr.searchResultPage]:n},[rr.jooii]:{[nr.cmsModule]:r,[nr.salePageList]:r,[nr.tagCategory]:i,[nr.searchResultPage]:i}};C((null==(e=o[u])?void 0:e[t])||"")})(),B(!0))}),[u,t]),(0,z.useEffect)((()=>{h&&!c&&a&&FE(void 0,null,(function*(){try{b({0:{isFetching:!0,productList:[],title:"",mode:null,itemListId:""}});const{title:e,filteredProductList:t,filteredFallbackType:n,mode:r}=yield y();if(t.length>0){const i=A(n,t,r,e);b({0:{isFetching:!1,productList:t,title:e,mode:r,itemListId:i}})}else b({0:{isFetching:!1,productList:[],title:"",mode:null,itemListId:""}})}catch(e){b({0:{isFetching:!1,productList:[],title:"",mode:null,itemListId:""}})}}))}),[a,u,s,c,JSON.stringify(l),h]),{data:p,getMoreData:e=>FE(void 0,null,(function*(){if(a)try{b(QE(GE({},p),{[e]:{isFetching:!0,productList:[],title:"",mode:null,itemListId:""}}));const{title:t,filteredProductList:n,filteredFallbackType:r,mode:i}=yield y();if(n.length>0){const o=A(r,n,i,t);b(QE(GE({},p),{[e]:{isFetching:!1,productList:n,title:t,mode:i,itemListId:o}}))}else b(QE(GE({},p),{[e]:{isFetching:!1,productList:[],title:"",mode:null,itemListId:""}}))}catch(t){b(QE(GE({},p),{[e]:{isFetching:!1,productList:[],title:"",mode:null,itemListId:""}}))}}))}},ZE=e=>{const[t,n]=(0,z.useState)(0);return(0,z.useEffect)((()=>{if(!Ge())return;const t=document.querySelector(e);t&&n(t.offsetHeight)}),[e]),t};var EE=(e=>(e.DOWN="down",e.UP="up",e))(EE||{});const SE={initialDirection:"down",thresholdPixels:1},XE=({initialDirection:e,thresholdPixels:t}=SE)=>{const[n,r]=(0,z.useState)(e);return(0,z.useEffect)((()=>{if(!Ge())return;const e=t||0;let n=window.pageYOffset,i=!1;const o=()=>{const t=window.pageYOffset;Math.abs(t-n)<e||(r(t>n?"down":"up"),n=t>0?t:0),i=!1},a=()=>{i||(window.requestAnimationFrame(o),i=!0)};return window.addEventListener("scroll",a),()=>window.removeEventListener("scroll",a)}),[e,t]),n},TE=({orderBy:e})=>{const[t,n]=(0,z.useState)({type:null,direction:null});return(0,z.useEffect)((()=>{e===jB.By.PRICE_LOW_TO_HIGH?n({type:jB.r3.SPECIAL_PRICE,direction:jB.UE.ASC}):e===jB.By.PRICE_HIGH_TO_LOW?n({type:jB.r3.SPECIAL_PRICE,direction:jB.UE.DESC}):n({type:null,direction:null})}),[e]),{productListFrontendSortEntity:t}};var xE=Object.defineProperty,UE=Object.getOwnPropertySymbols,NE=Object.prototype.hasOwnProperty,RE=Object.prototype.propertyIsEnumerable,OE=(e,t,n)=>t in e?xE(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n;const VE=({moduleKey:e,sourceType:t,categoryId:n,listName:r,contentType:i,contentSource:o,itemListId:a})=>{const c=(0,Qs.useSelector)((n=>oB(n,{moduleKey:e,sourceType:t})));return(e,t,l,s,u,g)=>{const d={id:e,name:t,price:l,suggestPrice:s,categoryId:n,categoryName:c,position:g},I=el(),p=tl();Sl(d,r),Gl(((e,t)=>{for(var n in t||(t={}))NE.call(t,n)&&OE(e,n,t[n]);if(UE)for(var n of UE(t))RE.call(t,n)&&OE(e,n,t[n]);return e})({id:null==e?void 0:e.toString(),name:t,linkUrl:null!=u?u:"",contentType:i,viewTitle:p,itemListId:a||(0,Nc.A)(),contentSource:o},I&&{viewId:I}))}},WE=K.default.div`
    display: none;
    height: auto;
    top: 100%;
    min-height: 140px;
    padding: 0 16px 24px 16px;
    box-sizing: border-box;
    position: absolute;
    z-index: ${H};
    background-color: #fff;
    right: 0;
    border: 1px solid #d8d8d8;
    opacity: 0;
    font-size: 13px;
    color: #999;
    width: max-content;
    max-height: 380px;
    min-width: 260px;
    max-width: 800px;
    grid-template-rows: repeat(auto-fit, 40px);
    grid-auto-flow: column;
`,_E=K.default.a`
    font-size: 12px;
    display: inline-flex;

    &:hover ${WE} {
        display: grid;
        opacity: 1;
    }

    .ico-earth {
        line-height: inherit;
    }

    .ico-exchange-dollar {
        line-height: inherit;
    }

    .nav-submenu-icon {
        position: relative;
    }
    .ico-chevron-down {
        line-height: inherit;
    }
`,wE=K.default.div``,HE=K.default.div`
    grid-column: 1 / span 5;
    display: flex;
    align-items: center;
`;var YE=Object.defineProperty,kE=Object.defineProperties,DE=Object.getOwnPropertyDescriptors,LE=Object.getOwnPropertySymbols,PE=Object.prototype.hasOwnProperty,JE=Object.prototype.propertyIsEnumerable,ME=(e,t,n)=>t in e?YE(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,zE=(e,t)=>{for(var n in t||(t={}))PE.call(t,n)&&ME(e,n,t[n]);if(LE)for(var n of LE(t))JE.call(t,n)&&ME(e,n,t[n]);return e};const jE=({navStyle:e})=>{const{languageList:t,languageCode:n,handleChangedLanguage:r}=(()=>{const e=(0,Qs.useSelector)((e=>e.locale)),{allLanguages:t,availableLanguages:n,preferredLanguage:r}=e;return{languageList:(0,z.useMemo)((()=>aa(t,n)),[t,n]),languageCode:r,handleChangedLanguage:e=>{window.location.href=tt(window.location.href,"lang",e)}}})(),{currencyList:i,currencyCode:o,handleChangedCurrency:a}=(()=>{const{availableCurrencies:e,allCurrencies:t,preferredCurrency:n}=(0,Qs.useSelector)((e=>e.locale)),r=(0,z.useMemo)((()=>oa(t,e)),[t,e]),i=(0,Qs.useDispatch)();return{currencyList:r,currencyCode:n,handleChangedCurrency:e=>{i(lm(e)),(0,Bn.addCookie)("currency",e)}}})(),c=e=>(0,M.debounce)((()=>{"LANG"===e?fl("Language","hover",(0,ja.t)(Jn.THEME_CORE.DEFAULT.LANGUAGE)):"CURR"===e&&fl("Currency","hover",(0,ja.t)(Jn.THEME_CORE.DEFAULT.CURRENCY))}),1e3),l=e=>n=>{if("LANG"===e){const e=t.length?t.find((e=>e.value===n)).title:"";r(n),fl("Language","select_content",`(${n})${e}`),(0,hc.selectContent)({id:"",linkUrl:"",name:n,contentType:"Language"})}else if("CURR"===e){a(n);const e=i.length?i.find((e=>e.value===n)).title:"";fl("Currency","select_content",`(${n})${e}`),(0,hc.selectContent)({id:"",linkUrl:"",name:n,contentType:"Currency"})}},{previewPageName:s,isEnableLocaleSelect:u}=xe(),g=((e,t)=>e&&e!==Ze.PAGE_NAME.CATEGORY&&!t)(s,u);return z.createElement(z.Fragment,null,t.length>1?z.createElement("li",{className:"sub-nav-li"},z.createElement(_E,{className:"nav-submenu-link flex-gap",style:(d=zE({},e),I={pointerEvents:g?"none":"auto"},kE(d,DE(I))),onMouseEnter:c("LANG")},z.createElement("i",{className:"ico ico-earth nav-submenu-icon"}),z.createElement(wE,null,ia(n,t)),z.createElement("i",{className:"ico ico-chevron-down"}),z.createElement(WE,null,z.createElement(HE,null,(0,ja.t)(Jn.THEME_CORE.DEFAULT.LANGUAGE)),z.createElement(DA,{currentItem:n,itemList:t,onAfterChanged:l("LANG")})))):null,i.length>1&&z.createElement("li",{className:"sub-nav-li"},z.createElement(_E,{className:"nav-submenu-link flex-gap",style:e,onMouseEnter:c("CURR")},z.createElement("i",{className:"ico ico-exchange-dollar nav-submenu-icon"}),z.createElement(wE,null,o),z.createElement("i",{className:"ico ico-chevron-down"}),z.createElement(WE,null,z.createElement(HE,null,(0,ja.t)(Jn.THEME_CORE.DEFAULT.CURRENCY)),z.createElement(DA,{currentItem:o,itemList:i,onAfterChanged:l("CURR")})))));var d,I},{generalStyle:KE}=se.A,qE=K.default.span`
    color: ${e=>{var t,n;return(null==(n=null==(t=e.theme)?void 0:t.generalStyle)?void 0:n.moneyColor)||KE.moneyColor}};
    font-size: 1em;
    line-height: 1.5;
`,$E=K.default.span`
    color: ${e=>{var t,n;return(null==(n=null==(t=e.theme)?void 0:t.tagStyle)?void 0:n.generalTagTextColor)||se.A.tagStyle.generalTagTextColor}};
    background-color: ${e=>{var t,n;return(null==(n=null==(t=e.theme)?void 0:t.tagStyle)?void 0:n.generalTagBgColor)||se.A.tagStyle.generalTagBgColor}};
    font-size: 12px;
    line-height: 1.5;
    display: inline-block;
    align-self: flex-start;
    padding: 2px 4px;
`,eS=K.default.ul`
    border-bottom: 1px solid ${J.whiteThree};
`,tS=K.default.li`
    background-color: #f2f4f7;
    padding: 12px;
`,nS=(0,K.default)(iG)`
    width: 100%;
`,rS=K.default.div`
    display: flex;
    flex-direction: column;
    position: relative;
    flex: 4;
`;class iS extends z.Component{constructor(e){super(e),this.shoppingCartPageUrl=`//${this.props.shopDomain}/V2/ShoppingCart/Index?shopId=${this.props.shopId}`,this.onCheckOut=()=>{fl("全站_Header","購物車","Menu_結帳");const e=this.props.locationId?this.shoppingCartPageUrl+"&locationId="+this.props.locationId:this.shoppingCartPageUrl;window.location.href=e},this.onDeleteShoppingCartItem=e=>{return t=this,n=function*(){var t,n;e.preventDefault();const{removeShoppingCartItem:r}=this.props;fl("全站_Header","移除商品",e.currentTarget.getAttribute("data-sale-page-id"));const i=parseInt(e.currentTarget.getAttribute("data-point-pay-id"),10),o=i||0,a=i?"PointsPay":"",c=parseInt(e.currentTarget.getAttribute("data-sale-page-id"),10),l=parseInt(e.currentTarget.getAttribute("data-sale-page-seq"),10),s=parseInt(e.currentTarget.getAttribute("data-sku-id"),10),u=parseInt(e.currentTarget.getAttribute("data-shopping-cart-id"),10),g=parseInt(e.currentTarget.getAttribute("data-cart-extend-info-item-group"),10),d=e.currentTarget.getAttribute("data-sale-page-name"),I=parseInt(e.currentTarget.getAttribute("data-sale-page-price"),10);let p;try{if(c&&hl()){const e=xe(),r=dn(e),i=yield oI({streamInjection:r,payload:{salePageIds:[c]}});p=null==(n=null==(t=null==i?void 0:i.productList)?void 0:t[0])?void 0:n.suggestPrice}else p=null}catch(b){p=null}r({id:c,salePageSeq:l,skuId:s,name:d,price:I,suggestPrice:p,optionalTypeId:o,optionalTypeDef:a,shoppingCartId:u,cartExtendInfoItemGroup:Number.isInteger(g)?g:null})},new Promise(((r,i)=>{var o=t=>{try{c(n.next(t))}catch(e){i(e)}},a=t=>{try{c(n.throw(t))}catch(e){i(e)}},c=e=>e.done?r(e.value):Promise.resolve(e.value).then(o,a);c((n=n.apply(t,null)).next())}));var t,n},this.onClickShoppingCartItem=()=>{fl("全站_Header","購物車","Menu_點擊商品")},this.pointsPayPairElem=e=>{const{price:t,pointsPayPair:{pairsPoints:n,pairsPrice:r}}=e;return n?n&&!r?z.createElement(qE,null,z.createElement(ja.HT,{value:Jn.THEME_CORE.HEADER.POINTS,point:(0,zI.formatNumber)(n)})):n&&r?z.createElement(qE,null,z.createElement("span",null,z.createElement(ja.HT,{value:Jn.THEME_CORE.HEADER.POINTS,point:(0,zI.formatNumber)(n)})),"＋",z.createElement("span",null,z.createElement(np,{value:r}))):void 0:z.createElement(qE,null,z.createElement(np,{value:t}))},this.handleShoppingCartMenuClick=()=>{fl("全站_Header","購物車","Click"),(0,hc.selectContent)({contentType:"TabBar",linkUrl:this.shoppingCartPageUrl,id:null,name:"ShoppingCart"})},this.handleShoppingCartPreview=()=>{const{fetchShoppingCartPreviewList:e}=this.props,{isFetchedShoppingCartPreviewList:t}=this.state;t||(e(),this.setState({isFetchedShoppingCartPreviewList:!0}))},this.state={isFetchedShoppingCartPreviewList:!1}}render(){const e=this.props.locationId?this.shoppingCartPageUrl+"&locationId="+this.props.locationId:this.shoppingCartPageUrl,{shoppingCartPreviewList:t,shoppingCartCount:n,navStyle:r,badgeStyle:i}=this.props;return z.createElement("li",{className:"sub-nav-li nav-shopping-cart"},z.createElement("a",{className:"nav-submenu-link",href:e,onClick:this.handleShoppingCartMenuClick,onMouseEnter:this.handleShoppingCartPreview,"data-qe-id":"header-shopping-cart-icon"},z.createElement("i",{className:"ico ico-shopping nav-submenu-icon",style:r}),z.createElement("span",{className:"shopping-cart-badge",style:i},n)),z.createElement("div",{className:"nav-shopping-cart-menu"},z.createElement("div",{className:t?"":"loading-background"},t&&t.length>0?z.createElement("div",{className:"has-shopping-cart-item"},z.createElement("div",{className:"has-item-text"},z.createElement(ja.HT,{value:Jn.THEME_CORE.HEADER.NEW_ADD_ITEM})),z.createElement("ul",{className:"nav-shopping-cart-ul"},t.map(((e,t)=>(null==e?void 0:e.title)&&z.createElement("li",{key:t},z.createElement("div",{className:`nav-shopping-cart-li ${e.extraPurchaseItems&&e.extraPurchaseItems.length>0&&"no-border"}`,onClick:this.onClickShoppingCartItem},z.createElement("a",{className:"nav-shopping-cart-link",href:e.link},z.createElement("figure",{className:"image-frame nav-shopping-cart-image"},z.createElement("img",{loading:"lazy",className:"image-body",src:e.mediaUrlList&&e.mediaUrlList[0],alt:e.title})),z.createElement("div",{className:"nav-shopping-cart-detail"},z.createElement("div",{className:"nav-shopping-cart-title"},e.title),this.pointsPayPairElem(e))),z.createElement("a",{className:"remove-product-link",onClick:this.onDeleteShoppingCartItem,"data-sale-page-id":e.salePageId,"data-sale-page-seq":e.salePageSeq,"data-sale-page-name":e.title,"data-sale-page-price":e.price,"data-suggest-price":e.suggestPrice,"data-sku-id":e.saleProductSKUId,"data-shopping-cart-id":e.shoppingCartId,"data-cart-extend-info-item-group":e.relatedItemGroup,"data-point-pay-id":e.pointsPayPair&&e.pointsPayPair.pointsPayId},z.createElement("i",{className:"ico ico-delete"}))),e.extraPurchaseItems&&z.createElement(eS,{className:"extra-purchase-item-block"},e.extraPurchaseItems.map((e=>z.createElement(tS,{key:`extraPurchaseItems_${e.salePageId}_${e.saleProductSKUId}`,className:"extra-purchase-item",onClick:this.onClickShoppingCartItem},z.createElement("a",{className:"nav-shopping-cart-link",href:e.link},z.createElement("figure",{className:"image-frame nav-shopping-cart-image"},z.createElement("img",{loading:"lazy",className:"image-body",src:e.mediaUrlList&&e.mediaUrlList[0],alt:e.title})),z.createElement(rS,null,z.createElement("div",{className:"nav-shopping-cart-title"},e.title),z.createElement($E,null,z.createElement(ja.HT,{value:Jn.THEME_CORE.HEADER.PURCHASE_EXTRA})),this.pointsPayPairElem(e))))))))))),z.createElement("div",{className:"nav-shopping-cart-summary"},z.createElement(nS,{onClick:this.onCheckOut,"data-qe-id":"header-shopping-cart-checkout-btn"},z.createElement(ja.HT,{value:Jn.THEME_CORE.HEADER.CHECKOUT})))):z.createElement("div",{className:"no-item-content"},z.createElement(ja.HT,{value:Jn.THEME_CORE.HEADER.SHOPPING_CART_EMPTY})))))}}iS.defaultProps={shopId:0,shoppingCartPreviewList:[]};const{mapStateToProps:oS,mapDispatchToProps:aS}=Ca([y,f]),cS=(0,Qs.connect)(oS,aS)(iS),lS=({tagCategory:e})=>({smartTag:(null==e?void 0:e.smartTag)||{}}),sS=e=>({fetchSmartTagSettingFulfilled(t){e(Fh(t))}});class uS extends z.Component{constructor(e){super(e),this.matchKeywordList=[],this.onFocus=()=>{this.setState({isFocus:!0}),this.searchKeyword||this.onGetRecentHistoryKeywordHandle()},this.onBlur=()=>{window.setTimeout((()=>{this.setState({isFocus:!1})}),500)},this.getTrackingSearchType=e=>{switch(e){case cr.SkuOuterId:return lr.SkuOuterIdSearch;case cr.SkuOuterIdHistory:return lr.SkuOuterIdSearchLog;case cr.History:return lr.SerachLog;case cr.Key:return lr.AutoComplete;case cr.HotKeyword:return lr.TopSearches;default:return lr.Search}},this.getTackingContentType=e=>{switch(e){case cr.History:return sr.HistorySearchTerm;case cr.HotKeyword:return sr.SuggestSearchTerm;case cr.SkuOuterId:return sr.SKUSearchTerm;case cr.SkuOuterIdHistory:return sr.SKUHistorySearchTerm;default:return""}},this.sanitizeInput=e=>{let t=e.replace(/<script\b[^<]*(?:(?!<\/script>)<[^<]*)*<\/script>/gi,"");return t=t.replace(/</g,"&lt;").replace(/>/g,"&gt;"),t},this.onSearch=(e,t)=>{let n=e||this.searchKeyword;const{isDefaultPreciseSearch:r,isEnableSkuOuterIdSearch:i}=this.state;if(this.checkNonEmptyString(n)){n=this.sanitizeInput(n),Gl({adobeContentInfo:{eventInfo:{searchTerm:this.searchKeyword||n,searchSuggestionName:n,searchType:this.getTrackingSearchType(t)},eventMessage:"searchSuggestionClick"},contentType:this.getTackingContentType(t),id:"",linkUrl:"",name:n});const{shopDomain:e,shopId:o}=this.props,a=encodeURIComponent(r?`"${n}"`:n);if(i&&(null==t?void 0:t.includes(cr.SkuOuterId)))return this.onSaveKeyword(n,cr.SkuOuterIdHistory),void(window.location.href=`//${e}/v2/Search?q=${a}&shopId=${o}&searchType=${cr.SkuOuterId}`);if(this.props.locationId)return void(window.location.href=`//${e}/v2/Search?q=${a}&shopId=${o}&locationId=${this.props.locationId}`);window.location.href=`//${e}/v2/Search?q=${a}&shopId=${o}`,this.onSaveKeyword(n,cr.History)}},this.onSaveKeyword=(e,t=cr.History)=>{if(this.historyKeywordList=window.localStorage.SearchHistoryKeyWord?JSON.parse(window.localStorage.SearchHistoryKeyWord):[],this.historyKeywordList&&this.historyKeywordList.length>0){let n=-1;for(let r=0,i=this.historyKeywordList.length;r<i;r++)this.historyKeywordList[r].text===e&&this.historyKeywordList[r].type===t&&(n=r);-1!==n&&this.historyKeywordList.splice(n,1)}this.historyKeywordList.unshift({type:t,text:e,selected:!1}),this.historyKeywordList.length>this.maxHistoryKeyWordLength&&this.historyKeywordList.pop(),window.localStorage.SearchHistoryKeyWord=JSON.stringify(this.historyKeywordList)},this.isOverMatchKeywordListLength=()=>this.matchKeywordList&&this.matchKeywordList.length>=this.maxMatchKeywordLength,this.onSpliceOverMatchKeywordListLength=()=>{this.matchKeywordList.splice(this.maxMatchKeywordLength-1,this.matchKeywordList.length-this.maxMatchKeywordLength)},this.onChangeKeyword=e=>{const{skuOuterIdRegex:t,isEnableSkuOuterIdSearch:n}=this.state;this.searchKeyword=e.currentTarget.value,this.searchKeyword?(this.timeDisposer&&clearTimeout(this.timeDisposer),this.timeDisposer=setTimeout((()=>{this.matchKeywordList=[],n&&t.test(this.searchKeyword)&&this.matchKeywordList.push({text:this.searchKeyword,type:cr.SkuOuterId,selected:!1}),this.onGetMatchHistoryKeywordHandle(),this.isOverMatchKeywordListLength()||this.onGetHotKeywordHandle()}),800)):this.onGetRecentHistoryKeywordHandle()},this.onGetRecentHistoryKeywordHandle=()=>{if(this.historyKeywordList=window.localStorage.SearchHistoryKeyWord?JSON.parse(window.localStorage.SearchHistoryKeyWord):[],this.historyKeywordList&&this.historyKeywordList.length>0){const e=this.historyKeywordList.length<this.maxRecentHistoryLength?this.historyKeywordList.length:this.maxRecentHistoryLength;this.matchKeywordList=this.historyKeywordList.slice(0,e),this.setState({matchKeywordList:this.matchKeywordList,currentIndex:-1})}},this.onGetMatchHistoryKeywordHandle=()=>{if(this.historyKeywordList=window.localStorage.SearchHistoryKeyWord?JSON.parse(window.localStorage.SearchHistoryKeyWord):[],this.historyKeywordList&&this.historyKeywordList.length>0){for(let e=0,t=this.historyKeywordList.length;e<t;e++)this.historyKeywordList[e].text.includes(this.searchKeyword)&&this.matchKeywordList.push(this.historyKeywordList[e]);this.isOverMatchKeywordListLength()&&this.onSpliceOverMatchKeywordListLength(),this.setState({matchKeywordList:this.matchKeywordList,currentIndex:-1})}},this.onGetHotKeywordHandle=()=>{this.props.fetchSearchList&&this.props.fetchSearchList(this.searchKeyword)},this.onMatchKeywordHandle=e=>{e&&(e.forEach((e=>{let t=!1;this.matchKeywordList.forEach((n=>{n.text===e&&(t=!0,n.type=cr.HotKeyword)})),t||(this.matchKeywordList=this.matchKeywordList||[],this.matchKeywordList.push({text:e,type:cr.HotKeyword,selected:!1}))})),this.isOverMatchKeywordListLength()&&this.onSpliceOverMatchKeywordListLength(),this.setState({matchKeywordList:this.matchKeywordList,currentIndex:-1}))},this.onSelectAutoCompleteItem=e=>{if(e.stopPropagation(),e.bubbles=!1,"Enter"===e.key&&(e.preventDefault(),this.onSearch()),this.matchKeywordList&&0!==this.matchKeywordList.length)switch(e.key){case"ArrowUp":this.onChangeCurrentIndex(!0,-1);break;case"ArrowDown":this.onChangeCurrentIndex(!1,1)}},this.onChangeCurrentIndex=(e,t)=>{if(this.matchKeywordList&&this.matchKeywordList.length>0){let n=this.state.currentIndex;n<0||n===this.matchKeywordList.length-1&&!e?n=0:e&&0===n?n=this.matchKeywordList.length-1:n+=t,this.setState({currentIndex:n}),this.searchInputRef&&(this.searchTerm=this.searchInputRef.value,this.searchInputRef.value=this.matchKeywordList[n].text,this.searchKeyword=this.matchKeywordList[n].text)}},this.checkIsUsePreciseComparison=e=>e.length>2&&'"'===e.charAt(0)&&'"'===e.charAt(e.length-1),this.getPlaceholder=()=>{const{isEnableSkuOuterIdSearch:e,skuOuterIdName:t,isFetchingSkuOuterIdSearchSetting:n}=this.state;return n?"":e?(0,ja.t)(Jn.THEME_CORE.HEADER.BARCODE_SEARCH_PLACEHOLDER,{skuOuterIdName:t}):(0,ja.t)(Jn.THEME_CORE.HEADER.INPUT_KEY_WORD)},this.state={skuOuterIdRegex:/^[a-zA-Z0-9-]{4,}$/,isFocus:!1,currentIndex:-1,matchKeywordList:[],isDefaultPreciseSearch:this.props.smartTag.isDefaultPreciseSearch||!1,isEnableSkuOuterIdSearch:!1,skuOuterIdName:ur,isFetchingSkuOuterIdSearchSetting:!0},this.maxHistoryKeyWordLength=15,this.maxMatchKeywordLength=10,this.maxRecentHistoryLength=3}checkNonEmptyString(e){return/^\s*\S+.*/.test(e)}render(){const{isFocus:e,matchKeywordList:t,currentIndex:n,skuOuterIdName:r,isEnableSkuOuterIdSearch:i}=this.state,{customerConfig:o}=this.props;return z.createElement("form",{className:"ns-search-form"},z.createElement("div",{className:"search-wrapper"},!Qe()&&z.createElement(z.Fragment,null,z.createElement("input",{ref:e=>{this.searchInputRef=e},className:qs()("ns-search-input",(null==o?void 0:o.radius)&&`ns-search-input__${null==o?void 0:o.radius}`,(null==o?void 0:o.height)&&`ns-search-input__${null==o?void 0:o.height}`,(null==o?void 0:o.backgroundColor)&&`ns-search-input__${null==o?void 0:o.backgroundColor}`),type:"search",placeholder:this.getPlaceholder(),name:"q",id:"ns-search-input",autoComplete:"off",onFocus:this.onFocus,onBlur:this.onBlur,onKeyDown:this.onSelectAutoCompleteItem,onChange:this.onChangeKeyword,"data-qe-id":"header-search-input"}),z.createElement("a",{className:"searchkeyword ns-search-btn",onClick:()=>{this.onSearch()},"data-qe-id":"header-search-icon"},z.createElement("i",{className:"ico ico-search"}),z.createElement("span",{className:"search-btn-text"},z.createElement(ja.HT,{value:Jn.THEME_CORE.HEADER.SEARCH})))),e&&z.createElement("ul",{className:"ns-search-ul"},null==t?void 0:t.map(((e,t)=>{var o,a;return z.createElement("li",{className:qs()("ns-search-li",n===t?"selected":""),key:t},z.createElement("a",{className:"ns-search-link",onClick:()=>{this.onSearch(e.text,e.type)}},z.createElement("i",{className:qs()("ico",(null==(o=e.type)?void 0:o.includes(cr.History))?"ico-history":"ico-search")}),z.createElement("div",{className:"ns-search-keyword-block"},z.createElement("span",{className:"ns-search-keyword"},e.text),i&&(null==(a=e.type)?void 0:a.includes(cr.SkuOuterId))&&z.createElement("span",{className:"ns-search-sku-outerid"},(0,ja.t)(Jn.THEME_CORE.HEADER.SEARCH_BARCODE,{skuOuterIdName:r})))))})))))}componentDidMount(){return e=this,n=function*(){var e;const{shopId:t,isEditMode:n,smartTag:r}=this.props;try{let i=new URLSearchParams(window.location.search).get("q");if(i&&(i=this.checkIsUsePreciseComparison(i)?i.slice(1,-1):i,this.searchInputRef.value=i,this.searchKeyword=i),!n&&(null==(e=Object.keys(r))?void 0:e.length)<1){const e=yield Qg(t);this.props.fetchSmartTagSettingFulfilled(e)}const o=xe(),a=dn(o),{isEnabled:c,skuOuterIdName:l}=yield((e,t=0)=>{return r=function*(){try{const{shopId:n,locale:r}=e,i=gt(`SkuOuterIdSearch/Setting/${n}/${r}?locationId=${t}`,e,!0),{ReturnCode:o,Data:a,Message:c}=yield Nn(i);if("API0001"!==o)throw new Error(`Unexpected ReturnCode: ${o}, Message: ${c}`);if(!a||a&&Object.keys(a).length<1)throw new Error("Api Response No Data");return(e=>{const{IsEnabled:t,FieldDefinition:n}=e;return{isEnabled:t,skuOuterIdName:n}})(a)}catch(n){const{shopId:r}=e;throw ze.error(`[ERROR] fetchSkuOuterIdSearchSetting error: ${Je(n)}, shopId: ${r}`),n}},new Promise(((e,t)=>{var i=e=>{try{a(r.next(e))}catch(n){t(n)}},o=e=>{try{a(r.throw(e))}catch(n){t(n)}},a=t=>t.done?e(t.value):Promise.resolve(t.value).then(i,o);a((r=r.apply(void 0,null)).next())}));var r})(a);this.setState({isEnableSkuOuterIdSearch:c,skuOuterIdName:l,isFetchingSkuOuterIdSearchSetting:!1})}catch(i){this.setState({isFetchingSkuOuterIdSearchSetting:!1})}},new Promise(((r,i)=>{var o=e=>{try{c(n.next(e))}catch(t){i(t)}},a=e=>{try{c(n.throw(e))}catch(t){i(t)}},c=e=>e.done?r(e.value):Promise.resolve(e.value).then(o,a);c((n=n.apply(e,null)).next())}));var e,n}UNSAFE_componentWillReceiveProps(e){const{searchList:t,smartTag:n}=this.props;t!==e.searchList&&e.searchList&&this.onMatchKeywordHandle(e.searchList),n.isDefaultPreciseSearch!==e.smartTag.isDefaultPreciseSearch&&this.setState({isDefaultPreciseSearch:e.smartTag.isDefaultPreciseSearch})}}uS.defaultProps={shopDomain:"",searchList:[],navStyle:{},smartTag:{}};const gS={TagCategoryMapping:Q,UserMapping:f},dS=(0,Qs.connect)((e=>ba(gS,e)),(e=>ma(gS,e)))(uS);var IS=Object.defineProperty,pS=Object.defineProperties,bS=Object.getOwnPropertyDescriptors,mS=Object.getOwnPropertySymbols,CS=Object.prototype.hasOwnProperty,hS=Object.prototype.propertyIsEnumerable,BS=(e,t,n)=>t in e?IS(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,AS=(e,t)=>{for(var n in t||(t={}))CS.call(t,n)&&BS(e,n,t[n]);if(mS)for(var n of mS(t))hS.call(t,n)&&BS(e,n,t[n]);return e};const yS=K.default.ul`
    ${({layerLevel:e})=>e<=2?`\n                width: 250px;\n                height: 576px;\n                overflow-y: overlay;\n                overflow-x: hidden;\n                    &:nth-child(2) {\n                        border-left: 1px solid ${J.grey};\n                        border-right: 0;\n                    }\n                    &::-webkit-scrollbar {\n                        width: 5px;\n                    }\n                    &::-webkit-scrollbar-track {\n                        // 保留，未來想調整可再加入設定值\n                    }\n                    &::-webkit-scrollbar-thumb {\n                        border-radius: 10px;\n                        background: #888;\n                    }\n                    &::-webkit-scrollbar-thumb:hover {\n                        background: #555;\n                    }\n                `:"\n                width: 200px;\n                display: inline-block;\n                margin-right: 20px;\n                overflow-y: auto;\n                overflow-x: hidden;\n                vertical-align: top;\n\n                &::-webkit-scrollbar {\n                    width: 5px;\n                }\n                &::-webkit-scrollbar-track {\n                    // 保留，未來想調整可再加入設定值\n                }\n                &::-webkit-scrollbar-thumb {\n                    border-radius: 10px;\n                    background: #888;\n                }\n                &::-webkit-scrollbar-thumb:hover {\n                    background: #555;\n                }\n                "}
`,fS=K.default.li`
    ${({layerLevel:e,hasChild:t,isActive:n})=>e<=2?`\n                    height: 35px;\n                    padding: 7.5px 10px 7.5px 20px;\n                    display: flex;\n                    align-items: center;\n                    justify-content: space-between;\n                    box-sizing: border-box;\n                    background-color: ${n?J.veryLightMango:J.white};\n                    font-weight: ${n?"bold":"normal"};\n                    &:hover {\n                        color: ${J.blackThree};\n                        font-weight: bold;\n                        background-color: ${J.veryLightMango};\n                        text-decoration: none;\n                        cursor: ${t?"unset":"pointer"};\n                    }\n                `:`\n                    display: flex;\n                    align-items: center;\n                    justify-content: space-between;\n                    box-sizing: border-box;\n                    margin: 16px 0;\n                    cursor: pointer;\n                    color: ${J.blackThree};\n                    &:hover {\n                        font-weight: bold;\n                        text-decoration: underline;\n                    }\n                `}
`,GS=K.default.a`
    font-size: 14px;
    width: 100%;
    display: flex;
    align-items: center;
    justify-content: space-between;
    cursor: pointer;
    color: inherit;
    font-weight: unset;
`,QS=K.default.div`
    width: 1180px;
    height: 616px;
    overflow-y: auto;
    overflow-x: hidden;
    position: absolute;
    left: 50%;
    transform: translate(-50%, 0);
    border: 0;
    box-shadow: 0px 4px 4px 0px rgba(0, 0, 0, 0.1);
    filter: drop-shadow(0px 4px 4px rgba(0, 0, 0, 0.1));
    background-color: ${J.white};
    display: ${({isShowMenu:e})=>e?"flex":"none"};
    z-index: ${he.headerZindex.navMenu};
    padding: 20px 0;
    box-sizing: border-box;
    color: ${J.blackThree};
`,FS=K.default.div`
    font-weight: ${({weight:e})=>""!==e?e:"normal"};
    display: inline-block;
    color: ${J.blackThree};
`,vS=K.default.div`
    line-height: ${({layerLevel:e})=>e<=2?"40px":"20px"};
    text-overflow: ellipsis;
    white-space: pre;
    overflow: hidden;
    height: ${({layerLevel:e})=>e<=2?"35px":"auto"};
    margin-right: 10px;
    word-break: keep-all;
    font-size: 13px;
    font-weight: unset;
    &:hover {
        font-weight: bold;
    }
`,ZS=K.default.div`
    position: absolute;
    top: 0px;
    right: 20px;
    display: flex;
    align-items: center;
    justify-content: space-around;
    line-height: normal;
    color: ${J.blackThree};
    border-radius: 50px;
    height: 32px;
    width: 76px;
`,ES=K.default.div`
    width: 220px;
`,SS=K.default.div`
    max-width: 90%;
    font-weight: 500;
    font-size: 16px;
    line-height: 180%;
    display: inline-flex;
    justify-content: start;
    align-items: center;
`,XS=K.default.a`
    overflow: hidden;
    word-break: keep-all;
    white-space: nowrap;
    text-overflow: ellipsis;
    margin-right: 8px;
    color: ${J.blackTwo};
    font-weight: bold;
    &:hover {
        text-decoration: none;
    }
`,TS=K.default.div`
    width: ${({level3ColumCount:e})=>2===e?"440px":"660px"};
    padding-left: 20px;
    position: relative;
    border-left: 1px solid ${J.grey};
    box-sizing: border-box;
    line-height: 0px;
`,xS=K.default.div`
    display: flex;
`,US=K.default.a`
    color: ${({sliderColor:e})=>e};
    width: 20px;
    height: 20px;
    display: flex;
    align-items: center;
    font-size: 20px;
    justify-content: center;
`,NS=K.default.p`
    font-size: 13px;
    display: flex;
    align-items: center;
    justify-content: center;
    width: 20px;
    height: 20px;
    color: ${J.blackThree};
`,RS=K.default.div`
    width: 240px;
    padding-left: 24px;
    line-height: 0px;
    position: absolute;
    right: 0px;
    height: 576px;
    border-left: 1px solid ${J.grey};
    box-sizing: border-box;
`,OS=K.default.div`
    display: flex;
    flex-wrap: wrap;
    margin: 0 0 -6px -6px;
    line-height: initial;
    max-height: 546px;
    overflow-y: scroll;
    overflow-x: hidden;
    &::-webkit-scrollbar {
        width: 5px;
    }
    &::-webkit-scrollbar-thumb {
        border-radius: 10px;
        background: #888;
    }
    &::-webkit-scrollbar-thumb:hover {
        background: #555;
    }
`,VS=K.default.a`
    width: 55px;
    height: 55px;
    margin: 6px;
    display: block;
`,WS=K.default.img`
    border-radius: 4px;
    width: 100%;
`,_S=(e,t)=>{const n=[];if(void 0!==t){const r=(0,M.chunk)(t,e);n.push(...r)}return n},wS=({checkLength:e,refFunction:t,sliderSettingProps:n,children:r})=>e>5?z.createElement(yd.A,AS({ref:t},n),r):z.createElement(xS,null,z.createElement(z.Fragment,null,r)),{mapStateToProps:HS,mapDispatchToProps:YS}=Ca([m,A]),kS=(0,Qs.connect)(HS,YS)((({shopDomain:e,fetchMultiShopCategoryList:t,multiShopCategoryList:n,navStyle:r,customerConfig:i})=>{var o,a,c;const[l,s]=(0,z.useState)(!1),[u,g]=(0,z.useState)([]),[d,I]=(0,z.useState)(""),[p,b]=(0,z.useState)(),[m,C]=(0,z.useState)(1),[h,B]=(0,z.useState)(0),[A,y]=(0,z.useState)([]),[f,G]=(0,z.useState)(3),Q=(0,z.useRef)(-1),F=(0,z.useRef)(null),[v,Z]=(0,z.useState)(new Map),E={arrows:!1,dots:!1,infinite:!1,slidesToShow:f,slidesToScroll:f,speed:800,className:"multi-shop-category-slider-package",afterChange:e=>{const t=Math.ceil(e/f);C(t+1)}},S=e=>{"next"===e?p.slickGoTo(m*f):"prev"===e&&p.slickGoTo((m-2)*f)},X=e=>{const t=e.Level;let n=u,r=A;if(n=n.slice(0,t),g(n),1===t){r=[],r[0]=e.Id,y(r);const t=e.ChildList.length>0?e.ChildList:[(i=AS({},e),o={Name:`${(0,ja.t)(Jn.THEME_CORE.HEADER_SLIDER.GO_TO_TARGET_TEXT,{targetText:e.Name})}`,Level:2},pS(i,bS(o)))];if(n.push(t),g(n),e.ChildList.length>0){const t=e.ChildList[0];if(t.ChildList.length>0){const e=_S(15,t.ChildList);n.push(...e),g(n),I(t.Name),r[1]=t.Id,y(r)}else g(n),I(""),r[1]="",y(r)}}else if(2===t)if(e.ChildList.length>0){const t=_S(15,e.ChildList);n.push(...t),g(n),I(e.Name),r[1]=e.Id,y(r)}else g(n),I(""),r[1]="",y(r);var i,o},T=()=>{let e=u;if(null==e?void 0:e.length){e=e.slice(0,1);const t=e[0].filter((e=>!e.IsSystemCategory));t&&t.length>0&&X(t[0])}},x=t=>{const n=t.Id;return(0,Ze.getPageUrl)(e,Ze.PAGE_TYPE.CATEGORY,{id:n})},U=t=>{const n=t.Id,r=t.Level,i=(0,Ze.getPageUrl)(e,Ze.PAGE_TYPE.CATEGORY,{id:n});(0,hc.selectContent)({id:n.toString(),name:t.Name,contentType:`CategoryLevel${r}`,linkUrl:i})};(0,z.useEffect)((()=>{if(C(1),u&&u.length>2){const e=(u.length-2)%f==0?Math.floor((u.length-2)/f):Math.floor((u.length-2)/f)+1;B(e)}else B(0)}),[p,u,f]),(0,z.useEffect)((()=>{const e=(null==n?void 0:n.List)||[];g([e])}),[n]);const N=(0,Qs.useSelector)((e=>e.user.retailStoreExpressLocationId));(0,z.useEffect)((()=>{T(),t({locationId:N})}),[N]);const{imageServiceConfig:R}=xe(),O=rt(R,Ji),V=(0,z.useCallback)((e=>{return n=function*(){const t={categoryId:e},n=xe(),r=dn(n),{shopId:i}=r;try{const n=yield(e=>{return n=[e],r=function*({streamInjection:e,payload:{categoryId:t}}){const{shopId:n}=e;try{const r=gt(`LayoutTemplateData/GetLayoutTemplateData?adCode=MobileHome_SpCatRecommendedBrand_ShopCategory_${t}&shopId=${n}`,e,!0);return((e=[])=>e.map((({Title:e,Link:t,PicturePath:{FullUrl:n=""}={FullUrl:""}})=>({alt:e,imgSrc:n,link:t}))))(yield Nn(r))}catch(r){return ze.error(`[ERROR] fetchRecommendedBrandList failed: ${Me(r)}: ${Je(r)}: shopId: ${n}, categoryId: ${t}`),Promise.reject(r)}},new Promise(((e,i)=>{var o=e=>{try{c(r.next(e))}catch(t){i(t)}},a=e=>{try{c(r.throw(e))}catch(t){i(t)}},c=t=>t.done?e(t.value):Promise.resolve(t.value).then(o,a);c((r=r.apply(void 0,n)).next())}));var n,r})({streamInjection:r,payload:t});Z(new Map(v.set(e,n)))}catch(o){ze.error(`[ERROR] fetchRecommendedBrand failed: ${Me(o)}: ${Je(o)}, ShopId: ${i}, categoryId: ${e}`)}},new Promise(((e,r)=>{var i=e=>{try{a(n.next(e))}catch(t){r(t)}},o=e=>{try{a(n.throw(e))}catch(t){r(t)}},a=t=>t.done?e(t.value):Promise.resolve(t.value).then(i,o);a((n=n.apply(void 0,null)).next())}));var n}),[v]);(0,z.useEffect)((()=>{!(0,M.isNil)(A[0])&&Ge()&&Q.current!==A[0]&&(Q.current=A[0],v.get(A[0])||(F.current&&clearTimeout(F.current),F.current=setTimeout((()=>{V(A[0])}),500)))}),[A,V]);const W=(0,z.useMemo)((()=>v.get(A[0])),[A,v]);(0,z.useEffect)((()=>{W&&(W.length?G(2):G(3))}),[W]);const _=null==(a=null==(o=null==i?void 0:i.icon)?void 0:o.display)||a;return z.createElement("li",{className:"nav-menu-li header-category-menu-li shop-category-multi-level-menu-li",onMouseEnter:()=>{s(!0),T()},onMouseLeave:()=>{s(!1),T()}},z.createElement("a",{className:"nav-menu-link"},z.createElement(FS,{style:r,weight:`${(null==(c=null==i?void 0:i.font)?void 0:c.weight)||""}`},z.createElement(ja.HT,{value:Jn.THEME_CORE.HEADER.CATEGORY})),_&&z.createElement("i",{style:r,className:l?"ico ico-close":"ico ico-chevron-down"})),l&&z.createElement(QS,{isShowMenu:l},u.map(((e,t)=>{const n=t+1;return n<=2&&z.createElement(yS,{key:n,layerLevel:n},e.map((e=>z.createElement(fS,{isActive:A.indexOf(e.Id)===t,hasChild:e.ChildList.length>0,layerLevel:n,onMouseEnter:()=>X(e),onClick:()=>{U(e)},key:e.Id},z.createElement(GS,{href:x(e)},z.createElement(vS,{layerLevel:n},e.Name),n<=2&&e.ChildList.length>0&&z.createElement("i",{className:"ico ico-chevron-right"}))))))})),u.length>2&&z.createElement(TS,{level3ColumCount:f},z.createElement(SS,null,z.createElement(XS,null,d)),h>1&&z.createElement(ZS,null,z.createElement(US,{sliderColor:J.blackThree,onClick:()=>{S("prev")}},1!==m&&z.createElement("i",{className:"ico ico-chevron-left"})),z.createElement(NS,null,m,"/",h),z.createElement(US,{sliderColor:J.blackThree,onClick:()=>{S("next")}},m!==h&&z.createElement("i",{className:"ico ico-chevron-right"}))),u.length>2&&z.createElement(wS,{checkLength:u.length,refFunction:e=>b(e),sliderSettingProps:AS({},E)},u.map(((e,t)=>{const n=t+1;return n>=3&&z.createElement(ES,{key:n},z.createElement(yS,{layerLevel:n},e.map((e=>z.createElement(fS,{isActive:A.includes(e.Id),onClick:()=>{U(e)},hasChild:e.ChildList.length>0,layerLevel:n,key:e.Id},z.createElement(GS,{href:x(e)},z.createElement(vS,{layerLevel:n},e.Name)))))))})))),!!(null==W?void 0:W.length)&&z.createElement(RS,null,z.createElement(SS,null,z.createElement(XS,null,z.createElement(ja.HT,{value:Jn.THEME_CORE.HEADER.RECOMMENDED_BRAND}))),z.createElement(OS,null,W.map(((e,t)=>z.createElement(VS,{key:`brand-${e.alt}-${t}`,href:e.link,onClick:()=>{(e=>{(0,hc.selectContent)({id:"",name:e.alt,contentType:"RecommendedBrands",linkUrl:e.link})})(e)}},z.createElement(WS,{src:e.imgSrc,alt:e.alt,onError:e=>{e.currentTarget.src=O}}))))))))}));var DS=Object.defineProperty,LS=Object.defineProperties,PS=Object.getOwnPropertyDescriptors,JS=Object.getOwnPropertySymbols,MS=Object.prototype.hasOwnProperty,zS=Object.prototype.propertyIsEnumerable,jS=(e,t,n)=>t in e?DS(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n;const KS=({isEditMode:e,classNamePrefix:t,hasApp:n,navStyle:r,enableSendAppLinkSMS:i,shopId:o,iosAppId:a,shopDomain:c,refUrl:l,androidPackageName:s,sendAppDownloadLink:u,sendAppResult:g,market:d,badgeStyle:I,searchList:p,activityList:b,categoryMenuSwitch:m,activityMenuSwitch:C,customLinkListMenuSwitch:h,activityMenu:B,customLinkListMenu:A,fetchSearchList:y,currentEditingItemKey:f,customLinkListMenuOpenIndex:G,isDownloadAndroidAPK:Q,isEnabledMultiShopCategory:F,shopCategoryList:v,promotionTargetList:Z,customerHeaderConfig:E,isEnableStoreExpressPage:S,fetchReCaptchaKey:X,reCaptchaKey:T,isEnableSendAppDownLoadLinkReCaptcha:x})=>{var U,N,R;const{navMenu:O={},searchBox:V={}}=E||{},[W,_]=(0,z.useState)(!1),[w,H]=(0,z.useState)({}),[Y,k]=(0,z.useState)("");return(0,z.useEffect)((()=>{var e;Ge()&&k(null==(e=null==window?void 0:window.location)?void 0:e.pathname),H({position:(null==O?void 0:O.position)||{}}),_(!0)}),[E]),(0,z.useEffect)((()=>{x&&X()}),[]),z.createElement("nav",{className:`${t}__nav-menu nav-menu ${(null==(U=w.position)?void 0:U.navMenuContainer)||""}`},z.createElement("ul",{className:`${t}__nav-menu-sub nav-menu-ul`},n&&z.createElement("li",{className:"sub-nav-li"},z.createElement("a",{className:"nav-submenu-link"},z.createElement("i",{className:"ico ico-mobile nav-submenu-icon",style:r})),z.createElement("div",{className:"download-app-menu nav-download-app-menu"},i&&z.createElement("div",{className:"download-app-menu-text"},z.createElement(ja.HT,{value:Jn.THEME_CORE.HEADER.DOWNLOAD_APP_DESCRIBE})),z.createElement(lG,{iosAppId:a,androidPackageName:s,shopId:o,sendAppDownloadLink:u,sendAppResult:g,isEnableSendAppLinkSms:i,refUrl:l,type:"header",market:d,isDownloadAndroidAPK:Q,isEnableSendAppDownLoadLinkReCaptcha:x}))),z.createElement("li",{className:"sub-nav-li"},z.createElement("a",{className:"nav-submenu-link","data-qe-id":"header-member-logout-text"},z.createElement("i",{className:"ico ico-user nav-submenu-icon",style:r})),z.createElement(oQ,{shopId:o,shopDomain:c})),z.createElement(cS,{shopId:o,shopDomain:c,navStyle:r,badgeStyle:I}),z.createElement(jE,{navStyle:r})),z.createElement("div",{className:`${t}__nav-menu-main`},W&&z.createElement("ul",{className:`nav-menu-ul ${(null==(N=w.position)?void 0:N.mainNavMenu)||""}`}," ",F?m.isTurnOn&&z.createElement(kS,{shopDomain:c,navStyle:r,customerConfig:O}):m.isTurnOn&&z.createElement(sF,{title:(0,ja.t)(Jn.THEME_CORE.HEADER.CATEGORY),dataSource:v,navStyle:r,dataType:Ut.CATEGORY,shopDomain:c,promotionTargetList:Z,customerConfig:O}),!S&&!0===C.isTurnOn&&b&&b.length>0&&z.createElement(sF,{title:(null==B?void 0:B.title)||(0,ja.t)(Jn.THEME_CORE.HEADER.ACTIVITY),dataSource:b,navStyle:r,dataType:Ut.ACTIVITY,customerConfig:O}),!S&&!0===h.isTurnOn&&A&&A.length>0&&A.filter((({isShowOnDesktop:e=!0})=>e)).map(((e,t)=>{const{itemKey:n,text:i,linkUrl:o="",additionalChildList:a=[]}=e;if(e.childList&&e.childList.length>0){const t=a.reduce(((e,t)=>{return n=((e,t)=>{for(var n in t||(t={}))MS.call(t,n)&&jS(e,n,t[n]);if(JS)for(var n of JS(t))zS.call(t,n)&&jS(e,n,t[n]);return e})({},e),r={[t.parentItemKey]:t.itemList.map((e=>({key:e.itemKey,title:e.text,link:e.linkUrl})))},LS(n,PS(r));var n,r}),{}),c=e.childList.map((e=>{var n;return{key:e.itemKey,title:e.text||(0,ja.t)(Jn.THEME_CORE.HEADER.LINK_WORD),link:e.linkUrl||"",hasChildList:!!t[e.itemKey]&&(null==(n=t[e.itemKey])?void 0:n.length)>0}}));return z.createElement(tF,{key:n,title:i,link:o,childList:c,additionalChildListData:t,navStyle:r,currentEditingItemKey:f,isDefaultOpen:f===n||(null==c?void 0:c.some((e=>e.key===f))),dataType:Ut.CUSTOM_LINK,customerConfig:O})}return z.createElement(cQ,{key:`custom-link-${t}`,navStyle:r,linkItem:e,customerConfig:O,dataType:Ut.CUSTOM_LINK})}))),z.createElement("span",{className:`sub-nav-li nav-search-box ${(null==(R=w.position)?void 0:R.subNavMenu)||""}`},z.createElement(dS,{isEditMode:e,shopId:o,shopDomain:c,searchList:p,fetchSearchList:y,navStyle:r,customerConfig:V}))))};class qS extends z.Component{constructor(e){super(e),this.state={isWaiting:!0}}componentDidMount(){this.timer=window.setTimeout((()=>{this.setState({isWaiting:!1})}),this.props.wait)}componentWillUnmount(){clearTimeout(this.timer)}render(){return this.state.isWaiting?null:this.props.children}}qS.defaultProps={wait:250};const $S=e=>{const{dependencies:t,onFBDialogClick:n}=e,r=Tc(t,"shopProfile.ShopThirdPartyConfigInfo.FacebookConfig.AppId"),i=`https://www.facebook.com/plugins/page.php?href=${Tc(t,"shopProfile.ShopThirdPartyConfigInfo.FacebookConfig.FansPageUrl")}&tabs=messages&width=340&height=450&small_header=false&adapt_container_width=true&hide_cover=false&show_facepile=true&appId=${r}`;return z.createElement("div",{className:"fb-messenger-dialog"},z.createElement("div",{className:"fb-messenger-dialog__header",onClick:n},z.createElement("div",{className:"fb-messenger-dialog__icon-messenger"},z.createElement("span",{className:"ico ico-messenger-fill"})),z.createElement("div",{className:"fb-messenger-dialog__title"},z.createElement(ja.HT,{value:Jn.THEME_CORE.TOOLBOX.FB_SEND_MESSEGE})),z.createElement("div",{className:"fb-messenger-dialog__icon-slim-minus"},z.createElement("span",{className:"ico ico-subtract"}))),z.createElement("iframe",{className:"fb-messenger-dialog__iframe",src:i,scrolling:"no",frameBorder:"0",allowTransparency:!0}))};class eX extends z.Component{constructor(e){super(e),this.tooltipElem=e=>z.createElement(qA,{type:"dark",tooltipCustomClass:"toolbox__tooltip",place:"left",isCustomTriggerNode:!0,id:e.itemKey,wording:e.id===qr.CUSTOM&&e.customName?e.customName:(0,ja.t)(`theme_core.toolbox.${e.id}`)}),this.toolboxButtonElem=(e,t=14)=>{const{dependencies:{imageServiceConfig:n,shopId:r}}=this.props,i=e.id===qr.FACEBOOK_MESSENGER?this.onFBDialogClick:void 0,o=qr.CUSTOM&&e.customName?e.customName:(0,ja.t)(`theme_core.toolbox.${e.id}`);return z.createElement(zA,{imageServiceConfig:n,shopId:r,size:t,id:e.id,imageUrl:e.imageUrlMobile,href:e.linkUrl,onClick:i,customTitle:e.customName,eventLabel:o})},this.onFBDialogClick=()=>{this.setState((e=>({isShowFBMessengerDialog:!e.isShowFBMessengerDialog})))},this.state={isShowFBMessengerDialog:!1}}render(){const{itemList:e,dependencies:t}=this.props,{isShowFBMessengerDialog:n}=this.state,r=e.find((e=>e.isPinned)),i=e.filter((e=>!e.isPinned));return z.createElement(z.Fragment,null,z.createElement(qS,{wait:1e3},z.createElement("div",{className:"toolbox__container toolbox--bounce-in"},i.map((e=>z.createElement("div",{className:"toolbox__item",key:e.itemKey},z.createElement("div",{"data-for":e.itemKey,"data-tip":"tooltip"},this.toolboxButtonElem(e,40)),this.tooltipElem(e)))),z.createElement("div",{className:"toolbox__item"},z.createElement(AA,{showAtPosition:0},z.createElement(zA,{size:40,id:"top"}))),r&&z.createElement(z.Fragment,null,z.createElement("div",{"data-for":r.itemKey,"data-tip":"tooltip"},this.toolboxButtonElem(r,50)),this.tooltipElem(r)))),n&&z.createElement($S,{onFBDialogClick:this.onFBDialogClick,dependencies:t}))}}eX.defaultProps={itemList:[]};var tX=Object.defineProperty,nX=Object.getOwnPropertySymbols,rX=Object.prototype.hasOwnProperty,iX=Object.prototype.propertyIsEnumerable,oX=(e,t,n)=>t in e?tX(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n;const aX=e=>{class t extends z.Component{componentDidMount(){const{fetchActivityList:e,fetchAuthIsLogin:t,fetchShoppingCartCount:n,fetchFavoriteCount:r,fetchFavoriteList:i,fetchMemberCollectionIdList:o,fetchUserRetailStoreExpress:a}=this.props;e(),t(),n(),r(),i(),o(),a()}render(){return z.createElement(e,((e,t)=>{for(var n in t||(t={}))rX.call(t,n)&&oX(e,n,t[n]);if(nX)for(var n of nX(t))iX.call(t,n)&&oX(e,n,t[n]);return e})({},this.props))}}const{mapStateToProps:n,mapDispatchToProps:r}=Ca([u,p,m,A,f,y,B,I]);return(0,Qs.connect)(n,r)(t)};var cX=(e=>(e.Home="Home",e.ShopCategory="ShopCategory",e.SalePage="SalePage",e.Location="Location",e.Empty="",e))(cX||{});const lX=(e,t)=>{return r=function*(){const{shopId:n,type:r,id:i}=t;try{const t=gt(`RetailStoreExpress/GetState/${n}?Type=${r}&SourceId=${i}`,e,!1),o=yield Nn(t);return null==o?void 0:o.Data}catch(o){return ze.error(`[ERROR] fetchGetState failed: ${Me(o)}: ${Je(o)}: shopId: ${n}`),null}},new Promise(((e,t)=>{var i=e=>{try{a(r.next(e))}catch(n){t(n)}},o=e=>{try{a(r.throw(e))}catch(n){t(n)}},a=t=>t.done?e(t.value):Promise.resolve(t.value).then(i,o);a((r=r.apply(void 0,null)).next())}));var r};var sX=n(2016);const uX=(e,t)=>{return i=function*(){const{shopId:n}=t;try{const t=gt(`zipcode/GetCityList?shopId=${n}`,e,!0),r=yield Nn(t);return r.length?null==r?void 0:r.map((e=>({value:e.ZipCode_City,label:e.ZipCode_City}))):[]}catch(r){return ze.error(`[ERROR] fetchGetCityList failed: ${Me(r)}: ${Je(r)}: shopId: ${n}`),[]}},new Promise(((e,t)=>{var r=e=>{try{a(i.next(e))}catch(n){t(n)}},o=e=>{try{a(i.throw(e))}catch(n){t(n)}},a=t=>t.done?e(t.value):Promise.resolve(t.value).then(r,o);a((i=i.apply(void 0,null)).next())}));var i},gX=e=>{return n=[e],r=function*({address:e,key:t,language:n="zh-TW"}){var r;try{const i=`https://maps.googleapis.com/maps/api/geocode/json?address=${e}&key=${t}&language=${n}`,o=yield Nn(i);return(null==(r=null==o?void 0:o.results)?void 0:r[0])||{}}catch(i){return ze.error(`[ERROR] fetchGoogleLocationWithAddress failed: ${Me(i)}: ${Je(i)}: address: ${e}`),null}},new Promise(((e,i)=>{var o=e=>{try{c(r.next(e))}catch(t){i(t)}},a=e=>{try{c(r.throw(e))}catch(t){i(t)}},c=t=>t.done?e(t.value):Promise.resolve(t.value).then(o,a);c((r=r.apply(void 0,n)).next())}));var n,r},dX=(e,t)=>{return r=function*(){const{shopId:n,city:i}=t;try{const t=gt(`zipcode/GetZipCodeList?shopId=${n}&city=${i}`,e,!0),r=yield Nn(t);return r.length?null==r?void 0:r.map((e=>({value:e.ZipCode_District,label:e.ZipCode_District,code:e.ZipCode_Code}))):[]}catch(r){return ze.error(`[ERROR] fetchGetZipCodeList failed: ${Me(r)}: ${Je(r)}: shopId: ${n} city: ${i}`),[]}},new Promise(((e,t)=>{var i=e=>{try{a(r.next(e))}catch(n){t(n)}},o=e=>{try{a(r.throw(e))}catch(n){t(n)}},a=t=>t.done?e(t.value):Promise.resolve(t.value).then(i,o);a((r=r.apply(void 0,null)).next())}));var r},IX=e=>{return n=[e],r=function*({latlng:e,key:t,language:n="zh-TW"}){var r;try{const i=`https://maps.googleapis.com/maps/api/geocode/json?latlng=${e}&key=${t}&language=${n}`,o=yield Nn(i);return(null==(r=null==o?void 0:o.results)?void 0:r[0])||{}}catch(i){return ze.error(`[ERROR] fetchGoogleLocationWithLatlng failed: ${Me(i)}: ${Je(i)}: latlng: ${e}`),null}},new Promise(((e,i)=>{var o=e=>{try{c(r.next(e))}catch(t){i(t)}},a=e=>{try{c(r.throw(e))}catch(t){i(t)}},c=t=>t.done?e(t.value):Promise.resolve(t.value).then(o,a);c((r=r.apply(void 0,n)).next())}));var n,r},pX=(e,t)=>{return r=function*(){const{shopId:n,latitude:r,longitude:i}=t;try{const t=gt(`RetailStoreExpress/GetRetailStoreMatchList/${n}?latitude=${r}&longitude=${i}`,e,!1);return(yield Nn(t)).Data}catch(o){return ze.error(`[ERROR] fetchGetRetailStoreMatchList failed: ${Me(o)}: ${Je(o)}: shopId: ${n}`),null}},new Promise(((e,t)=>{var i=e=>{try{a(r.next(e))}catch(n){t(n)}},o=e=>{try{a(r.throw(e))}catch(n){t(n)}},a=t=>t.done?e(t.value):Promise.resolve(t.value).then(i,o);a((r=r.apply(void 0,null)).next())}));var r},bX=K.default.div`
    width: ${({width:e})=>e};
    height: 40px;
    background-color: ${({isDisabled:e})=>e?J.grey:"#166938"};
    color: ${J.white};
    border-radius: 5px;
    display: flex;
    justify-content: center;
    align-items: center;
    font-size: ${Ce.fontSizeDefault};
    cursor: pointer;
`,mX=K.default.div`
    display: flex;
    position: relative;
`,CX=K.default.div`
    border-radius: 8px;
    z-index: ${L+1};
    background: ${J.white};
    box-shadow: 0 0 10px 0 rgba(0, 0, 0, 0.25);
    position: absolute;
    left: 50%;
    top: 50%;
    transform: translate(-50%, -50%);
    width: 290px;
    height: 163px;
    padding: 15px;
    flex-direction: column;
    justify-content: space-between;
    display: flex;
`,hX=(0,K.default)(bX)`
    border: ${({isDisabled:e})=>e?`${J.grey} 1px solid`:"#166938 1px solid"};
    background: ${J.white};
    margin-right: 10px;
    color: #166938;
`,BX=K.default.div`
    font-size: 14px;
    font-weight: 400;
    text-align: center;
    line-height: 22px;
`,AX=K.default.div`
    display: flex;
    justify-content: center;
    align-items: center;
    height: 100%;
`,yX=({onConfirmClick:e,onCancelClick:t,onClose:n,mainText:r,isShowCancelBtn:i})=>{const o=e=>{e.stopPropagation()},a=z.createElement(CX,{confirmText:(0,ja.t)(Jn.THEME_CORE.STORE_EXPRESS.CONFIRM),modalMode:Dl.MEDIUM,handleConfirmClick:()=>n&&n(),isShowCloseButton:!1},z.createElement(AX,null,z.createElement(BX,null,r)),z.createElement(mX,null,z.createElement(hX,{onClick:e=>{o(e),t&&t(e)},width:"50%",isDisabled:!1},(0,ja.t)(Jn.THEME_CORE.DEFAULT.CANCEL)),z.createElement(bX,{onClick:t=>{o(t),e&&e(t)},width:i?"50%":"100%",isDisabled:!1},(0,ja.t)(Jn.THEME_CORE.STORE_EXPRESS.CONFIRM))));return(0,Hl.createPortal)(a,document.querySelector("#modal-root")||document.body)},fX=K.default.div`
    color: ${J.white};
`,GX=K.default.div`
    z-index: ${L};
    background: rgba(0, 0, 0, 0.65);
    border-radius: 8px;
    opacity: ${({isOpen:e})=>e?1:0};
    position: absolute;
    left: 50%;
    top: 50%;
    transform: translate(-50%, -50%);
    transition:
        visibility 0.3s linear,
        opacity 0.3s linear;
    width: 149px;
    height: 46px;
    padding: 12px;
    display: flex;
    justify-content: center;
    align-items: center;
`,QX=({text:e,afterClose:t})=>{const[n,r]=(0,z.useState)(!0),i=(0,z.useRef)(null);return(0,z.useEffect)((()=>(i.current=setTimeout((()=>{r(!1),t&&t()}),3e3),()=>{clearTimeout(i.current)})),[]),z.createElement(GX,{isOpen:n},z.createElement(fX,null,e))};var FX=(e,t,n)=>new Promise(((r,i)=>{var o=e=>{try{c(n.next(e))}catch(t){i(t)}},a=e=>{try{c(n.throw(e))}catch(t){i(t)}},c=e=>e.done?r(e.value):Promise.resolve(e.value).then(o,a);c((n=n.apply(e,t)).next())}));const vX=K.default.div`
    font-size: 18px;
    font-weight: 500;
    margin-bottom: 8px;
`,ZX=K.default.div`
    font-size: 14px;
    font-weight: 500;
    margin-top: 8px;
`,EX=K.default.div`
    font-size: 14px;
    font-weight: 400;
    margin-bottom: 8px;
`,SX=K.default.div`
    color: red;
`,XX=K.default.div`
    display: flex;
`,TX=(0,K.default)(XX)`
    justify-content: center;
    align-items: center;
    cursor: pointer;
    color: '#333333';
`,xX=(0,K.default)(XX)`
    justify-content: center;
    align-items: center;
`,UX=(0,K.default)(xX)`
    width: 40%;
    flex-direction: column;
    background: #fff9e6;
`,NX=K.default.div`
    border-radius: 8px;
    display: flex;
    min-height: 350px;
    overflow: hidden;
    margin-bottom: 24px;
    margin-top: 16px;
`,RX=K.default.img`
    width: 175px;
`,OX=K.default.img`
    width: 20px;
`,VX=K.default.img`
    width: 40px;
`,WX=K.default.div`
    padding: 20px 24px;
    width: ${({width:e})=>e};
    background: ${J.white};
    box-sizing: border-box;
    justify-content: space-around;
    display: flex;
    flex-direction: column;
`,_X=K.default.div`
    display: flex;
    justify-content: space-between;
    margin-bottom: 8px;
`,wX=K.default.div`
    margin-left: 4px;
    color: ${J.blackThree};
`,HX=K.default.div`
    background: #cacaca;
    position: absolute;
    left: 50%;
    top: 50%;
    transform: translate(-50%, -50%);
    border-radius: 8px;
    padding: 12px;
`,YX=K.default.div`
    width: 100%;
    ${({isOdd:e})=>e&&"\n       margin-right: 8px;\n    "}
    & .Select-clear-zone {
        display: none;
    }
`,kX=K.default.input`
    font-size: 14px;
    box-sizing: border-box;
    width: 100%;
    height: 40px;
    padding: 7px;
    color: ${J.brownishGrey};
    border: solid 1px ${({isError:e})=>e?J.grapefruit:J.grey};
    border-radius: 3px;
    background-color: ${J.white};
`,DX=K.default.span`
    margin-top: 8px;
    font-size: 14px;
    color: ${J.grapefruit};
`,LX=K.default.div`
    display: flex;
    justify-content: end;
`,PX=K.default.div`
    width: ${({width:e})=>e};
    height: 40px;
    background-color: ${({isDisabled:e})=>e?J.grey:"#166938"};
    color: ${J.white};
    border-radius: 5px;
    display: flex;
    justify-content: center;
    align-items: center;
    font-size: ${Ce.fontSizeDefault};
    cursor: pointer;
`,JX=({onSetting:e,addressInfo:t})=>{const[n,r]=(0,z.useState)(!1),[i,o]=(0,z.useState)(""),[a,c]=(0,z.useState)([]),[l,s]=(0,z.useState)([]),[u,g]=(0,z.useState)({cityError:!1,blockError:!1,addressError:!1}),[d,I]=(0,z.useState)(null),[p,b]=(0,z.useState)(null),[m,C]=(0,z.useState)(""),[h,B]=(0,z.useState)(""),[A,y]=(0,z.useState)(!1),[f,G]=(0,z.useState)(!1),Q=xe(),F=dn(Q),{shopId:v,imageServiceConfig:Z}=Q||{},E=e=>FX(void 0,null,(function*(){I(e),b(null);const t=yield dX(F,{shopId:v,city:null==e?void 0:e.value});return s(t),t}));(0,z.useEffect)((()=>{FX(void 0,null,(function*(){const e=yield uX(F,v);if(c(e),t){const n=e.find((e=>{var n;return null==(n=t.City)?void 0:n.includes(e.value)})),r=(yield E(n)).find((e=>{var n;return null==(n=t.District)?void 0:n.includes(e.value)}));b(r),C(t.Address),B(t.Note)}}))}),[]);const S=()=>FX(void 0,null,(function*(){var t,n,i,a;const{formatted_address:c,geometry:l}=yield gX({address:d.value+p.value+m,key:Q.serverRenderData.googleApiKey});let s=[];if(!c)return y(!1),r(!0),void o((0,ja.t)(Jn.THEME_CORE.STORE_EXPRESS.AUTO_LOCATE_FAILED));if(s=null==c?void 0:c.split(p.value),s.length>1&&C(s[1]),null==l?void 0:l.location){const{RetailStoreList:r}=yield pX(F,{shopId:v,latitude:null==(t=null==l?void 0:l.location)?void 0:t.lat,longitude:null==(n=null==l?void 0:l.location)?void 0:n.lng});if(r&&r.length>0){const t={ZipCode:p.code,City:d.value,District:p.value,Address:s[1]||m,Note:h,Latitude:null==(i=null==l?void 0:l.location)?void 0:i.lat,Longitude:null==(a=null==l?void 0:l.location)?void 0:a.lng},n=d.value+p.value+(s[1]||m);e&&e({fullAddress:n,locationList:r,addressInfo:t,activeLocation:r[0]}),y(!1)}else G(!0)}}));return z.createElement("div",null,z.createElement(NX,null,!t&&z.createElement(UX,null,z.createElement(RX,{src:rt(Z,Eo)}),z.createElement(ZX,null,(0,ja.t)(Jn.THEME_CORE.STORE_EXPRESS.WELCOME))),z.createElement(WX,{width:t?"100%":"60%"},z.createElement(_X,null,z.createElement(vX,null," ",(0,ja.t)(Jn.THEME_CORE.STORE_EXPRESS.INPUT_ADDRESS)),z.createElement(TX,{onClick:()=>FX(void 0,null,(function*(){navigator.geolocation.getCurrentPosition((e=>{(e=>{FX(void 0,null,(function*(){var t,n,i,c;const l=null==(t=null==e?void 0:e.coords)?void 0:t.latitude,s=null==(n=null==e?void 0:e.coords)?void 0:n.longitude;if(o((0,ja.t)(Jn.THEME_CORE.STORE_EXPRESS.AUTO_LOCATE_SUCCESS)),r(!0),!l||!s)return;const u=yield IX({latlng:`${l},${s}`,key:Q.serverRenderData.googleApiKey});if(!(null==u?void 0:u.formatted_address))return y(!0),r(!0),void o((0,ja.t)(Jn.THEME_CORE.STORE_EXPRESS.AUTO_LOCATE_FAILED));{const e=null==(i=null==u?void 0:u.formatted_address)?void 0:i.split("台灣");if(e.length>1){const t=a.find((t=>{var n;return null==(n=e[1])?void 0:n.includes(t.value)})),n=(yield E(t)).find((t=>{var n;return null==(n=e[1])?void 0:n.includes(t.value)}));b(n);const r=null==(c=null==u?void 0:u.formatted_address)?void 0:c.split(n.value);e.length>1&&C(r[1])}}}))})(e)}),(()=>{r(!0),o((0,ja.t)(Jn.THEME_CORE.STORE_EXPRESS.AUTO_LOCATE_FAILED))}))}))},z.createElement(OX,{src:rt(Z,Zo)}),z.createElement(wX,null,(0,ja.t)(Jn.THEME_CORE.STORE_EXPRESS.LOCATION_SERVICE)))),z.createElement(XX,null,z.createElement(YX,{isOdd:!0},z.createElement(XX,null,z.createElement(EX,null,(0,ja.t)(Jn.THEME_CORE.STORE_EXPRESS.CITY)),z.createElement(SX,null,"*")),z.createElement(sX.Ay,{onChange:E,value:d||"",style:{borderColor:u.cityError?J.grapefruit:J.grey,fontSize:"14px"},placeholder:(0,ja.t)(Jn.THEME_CORE.STORE_EXPRESS.SELECT_CITY),options:a,defaultOptions:!0,menuStyle:{fontSize:"14px",height:"150px"},menuContainerStyle:{zIndex:2}}),u.cityError&&z.createElement(DX,null,(0,ja.t)(Jn.THEME_CORE.STORE_EXPRESS.NO_CHOICE))),z.createElement(YX,null,z.createElement(XX,null,z.createElement(EX,null,(0,ja.t)(Jn.THEME_CORE.STORE_EXPRESS.BLOCK)),z.createElement(SX,null,"*")),z.createElement(sX.Ay,{onChange:e=>{b(e)},value:p||"",style:{borderColor:u.blockError?J.grapefruit:J.grey,fontSize:"14px"},disabled:!d,placeholder:(0,ja.t)(Jn.THEME_CORE.STORE_EXPRESS.SELECT_BLOCK),defaultOptions:!0,options:l,menuStyle:{fontSize:"14px",height:"150px"},menuContainerStyle:{zIndex:2}}),u.blockError&&z.createElement(DX,null,(0,ja.t)(Jn.THEME_CORE.STORE_EXPRESS.NO_CHOICE)))),z.createElement(YX,null,z.createElement(XX,null,z.createElement(EX,null,(0,ja.t)(Jn.THEME_CORE.STORE_EXPRESS.ADDRESS)),z.createElement(SX,null,"*")),z.createElement(kX,{isError:u.addressError,value:m,onChange:e=>{C(e.currentTarget.value)},placeholder:(0,ja.t)(Jn.THEME_CORE.STORE_EXPRESS.INPUT_ADDRESS)}),u.addressError&&z.createElement(DX,null,(0,ja.t)(Jn.THEME_CORE.PRODUCT.REQUIRED))),z.createElement(YX,null,z.createElement(XX,null,z.createElement(EX,null,(0,ja.t)(Jn.THEME_CORE.STORE_EXPRESS.COMMENT))),z.createElement(kX,{isError:!1,value:h,onChange:e=>{B(e.currentTarget.value)},placeholder:(0,ja.t)(Jn.THEME_CORE.STORE_EXPRESS.INPUT_FLOOR)})))),z.createElement(LX,null,z.createElement(PX,{width:"100px",isDisabled:A,onClick:()=>(()=>{if(y(!0),g({cityError:!d,blockError:!p,addressError:!m}),m&&p&&d)return S();y(!1)})()},A?(0,ja.t)(Jn.THEME_CORE.STORE_EXPRESS.CHINCKING):(0,ja.t)(Jn.THEME_CORE.STORE_EXPRESS.CONFIRM))),A&&z.createElement(HX,null,z.createElement(VX,{src:rt(Z,mo)})),f&&z.createElement(yX,{mainText:(0,ja.t)(Jn.THEME_CORE.STORE_EXPRESS.ADDRESS_NOT_FOUND),onConfirmClick:e=>{G(!1),b(null),I(null),C(""),y(!1)},onClose:()=>{G(!1)},isShowCancelBtn:!1}),n&&z.createElement(QX,{text:i,afterClose:()=>{setTimeout((()=>r(!1)),1e3)}}))},MX=(e,t)=>{return r=function*(){const{shopId:n,addressInfo:i}=t;try{const t=gt(`RetailStoreExpress/SetDeliveryAddress/${n}`,e,!1),r={method:qt.RequestMethod.POST,body:JSON.stringify(i)};return(yield Nn(t,r)).Data}catch(r){return ze.error(`[ERROR] updateDeliveryAddress failed: ${Me(r)}: ${Je(r)}: shopId: ${n}`),null}},new Promise(((e,t)=>{var i=e=>{try{a(r.next(e))}catch(n){t(n)}},o=e=>{try{a(r.throw(e))}catch(n){t(n)}},a=t=>t.done?e(t.value):Promise.resolve(t.value).then(i,o);a((r=r.apply(void 0,null)).next())}));var r},zX=(e,t)=>{return r=function*(){const{shopId:n,sourceLocationId:r,targetLocationId:i}=t;try{const t=gt(`ShoppingCartV4/UpdateItemList/${n}`,e,!1),o={method:qt.RequestMethod.POST,body:JSON.stringify({SourceLocationId:r,TargetLocationId:i})};return void(yield Nn(t,o))}catch(o){return void ze.error(`[ERROR] updateShoppingCartItemList failed: ${Me(o)}: ${Je(o)}: shopId: ${n}`)}},new Promise(((e,t)=>{var i=e=>{try{a(r.next(e))}catch(n){t(n)}},o=e=>{try{a(r.throw(e))}catch(n){t(n)}},a=t=>t.done?e(t.value):Promise.resolve(t.value).then(i,o);a((r=r.apply(void 0,null)).next())}));var r};var jX=Object.defineProperty,KX=Object.defineProperties,qX=Object.getOwnPropertyDescriptors,$X=Object.getOwnPropertySymbols,eT=Object.prototype.hasOwnProperty,tT=Object.prototype.propertyIsEnumerable,nT=(e,t,n)=>t in e?jX(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,rT=(e,t,n)=>new Promise(((r,i)=>{var o=e=>{try{c(n.next(e))}catch(t){i(t)}},a=e=>{try{c(n.throw(e))}catch(t){i(t)}},c=e=>e.done?r(e.value):Promise.resolve(e.value).then(o,a);c((n=n.apply(e,t)).next())}));const iT=K.default.div`
    font-size: 20px;
    font-weight: 500;
    margin-bottom: 8px;
`,oT=K.default.div`
    display: flex;
`,aT=(0,K.default)(oT)`
    justify-content: space-between;
    align-items: baseline;
    margin-top: 20px;
`,cT=K.default.div`
    height: auto;
    background: #eeeeee;
    padding: 4px 24px 24px 24px;
    width: 640px;
    border-radius: 8px;
`,lT=K.default.div`
    font-size: 18px;
    font-weight: 500;
`,sT=K.default.div`
    font-size: 16px;
    font-weight: 400;
    line-height: 1.5;
`,uT=K.default.div`
    background: ${J.white};
    border-radius: 8px;
    padding: 24px;
    width: 100%;
    margin-bottom: 8px;
    box-sizing: border-box;
    margin-top: 12px;
`,gT=K.default.div`
    color: #0279ff;
    font-size: 16px;
    font-weight: 400;
    cursor: pointer;
`,dT=K.default.div`
    cursor: pointer;
    margin-top: 12px;
    margin-bottom: 12px;
    padding: 12px;
    border: solid 1px ${({isActive:e})=>e?"#3B82F6":J.grey};
    border-radius: 5px;
    justify-content: space-between;
    display: flex;
    background-color: ${({isActive:e})=>e?"rgba(59, 130, 246, .1)":J.white};
`,IT=K.default.div`
    font-size: 14px;
    font-weight: 400;
`,pT=K.default.div`
    font-size: 12px;
    font-weight: 400;
    color: ${J.brownishGrey};
`,bT=K.default.div`
    font-size: 12px;
    font-weight: 400;
    color: ${J.warmGrey};
    margin-top: 4px;
`,mT=K.default.div`
    z-index: ${D};
    border-radius: 50%;
    font-size: 24px;
    transition: 0.15s background-color;

    :hover {
        cursor: pointer;
    }
`,CT=K.default.i`
    transition: transform 0.25s;
    margin-right: 8px;
    font-size: 24px;
    cursor: pointer;
`,hT=K.default.div`
    width: ${({width:e})=>e};
    height: 40px;
    background-color: ${({isDisabled:e})=>e?J.grey:"#166938"};
    color: ${J.white};
    border-radius: 5px;
    display: flex;
    justify-content: center;
    align-items: center;
    font-size: ${Ce.fontSizeDefault};
    cursor: pointer;
`,BT=K.default.div`
    display: flex;
    justify-content: end;
    margin-top: 16px;
`,AT=({addressInfo:e,onClose:t})=>{const[n,r]=(0,z.useState)(null),[i,o]=(0,z.useState)(null),[a,c]=(0,z.useState)([]),[l,s]=(0,z.useState)(null),[u,g]=(0,z.useState)(null),[d,I]=(0,z.useState)(!1),[p,b]=(0,z.useState)(!1),[m,C]=(0,z.useState)(!1),[h,B]=(0,z.useState)("DEFAULT"),A=xe(),y=dn(A),{shopId:f}=A||{},G=(0,Qs.useDispatch)(),{shoppingCart:Q}=(0,Qs.useSelector)((e=>e)),{shoppingCartCount:F=0}=Q||{};(0,z.useEffect)((()=>{r(e),e&&(o(e.City+e.District+e.Address),s(e.RetailStore),g(e.RetailStore),v(e.Latitude,e.Longitude))}),[]);const v=(e,t)=>rT(void 0,null,(function*(){const{RetailStoreList:n}=yield pX(y,{shopId:f,latitude:e,longitude:t});c(n)})),Z=e=>{e.stopPropagation()},E=(e,t)=>rT(void 0,null,(function*(){const n=(i=((e,t)=>{for(var n in t||(t={}))eT.call(t,n)&&nT(e,n,t[n]);if($X)for(var n of $X(t))tT.call(t,n)&&nT(e,n,t[n]);return e})({},t),o={LocationId:null==e?void 0:e.LocationId,Distance:null==e?void 0:e.Distance},KX(i,qX(o)));var i,o;yield MX(y,{addressInfo:n,shopId:f}),s(e),g(e),r(n),G(eh()),X(e)})),S=(e,t)=>{Z(t),C(!0),B(e)},X=e=>{C(!1),B("DEFAULT"),g(e)},T=()=>{E(u,n),g(u),zX(y,{shopId:f,sourceLocationId:l.LocationId,targetLocationId:u.LocationId}),I(!1)},x=e=>{Z(e),n?t&&t(!0):b(!0)};return z.createElement(oy,{isEditMode:!1,onClick:Z},z.createElement(cT,{onClick:Z},z.createElement(aT,null,z.createElement(oT,null,m&&z.createElement(CT,{className:"ico ico-chevron-left",onClick:()=>{X(l)}}),z.createElement(iT,null,!n||m&&"ADDRESS"===h?(0,ja.t)(Jn.THEME_CORE.STORE_EXPRESS.ADDRESS_TITLE):m&&"LOCATION"===h?(0,ja.t)(Jn.THEME_CORE.STORE_EXPRESS.LOCATION_TITLE):(0,ja.t)(Jn.THEME_CORE.STORE_EXPRESS.RECEIVER_INFO))),z.createElement(mT,{className:"ico ico-close",onClick:e=>x(e)})),!n||m&&"ADDRESS"===h?z.createElement(z.Fragment,null,z.createElement(JX,{onSetting:e=>rT(void 0,null,(function*(){const{locationList:t,addressInfo:n,fullAddress:r,activeLocation:i}=e;o(r),c(t),E(i,n)})),isEdit:m&&"ADDRESS"===h,addressInfo:n}),p&&z.createElement(yX,{mainText:(0,ja.t)(Jn.THEME_CORE.STORE_EXPRESS.LEFT_HINT),onConfirmClick:e=>{window.location.href="/"},onCancelClick:e=>{b(!1)},onClose:()=>b(!1),isShowCancelBtn:!0})):m&&"LOCATION"===h?z.createElement(z.Fragment,null,z.createElement(uT,null,z.createElement(sT,null,i),z.createElement(sT,null,(0,ja.t)(Jn.THEME_CORE.STORE_EXPRESS.AVALIABLE_LOCATIONS)),null==a?void 0:a.map((e=>z.createElement(dT,{onClick:()=>g(e),isActive:u.LocationId===e.LocationId},z.createElement(IT,null,e.LocationId," ",e.Name),z.createElement(pT,null,(0,ja.t)(Jn.THEME_CORE.STORE_EXPRESS.DISTANCE),e.Distance,"m"))))),z.createElement(BT,null,z.createElement(hT,{onClick:e=>{u.LocationId===l.LocationId?x(e):(e=>{rT(void 0,null,(function*(){Z(e),G(ZC()),F>0?I(!0):T()}))})(e)},width:"100px",isDisabled:!1},(0,ja.t)(Jn.THEME_CORE.STORE_EXPRESS.CONFIRM))),d&&z.createElement(yX,{mainText:(0,ja.t)(Jn.THEME_CORE.STORE_EXPRESS.CHANGE_LOCATION_HINT,{locationName:u.Name}),onConfirmClick:e=>{T()},onCancelClick:e=>{g(l),I(!1)},onClose:()=>I(!1),isShowCancelBtn:!0})):z.createElement("div",null,z.createElement(uT,null,z.createElement(lT,null,(0,ja.t)(Jn.THEME_CORE.STORE_EXPRESS.ADDRESS_TITLE)),z.createElement(aT,null,z.createElement(sT,null,i),z.createElement(gT,{onClick:e=>S("ADDRESS",e)},(0,ja.t)(Jn.THEME_CORE.STORE_EXPRESS.MODIFY)))),z.createElement(uT,null,z.createElement(lT,null,(0,ja.t)(Jn.THEME_CORE.STORE_EXPRESS.ACTIVE_LOCATION)),z.createElement(aT,null,z.createElement(sT,null,(null==l?void 0:l.Name)||"",null==l?void 0:l.ServiceTime.map((e=>z.createElement(bT,null,e)))),z.createElement(gT,{onClick:e=>S("LOCATION",e)},(0,ja.t)(Jn.THEME_CORE.STORE_EXPRESS.MODIFY)))),z.createElement(BT,null,z.createElement(hT,{onClick:e=>{t&&t(!0)},width:"100px",isDisabled:!1},(0,ja.t)(Jn.THEME_CORE.STORE_EXPRESS.CONFIRM))))))};var yT=(e,t,n)=>new Promise(((r,i)=>{var o=e=>{try{c(n.next(e))}catch(t){i(t)}},a=e=>{try{c(n.throw(e))}catch(t){i(t)}},c=e=>e.done?r(e.value):Promise.resolve(e.value).then(o,a);c((n=n.apply(e,t)).next())}));const fT=K.default.div`
    font-size: 16px;
    font-weight: 500;
    margin-bottom: 8px;
`,GT=K.default.div`
    font-size: 14px;
    font-weight: 500;
    margin-top: 16px;
`,QT=K.default.div`
    font-size: 14px;
    font-weight: 400;
    margin-bottom: 8px;
`,FT=K.default.div`
    color: red;
`,vT=K.default.div`
    display: flex;
    align-items: baseline;
`,ZT=(0,K.default)(vT)`
    justify-content: center;
    align-items: center;
    cursor: pointer;
`,ET=(0,K.default)(vT)`
    justify-content: center;
    align-items: center;
`,ST=(0,K.default)(ET)`
    width: 100%;
    flex-direction: column;
    padding-top: 12px;
`,XT=K.default.div`
    border-radius: 8px;
    min-height: 350px;
    overflow: hidden;
    margin: 12px;
    background: ${J.white};
`,TT=K.default.img`
    width: 175px;
`,xT=K.default.img`
    width: 18px;
`,UT=K.default.img`
    width: 40px;
`,NT=K.default.div`
    padding: 20px;
    width: 100%;
    box-sizing: border-box;
    justify-content: space-around;
    display: flex;
    flex-direction: column;
`,RT=K.default.div`
    display: flex;
    justify-content: space-between;
    margin-bottom: 8px;
`,OT=K.default.div`
    margin-left: 4px;
    font-weight: 400;
    font-size: 14px;
    color: ${J.blackThree};
`,VT=K.default.div`
    background: rgba(0, 0, 0, 0.4);
    position: fixed;
    top: 0;
    bottom: 0;
    left: 0;
    right: 0;
`,WT=K.default.div`
    background: #cacaca;
    position: absolute;
    left: 50%;
    top: 50%;
    transform: translate(-50%, -50%);
    border-radius: 8px;
    padding: 12px;
`,_T=K.default.div`
    width: 100%;
    ${({isOdd:e})=>e&&"\n       margin-right: 8px;\n    "}
    margin-bottom: 16px;
    & .Select-clear-zone {
        display: none;
    }
`,wT=K.default.input`
    font-size: 14px;
    box-sizing: border-box;
    width: 100%;
    height: 40px;
    padding: 7px;
    color: ${J.brownishGrey};
    border: solid 1px ${({isError:e})=>e?J.grapefruit:J.grey};
    border-radius: 3px;
    background-color: ${J.white};
`,HT=K.default.span`
    margin-top: 8px;
    font-size: 14px;
    color: ${J.grapefruit};
`,YT=K.default.div`
    background: ${J.white};
    position: fixed;
    bottom: 0;
    width: 100%;
    box-sizing: border-box;
    padding: 16px 12px 32px 12px;
`,kT=K.default.div`
    width: ${({width:e})=>e};
    height: 40px;
    background-color: ${({isDisabled:e})=>e?J.grey:"#166938"};
    color: ${J.white};
    border-radius: 5px;
    display: flex;
    justify-content: center;
    align-items: center;
    font-size: ${Ce.fontSizeDefault};
    cursor: pointer;
`,DT=K.default.div`
    border-radius: 8px;
    z-index: ${D};
    background: ${J.white};
    box-shadow: 0 0px 10px 0 rgba(0, 0, 0, 0.25);
    position: absolute;
    left: 50%;
    top: 50%;
    transform: translate(-50%, -50%);
    width: 290px;
    height: 163px;
    padding: 15px;
    flex-direction: column;
    justify-content: space-between;
    display: flex;
`,LT=K.default.div`
    font-size: 14px;
    font-weight: 400;
    text-align: center;
    line-height: 22px;
    margin-top: 24px;
`,PT=(K.default.div`
    z-index: ${D};
    position: absolute;
    font-size: 32px;
    transition: 0.15s background-color;
    right: 12px;
    :hover {
        cursor: pointer;
    }
`,({onSetting:e,addressInfo:t})=>{const[n,r]=(0,z.useState)(!1),[i,o]=(0,z.useState)(""),[a,c]=(0,z.useState)([]),[l,s]=(0,z.useState)([]),[u,g]=(0,z.useState)({cityError:!1,blockError:!1,addressError:!1}),[d,I]=(0,z.useState)(null),[p,b]=(0,z.useState)(null),[m,C]=(0,z.useState)(""),[h,B]=(0,z.useState)(""),[A,y]=(0,z.useState)(!1),[f,G]=(0,z.useState)(!1),Q=xe(),F=dn(Q),{shopId:v,imageServiceConfig:Z}=Q||{},E=e=>yT(void 0,null,(function*(){I(e),b(null);const t=yield dX(F,{shopId:v,city:null==e?void 0:e.value});return s(t),t}));(0,z.useEffect)((()=>{yT(void 0,null,(function*(){const e=yield uX(F,v);if(c(e),t){const n=e.find((e=>{var n;return null==(n=t.City)?void 0:n.includes(e.value)})),r=(yield E(n)).find((e=>{var n;return null==(n=t.District)?void 0:n.includes(e.value)}));b(r),C(t.Address),B(t.Note)}}))}),[]);const S=()=>yT(void 0,null,(function*(){var t,n,i,a;const{formatted_address:c,geometry:l}=yield gX({address:d.value+p.value+m,key:Q.serverRenderData.googleApiKey});let s=[];if(!c)return y(!1),r(!0),void o((0,ja.t)(Jn.THEME_CORE.STORE_EXPRESS.AUTO_LOCATE_FAILED));if(s=null==c?void 0:c.split(p.value),s.length>1&&C(s[1]),null==l?void 0:l.location){const{RetailStoreList:r}=yield pX(F,{shopId:v,latitude:null==(t=null==l?void 0:l.location)?void 0:t.lat,longitude:null==(n=null==l?void 0:l.location)?void 0:n.lng});if(r&&r.length>0){const t={ZipCode:p.code,City:d.value,District:p.value,Address:s[1]||m,Note:h,Latitude:null==(i=null==l?void 0:l.location)?void 0:i.lat,Longitude:null==(a=null==l?void 0:l.location)?void 0:a.lng},n=d.value+p.value+(s[1]||m);e&&e({fullAddress:n,locationList:r,addressInfo:t,activeLocation:r[0]}),y(!1)}else G(!0)}}));return z.createElement("div",null,z.createElement(XT,null,!t&&z.createElement(ST,null,z.createElement(TT,{src:rt(Z,Eo)}),z.createElement(GT,null," ",(0,ja.t)(Jn.THEME_CORE.STORE_EXPRESS.WELCOME))),z.createElement(NT,null,z.createElement(RT,null,z.createElement(fT,null," ",(0,ja.t)(Jn.THEME_CORE.STORE_EXPRESS.INPUT_ADDRESS)),z.createElement(ZT,{onClick:()=>yT(void 0,null,(function*(){navigator.geolocation.getCurrentPosition((e=>{(e=>{yT(void 0,null,(function*(){var t,n,i,c;const l=null==(t=null==e?void 0:e.coords)?void 0:t.latitude,s=null==(n=null==e?void 0:e.coords)?void 0:n.longitude;if(o((0,ja.t)(Jn.THEME_CORE.STORE_EXPRESS.AUTO_LOCATE_SUCCESS)),r(!0),!l||!s)return;const u=yield IX({latlng:`${l},${s}`,key:Q.serverRenderData.googleApiKey});if(!(null==u?void 0:u.formatted_address))return y(!1),r(!0),void o((0,ja.t)(Jn.THEME_CORE.STORE_EXPRESS.AUTO_LOCATE_FAILED));{const e=null==(i=null==u?void 0:u.formatted_address)?void 0:i.split("台灣");if(e.length>1){const t=a.find((t=>{var n;return null==(n=e[1])?void 0:n.includes(t.value)})),n=(yield E(t)).find((t=>{var n;return null==(n=e[1])?void 0:n.includes(t.value)}));b(n);const r=null==(c=null==u?void 0:u.formatted_address)?void 0:c.split(n.value);e.length>1&&C(r[1])}}}))})(e)}),(()=>{r(!0),o((0,ja.t)(Jn.THEME_CORE.STORE_EXPRESS.AUTO_LOCATE_FAILED))}))}))},z.createElement(xT,{src:rt(Z,Zo)}),z.createElement(OT,null,(0,ja.t)(Jn.THEME_CORE.STORE_EXPRESS.LOCATION_SERVICE)))),z.createElement(_T,{isOdd:!0},z.createElement(vT,null,z.createElement(QT,null," ",(0,ja.t)(Jn.THEME_CORE.STORE_EXPRESS.CITY)),z.createElement(FT,null,"*")),z.createElement(sX.Ay,{onChange:E,value:d||"",style:{borderColor:u.cityError?J.grapefruit:J.grey,fontSize:"14px"},placeholder:(0,ja.t)(Jn.THEME_CORE.STORE_EXPRESS.SELECT_CITY),options:a,defaultOptions:!0,menuStyle:{fontSize:"14px",height:"150px"},menuContainerStyle:{zIndex:2}}),u.cityError&&z.createElement(HT,null," ",(0,ja.t)(Jn.THEME_CORE.STORE_EXPRESS.NO_CHOICE))),z.createElement(_T,null,z.createElement(vT,null,z.createElement(QT,null," ",(0,ja.t)(Jn.THEME_CORE.STORE_EXPRESS.BLOCK)),z.createElement(FT,null,"*")),z.createElement(sX.Ay,{onChange:e=>{b(e)},value:p||"",style:{borderColor:u.blockError?J.grapefruit:J.grey,fontSize:"14px"},disabled:!d,placeholder:(0,ja.t)(Jn.THEME_CORE.STORE_EXPRESS.SELECT_BLOCK),defaultOptions:!0,options:l,menuStyle:{fontSize:"14px",height:"150px"},menuContainerStyle:{zIndex:2}}),u.blockError&&z.createElement(HT,null," ",(0,ja.t)(Jn.THEME_CORE.STORE_EXPRESS.NO_CHOICE))),z.createElement(_T,null,z.createElement(vT,null,z.createElement(QT,null," ",(0,ja.t)(Jn.THEME_CORE.STORE_EXPRESS.ADDRESS)),z.createElement(FT,null,"*")),z.createElement(wT,{isError:u.addressError,value:m,onChange:e=>{C(e.currentTarget.value)},placeholder:(0,ja.t)(Jn.THEME_CORE.STORE_EXPRESS.INPUT_ADDRESS)}),u.addressError&&z.createElement(HT,null,(0,ja.t)(Jn.THEME_CORE.PRODUCT.REQUIRED))),z.createElement(_T,null,z.createElement(vT,null,z.createElement(QT,null," ",(0,ja.t)(Jn.THEME_CORE.STORE_EXPRESS.COMMENT))),z.createElement(wT,{isError:!1,value:h,onChange:e=>{B(e.currentTarget.value)},placeholder:(0,ja.t)(Jn.THEME_CORE.STORE_EXPRESS.INPUT_FLOOR)})))),z.createElement(YT,null,z.createElement(kT,{width:"100%",isDisabled:A,onClick:()=>(()=>{if(y(!0),g({cityError:!d,blockError:!p,addressError:!m}),m&&p&&d)return S();y(!1)})()},A?(0,ja.t)(Jn.THEME_CORE.STORE_EXPRESS.CHINCKING):(0,ja.t)(Jn.THEME_CORE.STORE_EXPRESS.CONFIRM))),A&&z.createElement(VT,null,z.createElement(WT,null,z.createElement(UT,{src:rt(Z,mo)}))),f&&z.createElement(DT,{confirmText:(0,ja.t)(Jn.THEME_CORE.STORE_EXPRESS.CONFIRM),modalMode:Dl.MEDIUM,handleConfirmClick:()=>{G(!1)},isShowCloseButton:!1},z.createElement(LT,null," ",(0,ja.t)(Jn.THEME_CORE.STORE_EXPRESS.ADDRESS_NOT_FOUND)),z.createElement(kT,{onClick:e=>{(e=>{e.stopPropagation()})(e),G(!1),b(null),I(null),C(""),y(!1)},width:"100%",isDisabled:!1},(0,ja.t)(Jn.THEME_CORE.STORE_EXPRESS.CONFIRM))),n&&z.createElement(QX,{text:i,afterClose:()=>{setTimeout((()=>r(!1)),1e3)}}))}),JT=K.default.div`
    background: rgba(0, 0, 0, 0.4);
    z-index: ${L};

    position: fixed;
    top: 0;
    bottom: 0;
    left: 0;
    right: 0;
`,MT=K.keyframes`
    from {
        top: 100%;
        bottom: 0;
        left: 0;
        right: 0;
    }

    to {
        top: 100%;
        bottom: 0;
        left: 0;
        right: 0;
    }
`,zT=K.keyframes`
    from {
        bottom: -250px;
    }
    to {
        bottom: 0;
    }
`,jT=K.default.div`
    position: absolute;
    animation: ${MT} 0.3s ease-out 1;
    animation-fill-mode: forwards;
`,KT=K.default.div`
    background: #eeeeee;
    border-radius: 15px 15px 0 0;

    display: flex;
    flex-direction: column;

    position: absolute;
    bottom: 0;

    animation: ${zT} 0.3s ease-out 1;
    animation-fill-mode: forwards;
    width: 100vw;
    height: 100svh;
`,qT=K.default.div`
    flex-grow: 1;
    max-height: 80vh;
`,$T=e=>{e.stopPropagation()},ex=({children:e,onModalClick:t})=>{(0,z.useLayoutEffect)((()=>{const e=document.body;return e.style.overflow="hidden",()=>{e.style.overflow="unset"}}),[]);const n=z.createElement(JT,{onClick:t},z.createElement(jT,null,z.createElement(KT,{onClick:$T},z.createElement(qT,null,e))));return(0,Hl.createPortal)(n,document.querySelector("#modal-root")||document.body)};var tx=Object.defineProperty,nx=Object.defineProperties,rx=Object.getOwnPropertyDescriptors,ix=Object.getOwnPropertySymbols,ox=Object.prototype.hasOwnProperty,ax=Object.prototype.propertyIsEnumerable,cx=(e,t,n)=>t in e?tx(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,lx=(e,t,n)=>new Promise(((r,i)=>{var o=e=>{try{c(n.next(e))}catch(t){i(t)}},a=e=>{try{c(n.throw(e))}catch(t){i(t)}},c=e=>e.done?r(e.value):Promise.resolve(e.value).then(o,a);c((n=n.apply(e,t)).next())}));const sx=K.default.div`
    font-size: 18px;
    font-weight: 500;
`,ux=K.default.div`
    display: flex;
    position: relative;
`,gx=(0,K.default)(ux)`
    justify-content: space-between;
    align-items: baseline;
`,dx=K.default.div`
    display: flex;
    justify-content: center;
    align-items: center;
    height: 50px;
    background-color: ${({bgColor:e})=>e||"inherit"};
`,Ix=K.default.div`
    height: 100vh;
    background: #eeeeee;
`,px=K.default.div`
    font-size: 16px;
    font-weight: 500;
    margin-bottom: 8px;
`,bx=K.default.div`
    font-size: 14px;
    font-weight: 400;
    margin-bottom: 8px;
`,mx=K.default.div`
    font-size: 14px;
    font-weight: 400;
    margin-top: 8px;
    margin-bottom: 8px;
`,Cx=K.default.div`
    background: ${J.white};
    border-radius: 8px;
    padding: 16px 12px;
    width: 100%;
    box-sizing: border-box;
    margin-top: 12px;
    max-height: 80vh;
`,hx=(0,K.default)(Cx)`
    margin-bottom: 64px;
    margin-top: 0;
    padding: 0 12px 16px 12px;
`,Bx=K.default.div`
    color: #0279ff;
    font-size: 14px;
    font-weight: 400;
    cursor: pointer;
`,Ax=K.default.div`
    cursor: pointer;
    margin-top: 12px;
    margin-bottom: 12px;
    padding: 12px;
    border: solid 1px ${({isActive:e})=>e?"#3B82F6":J.grey};
    border-radius: 5px;
    justify-content: space-between;
    display: flex;
    background-color: ${({isActive:e})=>e?"rgba(59, 130, 246, .1)":J.white};
`,yx=K.default.div`
    font-size: 14px;
    font-weight: 400;
`,fx=K.default.div`
    font-size: 12px;
    font-weight: 400;
    color: ${J.brownishGrey};
`,Gx=K.default.div`
    font-size: 12px;
    font-weight: 400;
    color: ${J.warmGrey};
    margin-top: 4px;
`,Qx=K.default.div`
    z-index: ${D};
    position: absolute;
    font-size: 26px;
    transition: 0.15s background-color;
    right: 12px;
    :hover {
        cursor: pointer;
    }
`,Fx=K.default.i`
    transition: transform 0.25s;
    font-size: 26px;
    cursor: pointer;
    position: absolute;
    left: 12px;
`,vx=K.default.div`
    width: ${({width:e})=>e};
    height: 40px;
    background-color: ${({isDisabled:e})=>e?J.grey:"#166938"};
    color: ${J.white};
    border-radius: 5px;
    display: flex;
    justify-content: center;
    align-items: center;
    font-size: ${Ce.fontSizeDefault};
    cursor: pointer;
`,Zx=K.default.div`
    padding: 16px 12px 32px 12px;
    background: ${J.white};
    position: fixed;
    bottom: 0;
    width: 100%;
    box-sizing: border-box;
`,Ex=K.default.div`
    padding: 12px;
`,Sx=({addressInfo:e,onClose:t})=>{const[n,r]=(0,z.useState)(null),[i,o]=(0,z.useState)(null),[a,c]=(0,z.useState)(!1),[l,s]=(0,z.useState)([]),[u,g]=(0,z.useState)(null),[d,I]=(0,z.useState)(null),[p,b]=(0,z.useState)(""),[m,C]=(0,z.useState)(!1),[h,B]=(0,z.useState)("DEFAULT"),[A,y]=(0,z.useState)(!1),[f,G]=(0,z.useState)(!1),Q=(0,Qs.useSelector)((e=>e.user.retailStoreExpress)),F=xe(),v=dn(F),{shopId:Z,shopDomainName:E}=F||{},S=(0,Qs.useDispatch)(),{shoppingCart:X}=(0,Qs.useSelector)((e=>e)),{shoppingCartCount:T=0}=X||{};(0,z.useEffect)((()=>{r(e),e&&(o(e.City+e.District+e.Address),g(e.RetailStore),I(e.RetailStore),x(e.Latitude,e.Longitude))}),[]);const x=(e,t)=>lx(void 0,null,(function*(){const{RetailStoreList:n}=yield pX(v,{shopId:Z,latitude:e,longitude:t});s(n)})),U=e=>{e.stopPropagation()},N=(e,t)=>lx(void 0,null,(function*(){const n=(i=((e,t)=>{for(var n in t||(t={}))ox.call(t,n)&&cx(e,n,t[n]);if(ix)for(var n of ix(t))ax.call(t,n)&&cx(e,n,t[n]);return e})({},t),o={LocationId:e.LocationId,Distance:e.Distance},nx(i,rx(o)));var i,o;yield MX(v,{addressInfo:n,shopId:Z}),g(e),I(e),r(n),S(eh()),O(e),c(!0)})),R=(e,t)=>{U(t),C(!0),B(e)},O=e=>{C(!1),B("DEFAULT"),I(e)},V=e=>{U(e),N(d,n),c(!0),b((0,ja.t)(Jn.THEME_CORE.STORE_EXPRESS.RENEW_LOCATION)),zX(v,{shopId:Z,sourceLocationId:u.LocationId,targetLocationId:d.LocationId}),y(!1)},W=e=>{U(e),n?t&&t(!0):G(!0)};return z.createElement(ex,null,a&&z.createElement(QX,{text:p,afterClose:()=>{setTimeout((()=>c(!1)),1e3)}}),z.createElement(dx,{bgColor:null==Q?void 0:Q.headerBackgroundColor},m&&"ADDRESS"===h&&z.createElement(Fx,{className:"ico ico-chevron-left",onClick:()=>{O(u)}}),z.createElement(sx,null,!n||m&&"ADDRESS"===h?(0,ja.t)(Jn.THEME_CORE.STORE_EXPRESS.ADDRESS_TITLE):(0,ja.t)(Jn.THEME_CORE.STORE_EXPRESS.RECEIVER_INFO)),!An()&&z.createElement(Qx,{className:"ico ico-close",onClick:e=>W(e)})),z.createElement(Ix,{onClick:U},!n||m&&"ADDRESS"===h?z.createElement(z.Fragment,null,z.createElement(PT,{onSetting:e=>lx(void 0,null,(function*(){const{locationList:t,addressInfo:n,fullAddress:r,activeLocation:i}=e;o(r),s(t),yield N(i,n),b((0,ja.t)(Jn.THEME_CORE.STORE_EXPRESS.CHECK_LOCATION))})),isEdit:m&&"ADDRESS"===h,addressInfo:n}),f&&z.createElement(yX,{mainText:(0,ja.t)(Jn.THEME_CORE.STORE_EXPRESS.LEFT_HINT),onConfirmClick:e=>{(e=>{U(e),An()?(e=>{const t={eventType:"Redirect",data:{url:e}};((e,t)=>{var n,r,i;e===Bn.DeviceOS.Android.toLowerCase()?null==android||android.triggerApp(JSON.stringify(t)):null==(i=null==(r=null==(n=null==window?void 0:window.webkit)?void 0:n.messageHandlers)?void 0:r.triggerApp)||i.postMessage(JSON.stringify(t))})((0,Bn.getCookie)("deviceOS"),t)})(`https://${E}`):window.location.href="/"})(e)},onCancelClick:e=>{G(!1)},onClose:()=>G(!1),isShowCancelBtn:!0})):z.createElement("div",null,z.createElement(Ex,null,z.createElement(Cx,null,z.createElement(px,null,(0,ja.t)(Jn.THEME_CORE.STORE_EXPRESS.ADDRESS_TITLE)),z.createElement(gx,null,z.createElement(mx,null,i),z.createElement(Bx,{onClick:e=>R("ADDRESS",e)},(0,ja.t)(Jn.THEME_CORE.STORE_EXPRESS.MODIFY)))),z.createElement(Cx,null,z.createElement(px,null,(0,ja.t)(Jn.THEME_CORE.STORE_EXPRESS.ACTIVE_LOCATION)),z.createElement(gx,null,z.createElement("div",null,(null==u?void 0:u.Name)&&z.createElement(mx,null,null==u?void 0:u.Name),null==u?void 0:u.ServiceTime.map((e=>z.createElement(Gx,null,e)))),z.createElement(Bx,{onClick:e=>R("LOCATION",e)},(0,ja.t)(Jn.THEME_CORE.STORE_EXPRESS.MODIFY))))),z.createElement(Zx,null,z.createElement(vx,{onClick:()=>{t&&t(!0)},width:"100%",isDisabled:!1},(0,ja.t)(Jn.THEME_CORE.STORE_EXPRESS.CONFIRM))),m&&"LOCATION"===h&&z.createElement(Gs,{onModalClick:()=>O(u),title:(0,ja.t)(Jn.THEME_CORE.STORE_EXPRESS.LOCATION_TITLE)},z.createElement(hx,null,z.createElement(bx,null,i),z.createElement(bx,null,(0,ja.t)(Jn.THEME_CORE.STORE_EXPRESS.AVALIABLE_LOCATIONS)),null==l?void 0:l.map((e=>z.createElement(Ax,{onClick:()=>I(e),isActive:(null==d?void 0:d.LocationId)===(null==e?void 0:e.LocationId)},z.createElement(yx,null,e.LocationId," ",e.Name),z.createElement(fx,null,(0,ja.t)(Jn.THEME_CORE.STORE_EXPRESS.DISTANCE),e.Distance,"m"))))),z.createElement(Zx,null,z.createElement(vx,{onClick:e=>{d.LocationId===u.LocationId?W(e):(e=>{lx(void 0,null,(function*(){U(e),S(ZC()),T>0?y(!0):V(e)}))})(e)},width:"100%",isDisabled:!1},(0,ja.t)(Jn.THEME_CORE.STORE_EXPRESS.CONFIRM))),A&&z.createElement(yX,{mainText:(0,ja.t)(Jn.THEME_CORE.STORE_EXPRESS.CHANGE_LOCATION_HINT,{locationName:d.Name}),onConfirmClick:e=>{V(e)},onCancelClick:e=>{I(u),y(!1)},onClose:()=>y(!1),isShowCancelBtn:!0})))))},Xx=(e,t)=>{return r=function*(){try{const n=gt(`RetailStoreExpress/GetDeliveryAddress/${t}`,e,!1);return(yield Nn(n)).Data}catch(n){return ze.error(`[ERROR] fetchGetDeliveryAddress failed: ${Me(n)}: ${Je(n)}: shopId: ${t}`),null}},new Promise(((e,t)=>{var i=e=>{try{a(r.next(e))}catch(n){t(n)}},o=e=>{try{a(r.throw(e))}catch(n){t(n)}},a=t=>t.done?e(t.value):Promise.resolve(t.value).then(i,o);a((r=r.apply(void 0,null)).next())}));var r};var Tx=n(9818);const xx=()=>{var e,t;const n=(null==(t=null==(e=null==window?void 0:window.location)?void 0:e.pathname)?void 0:t.toLowerCase())||"";if(n.includes("saleagecategory")||n.includes("category"))return{type:cX.ShopCategory,id:parseInt(n.split("/salepagecategory/")[1],10)||parseInt(n.split("/category/")[1],10)||0};if(n.includes("search")){const e=new URLSearchParams(window.location.search).get("locationId");return{type:cX.Location,id:e||0}}if(n.includes("retail-store-express"))return{type:cX.Home,id:0};if(n.includes("/shoppingcart/index")||n.includes("shoppingcart")||n.includes("pay")){const e=new URLSearchParams(window.location.search).get("locationId");return{type:cX.Location,id:e||0}}return{type:cX[cX.Empty],id:0}},Ux=K.default.div`
    height: 32px;
    border-radius: ${({isMobile:e})=>e?"0px":"29px"};
    box-sizing: border-box;
    padding: ${({isMobile:e})=>e?"16px 24px 16px 24px":"16px"};
    background: ${({isMobile:e})=>e?"transparent":J.white};
    display: flex;
    justify-content: space-between;
    align-items: center;
    ${({isMobile:e})=>!e&&"\n           width: 270px;\n    "};
    overflow: hidden;
`,Nx=K.default.img`
    margin-right: 8px;
    width: 16px;
    height: 16px;
`,Rx=K.default.i`
    transform: ${({isOpen:e})=>e?"rotate(180deg)":"rotate(0deg)"};
    transition: transform 0.25s;
    font-size: 24px;
`,Ox=K.default.div`
    position: relative;
    ${({isMobile:e})=>!e&&"\n        top: 60px;\n        cursor: pointer;\n        padding-left: 16px;\n    "};
`,Vx=K.default.div`
    font-size: 16px;
    font-weight: 400;
    white-space: nowrap;
`,Wx=K.default.div`
    font-size: ${({isMobile:e})=>e?"14px":"12px"};
    font-weight: 400;
    margin-left: 8px;
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
`,_x=K.default.div`
    display: flex;
    align-items: center;
    overflow: hidden;
`,wx="LIVE_BUY",Hx=({isMobile:e})=>{const t=xe(),{imageServiceConfig:n}=t,r=dn(t),[i,o]=(0,z.useState)(!1),[a,c]=(0,z.useState)(null),[l,s]=(0,z.useState)(!0),u=window.location.pathname,[g,d]=(0,z.useState)(!1),I=u.includes("/ShoppingCart/Index"),p=()=>{return e=function*(){var e;const{shopId:n}=t||{},i=yield Xx(r,n),a=null==(e=null==i?void 0:i.RetailStore)?void 0:e.LocationId.toString(),l=(0,Bn.getCookie)("locationId");!a||l&&l===a||(0,Bn.addCookie)("locationId",a),a||(0,Tx.deleteCookie)("locationId"),c(i),s(!1),(null==i?void 0:i.Address)||o(!0)},new Promise(((t,n)=>{var r=r=>{try{o(e.next(r))}catch(t){n(t)}},i=r=>{try{o(e.throw(r))}catch(t){n(t)}},o=e=>e.done?t(e.value):Promise.resolve(e.value).then(r,i);o((e=e.apply(void 0,null)).next())}));var e};(0,z.useEffect)((()=>{p(),Oo()&&"true"===sessionStorage.getItem(wx)&&(sessionStorage.removeItem(wx),o(!0))}),[]);const b=()=>{const{type:e}=xx();e===cX.Home?o((e=>!e)):d(!0)},m=e?Sx:AT;return z.createElement(z.Fragment,null,!l&&!I&&z.createElement(Ox,{isMobile:e,onClick:b},z.createElement(Ux,{isMobile:e},z.createElement(_x,null,z.createElement(Nx,{src:rt(n,vo)}),(null==a?void 0:a.Address)?z.createElement(z.Fragment,null,z.createElement(Vx,null," ",a.RetailStore.Name),z.createElement(Wx,{isMobile:e},(0,ja.t)(Jn.THEME_CORE.STORE_EXPRESS.SENT_TO_ADDRESS,{address:` ${null==a?void 0:a.Address}`}))):z.createElement(ja.HT,{value:Jn.THEME_CORE.STORE_EXPRESS.NO_LOCATION_ADDRESS})),z.createElement(Rx,{className:"ico ico-chevron-down",isOpen:i})),i&&z.createElement(m,{addressInfo:a,onClose:e=>{(a||e)&&(b(),p())}}),g&&z.createElement(yX,{mainText:(0,ja.t)(Jn.THEME_CORE.STORE_EXPRESS.UPDATE_LOCATION_CONFIRM),onConfirmClick:e=>{Oo()&&sessionStorage.setItem(wx,"true"),window.location.href="/page/retail-store-express"},onCancelClick:e=>{d(!1)},onClose:()=>d(!1),isShowCancelBtn:!0})))};Object.defineProperty,Object.getOwnPropertyDescriptor;let Yx=class extends z.Component{constructor(e){super(e),this.headerMenuHeight=100,this.headerBottomEleRef=z.createRef(),this.topMsgElemRef=z.createRef(),this.calculatePaddingTop=()=>{if(!this.headerBottomEleRef.current)return;const e=this.checkIsViewOnTop(),t=this.topMsgElemRef.current;let n=0,r=0;this.props.topMessageData.isTurnOn?(n=e?(null==t?void 0:t.clientHeight)+this.headerMenuHeight:null==t?void 0:t.clientHeight,r=e?134:34):(n=e?this.headerMenuHeight:0,r=e?100:0),this.setState({carouselPaddingTop:n||r})},this.fixHeader=()=>{var e;const{headerStyle:t}=this.props;if(window.pageYOffset>this.fixedOffset&&this.$fixHeaderElem){const n=null==t?void 0:t.backgroundColor;this.$fixHeaderElem.style.backgroundColor=this.state.storeExpressPageInfo?null==(e=this.state.storeExpressPageInfo)?void 0:e.headerBackgroundColor:n||"#FFF"}else this.$fixHeaderElem.style.backgroundColor="transparent"},this.resetToastState=()=>{const{toastStatus:e}=this.state;if("logoutSuccess"===e){const{dependencies:{shopDomainName:e}}=this.props;window.location.href=(0,Ze.getPageUrl)(e,Ze.PAGE_TYPE.INDEX)}this.setState({isOpenToast:!1,toastType:"",toastStatus:"",toastMessage:""})},this.checkIsEnableIndexPageFeature=()=>{const{isDisableIndexPageFeature:e,dependencies:t}=this.props,{pageName:n,previewPageName:r}=t;return!e&&(n===Ze.PAGE_NAME.INDEX||r===Ze.PAGE_NAME.INDEX)},this.checkIsRetailStoreExpress=e=>{const{isEnableStoreExpressPage:t}=(null==e?void 0:e.serverRenderData)||{},n=dn(e),{type:r,id:i}=xx();t&&lX(n,{shopId:e.shopId,type:r,id:i}).then((e=>{const{HeaderBackgroundColor:t,IsRetailStoreExpress:n,LogoUrl:r}=(null==e?void 0:e.IsRetailStoreExpress)?e:{HeaderBackgroundColor:"",IsRetailStoreExpress:!1,LogoUrl:""},i={headerBackgroundColor:t,isRetailStoreExpress:n,logoUrl:r};return n||(0,Tx.deleteCookie)("locationId"),this.setState({storeExpressPageInfo:n?i:null}),i})).catch((()=>{this.setState({storeExpressPageInfo:null})}))},this.checkIsViewOnTop=()=>{var e;return(null==(e=this.props.headerStyle)?void 0:e.backgroundStyle)===Lr.VIEW_ON_TOP};const{isEditMode:t,unlimitedHeightCarouselItems:n,dependencies:r,moduleId:i,moduleKey:o}=e;this.defaultImageRectangle=t?Di:Pi;const a=pt({dataSource:n,defaultImage:this.defaultImageRectangle,dependencies:r,isMobile:!1});this.state={isOpenToast:!1,customCssClass:"",toastType:"",toastStatus:"",toastMessage:"",carouselData:a,carouselPaddingTop:0,storeExpressPageInfo:null,pathnameUrl:""}}componentDidMount(){var e,t;const{headerStyle:n,dependencies:r}=this.props;this.$fixHeaderElem=document.getElementsByClassName("headerA__wrapper")[0];const i=this.checkIsViewOnTop(),o=Wi();if(this.checkIsRetailStoreExpress(r),this.setState({customerHeaderConfig:o}),!i){const n=(null==(e=this.$fixHeaderElem)?void 0:e.clientHeight)||0,r=(null==(t=this.$fixHeaderElem)?void 0:t.offsetTop)||0;this.fixedOffset=n+r,window.addEventListener("scroll",this.fixHeader)}this.calculatePaddingTop()}componentDidUpdate(e){var t,n;const{text:r,isTurnOn:i}=this.props.topMessageData,{text:o,isTurnOn:a}=e.topMessageData;!this.props.isEditMode||r===o&&i===a&&(null==(t=this.props.headerStyle)?void 0:t.backgroundStyle)===(null==(n=e.headerStyle)?void 0:n.backgroundStyle)||this.calculatePaddingTop()}UNSAFE_componentWillReceiveProps(e){var t,n;const{isLogin:r,shoppingCartPreviewList:i,unlimitedHeightCarouselItems:o,dependencies:a}=this.props;if(this.state.pathnameUrl!==(null==(t=null==window?void 0:window.location)?void 0:t.pathname)){const{type:e}=xx();e!==cX.ShopCategory&&e!==cX.Location||(this.checkIsRetailStoreExpress(a),this.setState({pathnameUrl:(null==(n=null==window?void 0:window.location)?void 0:n.pathname)||""}))}if(r!==e.isLogin&&r&&!e.isLogin){const e=lc(oc.LOGOUT_SUCCESS);this.setState({isOpenToast:!0,customCssClass:"goya-toast--dark",toastType:e.type,toastStatus:e.status,toastMessage:e.message})}if(i!==e.shoppingCartPreviewList&&e.shoppingCartPreviewList.length<i.length){const e=lc(oc.REMOVE_SUCCESS);this.setState({isOpenToast:!0,customCssClass:"",toastType:e.type,toastStatus:e.status,toastMessage:e.message})}if(o!==e.unlimitedHeightCarouselItems){const t=pt({dataSource:e.unlimitedHeightCarouselItems,defaultImage:this.defaultImageRectangle,dependencies:a,isMobile:!1});this.setState({carouselData:t})}}componentWillUnmount(){window.removeEventListener("scroll",this.fixHeader)}render(){var e,t,n,r,i,o,a,c,l,s;const{dependencies:u,logoSrc:g,navStyle:d,headerStyle:I,badgeStyle:p,isEditMode:b,topMessageData:m,sendAppDownloadLink:C,sendAppResult:h,categoryMenuSwitch:B,activityMenuSwitch:A,activityMenu:y,activityList:f,customLinkListMenuSwitch:G,customLinkListMenu:Q,fetchSearchList:F,searchList:v,unlimitedHeightCarouselItems:Z,toolbox:E,customLinkListMenuOpenIndex:S,currentEditingItemKey:X,moduleId:T,moduleKey:x,shopCategoryList:U,promotionTargetList:N,fetchReCaptchaKey:R,reCaptchaKey:O}=this.props,{shopProfile:{ShopBasicInfo:{ShopName:V,HasApp:W,EnableSendAppLinkSMS:_,IosAppId:w,AndroidPackageName:H,ShopDomain:Y,RefUrl:k,IsDownloadAndroidAPK:D}},shopId:L,market:P}=u,J=(null==(t=null==(e=null==u?void 0:u.shopProfile)?void 0:e.ShopFunction)?void 0:t.IsEnabledMultiShopCategory)||!1,M=(null==(r=null==(n=null==u?void 0:u.shopProfile)?void 0:n.ShopFunction)?void 0:r.IsEnableSendAppDownLoadLinkReCaptcha)||!1,{carouselData:j,customCssClass:K,isOpenToast:q,toastType:$,toastMessage:ee,customerHeaderConfig:te}=this.state,ne=this.checkIsViewOnTop();return z.createElement("header",{className:qs()("headerA",{"headerA--nonindex":!this.checkIsEnableIndexPageFeature()})},z.createElement("div",{className:qs()("headerA__top",b?"headerA__top--absolute":"headerA__top--fix"),style:{backgroundColor:(!this.checkIsEnableIndexPageFeature()||ne)&&(this.state.storeExpressPageInfo?null==(i=this.state.storeExpressPageInfo)?void 0:i.headerBackgroundColor:(null==I?void 0:I.backgroundColor)||"#FFF")}},m.isTurnOn&&this.checkIsEnableIndexPageFeature()&&z.createElement(BA,{ref:this.topMsgElemRef,backgroundColor:m.backgroundColor,color:m.color,text:m.text,urlType:m.urlType,linkInfo:m.linkInfo,linkUrl:m.linkUrl,isEditMode:b}),z.createElement("div",{className:"headerA__wrapper"},z.createElement("div",{className:qs()("headerA__inner-wrapper",{"navMenu-horizontal-align-logo":null==(o=null==te?void 0:te.navMenu)?void 0:o.position})},z.createElement(KG,{customCssClass:(null==(c=null==(a=null==te?void 0:te.headerLogo)?void 0:a.position)?void 0:c.logoContainer)?`headerA__${null==(s=null==(l=null==te?void 0:te.headerLogo)?void 0:l.position)?void 0:s.logoContainer}`:"headerA__logo",shopName:V,dependencies:u,logoSrc:g}),this.state.storeExpressPageInfo&&Ge()&&z.createElement(Hx,{isMobile:!1}),z.createElement(KS,{isEditMode:b,classNamePrefix:"headerA",hasApp:W,shopId:L,market:P,navStyle:d,enableSendAppLinkSMS:_,iosAppId:w,androidPackageName:H,sendAppDownloadLink:C,sendAppResult:h,shopDomain:Y,refUrl:k,badgeStyle:p,categoryMenuSwitch:B,activityMenuSwitch:A,activityList:f,fetchSearchList:F,searchList:v,customLinkListMenuSwitch:G,activityMenu:y,customLinkListMenu:Q,currentEditingItemKey:X,customLinkListMenuOpenIndex:S,isDownloadAndroidAPK:D,isEnabledMultiShopCategory:J,shopCategoryList:U,promotionTargetList:N,customerHeaderConfig:te,isEnableStoreExpressPage:!!this.state.storeExpressPageInfo,fetchReCaptchaKey:R,reCaptchaKey:O,isEnableSendAppDownLoadLinkReCaptcha:M})))),this.checkIsEnableIndexPageFeature()&&z.createElement("div",{className:qs()("headerA__bottom"),ref:this.headerBottomEleRef,style:{paddingTop:`${this.state.carouselPaddingTop}px`}},Z&&z.createElement(zG,{isEditMode:b,dataSource:j,materialName:"輪播廣告",isDisplayArrow:!b,moduleId:T,moduleKey:x,moduleName:"品牌導覽",isShowModuleKey:!1,dependencies:u,defaultImage:this.defaultImageRectangle})),z.createElement(Wu,{customCssClass:K,isOpen:q,type:$,message:ee,afterClose:this.resetToastState}),Ge()&&!this.state.storeExpressPageInfo&&z.createElement(eX,{itemList:E.toolboxList,dependencies:u}))}};Yx.defaultProps={isEditMode:!1,isLogin:!1,categoryMenuSwitch:{isTurnOn:!0},activityMenuSwitch:{isTurnOn:!1},customLinkListMenuSwitch:{isTurnOn:!1},shoppingCartPreviewList:[],searchList:[],sendAppResult:{},activityList:[],customLinkListMenu:[],topMessageData:{isTurnOn:!1},unlimitedHeightCarouselItems:{materialList:[{linkUrl:"",title:"",itemIndex:0},{linkUrl:"",title:"",itemIndex:1}]},toolbox:{toolboxList:[]},isDisableIndexPageFeature:!1,shopCategoryList:{List:[],MaxChildListCount:0,Count:0},promotionTargetList:{freeGift:[]}},Yx=((e,t)=>{for(var n,r=t,i=e.length-1;i>=0;i--)(n=e[i])&&(r=n(r)||r);return r})([aX],Yx);var kx=Object.defineProperty,Dx=Object.defineProperties,Lx=(Object.getOwnPropertyDescriptor,Object.getOwnPropertyDescriptors),Px=Object.getOwnPropertySymbols,Jx=Object.prototype.hasOwnProperty,Mx=Object.prototype.propertyIsEnumerable,zx=(e,t,n)=>t in e?kx(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,jx=(e,t)=>{for(var n in t||(t={}))Jx.call(t,n)&&zx(e,n,t[n]);if(Px)for(var n of Px(t))Mx.call(t,n)&&zx(e,n,t[n]);return e},Kx=(e,t)=>Dx(e,Lx(t));let qx=class extends z.Component{constructor(e){super(e),this.fixedClassName="headerB__top--fix",this.moduleName="品牌導覽",this.resetToastState=()=>{const{toastStatus:e}=this.state;if("logoutSuccess"===e){const{dependencies:{shopDomainName:e}}=this.props;window.location.href=(0,Ze.getPageUrl)(e,Ze.PAGE_TYPE.INDEX)}this.setState({isOpenToast:!1,toastType:"",toastStatus:"",toastMessage:""})},this.onStaticBannerTrackClick=e=>{const{linkUrl:t,position:n}=e,{isEditMode:r,moduleId:i,moduleKey:o}=this.props;if(!r){const e={materialName:"靜態廣告",moduleId:i,moduleName:this.moduleName,moduleKey:o,position:n,isShowModuleKey:!1},{eventCategory:r,eventAction:a,eventLabel:c,contentType:l}=$c(e);fl(r,a,c),Gl({contentType:l,id:i,name:this.moduleName,linkUrl:t})}},this.checkIsEnableIndexPageFeature=()=>{const{isDisableIndexPageFeature:e,dependencies:t}=this.props,{pageName:n,previewPageName:r}=t;return!e&&(n===Ze.PAGE_NAME.INDEX||r===Ze.PAGE_NAME.INDEX)},this.getImageUrl=e=>{const{dependencies:t}=this.props;return it(t.shopId,t.imageServiceConfig,this.defaultImageSquare,e)},this.checkIsRetailStoreExpress=e=>{const{isEnableStoreExpressPage:t}=(null==e?void 0:e.serverRenderData)||{},n=dn(e),{type:r,id:i}=xx();t&&lX(n,{shopId:e.shopId,type:r,id:i}).then((e=>{const{HeaderBackgroundColor:t,IsRetailStoreExpress:n,LogoUrl:r}=(null==e?void 0:e.IsRetailStoreExpress)?e:{HeaderBackgroundColor:"",IsRetailStoreExpress:!1,LogoUrl:""},i={headerBackgroundColor:t,isRetailStoreExpress:n,logoUrl:r};return n||(0,Tx.deleteCookie)("locationId"),this.setState({storeExpressPageInfo:n?i:null}),i})).catch((()=>{this.setState({storeExpressPageInfo:null})}))};const{isEditMode:t,carouselItems:n,dependencies:r,staticBanner:i,moduleKey:o,moduleId:a}=e;this.defaultImageRectangle=t?Di:Pi,this.defaultImageSquare=t?ki:Li;const c=pt({dataSource:n,defaultImage:this.defaultImageRectangle,dependencies:r,isMobile:!1}),l=pt({dataSource:i,defaultImage:this.defaultImageSquare,dependencies:r,isMobile:!1});this.state={isOpenToast:!1,customCssClass:"",toastType:"",toastStatus:"",toastMessage:"",carouselData:c,imageData:l,storeExpressPageInfo:null,pathnameUrl:""},this.inheritProps={dependencies:r,trackEvent:fl,moduleId:a,moduleKey:o,moduleName:this.moduleName,isShowModuleKey:!1}}componentDidMount(){var e;const{isEditMode:t}=this.props,n=Wi();if(this.setState({customerHeaderConfig:n}),this.checkIsRetailStoreExpress(this.props.dependencies),!t){this.$fixHeaderElem=document.getElementsByClassName("layout-header-fix")[0];const t=this.$fixHeaderElem?this.$fixHeaderElem.clientHeight:0,n=(null==(e=this.props.topMessageData)?void 0:e.isTurnOn)?134:100;this.setState({carouselStyle:{marginTop:`${t||n}px`}}),this.$fixHeaderElem&&!this.$fixHeaderElem.classList.contains(this.fixedClassName)&&this.$fixHeaderElem.classList.add(this.fixedClassName)}}UNSAFE_componentWillReceiveProps(e){var t,n;const{isLogin:r,shoppingCartPreviewList:i,carouselItems:o,dependencies:a,staticBanner:c}=this.props;if(this.state.pathnameUrl!==(null==(t=null==window?void 0:window.location)?void 0:t.pathname)){const{type:e}=xx();e!==cX.ShopCategory&&e!==cX.Location||(this.checkIsRetailStoreExpress(a),this.setState({pathnameUrl:(null==(n=null==window?void 0:window.location)?void 0:n.pathname)||""}))}if(r!==e.isLogin&&r&&!e.isLogin){const e=lc(oc.LOGOUT_SUCCESS);this.setState({isOpenToast:!0,customCssClass:"goya-toast--dark",toastType:e.type,toastStatus:e.status,toastMessage:e.message})}if(i!==e.shoppingCartPreviewList&&e.shoppingCartPreviewList.length<i.length){const e=lc(oc.REMOVE_SUCCESS);this.setState({isOpenToast:!0,customCssClass:"",toastType:e.type,toastStatus:e.status,toastMessage:e.message})}if(o!==e.carouselItems){const t=pt({dataSource:e.carouselItems,defaultImage:this.defaultImageRectangle,dependencies:a,isMobile:!1});this.setState({carouselData:t})}if(c!==e.staticBanner){const t=pt({dataSource:e.staticBanner,defaultImage:this.defaultImageSquare,dependencies:a,isMobile:!1});this.setState({imageData:t})}}componentWillUnmount(){this.setState=()=>!1}render(){var e,t,n,r,i,o,a,c,l,s;const{dependencies:u,logoSrc:g,navStyle:d,headerStyle:I,badgeStyle:p,isEditMode:b,topMessageData:m,sendAppDownloadLink:C,sendAppResult:h,categoryMenuSwitch:B,activityMenuSwitch:A,activityMenu:y,activityList:f,customLinkListMenuSwitch:G,customLinkListMenu:Q,fetchSearchList:F,searchList:v,carouselItems:Z,staticBanner:E,toolbox:S,currentEditingItemKey:X,customLinkListMenuOpenIndex:T,shopCategoryList:x,promotionTargetList:U,fetchReCaptchaKey:N,reCaptchaKey:R}=this.props,{shopProfile:{ShopBasicInfo:{ShopName:O,HasApp:V,EnableSendAppLinkSMS:W,IosAppId:_,AndroidPackageName:w,ShopDomain:H,RefUrl:Y,IsDownloadAndroidAPK:k}},shopId:D,market:L}=u,P=(null==(t=null==(e=null==u?void 0:u.shopProfile)?void 0:e.ShopFunction)?void 0:t.IsEnabledMultiShopCategory)||!1,J=(null==(r=null==(n=null==u?void 0:u.shopProfile)?void 0:n.ShopFunction)?void 0:r.IsEnableSendAppDownLoadLinkReCaptcha)||!1,{carouselStyle:M,carouselData:j,customCssClass:K,isOpenToast:q,toastType:$,toastMessage:ee,imageData:te,customerHeaderConfig:ne}=this.state;return z.createElement("header",{className:qs()("headerB",{"headerB--nonindex":!this.checkIsEnableIndexPageFeature()})},z.createElement("div",{className:"layout-header-fix headerB__top"},m.isTurnOn&&this.checkIsEnableIndexPageFeature()&&z.createElement(BA,{backgroundColor:m.backgroundColor,color:m.color,text:m.text,urlType:m.urlType,linkInfo:m.linkInfo,linkUrl:m.linkUrl,isEditMode:b}),z.createElement("div",{className:"headerB__wrapper",style:this.state.storeExpressPageInfo?Kx(jx({},I),{backgroundColor:null==(i=this.state.storeExpressPageInfo)?void 0:i.headerBackgroundColor}):I},z.createElement("div",{className:qs()("headerB__inner-wrapper",{"navMenu-horizontal-align-logo":null==(o=null==ne?void 0:ne.navMenu)?void 0:o.position})},z.createElement(KG,{customCssClass:(null==(c=null==(a=null==ne?void 0:ne.headerLogo)?void 0:a.position)?void 0:c.logoContainer)?`headerB__${null==(s=null==(l=null==ne?void 0:ne.headerLogo)?void 0:l.position)?void 0:s.logoContainer}`:"headerB__logo",shopName:O,dependencies:u,logoSrc:g}),this.state.storeExpressPageInfo&&Ge()&&z.createElement(Hx,{isMobile:!1}),z.createElement(KS,{isEditMode:b,classNamePrefix:"headerB",hasApp:V,shopId:D,market:L,navStyle:d,enableSendAppLinkSMS:W,iosAppId:_,androidPackageName:w,sendAppDownloadLink:C,sendAppResult:h,shopDomain:H,refUrl:Y,badgeStyle:p,categoryMenuSwitch:B,activityMenuSwitch:A,activityList:f,fetchSearchList:F,searchList:v,customLinkListMenuSwitch:G,activityMenu:y,currentEditingItemKey:X,customLinkListMenu:Q,customLinkListMenuOpenIndex:T,isDownloadAndroidAPK:k,isEnabledMultiShopCategory:P,shopCategoryList:x,promotionTargetList:U,customerHeaderConfig:ne,isEnableStoreExpressPage:!!this.state.storeExpressPageInfo,fetchReCaptchaKey:N,reCaptchaKey:R,isEnableSendAppDownLoadLinkReCaptcha:J})))),this.checkIsEnableIndexPageFeature()&&z.createElement("div",{className:"headerB__bottom",style:M},(null==Z?void 0:Z.materialList)&&z.createElement("div",{className:"headerB__bottom-carousel"},z.createElement(zG,jx({dataSource:j,isEditMode:b,materialName:"輪播廣告",defaultImage:this.defaultImageRectangle},this.inheritProps))),E&&z.createElement("ul",{className:"headerB__bottom-banner"},te.map(((e,t)=>{const{moduleId:n}=this.props,r=Ec(e);return b&&(null==r?void 0:r.scheduleList)&&r.scheduleList.forEach((e=>{Ma()().isBetween(null==e?void 0:e.startTime,null==e?void 0:e.endTime)&&(r.imageUrl=this.getImageUrl(e))})),z.createElement("li",{className:"headerB__bottom-banner__item",key:t},z.createElement(NG,Kx(jx({},r),{onTrackClick:this.onStaticBannerTrackClick,itemIndex:t,altText:r.altText||Ke(je.STATIC_BANNER,n,t),isEditMode:b})))})))),z.createElement(Wu,{customCssClass:K,isOpen:q,message:ee,type:$,afterClose:this.resetToastState}),Ge()&&!this.state.storeExpressPageInfo&&z.createElement(eX,{itemList:S.toolboxList,dependencies:u}))}};qx.defaultProps={isEditMode:!1,categoryMenuSwitch:{isTurnOn:!0},activityMenuSwitch:{isTurnOn:!1},customLinkListMenuSwitch:{isTurnOn:!1},searchList:[],sendAppResult:{},activityList:[],customLinkList:[],topMessageData:{isTurnOn:!1},carouselItems:{materialList:[{linkUrl:"",title:"",itemIndex:0},{linkUrl:"",title:"",itemIndex:1}]},staticBanner:{materialList:[{linkUrl:"",title:"banner 01",itemIndex:0},{linkUrl:"",title:"banner 02",itemIndex:1}]},toolbox:{toolboxList:[]},isDisableIndexPageFeature:!1,shopCategoryList:{List:[],MaxChildListCount:0,Count:0},promotionTargetList:{freeGift:[]}},qx=((e,t)=>{for(var n,r=t,i=e.length-1;i>=0;i--)(n=e[i])&&(r=n(r)||r);return r})([aX],qx);class $x extends z.Component{constructor(e){var t;super(e),this.onCloseModalHandle=()=>{this.setState({isOpenModal:!1})};const n=null==(t=e.dependencies)?void 0:t.imageServiceConfig;this.linePopupNoteCloseBarImage=rt(n,po),this.linePopupNoteImage=rt(n,go),this.linePopupNoteCloseButtonImage=rt(n,Io),this.state={isOpenModal:!1}}componentDidMount(){var e,t;const n=(null==(t=null==(e=this.props.dependencies)?void 0:e.shopProfile)?void 0:t.ShopThirdPartyConfigInfo)?this.props.dependencies.shopProfile.ShopThirdPartyConfigInfo.LineConfig:null;this.setState({isOpenModal:Do(n)&&!fn()})}render(){return z.createElement(z.Fragment,null,z.createElement(WA,{isOpen:this.state.isOpenModal,customCssClass:"line-shop-popup",isShowClose:!1,isMaskOpacity:!0},z.createElement("div",{className:"line-shop-popup__note"},z.createElement("img",{loading:"lazy",className:"image",src:this.linePopupNoteImage,alt:"line-shop-popup"}),z.createElement("img",{loading:"lazy",className:"close-btn",src:this.linePopupNoteCloseButtonImage,onClick:this.onCloseModalHandle,alt:"line-shop-popup-close"}),z.createElement("img",{loading:"lazy",className:"close-btn-bar",src:this.linePopupNoteCloseBarImage,onClick:this.onCloseModalHandle,alt:"line-shop-popup-close"}))))}}const eU=$x,tU=({isLoading:e})=>z.createElement("div",{className:"loading-container"},z.createElement(iu,{isLoading:e}));tU.propTypes={isLoading:Vu.bool},tU.defaultProps={isLoading:!1};const nU=(0,Qs.connect)(Ff,vf)(tU);class rU extends z.Component{constructor(e){super(e),this.onLeaveHandle=()=>{Oo()&&(window.sessionStorage.clear(),window.location.href="https://www.google.com.tw/")},this.onEnterHandle=()=>{this.props.onCloseModalHandle&&Oo()&&(window.sessionStorage.setItem("type","Ristriction"),this.props.onCloseModalHandle())};const{imageServiceConfig:t}=xe();this.defaultImage=rt(t,so)}render(){return z.createElement("div",{className:"ristrict-note"},z.createElement("img",{loading:"lazy",className:"ristrict-note__image",src:this.defaultImage,alt:"ristrict-note"}),z.createElement("div",{className:"ristrict-note__title"},"限制級商品"),z.createElement("div",{className:"ristrict-note__content"},z.createElement("div",{className:"ristrict-note__label"},"本商品為限制級商品"),z.createElement("div",null,"限",z.createElement("span",{className:"ristrict-note__text"},"18歲以上"),"會員才可瀏覽與購買")),z.createElement("div",{className:"ristrict-note__container-btn"},z.createElement("button",{type:"button",className:"ristrict-note__btn-leave",onClick:this.onLeaveHandle},"我未滿18歲，",z.createElement("span",{className:"ristrict-note__btn-text"},"離開")),z.createElement("button",{type:"button",className:"ristrict-note__btn-enter",onClick:this.onEnterHandle},"我已滿18歲，",z.createElement("span",{className:"ristrict-note__btn-text"},"進入"))),z.createElement("div",{className:"ristrict-note__warn"},"*選擇離開將自動關閉分頁"))}}const iU=rU;class oU extends z.Component{constructor(e){super(e),this.onCloseModalHandle=()=>{this.setState({isOpenModal:!1})},this.state={isOpenModal:!1}}componentDidMount(){const e=Tc(this.props.dependencies,"shopProfile.ShopBasicInfo")||null,t=!(!Oo()||"Ristriction"!==window.sessionStorage.getItem("type"));this.setState({isOpenModal:e.IsAdultShop&&!t&&!fn()})}render(){return z.createElement("div",{id:"ristrict-container"},z.createElement(WA,{isOpen:this.state.isOpenModal,isShowClose:!1,isMaskOpacity:!1},z.createElement(iU,{onCloseModalHandle:this.onCloseModalHandle})))}}const aU=oU;var cU=n(3978);const{tagStyle:lU}=se.A,sU=K.default.div`
    display: flex;
    flex-direction: column;
`,uU=(0,K.default)(sU)`
    width: 265px;
`,gU=(0,K.default)(sU)`
    ${e=>e.isOpen&&`background-color: ${J.whiteFive};`};
`,dU=(0,K.default)(sU)`
    width: 100%;

    flex-shrink: 0;
`,IU=K.default.div`
    display: flex;
    align-items: center;
    flex-shrink: 0;

    padding: 5px 0;
    width: 100%;
    min-height: 20px;
    ${e=>e.isOpen&&`background-color: ${J.whiteFour};`};
    :hover {
        background-color: ${J.whiteFour};
    }
`,pU=K.default.div`
    flex: 1;
    display: flex;
    flex-wrap: wrap;

    ${e=>e.isSubMenu&&"\n        padding-left: 15px;\n        padding-right: 36px;\n    "};
`,bU=K.default.a`
    display: -webkit-box;
    -webkit-line-clamp: 2;
    -webkit-box-orient: vertical;
    overflow: hidden;

    margin-right: 5px;

    line-height: 20px;
    font-size: 14px;
    border-bottom: 1px solid transparent;
    color: ${J.nightGrey};
    text-decoration: none;

    cursor: pointer;
`,mU=K.default.div`
    display: flex;
    justify-content: center;
    align-items: center;

    width: 45px;
`,CU=K.default.i`
    ${e=>e.isOpen?"transform: rotate(180deg);":"transform: rotate(0deg);"}
    transition: transform 0.25s;

    cursor: pointer;
`,hU=K.default.div`
    display: inline-block;

    padding: 4px;
    border-radius: 2px;
    ${e=>e.isInline&&"\n        margin-left: 5px;\n    "}

    line-height: normal;
    font-size: 11px;
    color: ${({theme:e})=>{var t;return(null==(t=null==e?void 0:e.tagStyle)?void 0:t.generalTagTextColor)||lU.generalTagTextColor}};
    background-color: ${({theme:e})=>{var t;return(null==(t=null==e?void 0:e.tagStyle)?void 0:t.generalTagBgColor)||lU.generalTagBgColor}};
`,BU=({list:e,freeGiftSet:t,onItemClick:n,isOpen:r})=>z.createElement(gU,{isOpen:r},e.map(((e,r)=>{const i=t.has(e.id),o=i?26:28,a=e.name.length>o,c=`${_r}/${e.id}`;return z.createElement(IU,{isSubMenu:!0,key:r},z.createElement(pU,{isSubMenu:!0},z.createElement(bU,{href:c,isSubMenu:!0,onClick:n(e)},e.name,i&&!a&&z.createElement(hU,{isInline:!0},z.createElement(ja.HT,{value:Jn.THEME_CORE.SHOP_CATEGORY.GIFT}))),i&&a&&z.createElement(hU,null,z.createElement(ja.HT,{value:Jn.THEME_CORE.SHOP_CATEGORY.GIFT}))))}))),AU=()=>{var e;const t=(0,Qs.useDispatch)(),{shopId:n,shopProfile:r}=xe(),i=(null==(e=null==r?void 0:r.ShopFunction)?void 0:e.IsEnabledMultiShopCategory)||!1,o=(0,Qs.useSelector)((e=>e.promotion.promotionTargetList.freeGift)),a=new Set(o),[c,l]=(0,z.useState)(new Map),s=e=>t=>{t.preventDefault(),fl("left_商品分類","click",e.name),window.location.href=`${_r}/${e.id}`},u=(0,Qs.useSelector)((e=>e.shop.multiShopCategoryBreadcrumbList)),[g,d]=(0,z.useState)(u),I=(0,Qs.useSelector)((e=>e.user.retailStoreExpressLocationId));(0,z.useEffect)((()=>{i&&(!u.allTreeWithLevel1AndLevel2List||u.allTreeWithLevel1AndLevel2List.length<=0)&&t(sC({categoryId:0,locationId:I}))}),[i,u.allTreeWithLevel1AndLevel2List,I]),(0,z.useEffect)((()=>{d(u)}),[u]);const p=e=>{fl("left_商品分類","click",e.Name);const t=`${_r}/${e.Id}`;window.location.href=t};if(i){const e=g.allTreeWithLevel1AndLevel2List||[],t=g.breadcrumbList||[],n=g.categoryId||0;return g.isFetching?z.createElement(Kh,null):z.createElement(Ys,{categoryList:e,breadcrumbList:t,categoryId:n,itemSelectClick:p,withSubmitButton:!1,withSelectTitle:!1,blockHeight:"auto",layoutMode:"narrow",scrollWhenOpen:!1})}{const{loading:e,data:t}=(0,cU.IT)(Ir,{variables:{shopId:n}}),{shopCategoryList:{categoryList:r}}=t||{shopCategoryList:{categoryList:[]}};return e?z.createElement(Kh,null):z.createElement(uU,null,r.map((e=>{const t=(e=>e.childList&&e.childList.length>0)(e),n=c.has(e.id)&&c.get(e.id),r=a.has(e.id),i=r?27:30,o=e.name.length>i,u=`${_r}/${e.id}`;return z.createElement(dU,{key:e.id},z.createElement(IU,{isOpen:t&&n},z.createElement(pU,null,z.createElement(bU,{href:u,onClick:s(e)},e.name,r&&!o&&z.createElement(hU,{isInline:!0},z.createElement(ja.HT,{value:Jn.THEME_CORE.SHOP_CATEGORY.GIFT}))),r&&o&&z.createElement(hU,null,z.createElement(ja.HT,{value:Jn.THEME_CORE.SHOP_CATEGORY.GIFT}))),z.createElement(mU,null,t&&z.createElement(CU,{className:"ico ico-chevron-down",isOpen:n,onClick:(g=e.id,()=>{if(c.has(g)){const e=c.get(g);l(new Map(c.set(g,!e)))}else l(new Map(c.set(g,!0)))})}))),t&&n&&z.createElement(BU,{list:e.childList,freeGiftSet:a,onItemClick:s,isOpen:n}));var g})))}},yU={boardModule:{boardContent:{boards:[{workContent:{works:[],paging:{next:0,length:0,totalLength:0}}}]}}},fU=dr()`
    query ($shopId: Int!, $boardPagingOpts: PagingInput, $workPagingOpts: PagingInput) {
        boardModule(shopId: $shopId) {
            boardContent(boardPaging: $boardPagingOpts) {
                boards {
                    workContent(workPaging: $workPagingOpts) {
                        works {
                            workId
                            primaryId
                            primaryTitle
                            secondaryId
                            secondaryTitle
                            information
                            resizedMainImages {
                                l
                                m
                                origin
                                s
                            }
                            contents {
                                resizeImage {
                                    s
                                    m
                                    l
                                    origin
                                }
                                video {
                                    url
                                }
                            }
                            hasVideoContent
                            videoContentIndex
                        }
                        paging {
                            next
                            length
                            totalLength
                            previous
                        }
                    }
                }
            }
        }
    }
`,GU=dr()`
    query ($shopId: Int!, $boardPagingOpts: PagingInput) {
        boardModule(shopId: $shopId) {
            boardContent(boardPaging: $boardPagingOpts) {
                boards {
                    filters {
                        key
                        displayName
                        data {
                            value
                            displayValue
                            type
                        }
                    }
                }
            }
        }
    }
`,QU=dr()`
    query getStaffBoardList(
        $shopId: Int!
        $boardPagingOpts: PagingInput
        $workPagingOpts: PagingInput
        $workFilters: [WorkFilterInput]
        $orderBy: String
    ) {
        boardModule(shopId: $shopId) {
            boardContent(boardPaging: $boardPagingOpts) {
                boards {
                    workContent(workFilters: $workFilters, workPaging: $workPagingOpts, orderBy: $orderBy) {
                        works {
                            workId
                            primaryId
                            primaryTitle
                            secondaryId
                            secondaryTitle
                            information
                            resizedMainImages {
                                s
                                m
                                l
                                origin
                            }
                            contents {
                                resizeImage {
                                    s
                                    m
                                    l
                                    origin
                                }
                                video {
                                    url
                                }
                            }
                            hasVideoContent
                            videoContentIndex
                        }
                        paging {
                            totalLength
                        }
                    }
                }
            }
        }
    }
`;var FU=Object.defineProperty,vU=Object.getOwnPropertySymbols,ZU=Object.prototype.hasOwnProperty,EU=Object.prototype.propertyIsEnumerable,SU=(e,t,n)=>t in e?FU(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n;const XU=e=>{return n=[e],r=function*({shopId:e,pageType:t}){try{const n=`${It()}/salepage-listing/api/recommendation/config/${e}?channel=web&version=1.0`,{data:r}=yield Nn(n);if((null==r?void 0:r.channel)&&"web"!==r.channel.toLowerCase())throw new Error(`Invalid Channel: ${null==r?void 0:r.channel}`);return((e,t)=>{var n;return((e,t)=>{for(var n in t||(t={}))ZU.call(t,n)&&SU(e,n,t[n]);if(vU)for(var n of vU(t))EU.call(t,n)&&SU(e,n,t[n]);return e})({isEnable:(null==e?void 0:e.isEnable)||!1},(e=>{var n,r,i,o;if(!e)return null;switch(t){case nr.salePageList:return{recommendationA:null==(n=e.placement)?void 0:n.recommendationA,recommendationB:null==(r=e.placement)?void 0:r.recommendationB};case nr.searchResultPage:return{recommendationA:null==(i=e.placement)?void 0:i.recommendationA};case nr.tagCategory:return{recommendationA:null==(o=e.placement)?void 0:o.recommendationA};default:return null}})(null==(n=null==e?void 0:e.page)?void 0:n[t]))})(r,t)}catch(n){return ze.error(`[ERROR] fetchRecommendationConfig failed: ${Me(n)}: ${Je(n)}. shopId: ${e}, pageType: ${t}`),Promise.reject(n)}},new Promise(((e,i)=>{var o=e=>{try{c(r.next(e))}catch(t){i(t)}},a=e=>{try{c(r.throw(e))}catch(t){i(t)}},c=t=>t.done?e(t.value):Promise.resolve(t.value).then(o,a);c((r=r.apply(void 0,n)).next())}));var n,r},TU=e=>{const t=xe(),{shopId:n}=t,[r,i]=(0,z.useState)(!1),[o,a]=(0,z.useState)(null),[c,l]=(0,z.useState)(null);return(0,z.useEffect)((()=>{var r;r=function*(){try{const{isEnable:t=!1,recommendationA:r={},recommendationB:o={}}=yield XU({shopId:n,pageType:e});i(t),a(r),l(o)}catch(t){a({}),l({})}},new Promise(((e,n)=>{var i=e=>{try{a(r.next(e))}catch(t){n(t)}},o=e=>{try{a(r.throw(e))}catch(t){n(t)}},a=t=>t.done?e(t.value):Promise.resolve(t.value).then(i,o);a((r=r.apply(void 0,null)).next())}))}),[]),{isEnableRecommendation:r,recommendationAConfig:o,recommendationBConfig:c}},xU=(e,t)=>{var n;const r=[];return null==(n=null==e?void 0:e.filterItemList)||n.forEach((e=>{const{typeId:n}=e;-1!==t.indexOf(n)&&r.push(n)})),r},UU=(e,t,n)=>{return{filterItemList:(r=e,i=t,r.map((e=>{const{typeId:t,typeName:n}=e,r=i.some((e=>e===t));return{typeId:t,typeName:n,checked:r}}))),title:n,groupToggleStatus:!0};var r,i},NU=(e,t)=>e?+(e/t).toFixed(2):null;var RU=n(794);const{buttonStyle:OU}=se.A,VU=K.default.div`
    position: fixed;
    z-index: 1050;
    width: 100%;
    height: 100%;
    top: 0;
    opacity: 0.2;
    background: ${J.blackTwo};
`,WU=K.default.div`
    position: fixed;
    z-index: 1050;
    top: 0;
    right: 0;
    bottom: 0;
    left: 0;
    width: ${({isDesktop:e})=>e?"430px":"290px"};
    margin: auto;
    height: fit-content;
    border-radius: 8px;
    padding: ${({isDesktop:e})=>e?"30px":"15px"};
    background-color: ${J.white};
    box-shadow: ${({isDesktop:e})=>e?"0px 2px 12px 0px rgba(0, 0, 0, 0.10)":"0px 0px 10px 0px rgba(0, 0, 0, 0.25)"};
    display: flex;
    flex-direction: column;
    justify-content: space-between;
    box-sizing: border-box;
    gap: ${({isDesktop:e})=>e?"40px":"15px"};
`,_U=K.default.div`
    display: flex;
    align-items: center;
    justify-content: center;
    font-size: ${({isDesktop:e})=>e?"24px":"16px"};
    font-weight: 500;
    line-height: ${({isDesktop:e})=>e?"28px":"24px"};
    ${({isDesktop:e})=>e?"letter-spacing: 0.87px;":""}
    color: ${J.blackTwo};
`,wU=K.default.div`
    color: ${J.blackThree};
    text-align: center;
    font-size: 16px;
    font-weight: 400;
    line-height: 150%;
    display: flex;
    flex-direction: column;
    ${({isDesktop:e})=>e?"margin-bottom: 15px;":""}
`,HU=K.default.div`
    display: flex;
    justify-content: space-between;
`,YU=K.default.button`
    cursor: pointer;
    border-radius: 5px;
    font-size: 15px;
    line-height: 15px;
    width: ${({isDesktop:e})=>e?"180px":"125px"};
    height: 44px;
    padding: ${({isDesktop:e})=>e?"14px 10.384px 15px 10.385px":"13px 11px"};
    display: flex;
    justify-content: center;
    align-items: center;
`,kU=(0,K.default)(YU)`
    color: ${e=>{var t,n;return(null==(n=null==(t=e.theme)?void 0:t.buttonStyle)?void 0:n.primaryBtnTextColor)||OU.primaryBtnTextColor}};
    background-color: ${e=>{var t,n;return(null==(n=null==(t=e.theme)?void 0:t.buttonStyle)?void 0:n.primaryBtnBgColor)||OU.primaryBtnBgColor}};
`,DU=(0,K.default)(YU)`
    color: ${e=>{var t,n;return(null==(n=null==(t=e.theme)?void 0:t.buttonStyle)?void 0:n.secondBtnTextColor)||OU.secondBtnTextColor}};
    background-color: ${e=>{var t,n;return(null==(n=null==(t=e.theme)?void 0:t.buttonStyle)?void 0:n.secondBtnBgColor)||OU.secondBtnBgColor}};
    border: 1px solid ${e=>{var t,n;return(null==(n=null==(t=e.theme)?void 0:t.buttonStyle)?void 0:n.secondBtnBorderColor)||OU.secondBtnBorderColor}};
`,LU=({isDesktop:e})=>{const{i18n:t}=Te(),{salesMarketSettings:n}=t||{},{salesMarket:r}=n||{},i=(null==r?void 0:r.toLowerCase())===Wt.HK,[o,a]=(0,z.useState)(!1),[c,l]=(0,z.useState)(null),{setIsClickEntryButton:s,setHandlePopUpToggleFn:u}=(0,z.useContext)(nI),g=(e,t)=>{a(e),t&&l((()=>t))};return(0,z.useEffect)((()=>{u((()=>g))}),[]),o&&z.createElement("div",{id:"restricted-popup"},z.createElement(VU,null),z.createElement(WU,{isDesktop:e},z.createElement(_U,{isDesktop:e},(0,ja.t)(Jn.THEME_CORE.DEFAULT.RESTRICTED_POPUP_TITLE)),z.createElement(wU,{isDesktop:e},i&&z.createElement("span",null,(0,ja.t)(Jn.THEME_CORE.DEFAULT.RESTRICTED_POPUP_CONTENT_HK)),!i&&z.createElement(z.Fragment,null,z.createElement("span",null,(0,ja.t)(Jn.THEME_CORE.DEFAULT.RESTRICTED_POPUP_CONTENT_INFO)),z.createElement("span",null,(0,ja.t)(Jn.THEME_CORE.DEFAULT.RESTRICTED_POPUP_CONTENT_CHECK_AGE)))),z.createElement(HU,null,z.createElement(DU,{isDesktop:e,onClick:()=>{a(!1)}},(0,ja.t)(Jn.THEME_CORE.DEFAULT.RESTRICTED_POPUP_LEAVE)),z.createElement(kU,{isDesktop:e,onClick:()=>{a(!1),s(!0),c&&c(),Oo()&&(0,Bn.addCookie)("isRestricted","false")}},(0,ja.t)(Jn.THEME_CORE.DEFAULT.RESTRICTED_POPUP_ENTER)))))};var PU=n(8477),JU=n(4937),MU=n(5981),zU=n(4945),jU=n.n(zU);const KU=(0,z.createContext)({isShowPopover:!1,setIsShowPopover:e=>{},isLoadedActiveOrders:!1,setIsLoadedActiveOrders:e=>{}}),qU=({children:e})=>{const[t,n]=(0,z.useState)(!1),[r,i]=(0,z.useState)(!1),o=(0,z.useMemo)((()=>({isShowPopover:t,setIsShowPopover:n,isLoadedActiveOrders:r,setIsLoadedActiveOrders:i})),[t,r]);return z.createElement(KU.Provider,{value:o},e)};var $U=Object.defineProperty,eN=Object.defineProperties,tN=Object.getOwnPropertyDescriptors,nN=Object.getOwnPropertySymbols,rN=Object.prototype.hasOwnProperty,iN=Object.prototype.propertyIsEnumerable,oN=(e,t,n)=>t in e?$U(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,aN=(e,t)=>{for(var n in t||(t={}))rN.call(t,n)&&oN(e,n,t[n]);if(nN)for(var n of nN(t))iN.call(t,n)&&oN(e,n,t[n]);return e},cN=(e,t)=>eN(e,tN(t));class lN extends z.Component{constructor(e){super(e),this.layoutList=["header","center","footer"],this.getComponent=(e,t)=>{const n=t[0].toUpperCase()+t.substr(1);return this.props.themeComponents[n]};const{construct:t,dependencies:n}=this.props,{ShopThirdPartyConfigInfo:r,ShopBasicInfo:i}=(null==n?void 0:n.shopProfile)||{},{FacebookConfig:o,LineConfig:a,InstagramConfig:c}=r||{},{ShopDomain:l,ShopId:s}=i||{},u={fbFansPageUrl:null==o?void 0:o.FansPageUrl,lineUserId:null==a?void 0:a.LineUserId,instagramUrl:null==c?void 0:c.ShopInstagramUrl,shopDomain:l,shopId:s};this.replacedThemeConfig=Cc(lt(t),u);const g=(0,MU.$)({uri:dt(),fetch:jU(),useGETForQueries:!0});this.apolloClient=new JU.Ri({link:g,cache:new PU.D9})}render(){const{dependencies:e,pageComponent:t,globalStyleData:n={},themeComponents:r,reCaptchaKey:i}=this.props,{LoadingContainer:o,RistrictContainer:a,LinePopup:c,CookiePrivacyTip:l,FullScreenAdPopover:s}=r,u=Object.keys(n).length>0?n:se.A;return z.createElement(K.ThemeProvider,{theme:u},z.createElement(RU.XM,{client:this.apolloClient},z.createElement("div",{className:"container-component"},z.createElement(qU,null,z.createElement(rI,null,z.createElement(tI,null,this.layoutList.map(((n,r)=>{const i="header"===n,o=this.replacedThemeConfig[n];return o&&o.length>0&&z.createElement("div",{className:`layout-${n}`,key:r},this.replacedThemeConfig[n].map(((n,r)=>{const{componentType:o,id:a}=n,c=this.getComponent(o,a),l="injectComponent"===n.componentType?t:c;if(!l)return null;const s=n.attributes,u=cN(aN({},s),{moduleId:n.id,moduleKey:n.moduleKey,dependencies:e});return(i||Ge())&&z.createElement(l,cN(aN({},u),{key:r}))})))})),z.createElement(o,null),z.createElement(LU,{isDesktop:!0}),z.createElement(a,{dependencies:e}),z.createElement(c,{dependencies:e}),z.createElement(l,null),z.createElement(s,{browsingMode:e.browsingMode}),z.createElement(lA,null)))))))}}const sN=(0,Qs.connect)((e=>aN({},Object.keys(G).reduce(((t,n)=>{const r=G[n].mapStateToProps(e);return aN(aN({},t),r)}),{}))),(e=>aN({},Object.keys(G).reduce(((t,n)=>{const r=G[n].mapDispatchToProps(e);return aN(aN({},t),r)}),{}))))(lN);var uN=n(7437),gN=n(9610),dN=n(8100);const IN=(0,uN.E)(((e,t,n)=>e.pipe((0,gN.p)((0,Wb.isActionOf)(_b)),(0,dN.T)((()=>dn(n))),(0,ln.ZZ)((e=>(0,on.H)((e=>{return n=function*(){const t=gt("Activity/GetActivityList",e,!0);return(({Data:e=[]})=>e.map((e=>({title:e.Activity_Name||"",mediaUrlList:[e.Activity_Url],link:`/v2/activity/${e.Activity_Id}`}))))(yield Nn(t))},new Promise(((e,r)=>{var i=e=>{try{a(n.next(e))}catch(t){r(t)}},o=e=>{try{a(n.throw(e))}catch(t){r(t)}},a=t=>t.done?e(t.value):Promise.resolve(t.value).then(i,o);a((n=n.apply(void 0,null)).next())}));var n})(e)).pipe((0,dN.T)((e=>wb(e))),(0,sn.W)((e=>(0,cn.of)(Hb(en(e))))))))))),pN=(0,uN.E)(((e,t,n)=>e.pipe((0,gN.p)((0,Wb.isActionOf)(Yb)),(0,dN.T)((()=>dn(n))),(0,ln.ZZ)((e=>(0,on.H)((e=>{return n=function*(){const{shopId:t}=e,n=gt(`Coupon/GetCouponList/${t}`,e,!0);ze.info(`[INFO] fetchCouponList apiUrl: ${n}`);const r=(({data:e=[]})=>e.map((e=>({title:e.Title||"",mediaUrlList:[e.Gallery],link:`/Coupon/Detail/${e.Id}`}))))(yield Nn(n));return ze.info(`[INFO] fetchCouponListFn finish: ${r}`),r},new Promise(((e,r)=>{var i=e=>{try{a(n.next(e))}catch(t){r(t)}},o=e=>{try{a(n.throw(e))}catch(t){r(t)}},a=t=>t.done?e(t.value):Promise.resolve(t.value).then(i,o);a((n=n.apply(void 0,null)).next())}));var n})(e)).pipe((0,dN.T)((e=>kb(e))),(0,sn.W)((e=>(0,cn.of)(Db(en(e))))))))))),bN=(0,uN.E)(((e,t,n)=>e.pipe((0,gN.p)((0,Wb.isActionOf)(Lb)),(0,dN.T)((()=>dn(n))),(0,ln.ZZ)((e=>(0,on.H)((e=>{return n=function*(){const t=gt("ECoupon/GetOfficialECouponList",e,!0);return(({ShopECouponList:e=[]})=>(e.length>0&&e[0]&&e[0].ECouponList||[]).map((({Name:e,TypeDef:t,ImgUrl:n,Id:r,DiscountPrice:i,StartDateTime:o,EndDateTime:a})=>({title:e||"",typeDef:t||"",mediaUrlList:[n],link:`/ECoupon/Detail/${r}`,price:i,currency:null,startDate:o,endDate:a}))))(yield Nn(t))},new Promise(((e,r)=>{var i=e=>{try{a(n.next(e))}catch(t){r(t)}},o=e=>{try{a(n.throw(e))}catch(t){r(t)}},a=t=>t.done?e(t.value):Promise.resolve(t.value).then(i,o);a((n=n.apply(void 0,null)).next())}));var n})(e)).pipe((0,dN.T)((e=>Pb(e))),(0,sn.W)((e=>(0,cn.of)(Jb(en(e)))))))))));var mN=(e,t,n)=>new Promise(((r,i)=>{var o=e=>{try{c(n.next(e))}catch(t){i(t)}},a=e=>{try{c(n.throw(e))}catch(t){i(t)}},c=e=>e.done?r(e.value):Promise.resolve(e.value).then(o,a);c((n=n.apply(e,t)).next())}));const CN=(0,uN.E)(((e,t,n)=>e.pipe((0,gN.p)((0,Wb.isActionOf)(Kb)),(0,dN.T)((()=>dn(n))),(0,ln.ZZ)((e=>(0,on.H)((e=>mN(void 0,null,(function*(){const{shopId:t}=e,n=gt("TraceSalePageList/GetCount",e,!1),r={method:qt.RequestMethod.POST,body:JSON.stringify({shopId:t})};return yield Nn(n,r)})))(e)).pipe((0,dN.T)((e=>qb(e))),(0,sn.W)((e=>(0,cn.of)($b(en(e)))))))))),((e,t,n)=>e.pipe((0,gN.p)((0,Wb.isActionOf)(Mb)),(0,dN.T)((()=>dn(n))),(0,ln.ZZ)((e=>(0,on.H)((e=>mN(void 0,null,(function*(){const t=gt("TraceSalePageList/GetTraceSalePageIds",e,!1),n=yield Nn(t);return(null==n?void 0:n.data)||[]})))(e)).pipe((0,dN.T)((e=>zb(e))),(0,sn.W)((e=>(0,cn.of)(jb(en(e)))))))))),((e,t,n)=>e.pipe((0,gN.p)((0,Wb.isActionOf)(em)),(0,ln.ZZ)((e=>{const r=dn(n),i=e.payload.productInfo.id,o={payload:{salePageId:i},streamInjection:r},a=t.value.favorite.favoriteCount,c=t.value.favorite.favoriteList;return(0,on.H)((l=o,mN(void 0,[l],(function*({streamInjection:e,payload:{salePageId:t}}){const n=gt(`TraceSalePageList/InsertItem?salePageId=${t}`,e,!1);return yield Nn(n)})))).pipe((0,ln.ZZ)((()=>(Zl(e.payload.productInfo),(0,cn.of)(tm({favoriteCount:a+1,favoriteList:c.concat(i)}))))),(0,sn.W)((e=>(0,cn.of)(nm(en(e))))));var l})))),((e,t,n)=>e.pipe((0,gN.p)((0,Wb.isActionOf)(rm)),(0,ln.ZZ)((e=>{const r=dn(n),i={payload:{salePageId:e.id},streamInjection:r},o=t.value.favorite.favoriteCount,a=t.value.favorite.favoriteList;return(0,on.H)((c=i,mN(void 0,[c],(function*({streamInjection:e,payload:{salePageId:t}}){const n=gt(`TraceSalePageList/DeleteItem?salePageId=${t}`,e,!1);return yield Nn(n)})))).pipe((0,dN.T)((()=>(El(e),im({favoriteCount:o-1,favoriteList:a.filter((t=>t!==e.id))})))),(0,sn.W)((e=>(0,cn.of)(om(en(e))))));var c}))))),hN=(0,uN.E)(((e,t,n)=>e.pipe((0,gN.p)((0,Wb.isActionOf)(Im)),(0,ln.ZZ)((e=>{const t=dn(n),{phoneNumber:r,reCaptchaToken:i}=e,o={streamInjection:t,payload:{phoneNumber:r,reCaptchaToken:i}};return(0,on.H)((e=>{return n=[e],r=function*({streamInjection:e,payload:{phoneNumber:t,reCaptchaToken:n}}){const{shopId:r}=e,i=gt("Official/SendAppDownLoadLink",e,!1),o={method:qt.RequestMethod.POST,body:JSON.stringify({shopId:r,cellPhone:t,pagefrom:"",reCaptchaToken:n})},a=((e,{ReturnCode:t})=>{let n=(0,ja.t)(Jn.THEME_CORE.HEADER.APP_DOWNLOAD_USE_QR_CODE);return"API0001"===t?n=(0,ja.t)(Jn.THEME_CORE.HEADER.APP_DOWNLOAD_SEND_TO_PHONE):"API0003"===t?n=(0,ja.t)(Jn.THEME_CORE.HEADER.APP_DOWNLOAD_SEND_TO_NUMBER,{phoneNumber:e}):"API0005"===t&&(n="驗證失敗"),{message:n,sendedPhoneNumber:e,isSendOnLimited:"API0004"===t,returnCode:t}})(t,yield Nn(i,o));return a},new Promise(((e,i)=>{var o=e=>{try{c(r.next(e))}catch(t){i(t)}},a=e=>{try{c(r.throw(e))}catch(t){i(t)}},c=t=>t.done?e(t.value):Promise.resolve(t.value).then(o,a);c((r=r.apply(void 0,n)).next())}));var n,r})(o)).pipe((0,dN.T)((e=>pm(e))),(0,sn.W)((e=>(0,cn.of)(bm(en(e))))))})))),((e,t,n)=>e.pipe((0,gN.p)((0,Wb.isActionOf)(um)),(0,ln.ZZ)((e=>{const t={streamInjection:dn(n)};return(0,on.H)((r=t,((e,t,n)=>new Promise(((r,i)=>{var o=e=>{try{c(n.next(e))}catch(t){i(t)}},a=e=>{try{c(n.throw(e))}catch(t){i(t)}},c=e=>e.done?r(e.value):Promise.resolve(e.value).then(o,a);c((n=n.apply(e,t)).next())})))(void 0,[r],(function*({streamInjection:e}){var t;const{shopId:n}=e,r=gt(`AuthV4/GetSSOEnabledKey?shopId=${n}`,e,!0),i={method:qt.RequestMethod.POST},o=yield Nn(r,i);return o&&"API3601"===o.ReturnCode?null==(t=o.Data)?void 0:t.RecaptchaSiteKey:""})))).pipe((0,dN.T)((e=>gm(e))),(0,sn.W)((e=>(0,cn.of)(dm(en(e))))));var r})))));var BN=n(4833);const AN=(0,uN.E)((e=>e.pipe((0,gN.p)((0,Wb.isActionOf)(hm)),(0,ln.ZZ)((()=>BN.w)))));var yN=n(8988),fN=(e,t,n)=>new Promise(((r,i)=>{var o=e=>{try{c(n.next(e))}catch(t){i(t)}},a=e=>{try{c(n.throw(e))}catch(t){i(t)}},c=e=>e.done?r(e.value):Promise.resolve(e.value).then(o,a);c((n=n.apply(e,t)).next())}));Ma().extend(GG());const GN={LATEST:Jn.THEME_CORE.PROMOTION.LATEST,COME_TO_END:Jn.THEME_CORE.PROMOTION.COME_TO_END},QN=(e,t,n,r)=>{const i=e.isBetween(Ma()().subtract(1,"days"),Ma()()),o=t.isBetween(Ma()(),Ma()().add(1,"days")),a={mobileTagList:[],desktopTagList:[]};return i&&(a.mobileTagList=[GN.LATEST],a.desktopTagList=[GN.LATEST]),o&&(a.mobileTagList=[GN.COME_TO_END]),n.length&&(a.mobileTagList.unshift(...n),a.desktopTagList.unshift(...n)),r&&(a.mobileTagList.unshift(r),a.desktopTagList.unshift(r)),a},FN=({Data:{PromotionList:e=[]}})=>({promotionList:e.map((e=>{const t=Ma()(za(e.StartDateTime)),n=Ma()(za(e.EndDateTime)),r=e.PromotionLabelList||[],i=e.PromotionTopLabel||"";return{promotionId:e.PromotionId,title:e.Name,endDateTime:n,startDateTime:t,startDateString:t.format("YYYY/MM/DD"),endDateString:n.format("YYYY/MM/DD"),isPromotionEngine:e.IsPromotionEngine,isOver:Ma()().isAfter(n),isComingSoon:Ma()().isBefore(t),mediaUrlList:e.SalePageList.map((e=>e.SalePageImageUrl)),tagInfo:QN(t,n,r,i),periodWeekText:e.ExtraDateTimeText,isRegular:e.IsRegular,displaySetting:e.DisplaySetting,targetMemberTypeDef:e.TargetMemberTypeDef}}))});var vN=Object.getOwnPropertySymbols,ZN=Object.prototype.hasOwnProperty,EN=Object.prototype.propertyIsEnumerable;const SN=(0,uN.E)(((e,t,n)=>e.pipe((0,gN.p)((0,Wb.isActionOf)(Bm)),(0,dN.T)((()=>dn(n))),(0,ln.ZZ)((e=>(0,on.H)((e=>{return n=function*(){const{shopId:t}=e,n=gt(`PromotionV2/GetList/${t}?orderBy=Newest&startIndex=0&maxCount=1&typeDef=All&source=Web`,e,!0),{Data:{PromotionCount:r}}=yield Nn(n);return r},new Promise(((e,r)=>{var i=e=>{try{a(n.next(e))}catch(t){r(t)}},o=e=>{try{a(n.throw(e))}catch(t){r(t)}},a=t=>t.done?e(t.value):Promise.resolve(t.value).then(i,o);a((n=n.apply(void 0,null)).next())}));var n})(e)).pipe((0,dN.T)((e=>Am(e))),(0,sn.W)((e=>(0,cn.of)(ym(en(e)))))))))),((e,t,n)=>e.pipe((0,gN.p)((0,Wb.isActionOf)(fm)),(0,dN.T)((()=>dn(n))),(0,ln.ZZ)((e=>(0,on.H)((e=>{return n=function*(){const{shopId:t}=e,n=gt(`Official/GetOfficialPromotionTargetList/${t}`,e,!0);return(({Data:e=[]})=>({freeGift:e.reduce(((e,t)=>"FreeGift"===t.ConditionDiscountTypeDef?[...e,...t.Targets]:e),[])}))(yield Nn(n))},new Promise(((e,r)=>{var i=e=>{try{a(n.next(e))}catch(t){r(t)}},o=e=>{try{a(n.throw(e))}catch(t){r(t)}},a=t=>t.done?e(t.value):Promise.resolve(t.value).then(i,o);a((n=n.apply(void 0,null)).next())}));var n})(e)).pipe((0,dN.T)((e=>Gm(e))),(0,sn.W)((e=>(0,cn.of)(Qm(en(e)))))))))),((e,t,n)=>e.pipe((0,gN.p)((0,Wb.isActionOf)(Fm)),(0,dN.T)((({moduleKey:e,orderBy:t,startIndex:r,maxCount:i,typeDef:o,promotionListFromType:a})=>({moduleKey:e,streamInjection:dn(n),payload:{maxCount:i,orderBy:t,startIndex:r,typeDef:o,promotionListFromType:a}}))),(0,ln.ZZ)((e=>{var t,n=e,{moduleKey:r}=n,i=((e,t)=>{var n={};for(var r in e)ZN.call(e,r)&&t.indexOf(r)<0&&(n[r]=e[r]);if(null!=e&&vN)for(var r of vN(e))t.indexOf(r)<0&&EN.call(e,r)&&(n[r]=e[r]);return n})(n,["moduleKey"]);return(0,on.H)((t=i,fN(void 0,[t],(function*({streamInjection:e,payload:{orderBy:t,startIndex:n,maxCount:r,typeDef:i,promotionListFromType:o}}){const{shopId:a}=e,c=gt(`PromotionV2/GetList/${a}?orderBy=${t}&startIndex=${n}&maxCount=${r}&typeDef=${i}&source=Web&v=0&r=t&from=${o}`,e,!0),l=yield Nn(c);return FN(l)})))).pipe((0,dN.T)((e=>vm(r,e))),(0,sn.W)((e=>(0,cn.of)(Zm(en(e))))))})))),((e,t,n)=>e.pipe((0,gN.p)((0,Wb.isActionOf)(Em)),(0,dN.T)((({moduleKey:e,promotionIdList:t,promotionListFromType:r})=>({moduleKey:e,promotionIdList:t,params:{streamInjection:dn(n),payload:{promotionIdList:t,promotionListFromType:r}}}))),(0,ln.ZZ)((({moduleKey:e,promotionIdList:t,params:n})=>{return(0,yN.T)((()=>0===t.length),(0,cn.of)(Sm(e,{promotionList:[]})),(0,on.H)((r=n,fN(void 0,[r],(function*({streamInjection:e,payload:{promotionIdList:t,promotionListFromType:n}}){if(!t||0===t.length)return;const{shopId:r}=e,i=t.join(","),o=gt(`PromotionEngine/GetListById/${r}?promotionIds=${i}&from=${n}`,e,!0),a=yield Nn(o);return FN(a)})))).pipe((0,dN.T)((t=>Sm(e,t))),(0,sn.W)((e=>(0,cn.of)(Xm(en(e)))))));var r})))),((e,t,n)=>e.pipe((0,gN.p)((0,Wb.isActionOf)(Tm)),(0,ln.ZZ)((e=>{const{payload:{categoryId:t}}=e,r={streamInjection:dn(n),payload:{categoryId:t,shopDomain:Tc(n,"shopProfile.ShopBasicInfo.ShopDomain")}};return(0,on.H)((e=>fN(void 0,[e],(function*({streamInjection:e,payload:{categoryId:t,shopDomain:n}}){const{shopId:r}=e,i=gt(`shopCategory/GetPromotionList/${r}/${t}?shopId=${r}`,e,!0);return(({Data:e=[]},t)=>e.map((e=>({id:e.Id,name:e.Name,startTimeString:Ma()(za(e.StartTime)).format("YYYY/MM/DD hh:mm"),endTimeString:Ma()(za(e.EndTime)).format("YYYY/MM/DD hh:mm"),rules:e.Rules,promotionConditionDiscountType:e.PromotionConditionDiscountType,promotionConditionType:e.PromotionConditionType,link:(0,Ze.getPageUrl)(t,Ze.PAGE_TYPE.PROMOTION,{id:e.Id})}))))(yield Nn(i),n)})))(r)).pipe((0,dN.T)((e=>xm(e))),(0,sn.W)((e=>(0,cn.of)(Um(en(e))))))}))))),XN=(0,uN.E)(((e,t,n)=>e.pipe((0,gN.p)((0,Wb.isActionOf)(Nm)),(0,dN.T)((()=>dn(n))),(0,ln.ZZ)((e=>(0,on.H)((e=>{return n=function*(){const t=gt("/VIPMember/GetVipMemberCustomLinkSettings",e,!0);return(({Data:e=[]})=>e.filter((e=>{const{IsEnable:t,ShowPositions:n}=e;return t&&n.includes("MobileWebSideBar")})).map((({DisplayText:e,GroupName:t})=>({displayText:e,groupName:t}))))(yield Nn(t))},new Promise(((e,r)=>{var i=e=>{try{a(n.next(e))}catch(t){r(t)}},o=e=>{try{a(n.throw(e))}catch(t){r(t)}},a=t=>t.done?e(t.value):Promise.resolve(t.value).then(i,o);a((n=n.apply(void 0,null)).next())}));var n})(e)).pipe((0,dN.T)((e=>Rm(e))),(0,sn.W)((e=>(0,cn.of)(Om(en(e)))))))))));var TN=Object.defineProperty,xN=Object.defineProperties,UN=Object.getOwnPropertyDescriptors,NN=Object.getOwnPropertySymbols,RN=Object.prototype.hasOwnProperty,ON=Object.prototype.propertyIsEnumerable,VN=(e,t,n)=>t in e?TN(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n;const WN=e=>{return n=[e],r=function*({streamInjection:e,payload:t}){const n=gt("ProductStock/GetSellingQtyListNew",e,!1),r={method:qt.RequestMethod.POST,body:JSON.stringify({ids:t.skuIdList.toString()})};return((e,t)=>{const n=(0,M.keyBy)(e,"SaleProductSKUId");return t.map((e=>{return t=((e,t)=>{for(var n in t||(t={}))RN.call(t,n)&&VN(e,n,t[n]);if(NN)for(var n of NN(t))ON.call(t,n)&&VN(e,n,t[n]);return e})({},e),r={sellingQty:n[e.skuId].SellingQty},xN(t,UN(r));var t,r}))})(yield Nn(n,r),t.skuInfoList)},new Promise(((e,i)=>{var o=e=>{try{c(r.next(e))}catch(t){i(t)}},a=e=>{try{c(r.throw(e))}catch(t){i(t)}},c=t=>t.done?e(t.value):Promise.resolve(t.value).then(o,a);c((r=r.apply(void 0,n)).next())}));var n,r};var _N=n(2596),wN=n(5937),HN=Object.defineProperty,YN=Object.defineProperties,kN=Object.getOwnPropertyDescriptors,DN=Object.getOwnPropertySymbols,LN=Object.prototype.hasOwnProperty,PN=Object.prototype.propertyIsEnumerable,JN=(e,t,n)=>t in e?HN(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,MN=(e,t)=>{for(var n in t||(t={}))LN.call(t,n)&&JN(e,n,t[n]);if(DN)for(var n of DN(t))PN.call(t,n)&&JN(e,n,t[n]);return e};const zN=(0,uN.E)(((e,t,n)=>e.pipe((0,gN.p)((0,Wb.isActionOf)(Vm)),(0,dN.T)((e=>{const t=dn(n);return{payload:{salePageIds:e.salePageIds},streamInjection:t}})),(0,ln.ZZ)((e=>(0,on.H)((e=>{return n=[e],r=function*({streamInjection:e,payload:{salePageIds:t}}){const n=gt(`salepage/GetSalepageDataByIds?ids=${t}`,e,!1);return(({SalepageList:e=[]})=>e.map((e=>({id:e.SalePageId,title:e.Title||"",mediaUrlList:[e.PicUrl],link:`/SalePage/Index/${e.SalePageId}?garefersrc=BrowseHistory`,price:e.Price,suggestPrice:e.SuggestPrice}))).reverse())(yield Nn(n))},new Promise(((e,i)=>{var o=e=>{try{c(r.next(e))}catch(t){i(t)}},a=e=>{try{c(r.throw(e))}catch(t){i(t)}},c=t=>t.done?e(t.value):Promise.resolve(t.value).then(o,a);c((r=r.apply(void 0,n)).next())}));var n,r})(e)).pipe((0,dN.T)((e=>Wm(e))),(0,sn.W)((e=>(0,cn.of)(_m(en(e)))))))))),((e,t,n)=>e.pipe((0,gN.p)((0,Wb.isActionOf)(wm)),(0,dN.T)((e=>{const t=dn(n);return{payload:{salePageId:e.salePageId},streamInjection:t}})),(0,ln.ZZ)((e=>(0,on.H)((e=>{return n=[e],r=function*({streamInjection:e,payload:{salePageId:t}}){const{shopId:n}=e,r=gt(`Sku/GetSkuPopupInfo/${n}/${t}?hasShow2LevelAllImageList=true&source=Web`,e,!1);return(({Data:{MajorList:[{SKUList:e}],SKUPropertySetList:t,ImageList:n,Id:r,StatusDef:i,Price:o,Title:a,SaleProductSKUIdList:c,SuggestPrice:l}})=>{let s=2;1===e.length&&(s="-1"===e[0].Title?0:1);const u=(0,M.map)(e[0].PropertyList,(e=>({skuName:e.Name,skuKey:e.PropertyNameSet}))),g={skuGroupName:e[0].Title,skuKeyList:u},d=2===s?(0,M.map)(e[1].PropertyList,(e=>({skuName:e.Name,skuKey:e.PropertyNameSet}))):[],I=2===s?{skuGroupName:e[1].Title,skuKeyList:d}:null,p=(0,M.map)(t,(({IsShow:e,PropertyNameSet:t,SaleProductSKUId:n,SellingQty:r})=>({isShow:e,skuKey:t,skuId:n,sellingQty:r})));return{salePageInfo:{maxSkuLevel:s,skuGroupLevel1:g,skuGroupLevel2:I,id:r,status:i,mainImageUrl:(0,M.map)(n,(({Id:e,SKUPropertyNameSet:t,PicUrl:n})=>({skuId:e,skuName:t,imageSrc:n}))),price:o,title:a,skuIdList:c,suggestPrice:l,currency:"$"},skuInfoList:p}})(yield Nn(r))},new Promise(((e,i)=>{var o=e=>{try{c(r.next(e))}catch(t){i(t)}},a=e=>{try{c(r.throw(e))}catch(t){i(t)}},c=t=>t.done?e(t.value):Promise.resolve(t.value).then(o,a);c((r=r.apply(void 0,n)).next())}));var n,r})(e)).pipe((0,ln.ZZ)((({salePageInfo:t,skuInfoList:n})=>(0,on.H)(On(e)).pipe((0,ln.ZZ)((e=>{const r={salePageInfo:(i=MN({},t),o={status:e},YN(i,kN(o))),skuInfoList:n};var i,o;return(0,cn.of)(Hm(r),Pm())})),(0,sn.W)((e=>(0,cn.of)(Ym(en(e))))))))))))),((e,t,n)=>e.pipe((0,gN.p)((0,Wb.isActionOf)(km)),(0,dN.T)((e=>{const t=dn(n);return{payload:{salePageId:e.salePageId},streamInjection:t}})),(0,ln.ZZ)((e=>(0,on.H)(On(e)).pipe((0,dN.T)((e=>Dm(e))),(0,sn.W)((e=>(0,cn.of)(Lm(en(e)))))))))),((e,t,n)=>e.pipe((0,gN.p)((0,Wb.isActionOf)(Pm)),(0,dN.T)((()=>{const{salePageInfo:e,skuInfoList:r}=t.value.salePage,{skuIdList:i}=e;return{payload:{skuIdList:i,skuInfoList:r},streamInjection:dn(n)}})),(0,_N.n)((e=>(0,on.H)(WN(e)).pipe((0,dN.T)((e=>Jm(e))),(0,sn.W)((e=>(0,cn.of)(Mm()))),(0,wN.c)(1e3)))))),((e,t,n)=>e.pipe((0,gN.p)((0,Wb.isActionOf)(zm)),(0,ln.ZZ)((e=>{const{salePageIds:t}=e,r={payload:{salePageIds:t},streamInjection:dn(n)};return(0,on.H)(oI(r)).pipe((0,dN.T)((t=>jm(e.dataKey,t))),(0,sn.W)((t=>(0,cn.of)(Km(e.dataKey)))))})))),((e,t,n)=>e.pipe((0,gN.p)((0,Wb.isActionOf)(qm)),(0,ln.ZZ)((e=>{return i=function*(){try{const r=dn(n),{LocationId:i}=yield(t={streamInjection:r},((e,t,n)=>new Promise(((r,i)=>{var o=e=>{try{c(n.next(e))}catch(t){i(t)}},a=e=>{try{c(n.throw(e))}catch(t){i(t)}},c=e=>e.done?r(e.value):Promise.resolve(e.value).then(o,a);c((n=n.apply(e,t)).next())})))(void 0,null,(function*(){const{streamInjection:e}=t,{shopId:n}=e;try{const t=gt("Retailstore/HadSelectedService",e,!1),n=yield Nn(t);return n&&"API0001"===n.ReturnCode?(({Data:e})=>e)(n):(ze.error("[streams/retailStore/fetchRetailStore.stream] fetchRetailStoreInfo failed, ReturnCode is not API0001"),null)}catch(r){return ze.error("[streams/retailStore/fetchRetailStore.stream] fetchRetailStoreInfo error",{errorName:Me(r),errorMessage:Je(r),shopId:n}),null}}))),{outerIds:o,defaultLocationId:a,isPreview:c}=e,l=yield((e,t,n=0,r,i)=>iI(void 0,null,(function*(){const o=encodeURIComponent(t.join()),{shopId:a}=e,c=gt(`SalePageV2/GetSalePageListByOuterId/${a}?outerIds=${o}&locationId=${n}&isPreview=${r}`,e,!0);return function({Data:e},t){return{productList:Object.keys(e).map((t=>e[t][0])).filter((e=>!!e)).map((({Id:e,Title:n="",PicUrl:r="",SalePageCode:i,Price:o,SuggestPrice:a,IsSoldOut:c,IsComingSoon:l,SoldOutActionType:s="",IsRestricted:u})=>({id:e,title:n,imageSrc:r,salePageCode:i,link:`/SalePage/Index/${i||e}`,currency:"$",price:o,suggestPrice:a,isFav:!!t&&(0,M.indexOf)(t,e)>=0,isSoldOut:c,isComingSoon:l,soldOutActionType:s,isRestricted:u})))}}(yield Nn(c),i)})))(r,o,i||a,c);return $m(e.dataKey,l)}catch(r){return eC(en(r))}var t},new Promise(((e,n)=>{var r=e=>{try{a(i.next(e))}catch(t){n(t)}},o=e=>{try{a(i.throw(e))}catch(t){n(t)}},a=t=>t.done?e(t.value):Promise.resolve(t.value).then(r,o);a((i=i.apply(void 0,null)).next())}));var i}))))),jN=(0,uN.E)(((e,t,n)=>e.pipe((0,gN.p)((0,Wb.isActionOf)(tC)),(0,dN.T)((e=>{const{keyword:t}=e,r=dn(n),{shopId:i}=r;return{keyword:t,streamInjection:r,shopId:i}})),(0,_N.n)((({keyword:e,streamInjection:t,shopId:n})=>(0,on.H)((e=>{return n=[e],r=function*({keyword:e,streamInjection:t}){const{shopId:n}=t;try{const n=gt(`Search/GetShopSalePageTermListByKeyword?keyword=${e}&shopId=${t.shopId}`,t,!0);return(yield Nn(n)).map((({SalePageTermText:e})=>e))}catch(r){throw ze.error(`[ERROR] fetchSalePageListByKeyowrd failed: ${Me(r)}: ${Je(r)}: shopId: ${n}, keyword: ${e}`),r}},new Promise(((e,i)=>{var o=e=>{try{c(r.next(e))}catch(t){i(t)}},a=e=>{try{c(r.throw(e))}catch(t){i(t)}},c=t=>t.done?e(t.value):Promise.resolve(t.value).then(o,a);c((r=r.apply(void 0,n)).next())}));var n,r})({keyword:e,streamInjection:t})).pipe((0,dN.T)((e=>nC(n,e))),(0,sn.W)((e=>(0,cn.of)(rC(n,en(e)))))))))),((e,t,n)=>e.pipe((0,gN.p)((0,Wb.isActionOf)(iC)),(0,dN.T)((()=>({streamInjection:dn(n)}))),(0,_N.n)((({streamInjection:e})=>{const{shopId:t}=e;return(0,on.H)((e=>{return n=[e],r=function*({streamInjection:e}){const{shopId:t}=e;try{const n=gt(`SearchV2/GetShopHotKeywordList?shopId=${t}`,e,!0);return(yield Nn(n)).Data||[]}catch(n){throw ze.error(`[ERROR] fetchHotSearchList failed: ${Me(n)}: ${Je(n)}: shopId: ${t}`),n}},new Promise(((e,i)=>{var o=e=>{try{c(r.next(e))}catch(t){i(t)}},a=e=>{try{c(r.throw(e))}catch(t){i(t)}},c=t=>t.done?e(t.value):Promise.resolve(t.value).then(o,a);c((r=r.apply(void 0,n)).next())}));var n,r})({streamInjection:e})).pipe((0,dN.T)((e=>oC(t,e))),(0,sn.W)((e=>(0,cn.of)(aC(t,en(e))))))}))))),KN=e=>{return n=[e],r=function*({streamInjection:e,payload:t}){try{const{shopId:n}=e,{categoryId:r,maxCount:i,orderBy:o="",startIndex:a=0,favList:c}=t,l=!!(0,M.isUndefined)(t.isCuratorable)||t.isCuratorable,s=gt(`shopCategory/GetSalePageList/${n}/${r}?order=${o}&startIndex=${a}&maxCount=${i}&isCuratorable=${l}`,e,!0),u=(({Data:{ShopCategoryName:e,ShopCategoryId:t,TotalSize:n,SalePageList:r=[],OrderByDef:i}},o)=>({productList:r.map((({Id:e,Title:t="",PicUrl:n="",PicList:r=[],Price:i,SuggestPrice:a,IsComingSoon:c,IsSoldOut:l,SoldOutActionType:s="",PairsPoints:u,PairsPrice:g,PriceDisplayType:d,DisplayTags:I=[],PromotionPriceList:p=[],IsRestricted:b,EnableIsComingSoon:m,IsShowSellingStartDateTime:C,SellingStartDateTime:h,ListingStartDateTime:B,Metafields:A})=>({id:e,title:t,imageSrc:n,imageList:r,link:`/SalePage/Index/${e}`,currency:"$",price:i,suggestPrice:a,isFav:!!o&&(0,M.indexOf)(o,e)>=0,isComingSoon:c,isSoldOut:l,soldOutActionType:s,pairsPoints:u,pairsPrice:g,priceDisplayType:d,displayTags:I,promotionPriceList:p,isRestricted:b,enableIsComingSoon:m,isShowSellingStartDateTime:C,sellingStartDateTime:h,listingStartDateTime:B,metafields:Uc(A)}))),categoryName:e,categoryId:t,totalSize:n,orderBy:i}))(yield Nn(s),c);return u}catch(n){const{shopId:i}=e,{categoryId:o}=t;return ze.error(`[ERROR] fetchCategorySalePageList failed: ${Me(n)}: ${Je(n)}: shopId: ${i}, categoryId: ${o}`),Promise.reject(n)}},new Promise(((e,i)=>{var o=e=>{try{c(r.next(e))}catch(t){i(t)}},a=e=>{try{c(r.throw(e))}catch(t){i(t)}},c=t=>t.done?e(t.value):Promise.resolve(t.value).then(o,a);c((r=r.apply(void 0,n)).next())}));var n,r},qN=(0,uN.E)(((e,t,n)=>e.pipe((0,gN.p)((0,Wb.isActionOf)(cC)),(0,dN.T)((()=>dn(n))),(0,ln.ZZ)((e=>(0,on.H)(Bg(e)).pipe((0,dN.T)((e=>IC(e))),(0,sn.W)((e=>(0,cn.of)(bC(en(e)))))))))),((e,t,n)=>e.pipe((0,gN.p)((0,Wb.isActionOf)(dC)),(0,dN.T)((e=>{const t=dn(n),{serviceType:r,locationId:i}=e;return{payload:{serviceType:r,locationId:i},streamInjection:t}})),(0,ln.ZZ)((e=>(0,on.H)(fg(e)).pipe((0,dN.T)((e=>IC(e))),(0,sn.W)((e=>(0,cn.of)(bC(en(e)))))))))),((e,t,n)=>e.pipe((0,gN.p)((0,Wb.isActionOf)(CC)),(0,ln.ZZ)((e=>{const t=dn(n),{categoryId:r,orderBy:i,startIndex:o,maxCount:a,isCuratorable:c,dataKey:l}=e,s={streamInjection:t,payload:{categoryId:r,orderBy:i,startIndex:o,maxCount:a,isCuratorable:c}};return(0,on.H)(KN(s)).pipe((0,dN.T)((e=>hC(e,{dataKey:l}))),(0,sn.W)((e=>(0,cn.of)(BC(l)))))})))),((e,t,n)=>e.pipe((0,gN.p)((0,Wb.isActionOf)(AC)),(0,_N.n)((()=>(0,on.H)((e=>{return n=function*(){const{shopId:t}=e,n=gt(`ShopProfile/GetRetailStoreChannel/${t}`,e,!0),r=yield Nn(n);return null==(i=null==r?void 0:r.Data)?void 0:i.map((({TypeDef:e,DisplayText:t,PageCode:n,IsShowAddress:r,SelectedColor:i,NotSelectedColor:o})=>({type:e,text:t,pageCode:n,isShowAddress:r,selectedColor:i,notSelectedColor:o})));var i},new Promise(((e,r)=>{var i=e=>{try{a(n.next(e))}catch(t){r(t)}},o=e=>{try{a(n.throw(e))}catch(t){r(t)}},a=t=>t.done?e(t.value):Promise.resolve(t.value).then(i,o);a((n=n.apply(void 0,null)).next())}));var n})(dn(n))).pipe((0,dN.T)((e=>yC(e))),(0,sn.W)((e=>(0,cn.of)(fC(e))))))))),((e,t,n)=>e.pipe((0,gN.p)((0,Wb.isActionOf)(lC)),(0,dN.T)((e=>{const{locationId:t}=e.payload;return{streamInjection:dn(n),locationId:t}})),(0,ln.ZZ)((({streamInjection:e,locationId:t})=>(0,on.H)(Ag(e,t)).pipe((0,dN.T)((e=>uC(e))),(0,sn.W)((e=>(0,cn.of)(bC(en(e)))))))))),((e,t,n)=>e.pipe((0,gN.p)((0,Wb.isActionOf)(QC)),(0,_N.n)((()=>(0,on.H)((e=>{return n=function*(){const{shopId:t}=e,n=gt(`Shop/GetEnableDisplayStoreList/${t}`,e,!0),r={method:qt.RequestMethod.GET};return yield Nn(n,r)},new Promise(((e,r)=>{var i=e=>{try{a(n.next(e))}catch(t){r(t)}},o=e=>{try{a(n.throw(e))}catch(t){r(t)}},a=t=>t.done?e(t.value):Promise.resolve(t.value).then(i,o);a((n=n.apply(void 0,null)).next())}));var n})(dn(n))).pipe((0,dN.T)((e=>FC(e))),(0,sn.W)((e=>(0,cn.of)(vC(e))))))))),((e,t,n)=>e.pipe((0,gN.p)((0,Wb.isActionOf)(sC)),(0,dN.T)((e=>{const{categoryId:t,updateSingleTree:r,locationId:i}=e.payload;return{streamInjection:dn(n),categoryId:t,updateSingleTree:r,locationId:i}})),(0,ln.ZZ)((({streamInjection:e,categoryId:t,updateSingleTree:n,locationId:r})=>(0,on.H)(yg(e,t,n,r)).pipe((0,dN.T)((e=>gC(e))),(0,sn.W)((e=>(0,cn.of)(mC(en(e))))))))))),$N=(0,uN.E)(((e,t,n)=>e.pipe((0,gN.p)((0,Wb.isActionOf)(ZC)),(0,dN.T)((()=>({streamInjection:dn(n),locationId:t.value.user.retailStoreExpressLocationId}))),(0,ln.ZZ)((({streamInjection:e,locationId:t})=>(0,on.H)(Gg(e,t)).pipe((0,dN.T)((e=>EC(e))),(0,sn.W)((e=>(0,cn.of)(SC(en(e)))))))))),((e,t,n)=>e.pipe((0,gN.p)((0,Wb.isActionOf)(XC)),(0,dN.T)((()=>({streamInjection:dn(n),locationId:t.value.user.retailStoreExpressLocationId}))),(0,ln.ZZ)((({streamInjection:e,locationId:t})=>(0,on.H)(Oc(e,t)).pipe((0,dN.T)((e=>TC(e))),(0,sn.W)((e=>(0,cn.of)(xC(en(e)))))))))),((e,t,n)=>e.pipe((0,gN.p)((0,Wb.isActionOf)(OC)),(0,dN.T)((e=>{const t=dn(n),{id:r,salePageSeq:i,skuId:o,optionalTypeId:a,optionalTypeDef:c,shoppingCartId:l,cartExtendInfoItemGroup:s}=e.payload;return{action:e,params:{payload:{id:r,salePageSeq:i,skuId:o,optionalTypeId:a,optionalTypeDef:c,shoppingCartId:l,cartExtendInfoItemGroup:s},streamInjection:t}}})),(0,ln.ZZ)((({action:e,params:t})=>(0,on.H)((e=>{return n=[e],r=function*({streamInjection:e,payload:{id:t,salePageSeq:n,skuId:r,optionalTypeId:i,optionalTypeDef:o,shoppingCartId:a,cartExtendInfoItemGroup:c}}){const{shopId:l}=e,s=gt("ShoppingCartV2/RemoveItem",e,!1),u={method:qt.RequestMethod.POST,body:JSON.stringify({shopId:l,salePageId:t,salePageSeq:n,saleProductSKUId:r,optionalTypeId:i,optionalTypeDef:o,shoppingCartId:a,cartExtendInfoItemGroup:c})};return yield Nn(s,u)},new Promise(((e,i)=>{var o=e=>{try{c(r.next(e))}catch(t){i(t)}},a=e=>{try{c(r.throw(e))}catch(t){i(t)}},c=t=>t.done?e(t.value):Promise.resolve(t.value).then(o,a);c((r=r.apply(void 0,n)).next())}));var n,r})(t)).pipe((0,ln.ZZ)((()=>{const t={id:e.payload.id,skuId:e.payload.skuId,price:e.payload.price,suggestPrice:e.payload.suggestPrice,name:e.payload.name};return vl(t),(0,cn.of)(VC(),XC(),ZC())})),(0,sn.W)((e=>(0,cn.of)(WC(en(e)))))))))),((e,t,n)=>e.pipe((0,gN.p)((0,Wb.isActionOf)(UC)),(0,dN.T)((e=>{const t=dn(n);return{action:e,params:{payload:{salePageId:e.payload.productInfo.id,skuId:e.payload.productInfo.skuId,quantity:e.payload.productInfo.quantity},streamInjection:t}}})),(0,ln.ZZ)((({action:e,params:t})=>(0,on.H)(Du(t)).pipe((0,ln.ZZ)((t=>{if("success"===t.executeResultMsg.type){const{productInfo:t}=e.payload;Fl(t,t.quantity)}return(0,cn.of)(NC(t),ZC(),XC())})),(0,sn.W)((e=>(0,cn.of)(RC(en(e)))))))))),(e=>e.pipe((0,gN.p)((0,Wb.isActionOf)(_C)),(0,ln.ZZ)((e=>(0,cn.of)(wC(e.payload),wm(e.payload.productInfo.id)))),(0,sn.W)((e=>(0,cn.of)(HC(en(e)))))))),eR=e=>{return n=function*(){const t=xe(),n=dn(t),{shopId:r}=n,i=gt(`MemberService/GetMemberCollection/${r}/${e}`,n,!0);try{const e=yield Nn(i);return Promise.resolve((null==e?void 0:e.Data)||[])}catch(o){return ze.error(`[ERROR] fetchMemberCollectionIdList failed: ${Me(o)}: ${Je(o)}: shopId: ${r}, memberCode: ${e}`),Promise.reject(o)}},new Promise(((e,r)=>{var i=e=>{try{a(n.next(e))}catch(t){r(t)}},o=e=>{try{a(n.throw(e))}catch(t){r(t)}},a=t=>t.done?e(t.value):Promise.resolve(t.value).then(i,o);a((n=n.apply(void 0,null)).next())}));var n},tR=(0,uN.E)(((e,t,n)=>e.pipe((0,gN.p)((0,Wb.isActionOf)(LC)),(0,dN.T)((()=>dn(n))),(0,ln.ZZ)((e=>(0,on.H)(mn()).pipe((0,dN.T)((e=>PC(e))),(0,sn.W)((e=>(0,cn.of)(JC(en(e)))))))))),((e,t,n)=>e.pipe((0,gN.p)((0,Wb.isActionOf)(MC)),(0,dN.T)((e=>e.payload)),(0,ln.ZZ)((e=>(0,on.H)((e=>{return n=[e],r=function*({streamInjection:e,payload:t}){try{const{shopId:n,accessToken:r,targetPageType:i}=t,o=gt("AuthV4/LoginLineMember",e,!1),a={method:qt.RequestMethod.POST,body:JSON.stringify({shopId:n,accessToken:r,source:"Web",device:"Mobile",appVer:null,unloginId:"",appRefereeSourceTypeDef:null,locationId:null,locationEmployeeId:null,linkClickedTime:null,targetPageType:i})},c=yield Nn(o,a),{ReturnCode:l,Message:s}=c||{};return"API3341"===l||(ze.error(`[ERROR] loginLineMember failed ER01: ReturnCode: ${l}, Message: ${s}, payload: ${JSON.stringify(t)}`),!1)}catch(n){return ze.error(`[ERROR] loginLineMember failed ER02: ${Me(n)}: ${Je(n)}: payload: ${JSON.stringify(t)}`),!1}},new Promise(((e,i)=>{var o=e=>{try{c(r.next(e))}catch(t){i(t)}},a=e=>{try{c(r.throw(e))}catch(t){i(t)}},c=t=>t.done?e(t.value):Promise.resolve(t.value).then(o,a);c((r=r.apply(void 0,n)).next())}));var n,r})(e)).pipe((0,dN.T)((e=>PC(e))),(0,sn.W)((e=>(0,cn.of)(zC(en(e)))))))))),((e,t,n)=>e.pipe((0,gN.p)((0,Wb.isActionOf)(jC)),(0,dN.T)((()=>dn(n))),(0,ln.ZZ)((e=>(0,on.H)((e=>{return n=function*(){const t=gt("Auth/Logout",e,!1),n=yield Nn(t);return localStorage.removeItem("ph"),localStorage.removeItem("em"),n},new Promise(((e,r)=>{var i=e=>{try{a(n.next(e))}catch(t){r(t)}},o=e=>{try{a(n.throw(e))}catch(t){r(t)}},a=t=>t.done?e(t.value):Promise.resolve(t.value).then(i,o);a((n=n.apply(void 0,null)).next())}));var n})(e)).pipe((0,dN.T)((e=>KC(e))),(0,sn.W)((e=>(0,cn.of)(qC(en(e)))))))))),((e,t,n)=>e.pipe((0,gN.p)((0,Wb.isActionOf)(YC)),(0,dN.T)((()=>dn(n))),(0,ln.ZZ)((()=>(0,on.H)(mn()).pipe((0,ln.ZZ)((e=>{var t;if(!e)throw new Error;const r=null!=(t=(0,Bn.getCookie)("MID"))?t:null;return r?(0,on.H)(eR(r)).pipe((0,dN.T)((e=>kC(e))),(0,sn.W)((e=>(0,cn.of)(DC(en(e)))))):(0,on.H)(Hc(dn(n))).pipe((0,ln.ZZ)((e=>{var t;const n=null!=(t=null==e?void 0:e.MemberCode)?t:null;return n?(0,on.H)(eR(n)).pipe((0,dN.T)((e=>kC(e))),(0,sn.W)((e=>(0,cn.of)(DC(en(e)))))):BN.w})),(0,sn.W)((e=>(0,cn.of)(DC(en(e))))))})),(0,sn.W)((e=>(0,cn.of)(DC(en(e)))))))))),((e,t,n)=>e.pipe((0,gN.p)((0,Wb.isActionOf)(eh)),(0,dN.T)((()=>dn(n))),(0,ln.ZZ)((e=>{const{isEnableStoreExpressPage:t}=(null==n?void 0:n.serverRenderData)||{},{type:r,id:i}=xx();return t?(0,on.H)(lX(e,{shopId:n.shopId,type:r,id:i})).pipe((0,ln.ZZ)((e=>e.IsRetailStoreExpress?(0,cn.of)(rh(),th({isRetailStoreExpress:e.IsRetailStoreExpress,logoUrl:e.LogoUrl,headerBackgroundColor:e.HeaderBackgroundColor})):(0,cn.of)(th({isRetailStoreExpress:e.IsRetailStoreExpress,logoUrl:e.LogoUrl,headerBackgroundColor:e.HeaderBackgroundColor})))),(0,sn.W)((e=>(0,cn.of)(nh(en(e)))))):(0,cn.of)(th({isRetailStoreExpress:!1,logoUrl:"",headerBackgroundColor:""}))})),(0,sn.W)((e=>(0,cn.of)(nh(en(e))))))),((e,t,n)=>e.pipe((0,gN.p)((0,Wb.isActionOf)(rh)),(0,dN.T)((()=>dn(n))),(0,ln.ZZ)((e=>(0,on.H)(Xx(e,n.shopId)).pipe((0,ln.ZZ)((e=>{var t,n,r,i;return(null==(t=null==e?void 0:e.RetailStore)?void 0:t.LocationId)?(0,cn.of)(ih((null==(n=null==e?void 0:e.RetailStore)?void 0:n.LocationId)||0),lC({locationId:null==(r=null==e?void 0:e.RetailStore)?void 0:r.LocationId}),ZC(),XC()):(0,cn.of)(ih((null==(i=null==e?void 0:e.RetailStore)?void 0:i.LocationId)||0))})),(0,sn.W)((e=>(0,cn.of)(oh(en(e)))))))))));var nR=Object.defineProperty,rR=Object.defineProperties,iR=Object.getOwnPropertyDescriptors,oR=Object.getOwnPropertySymbols,aR=Object.prototype.hasOwnProperty,cR=Object.prototype.propertyIsEnumerable,lR=(e,t,n)=>t in e?nR(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,sR=(e,t)=>{for(var n in t||(t={}))aR.call(t,n)&&lR(e,n,t[n]);if(oR)for(var n of oR(t))cR.call(t,n)&&lR(e,n,t[n]);return e};const uR=(0,uN.E)(((e,t,n)=>e.pipe((0,gN.p)((0,Wb.isActionOf)([dh,bh,hh])),(0,dN.T)((e=>{const r=dn(n),i=Fr;if((0,Wb.isActionOf)(dh,e)){const{categoryId:t,isShowCurator:n}=e.payload;return{action:e,streamInjection:r,categoryId:t,orderBy:"",isShowCurator:n,cursor:0,maxCount:i}}if((0,Wb.isActionOf)(bh,e)){const n=e.payload,{categoryId:o,isShowCurator:a}=t.value.shopCategory;return{action:e,streamInjection:r,categoryId:o,orderBy:n,isShowCurator:a,cursor:0,maxCount:i}}if((0,Wb.isActionOf)(hh,e)){const{categoryId:n,orderBy:o,isShowCurator:a,cursor:c}=t.value.shopCategory;return{action:e,streamInjection:r,categoryId:n,orderBy:o,isShowCurator:a,cursor:c,maxCount:i}}})),(0,_N.n)((e=>{var n,r,i=e,{action:o,streamInjection:a}=i,c=((e,t)=>{var n={};for(var r in e)aR.call(e,r)&&t.indexOf(r)<0&&(n[r]=e[r]);if(null!=e&&oR)for(var r of oR(e))t.indexOf(r)<0&&cR.call(e,r)&&(n[r]=e[r]);return n})(i,["action","streamInjection"]);return(0,yN.T)((()=>{const{totalSize:e}=t.value.shopCategory;return 0!==e&&c.cursor>=e}),(0,cn.of)(Ah()),(0,on.H)(KN({streamInjection:a,payload:(n=sR({},c),r={isCuratorable:c.isShowCurator,startIndex:c.cursor},rR(n,iR(r)))})).pipe((0,dN.T)((({categoryName:e,categoryId:t,orderBy:n,productList:r,totalSize:i})=>{if((0,Wb.isActionOf)(dh,o)){const o=r.length,{isShowCurator:a}=c;return Ih({isExist:null!==e,categoryId:t,isShowCurator:a,orderBy:n,productList:r,cursor:o,totalSize:i})}if((0,Wb.isActionOf)(bh,o)){const e=r.length;return mh({orderBy:n,productList:r,cursor:e,totalSize:i})}if((0,Wb.isActionOf)(hh,o)){const{cursor:e}=c,t=e+r.length;return Bh({productList:r,cursor:t,totalSize:i})}})),(0,sn.W)((e=>(0,Wb.isActionOf)(dh,o)?(0,cn.of)(BC(en(e)),ph()):(0,Wb.isActionOf)(bh,o)?(0,cn.of)(BC(en(e)),Ch()):(0,Wb.isActionOf)(hh,o)?(0,cn.of)(BC(en(e)),yh()):void 0))))}))))),gR=(0,uN.E)(((e,t,n)=>e.pipe((0,gN.p)((0,Wb.isActionOf)(ah)),(0,dN.T)((({payload:{categoryId:e}})=>({streamInjection:dn(n),categoryId:e}))),(0,ln.ZZ)((({streamInjection:e,categoryId:t})=>(0,yN.T)((()=>0===t),(0,cn.of)(ch([])),(0,on.H)((e=>{return n=[e],r=function*({streamInjection:e,payload:{categoryId:t}}){const{shopId:n}=e,r=gt(`LayoutTemplateData/GetLayoutTemplateData?adCode=MobileHome_SpCatAdOfficial_ShopCategory_${t}&shopId=${n}`,e,!0);return((e=[])=>e.map((({Title:e,Link:t,PicturePath:{FullUrl:n=""}={FullUrl:""}})=>({title:e,link:t,imgUrl:n.replace("/t/","/s/")}))))(yield Nn(r))},new Promise(((e,i)=>{var o=e=>{try{c(r.next(e))}catch(t){i(t)}},a=e=>{try{c(r.throw(e))}catch(t){i(t)}},c=t=>t.done?e(t.value):Promise.resolve(t.value).then(o,a);c((r=r.apply(void 0,n)).next())}));var n,r})({streamInjection:e,payload:{categoryId:t}})).pipe((0,dN.T)((e=>ch(e))),(0,sn.W)((e=>(0,cn.of)(lh(en(e))))))))))),((e,t,n)=>e.pipe((0,gN.p)((0,Wb.isActionOf)(sh)),(0,dN.T)((()=>dn(n))),(0,ln.ZZ)((e=>(0,on.H)((e=>{return n=function*(){const{shopId:t}=e,n=gt(`LayoutTemplateDataV2/GetOfficialCustomLink?shopId=${t}`,e,!0);return(({Data:e=[]})=>{const t=e.filter((e=>e.Data.length)).map((({Data:e})=>e.map((({Title:e,Link:t})=>({title:e,link:t})))));return[].concat(...t)})(yield Nn(n))},new Promise(((e,r)=>{var i=e=>{try{a(n.next(e))}catch(t){r(t)}},o=e=>{try{a(n.throw(e))}catch(t){r(t)}},a=t=>t.done?e(t.value):Promise.resolve(t.value).then(i,o);a((n=n.apply(void 0,null)).next())}));var n})(e)).pipe((0,dN.T)((e=>uh(e))),(0,sn.W)((e=>(0,cn.of)(gh(en(e))))))))))),dR=(0,uN.E)(((e,t,n)=>e.pipe((0,gN.p)((0,Wb.isActionOf)(fh)),(0,dN.T)((({payload:{categoryId:e}})=>({streamInjection:dn(n),categoryId:e}))),(0,ln.ZZ)((({streamInjection:e,categoryId:t})=>(0,on.H)((e=>{return n=[e],r=function*({streamInjection:e,payload:{categoryId:t}}){try{const{shopId:n}=e,r=`/cms/api/tagCategory/relativeTags/${n}/${t}`,i={method:qt.RequestMethod.GET};return(yield Nn(r,i)).tags.map((e=>({tags:e.text||"",link:`/tagCategory/${e.link}`})))}catch(n){return Promise.reject(n)}},new Promise(((e,i)=>{var o=e=>{try{c(r.next(e))}catch(t){i(t)}},a=e=>{try{c(r.throw(e))}catch(t){i(t)}},c=t=>t.done?e(t.value):Promise.resolve(t.value).then(o,a);c((r=r.apply(void 0,n)).next())}));var n,r})({streamInjection:e,payload:{categoryId:t}})).pipe((0,dN.T)((e=>Gh(e))),(0,sn.W)((e=>(0,cn.of)(Qh(en(e))))))))))),IR=(0,uN.E)(IN,pN,bN,CN,hN,AN,SN,zN,jN,qN,$N,XN,tR,uR,gR,dR);var pR=n(1409),bR=n(1265),mR=Object.defineProperty,CR=Object.defineProperties,hR=Object.getOwnPropertyDescriptors,BR=Object.getOwnPropertySymbols,AR=Object.prototype.hasOwnProperty,yR=Object.prototype.propertyIsEnumerable,fR=(e,t,n)=>t in e?mR(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,GR=(e,t)=>{for(var n in t||(t={}))AR.call(t,n)&&fR(e,n,t[n]);if(BR)for(var n of BR(t))yR.call(t,n)&&fR(e,n,t[n]);return e};const QR=(e,t,n)=>{return i=function*(){try{const{defaultCurrency:r,defaultLanguage:i,availableCurrencies:o=[],exchangeRates:a=[],isEnableCurrency:c=!1,salesMarketSettings:l}=t,{locale:s}=n,u=s||i,{salesCurrency:g}=l||{},d=et("currency")||(0,Bn.getCookie)("currency");let I=d||g||r;if(!d){const e=yield((e,t)=>{return r=function*(){const{shopId:n}=e;try{const r=gt(`Shop/GetShopAvailLanguages?shopId=${n}&lang=${t}`,e,!0),o=yield Nn(r);return"API0001"!==(null==o?void 0:o.ReturnCode)?Promise.reject(new Error("fetchPreferredCurrency failed, ReturnCode is not API0001")):{isEnableAutoDetectCurrency:(i=null==o?void 0:o.Data).IsEnableAutoDetectCurrency,preferredCurrency:i.PreferredCurrency}}catch(r){return ze.error(`[ERROR] fetchPreferredCurrency failed: ${Me(r)}: ${Je(r)}: shopId: ${n}, lang: ${t}`),Promise.reject(r)}var i},new Promise(((e,t)=>{var i=e=>{try{a(r.next(e))}catch(n){t(n)}},o=e=>{try{a(r.throw(e))}catch(n){t(n)}},a=t=>t.done?e(t.value):Promise.resolve(t.value).then(i,o);a((r=r.apply(void 0,null)).next())}));var r})(dn(n),u);e.isEnableAutoDetectCurrency&&e.preferredCurrency&&(I=e.preferredCurrency)}const{rates:p}=a.find((e=>e.base===g))||{};p&&(e.dispatch(am(p)),e.dispatch(cm(c?o:[]))),(0,Bn.addCookie)("currency",I),e.dispatch(lm(I))}catch(r){ze.error(`[ERROR] initCurrency execution failed: ${Me(r)}: ${Je(r)}: clientCurrency: ${et("currency")||(0,Bn.getCookie)("currency")}`)}},new Promise(((e,t)=>{var n=e=>{try{o(i.next(e))}catch(n){t(n)}},r=e=>{try{o(i.throw(e))}catch(n){t(n)}},o=t=>t.done?e(t.value):Promise.resolve(t.value).then(n,r);o((i=i.apply(void 0,null)).next())}));var i},FR=e=>{(e=>{return n=function*(){const t=et("fr"),n=et("fr2"),{shopId:r}=e;try{if(t&&n){const i=gt("Fr/Set",e,!1),o={shopId:r,fr:t,fr2:n},a={method:qt.RequestMethod.POST,body:JSON.stringify(o)};return yield Nn(i,a)}}catch(a){ze.error(`[ERROR] updateFrInfo Fr/Set failed: ${Me(a)}: ${Je(a)}: shopId: ${r}, fr: ${t}, fr2: ${n}`)}const i=et("utm_source"),o=et("utm_medium");if("affiliate"===i&&["shopback","affiliates","ichannels","shopdotcom"].includes(o)){const t=(0,Bn.getCookie)("trace-fr");"lineshopping"!==t&&"lineoa"!==t||((0,Bn.deleteCookie)("trace-fr"),(0,Bn.deleteCookie)("trace-fr2"),(0,Bn.deleteCookie)("trace-act"));try{const t=gt(`fr/remove/${r}/lineshopping`,e,!1),n=gt(`fr/remove/${r}/lineoa`,e,!1),i={method:qt.RequestMethod.DELETE},o=Nn(t,i),a=Nn(n,i);return yield Promise.all([o,a])}catch(a){ze.error(`[ERROR] updateFrInfo Fr/Remove failed: ${Me(a)}: ${Je(a)}: shopId: ${r}`)}}},new Promise(((e,r)=>{var i=e=>{try{a(n.next(e))}catch(t){r(t)}},o=e=>{try{a(n.throw(e))}catch(t){r(t)}},a=t=>t.done?e(t.value):Promise.resolve(t.value).then(i,o);a((n=n.apply(void 0,null)).next())}));var n})(dn(e)),hi()};var vR,ZR,ER=Object.defineProperty,SR=Object.defineProperties,XR=Object.getOwnPropertyDescriptors,TR=Object.getOwnPropertySymbols,xR=Object.prototype.hasOwnProperty,UR=Object.prototype.propertyIsEnumerable,NR=(e,t,n)=>t in e?ER(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n;window.ThemeCore=(vR=((e,t)=>{for(var n in t||(t={}))xR.call(t,n)&&NR(e,n,t[n]);if(TR)for(var n of TR(t))UR.call(t,n)&&NR(e,n,t[n]);return e})({},ha),ZR={Constants:r,Cross:s,Desktop:F,commonActions:X,renderClientHtml:({dependencies:e,i18n:t,injectRootEpic:n,injectRootReducer:r,isStopRenderedCallbackOnReady:i=!1,onBeforeRenderCallback:o,pageComponent:a,preloadedState:c})=>{var l;try{const l=((e,t,n={},r=[])=>{const i=(0,uF.HY)(GR({construct:sv,pageMetaData:gv,globalStyleData:uv,dependencies:dv,activity:hF,coupon:vF,ecoupon:NF,favorite:kF,official:$F,messageData:Iv,promotion:Gv,salePage:Hv,search:zv,shop:oZ,shoppingCart:bZ,retailStore:Tv,user:vZ,locale:VZ,layoutTemplateData:JZ,shopCategory:rE,tagCategory:IE},n)),o=(0,uN.E)(IR,...r),a=(0,pR.C)({dependencies:t}),c=Ge()&&window.__REDUX_DEVTOOLS_EXTENSION_COMPOSE__||uF.Zz,l=(0,uF.y$)(i,(s=GR({},e),CR(s,hR({dependencies:t}))),c((0,uF.Tw)(a,bR.A)));var s;return a.run(o),l})(c,e,r,n),{translationsData:s,locale:u}=e,{pageType:g}=Te();((e,t)=>{if(!t||!e)return(0,ja.oA)((()=>"")),void ze.warn("[render/utilities/initTranslation] no translationsData");(0,ja.Lw)(t),(0,ja.xS)(e)})(u,s),t&&(((e,t,n)=>{const{defaultLanguage:r,isEnableLanguage:i,allLanguages:o}=n;if(!o)return void ze.warn("[render/utilities/initLangs] initLangs error, reason: no allLanguages data");const a=i?n.availableLanguages:[],c=t||r;e.dispatch(sm({preferredLanguage:c,allLanguages:o,availableLanguages:a}))})(l,u,t),QR(l,t,e)),o&&o(l),Hl.render(z.createElement(Qs.Provider,{store:l},z.createElement(sN,{pageComponent:a,dependencies:e,themeComponents:F})),document.getElementById("root")),i?FR(e):document.addEventListener("DOMContentLoaded",(()=>{Al(),g!==Ze.PAGE_TYPE.CATEGORY&&g!==Ze.PAGE_TYPE.SEARCH&&g!==Ze.PAGE_TYPE.STREAM&&yl(),FR(e)}))}catch(s){ze.error(JSON.stringify({msg:"[render/ui.render.client.desktop] renderDesktopClientHtml error",stack:s.stack})),null==(l=Pe)||l.sendLogs([{severity:"ERROR",message:"[render/ui.render.client.desktop] renderDesktopClientHtml error",customPayload:{stack:s.stack,dependencies:e}}])}},styles:S,utilities:i,providers:o,configs:c,selectors:l,gqls:Z,streams:a,hooks:E,contexts:v},SR(vR,XR(ZR)))},5413:()=>{},2254:()=>{},5785:(e,t,n)=>{"use strict";n.d(t,{g:()=>r});const r={PAGE:"page",GLOBAL_SETTING:"globalSetting"}},9057:(e,t,n)=>{"use strict";n.d(t,{O:()=>i,x:()=>r});var r=(e=>(e.BackInStockAlert="BackInStockAlert",e.NoRestock="NoRestock",e.OutOfStock="OutOfStock",e.Restock="Restock",e))(r||{}),i=(e=>(e[e.OutOfStock=0]="OutOfStock",e[e.Restock=1]="Restock",e))(i||{})},1811:()=>{},814:()=>{},6841:()=>{},552:()=>{},1772:(e,t,n)=>{"use strict";n.d(t,{V:()=>r});var r=(e=>(e.SubCategory="SubCategory",e.Category="Category",e.CustomLink="CustomLink",e))(r||{})},1767:()=>{},9126:()=>{},382:()=>{},9:(e,t,n)=>{"use strict";var r;n.d(t,{yb:()=>i,CJ:()=>a,SX:()=>l()}),(e=>{let t;(e=>{let t;(e=>{let t;(e=>{let t,n,r,i,o,a,c,l,s,u,g;(e=>{let t;var n;(n=t=e.DeviceModeEnum||(e.DeviceModeEnum={}))[n.Unknown=0]="Unknown",n[n.Desktop=1]="Desktop",n[n.Mobile=2]="Mobile"})(t=e.Device||(e.Device={})),(e=>{let t;var n;(n=t=e.InfoModuleTypeEnum||(e.InfoModuleTypeEnum={}))[n.Album=0]="Album",n[n.Article=1]="Article",n[n.Video=2]="Video"})(n=e.InfoModule||(e.InfoModule={})),(e=>{let t;var n;let r;var i;let o;var a;let c;var l;let s;var u;let g;var d;(n=t=e.LayoutAreaDisplayEnum||(e.LayoutAreaDisplayEnum={}))[n.Default=0]="Default",n[n.TopBottom=1]="TopBottom",n[n.Top=2]="Top",n[n.TopLeft=3]="TopLeft",(i=r=e.LayoutTemplateTypeEnum||(e.LayoutTemplateTypeEnum={}))[i.Default=0]="Default",i[i.Index=1]="Index",i[i.ShoppingCar=2]="ShoppingCar",i[i.Activity=3]="Activity",(a=o=e.LeftAsideTypeEnum||(e.LeftAsideTypeEnum={}))[a.Category=0]="Category",a[a.Brand=1]="Brand",a[a.Payment=2]="Payment",a[a.MyAccount=3]="MyAccount",a[a.Empty=4]="Empty",(l=c=e.OfficialShopLayoutTypeEnum||(e.OfficialShopLayoutTypeEnum={}))[l.Activity=0]="Activity",l[l.Content=1]="Content",l[l.Image=2]="Image",(u=s=e.OfficialShopStatusDefEnum||(e.OfficialShopStatusDefEnum={}))[u.InProcess=0]="InProcess",u[u.Open=1]="Open",u[u.Closed=2]="Closed",(d=g=e.OfficialShopTypeDefEnum||(e.OfficialShopTypeDefEnum={}))[d.SelfOwned=0]="SelfOwned",d[d.SubDomain=1]="SubDomain"})(r=e.Official||(e.Official={})),(e=>{let t;var n;let r;var i;let o;var a;(n=t=e.PromotionConditionDiscountTypeV2Enum||(e.PromotionConditionDiscountTypeV2Enum={}))[n.DiscountPrice=1]="DiscountPrice",n[n.DiscountRate=2]="DiscountRate",n[n.FixedPrice=4]="FixedPrice",n[n.FreeGift=8]="FreeGift",n[n.All=15]="All",(i=r=e.PromotionConditionTypeV2Enum||(e.PromotionConditionTypeV2Enum={}))[i.TotalPrice=1]="TotalPrice",i[i.TotalQty=2]="TotalQty",i[i.ReachQty=4]="ReachQty",i[i.TotalPriceV2=8]="TotalPriceV2",i[i.TotalQtyV2=16]="TotalQtyV2",i[i.CrmMemberTierTotalPrice=32]="CrmMemberTierTotalPrice",i[i.All=63]="All",(a=o=e.PromotionTargetTypeV2Enum||(e.PromotionTargetTypeV2Enum={}))[a.Shop=1]="Shop",a[a.Category=2]="Category",a[a.SalePage=4]="SalePage",a[a.PromotionSalePage=8]="PromotionSalePage",a[a.All=15]="All"})(i=e.Promotion||(e.Promotion={})),(e=>{let t;var n;let r;var i;(n=t=e.SaleProductShippingTypeEnum||(e.SaleProductShippingTypeEnum={}))[n.Normal=1]="Normal",n[n.PreOrderWithStartDate=2]="PreOrderWithStartDate",n[n.CustomMade=3]="CustomMade",n[n.CustomerAppointment=4]="CustomerAppointment",n[n.PreOrderWithStartDateAndEndDate=5]="PreOrderWithStartDateAndEndDate",(i=r=e.SaleProductTemperatureTypeEnum||(e.SaleProductTemperatureTypeEnum={}))[i.Normal=1]="Normal",i[i.Refrigerator=2]="Refrigerator",i[i.Freezer=3]="Freezer"})(o=e.SalePage||(e.SalePage={})),(e=>{let t;var n;let r;var i;(n=t=e.SalePageVideoPositionTypeEnum||(e.SalePageVideoPositionTypeEnum={}))[n.Front=0]="Front",n[n.Last=1]="Last",(i=r=e.SalePageVideoTypeEnum||(e.SalePageVideoTypeEnum={}))[i.MainImage=0]="MainImage",i[i.SaleProductDesc=1]="SaleProductDesc"})(a=e.SalePageV2||(e.SalePageV2={})),(e=>{let t;var n;(n=t=e.SearchDataSourceEnum||(e.SearchDataSourceEnum={}))[n.ES=0]="ES",n[n.DB=1]="DB"})(c=e.Search||(e.Search={})),(e=>{let t;var n;let r;var i;(n=t=e.ShippingFeeTypeDefEnum||(e.ShippingFeeTypeDefEnum={}))[n.Free=0]="Free",n[n.OverPrice=1]="OverPrice",n[n.Fixed=2]="Fixed",(i=r=e.ShippingProfileTypeDefEnum||(e.ShippingProfileTypeDefEnum={}))[i.Home=1]="Home",i[i.Family=2]="Family",i[i.SevenEleven=4]="SevenEleven",i[i.FamilyPickup=8]="FamilyPickup",i[i.SevenElevenPickup=16]="SevenElevenPickup",i[i.LocationPickup=32]="LocationPickup",i[i.CashOnDelivery=64]="CashOnDelivery",i[i.All=127]="All"})(l=e.ShippingProfile||(e.ShippingProfile={})),(e=>{let t;var n;let r;var i;(n=t=e.ShopHeaderStyleDefEnum||(e.ShopHeaderStyleDefEnum={}))[n.None=0]="None",n[n.Black=1]="Black",n[n.Blue=2]="Blue",n[n.Purple=3]="Purple",n[n.Pink=4]="Pink",n[n.Green=5]="Green",n[n.Grey=6]="Grey",n[n.Orange=7]="Orange",n[n.Peach=8]="Peach",n[n.Light=9]="Light",n[n.Red=10]="Red",n[n.Cyan=11]="Cyan",(i=r=e.ShopTypeDefEnum||(e.ShopTypeDefEnum={}))[i.Ordinary=0]="Ordinary",i[i.Main=1]="Main",i[i.Medium=2]="Medium",i[i.Small=3]="Small",i[i.Lite=4]="Lite",i[i.Free=5]="Free"})(s=e.Shop||(e.Shop={})),(e=>{let t;var n;let r;var i;let o;var a;let c;var l;(n=t=e.ShoppingCartPayTypeEnum||(e.ShoppingCartPayTypeEnum={}))[n.CreditCardOnce=0]="CreditCardOnce",n[n.CreditCardInstallment=1]="CreditCardInstallment",n[n.Family=2]="Family",n[n.SevenEleven=3]="SevenEleven",(i=r=e.ShoppingCartTrackChannelTypeDefEnum||(e.ShoppingCartTrackChannelTypeDefEnum={}))[i.Unknown=0]="Unknown",i[i.Mall=1]="Mall",i[i.Brand=2]="Brand",(a=o=e.ShoppingCartTrackDeviceTypeDefEnum||(e.ShoppingCartTrackDeviceTypeDefEnum={}))[a.Unknown=0]="Unknown",a[a.PC=1]="PC",a[a.Mobile=2]="Mobile",a[a.Pad=3]="Pad",(l=c=e.ShoppingCartTrackSourceTypeDefEnum||(e.ShoppingCartTrackSourceTypeDefEnum={}))[l.Unknown=0]="Unknown",l[l.Web=1]="Web",l[l.iOSApp=2]="iOSApp",l[l.AndroidApp=3]="AndroidApp",l[l.LocationWizard=4]="LocationWizard"})(u=e.ShoppingCart||(e.ShoppingCart={})),(e=>{let t;var n;(n=t=e.SoldOutTypeEnum||(e.SoldOutTypeEnum={}))[n.OutOfStock=0]="OutOfStock",n[n.Restock=1]="Restock"})(g=e.ShopProfile||(e.ShopProfile={}))})(t=e.BE||(e.BE={}))})(t=e.Frontend||(e.Frontend={}))})(t=e.WebStore||(e.WebStore={}))})(r||(r={}));const i=r;var o;(e=>{let t;(e=>{let t;(e=>{let t;(e=>{let t;(e=>{let t;(e=>{let t;var n;let r;var i;(n=t=e.ImageUploadTypeEnum||(e.ImageUploadTypeEnum={}))[n.Upload=0]="Upload",n[n.Material=1]="Material",n[n.Temp=2]="Temp",(i=r=e.ImageOperationTypeEnum||(e.ImageOperationTypeEnum={}))[i.NoChange=0]="NoChange",i[i.New=1]="New",i[i.Delete=2]="Delete",i[i.Clone=3]="Clone"})(t=e.Images||(e.Images={}))})(t=e.BE||(e.BE={}))})(t=e.BL||(e.BL={}))})(t=e.Sms||(e.Sms={}))})(t=e.NineYi||(e.NineYi={}))})(o||(o={}));const a=o;var c=n(382),l=n.n(c)},4546:(e,t,n)=>{"use strict";n.r(t),n.d(t,{EDIT_TYPE:()=>a.g,MWebApi:()=>m.yb,Model:()=>s.a,OsmApi:()=>m.CJ,ProductModuleOrderBy:()=>C.By,SalepageMetafieldDisplayTypeEnum:()=>C.ZL,SlideMenuType:()=>I.V,SoldOutActionType:()=>c.x,SoldOutTypeEnum:()=>c.O,SortDirection:()=>C.UE,SortType:()=>C.r3,TemplateKeyEnum:()=>C.DY,ThemeTable:()=>m.SX});var r=n(5413),i={};for(const h in r)["default","Model"].indexOf(h)<0&&(i[h]=()=>r[h]);n.d(t,i);var o=n(2254);i={};for(const h in o)["default","Model"].indexOf(h)<0&&(i[h]=()=>o[h]);n.d(t,i);var a=n(5785),c=n(9057),l=n(1811),s=n.n(l),u=n(814);i={};for(const h in u)["default","Model","EDIT_TYPE","SoldOutActionType","SoldOutTypeEnum"].indexOf(h)<0&&(i[h]=()=>u[h]);n.d(t,i);var g=n(6841);i={};for(const h in g)["default","Model","EDIT_TYPE","SoldOutActionType","SoldOutTypeEnum"].indexOf(h)<0&&(i[h]=()=>g[h]);n.d(t,i);var d=n(552);i={};for(const h in d)["default","Model","EDIT_TYPE","SoldOutActionType","SoldOutTypeEnum"].indexOf(h)<0&&(i[h]=()=>d[h]);n.d(t,i);var I=n(1772),p=n(1767);i={};for(const h in p)["default","Model","EDIT_TYPE","SoldOutActionType","SoldOutTypeEnum","SlideMenuType"].indexOf(h)<0&&(i[h]=()=>p[h]);n.d(t,i);var b=n(9126);i={};for(const h in b)["default","Model","EDIT_TYPE","SoldOutActionType","SoldOutTypeEnum","SlideMenuType"].indexOf(h)<0&&(i[h]=()=>b[h]);n.d(t,i);var m=n(9),C=n(7837)},7837:(e,t,n)=>{"use strict";n.d(t,{By:()=>o,DY:()=>c,UE:()=>r,ZL:()=>a,r3:()=>i});var r=(e=>(e.ASC="ASC",e.DESC="DESC",e))(r||{}),i=(e=>(e.SPECIAL_PRICE="SPECIAL_PRICE",e))(i||{}),o=(e=>(e.PRICE_HIGH_TO_LOW="PriceHighToLow",e.PRICE_LOW_TO_HIGH="PriceLowToHigh",e.PAGE_VIEW="PageView",e.NEWEST="Newest",e.SALES="Sales",e.CURATOR="Curator",e))(o||{}),a=(e=>(e.TEXT="Text",e.PRIMARY_LABEL="PrimaryLabel",e.SECONDARY_LABEL="SecondaryLabel",e))(a||{}),c=(e=>(e.SALEPAGE_TITLE="salepage_title",e))(c||{})},5927:e=>{"use strict";e.exports=t},8709:e=>{"use strict";e.exports=i},3559:e=>{"use strict";e.exports=o},7450:t=>{"use strict";t.exports=e},8068:e=>{"use strict";e.exports=n},9310:e=>{"use strict";e.exports=r},2634:()=>{},2623:()=>{}},l={};function s(e){var t=l[e];if(void 0!==t)return t.exports;var n=l[e]={id:e,loaded:!1,exports:{}};return c[e].call(n.exports,n,n.exports,s),n.loaded=!0,n.exports}s.m=c,a=[],s.O=(e,t,n,r)=>{if(!t){var i=1/0;for(u=0;u<a.length;u++){for(var[t,n,r]=a[u],o=!0,c=0;c<t.length;c++)(!1&r||i>=r)&&Object.keys(s.O).every((e=>s.O[e](t[c])))?t.splice(c--,1):(o=!1,r<i&&(i=r));if(o){a.splice(u--,1);var l=n();void 0!==l&&(e=l)}}return e}r=r||0;for(var u=a.length;u>0&&a[u-1][2]>r;u--)a[u]=a[u-1];a[u]=[t,n,r]},s.n=e=>{var t=e&&e.__esModule?()=>e.default:()=>e;return s.d(t,{a:t}),t},s.d=(e,t)=>{for(var n in t)s.o(t,n)&&!s.o(e,n)&&Object.defineProperty(e,n,{enumerable:!0,get:t[n]})},s.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(e){if("object"==typeof window)return window}}(),s.hmd=e=>((e=Object.create(e)).children||(e.children=[]),Object.defineProperty(e,"exports",{enumerable:!0,set:()=>{throw new Error("ES Modules may not assign module.exports or exports.*, Use ESM export syntax, instead: "+e.id)}}),e),s.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),s.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},(()=>{var e={818:0};s.O.j=t=>0===e[t];var t=(t,n)=>{var r,i,[o,a,c]=n,l=0;if(o.some((t=>0!==e[t]))){for(r in a)s.o(a,r)&&(s.m[r]=a[r]);if(c)var u=c(s)}for(t&&t(n);l<o.length;l++)i=o[l],s.o(e,i)&&e[i]&&e[i][0](),e[i]=0;return s.O(u)},n=self.webpackChunk_91app_nineyi_lib_themecore=self.webpackChunk_91app_nineyi_lib_themecore||[];n.forEach(t.bind(null,0)),n.push=t.bind(null,n.push.bind(n))})(),s.nc=void 0;var u=s.O(void 0,[121],(()=>s(4346)));return s.O(u)})(),e.exports=r(n("./node_modules/lodash/lodash.js"),n("react"),n("./node_modules/jsonpath/jsonpath.js"),n("@91app/nineyi.utility.tracking"),n("react-dom"),n("react-redux"))},"./node_modules/@91app/nineyi.lib.themecore/public/themecore/js/nineyi.themeCore.desktop.vendor.module.js":()=>{(self.webpackChunk_91app_nineyi_lib_themecore=self.webpackChunk_91app_nineyi_lib_themecore||[]).push([[121],{1064:function(e,t){!function(e){"use strict";const t={isShowSFTPContractNote:!0,isHideStoreCustomerService:!1,isHideMembershipDescription:!1,noServiceAreaExcludeZipCode:[],isEnableshippingCartMoreStorePayMethod:!1,isCouponCustomForAdidas:!1,customerHeaderConfig:"",customerSalePageImgConfig:"",isShowSalePageProductId:!0,isProductCardTargetBlankOnCategoryPage:!1,isChannelActive:!1,isChannelSwitchActive:!1,isDirectlyAddToCart:!1,isBreadcrumbsActive:!0,isUseFastBuy:!1,isNewPXProductList:!1,isBubbleAddToCart:!1,customerServiceMessageConfig:"",customerUIConfig:{},isShopsDesktopImageNeedCompress:!1,isMujiCustomerFooter:!1,isHideTypeButton:!1,isEnableAdidasCustom:!1,isCustomUnableChangePasswordPrompt:!1,customVipMemberTradesSumTitle:!1},n={isShowSFTPContractNote:!0,isHideStoreCustomerService:!1,isHideMembershipDescription:!1,noServiceAreaExcludeZipCode:[],isEnableshippingCartMoreStorePayMethod:!1,isCouponCustomForAdidas:!1,customerHeaderConfig:"",customerSalePageImgConfig:"",isShowSalePageProductId:!0,isProductCardTargetBlankOnCategoryPage:!1,isChannelActive:!1,isChannelSwitchActive:!1,isDirectlyAddToCart:!1,isBreadcrumbsActive:!0,isUseFastBuy:!1,isNewPXProductList:!1,isBubbleAddToCart:!1,customerServiceMessageConfig:"",customerUIConfig:{},isShopsDesktopImageNeedCompress:!1,isMujiCustomerFooter:!1,isHideTypeButton:!1,isEnableAdidasCustom:!1,isCustomUnableChangePasswordPrompt:!1,customVipMemberTradesSumTitle:!1},r={dev:{default:t,tw:{22:{isChannelActive:!0,isChannelSwitchActive:!0,isDirectlyAddToCart:!0,isUseFastBuy:!0,isNewPXProductList:!0,isBubbleAddToCart:!0},225:{isHideStoreCustomerService:!0,isHideMembershipDescription:!0,customerSalePageImgConfig:"_碧兒泉",isBreadcrumbsActive:!1,customerServiceMessageConfig:"線上購物問與答",isShopsDesktopImageNeedCompress:!0},231:{customerHeaderConfig:{headerLogo:{position:{logoContainer:"logo-center"}},navMenu:{position:{navMenuContainer:"nav-menu-center",mainNavMenu:"nav-menu-main-center",subNavMenu:"sub-nav-li-center"}},searchBox:{backgroundColor:"F5F5F5"}},isMujiCustomerFooter:!0},233:{isCouponCustomForAdidas:!0,customerHeaderConfig:{headerLogo:{position:{logoContainer:"logo-center"}},navMenu:{position:{navMenuContainer:"nav-menu-center",mainNavMenu:"nav-menu-main-center",subNavMenu:"sub-nav-li-center"},font:{weight:"700"},icon:{display:!1}},searchBox:{radius:"rectangle",backgroundColor:"ECEFF1"}},isHideTypeButton:!0,isEnableAdidasCustom:!0},235:{isProductCardTargetBlankOnCategoryPage:!0},10230:{isEnableshippingCartMoreStorePayMethod:!0},12202:{isShowSalePageProductId:!1},12209:{isShowSFTPContractNote:!1},12488:{isCustomUnableChangePasswordPrompt:!0,customVipMemberTradesSumTitle:!0},12868:{noServiceAreaExcludeZipCode:["882","896","883"]}},hk:{},my:{}},qa:{default:t,tw:{225:{isHideStoreCustomerService:!0,customerServiceMessageConfig:"線上購物問與答"},231:{customerHeaderConfig:{headerLogo:{position:{logoContainer:"logo-center"}},navMenu:{position:{navMenuContainer:"nav-menu-center",mainNavMenu:"nav-menu-main-center",subNavMenu:"sub-nav-li-center"}},searchBox:{backgroundColor:"F5F5F5"}},isMujiCustomerFooter:!0},233:{isCouponCustomForAdidas:!0,customerHeaderConfig:{headerLogo:{position:{logoContainer:"logo-center"}},navMenu:{position:{navMenuContainer:"nav-menu-center",mainNavMenu:"nav-menu-main-center",subNavMenu:"sub-nav-li-center"},font:{weight:"700"},icon:{display:!1}},searchBox:{radius:"rectangle",backgroundColor:"ECEFF1"}},isShopsDesktopImageNeedCompress:!0,isHideTypeButton:!0,isEnableAdidasCustom:!0},10230:{isEnableshippingCartMoreStorePayMethod:!0},10490:{isEnableshippingCartMoreStorePayMethod:!0},12157:{customerSalePageImgConfig:"_碧兒泉"},12202:{isShowSalePageProductId:!1},12209:{isShowSFTPContractNote:!1},12294:{isHideMembershipDescription:!0},12488:{isCustomUnableChangePasswordPrompt:!0,customVipMemberTradesSumTitle:!0},12868:{isEnableshippingCartMoreStorePayMethod:!0,noServiceAreaExcludeZipCode:["882","896","883"]}},hk:{2:{isProductCardTargetBlankOnCategoryPage:!0}},my:{}},qa11:{default:t,tw:{231:{customerHeaderConfig:{headerLogo:{position:{logoContainer:"logo-center"}},navMenu:{position:{navMenuContainer:"nav-menu-center",mainNavMenu:"nav-menu-main-center",subNavMenu:"sub-nav-li-center"}},searchBox:{backgroundColor:"F5F5F5"}},isMujiCustomerFooter:!0},233:{customerHeaderConfig:{headerLogo:{position:{logoContainer:"logo-center"}},navMenu:{position:{navMenuContainer:"nav-menu-center",mainNavMenu:"nav-menu-main-center",subNavMenu:"sub-nav-li-center"},font:{weight:"700"},icon:{display:!1}},searchBox:{radius:"rectangle",backgroundColor:"ECEFF1"}},isHideTypeButton:!0,isEnableAdidasCustom:!0}}},stage:{default:n,tw:{8:{isShopsDesktopImageNeedCompress:!0},360:{noServiceAreaExcludeZipCode:["882","896","883"],isEnableshippingCartMoreStorePayMethod:!0},2325:{customerHeaderConfig:{headerLogo:{position:{logoContainer:"logo-center"}},navMenu:{position:{navMenuContainer:"nav-menu-center",mainNavMenu:"nav-menu-main-center",subNavMenu:"sub-nav-li-center"}},searchBox:{backgroundColor:"F5F5F5"}},isMujiCustomerFooter:!0},2373:{noServiceAreaExcludeZipCode:["882","896","883"]},40589:{customerSalePageImgConfig:"_碧兒泉",isShopsDesktopImageNeedCompress:!0},40625:{customerSalePageImgConfig:"_碧兒泉"},41337:{isHideStoreCustomerService:!0,customerServiceMessageConfig:"線上購物問與答"},41364:{isEnableshippingCartMoreStorePayMethod:!0},41426:{isEnableshippingCartMoreStorePayMethod:!0},41566:{customerHeaderConfig:{headerLogo:{position:{logoContainer:"logo-center"}},navMenu:{position:{navMenuContainer:"nav-menu-center",mainNavMenu:"nav-menu-main-center",subNavMenu:"sub-nav-li-center"}},searchBox:{backgroundColor:"F5F5F5"}},isShowSalePageProductId:!1,isMujiCustomerFooter:!0},41571:{isShowSFTPContractNote:!1,isCouponCustomForAdidas:!0,customerHeaderConfig:{headerLogo:{position:{logoContainer:"logo-center"}},navMenu:{position:{navMenuContainer:"nav-menu-center",mainNavMenu:"nav-menu-main-center",subNavMenu:"sub-nav-li-center"},font:{weight:"700"},icon:{display:!1}},searchBox:{radius:"rectangle",backgroundColor:"ECEFF1"}},isHideTypeButton:!0,isEnableAdidasCustom:!0},41591:{isCouponCustomForAdidas:!0,customerHeaderConfig:{headerLogo:{position:{logoContainer:"logo-center"}},navMenu:{position:{navMenuContainer:"nav-menu-center",mainNavMenu:"nav-menu-main-center",subNavMenu:"sub-nav-li-center"},font:{weight:"700"},icon:{display:!1}},searchBox:{radius:"rectangle",backgroundColor:"ECEFF1"}},isHideTypeButton:!0,isEnableAdidasCustom:!0}}},prod:{default:n,tw:{8:{isShopsDesktopImageNeedCompress:!0},360:{noServiceAreaExcludeZipCode:["882","896","883"],isEnableshippingCartMoreStorePayMethod:!0},2325:{customerHeaderConfig:{headerLogo:{position:{logoContainer:"logo-center"}},navMenu:{position:{navMenuContainer:"nav-menu-center",mainNavMenu:"nav-menu-main-center",subNavMenu:"sub-nav-li-center"}},searchBox:{backgroundColor:"F5F5F5"}},isMujiCustomerFooter:!0},2373:{noServiceAreaExcludeZipCode:["882","896","883"]},40522:{isCustomUnableChangePasswordPrompt:!0},40589:{customerSalePageImgConfig:"_碧兒泉",isShopsDesktopImageNeedCompress:!0},40625:{customerSalePageImgConfig:"_碧兒泉"},40916:{customVipMemberTradesSumTitle:!0},41337:{isHideStoreCustomerService:!0,customerServiceMessageConfig:"線上購物問與答"},41364:{isEnableshippingCartMoreStorePayMethod:!0},41426:{isEnableshippingCartMoreStorePayMethod:!0},41566:{customerHeaderConfig:{headerLogo:{position:{logoContainer:"logo-center"}},navMenu:{position:{navMenuContainer:"nav-menu-center",mainNavMenu:"nav-menu-main-center",subNavMenu:"sub-nav-li-center"}},searchBox:{backgroundColor:"F5F5F5"}},isShowSalePageProductId:!1,isMujiCustomerFooter:!0},41571:{isShowSFTPContractNote:!1,isCouponCustomForAdidas:!0,customerHeaderConfig:{headerLogo:{position:{logoContainer:"logo-center"}},navMenu:{position:{navMenuContainer:"nav-menu-center",mainNavMenu:"nav-menu-main-center",subNavMenu:"sub-nav-li-center"},font:{weight:"700"},icon:{display:!1}},searchBox:{radius:"rectangle",backgroundColor:"ECEFF1"}},isHideTypeButton:!0,isEnableAdidasCustom:!0},41591:{isCouponCustomForAdidas:!0,customerHeaderConfig:{headerLogo:{position:{logoContainer:"logo-center"}},navMenu:{position:{navMenuContainer:"nav-menu-center",mainNavMenu:"nav-menu-main-center",subNavMenu:"sub-nav-li-center"},font:{weight:"700"},icon:{display:!1}},searchBox:{radius:"rectangle",backgroundColor:"ECEFF1"}},isHideTypeButton:!0,isEnableAdidasCustom:!0},41602:{isHideMembershipDescription:!0}},hk:{20:{isProductCardTargetBlankOnCategoryPage:!0},21:{isProductCardTargetBlankOnCategoryPage:!0},76:{isProductCardTargetBlankOnCategoryPage:!0},77:{isProductCardTargetBlankOnCategoryPage:!0}},my:{}}},i=e=>{var n;return(null==(n=r[null==e?void 0:e.toLowerCase()])?void 0:n.default)||t},o=(e,t)=>{var n;const o=i(e);return(null==(n=r[null==e?void 0:e.toLowerCase()])?void 0:n[null==t?void 0:t.toLowerCase()])||o};var a=(e=>(e.isHideStoreCustomerService="isHideStoreCustomerService",e.isShowSFTPContractNote="isShowSFTPContractNote",e.isHideMembershipDescription="isHideMembershipDescription",e.customerSalePageImgConfig="customerSalePageImgConfig",e.isShowSalePageProductId="isShowSalePageProductId",e.isChannelActive="isChannelActive",e.isChannelSwitchActive="isChannelSwitchActive",e.isDirectlyAddToCart="isDirectlyAddToCart",e.isBreadcrumbsActive="isBreadcrumbsActive",e.isUseFastBuy="isUseFastBuy",e.isNewPXProductList="isNewPXProductList",e.isBubbleAddToCart="isBubbleAddToCart",e.customerUIConfig="customerUIConfig",e.customerServiceMessageConfig="customerServiceMessageConfig",e.noServiceAreaExcludeZipCode="noServiceAreaExcludeZipCode",e.isEnableshippingCartMoreStorePayMethod="isEnableshippingCartMoreStorePayMethod",e.isCouponCustomForAdidas="isCouponCustomForAdidas",e.isProductCardTargetBlankOnCategoryPage="isProductCardTargetBlankOnCategoryPage",e.isShopsDesktopImageNeedCompress="isShopsDesktopImageNeedCompress",e.isMujiCustomerFooter="isMujiCustomerFooter",e.isHideTypeButton="isHideTypeButton",e.isEnableAdidasCustom="isEnableAdidasCustom",e.customerHeaderConfig="customerHeaderConfig",e.isCustomUnableChangePasswordPrompt="isCustomUnableChangePasswordPrompt",e.customVipMemberTradesSumTitle="customVipMemberTradesSumTitle",e))(a||{});e.getSetting=(e,t,n,r)=>{var a;if(!(e&&t&&n&&r))return null;const c=i(e),l=null==(a=o(e,t)[n])?void 0:a[r];return void 0!==l?l:null==c?void 0:c[r]},e.settingNameEnum=a,Object.defineProperty(e,Symbol.toStringTag,{value:"Module"})}(t)},3813:function(e,t){!function(e){"use strict";var t=(e=>(e.frontend_common_vip_member_zone="frontend_common_vip_member_zone",e.frontend_common_vip_member_zone_entrance="frontend_common_vip_member_zone_entrance",e.frontend_common_back_to_vip_member_zone="frontend_common_back_to_vip_member_zone",e.frontend_common_order_search="frontend_common_order_search",e.frontend_vip_member_index_check_order="frontend_vip_member_index_check_order",e.frontend_common_back_to_order_search="frontend_common_back_to_order_search",e.frontend_common_my_ecoupon="frontend_common_my_ecoupon",e.frontend_common_ecoupon_zone="frontend_common_ecoupon_zone",e.frontend_common_go_to_ecoupon_zone="frontend_common_go_to_ecoupon_zone",e.frontend_common_ecoupon="frontend_common_ecoupon",e.frontend_vip_member_email_notification_sms_subscribe="frontend_vip_member_email_notification_sms_subscribe",e.frontend_vip_member_email_notification_promotion_sms="frontend_vip_member_email_notification_promotion_sms",e))(t||{});e.mwebTranslationKeyEnum=t,Object.defineProperty(e,Symbol.toStringTag,{value:"Module"})}(t)},8196:function(e,t,n){"use strict";var r=this&&this.__makeTemplateObject||function(e,t){return Object.defineProperty?Object.defineProperty(e,"raw",{value:t}):e.raw=t,e},i=this&&this.__assign||function(){return i=Object.assign||function(e){for(var t,n=1,r=arguments.length;n<r;n++)for(var i in t=arguments[n])Object.prototype.hasOwnProperty.call(t,i)&&(e[i]=t[i]);return e},i.apply(this,arguments)};Object.defineProperty(t,"__esModule",{value:!0}),t.ProductToCart=void 0;var o=n(5927),a=n(5927),c=n(7450),l=n(2568),s=n(595),u=n(3950),g=n(5601),d=n(4736),I=n(1815),p=n(6395),b=n(1241),m=n(882),C={};t.ProductToCart=function(e){return o.createElement(l.ThemeProvider,{theme:e.theme||C},e.salePageType===u.SalePageTypeEnum.Bundle&&o.createElement(A,{curStep:e.curStep,includeTheseSalePagesText:e.includeTheseSalePagesText,skuSelectPlaceholder:e.skuSelectPlaceholder,onClickSkuSelect:e.onClickSkuSelect,confirmSelectedSkuText:e.confirmSelectedSkuText,onClickConfirmSelectedSku:e.onClickConfirmSelectedSku,bundleBlocks:e.bundleBlocks,maxQuantity:e.maxQuantity,buttonDisplayText:e.buttonDisplayText,customStyles:e.customStyles,decimal:e.decimal,handleProductToCart:e.handleProductToCart,isDisplayProductImage:e.isDisplayProductImage,isEnableCartButton:e.isEnableCartButton,isEnableAdidasCustom:e.isEnableAdidasCustom,productInfoSubTitle:e.productInfoSubTitle,productToCartStyle:e.productToCartStyle,rate:e.rate,mainSalePageInfo:e.mainSalePageInfo,selectedValue:e.selectedValue,QtyHintBlock:e.QtyHintBlock,skuSoldOutText:e.skuSoldOutText,skuUpdatedText:e.skuUpdatedText,symbol:e.symbol,isPriceOnTop:e.isPriceOnTop,isSuggestPriceShowPrice:e.isSuggestPriceShowPrice,isEnableOriginalPrice:e.isEnableOriginalPrice,specChartData:e.specChartData,handleOpenSpecChart:e.handleOpenSpecChart,subSalePageInfo:e.subSalePageInfo,DEFAULT_SKU_ID:e.DEFAULT_SKU_ID,DEFAULT_MAX_QUANTITY:e.DEFAULT_MAX_QUANTITY,defaultSelectedSubSalePageSkuIds:e.defaultSelectedSubSalePageSkuIds,salePageRemovedPlaceholder:e.salePageRemovedPlaceholder,notSellingMaskLabelText:e.notSellingMaskLabelText,browsingMode:e.browsingMode}),(e.salePageType===u.SalePageTypeEnum.Normal||void 0===e.salePageType)&&o.createElement(B,{backInStockButtonDisplayText:e.backInStockButtonDisplayText,buttonDisplayText:e.buttonDisplayText,customStyles:e.customStyles,decimal:e.decimal,handleAddQuantity:e.handleAddQuantity,handleProductToCart:e.handleProductToCart,handleRemoveQuantity:e.handleRemoveQuantity,handleUpdateSelectedSkuIdCallBack:e.handleUpdateSelectedSkuIdCallBack,isDisplayProductImage:e.isDisplayProductImage,isEnableBackInStock:e.isEnableBackInStock,isEnableCartButton:e.isEnableCartButton,isEnablePurchaseMethod:e.isEnablePurchaseMethod,isBackInStockSubscribedSkuId:e.isBackInStockSubscribedSkuId,isEnableAdidasCustom:e.isEnableAdidasCustom,productInfoSubTitle:e.productInfoSubTitle,productToCartStyle:e.productToCartStyle,purchaseMethodInfo:e.purchaseMethodInfo,rate:e.rate,rawSalePageInfo:e.rawSalePageInfo,rawSkuInfoList:e.rawSkuInfoList,selectedValue:e.selectedValue,serviceType:e.serviceType,setQtyHintText:e.setQtyHintText,shopId:e.shopId,skuSoldOutText:e.skuSoldOutText,skuUpdatedText:e.skuUpdatedText,symbol:e.symbol,userSettingMaxValue:e.userSettingMaxValue,isPriceOnTop:e.isPriceOnTop,isSuggestPriceShowPrice:e.isSuggestPriceShowPrice,specialPriceList:e.specialPriceList,selectedSpecialPriceData:e.selectedSpecialPriceData,salePagePriceList:e.salePagePriceList,isEnableOriginalPrice:e.isEnableOriginalPrice,specChartData:e.specChartData,handleOpenSpecChart:e.handleOpenSpecChart},e.children))};var h,B=function(e){var t=e.backInStockButtonDisplayText,n=void 0===t?"貨到通知我":t,r=e.buttonDisplayText,l=void 0===r?"加入購物車":r,d=e.children,m=e.customStyles,C=void 0===m?{}:m,h=e.decimal,B=e.handleAddQuantity,A=e.handleProductToCart,y=e.handleRemoveQuantity,f=e.handleUpdateSelectedSkuIdCallBack,G=e.isDisplayProductImage,Q=void 0===G||G,F=e.isEnableBackInStock,v=void 0!==F&&F,Z=e.isEnableCartButton,E=void 0===Z||Z,S=e.isEnablePurchaseMethod,X=void 0===S||S,T=e.isBackInStockSubscribedSkuId,x=void 0!==T&&T,U=e.isEnableAdidasCustom,N=void 0!==U&&U,R=e.productInfoSubTitle,O=e.productToCartStyle,V=void 0===O?{}:O,W=e.purchaseMethodInfo,_=e.rate,w=e.rawSalePageInfo,H=e.rawSkuInfoList,Y=e.selectedValue,k=e.serviceType,D=e.setQtyHintText,L=e.shopId,P=e.skuSoldOutText,J=e.skuUpdatedText,M=e.symbol,z=e.userSettingMaxValue,j=void 0===z?-1:z,K=e.isPriceOnTop,q=void 0!==K&&K,$=e.isSuggestPriceShowPrice,ee=void 0!==$&&$,te=e.specialPriceList,ne=void 0===te?[]:te,re=e.selectedSpecialPriceData,ie=void 0===re?null:re,oe=e.salePagePriceList,ae=void 0===oe?[]:oe,ce=e.isEnableOriginalPrice,le=void 0===ce||ce,se=e.specChartData,ue=e.handleOpenSpecChart,ge=a.useMemo((function(){return I.getSalePageInfo(w,ae)}),[w,ae]),de=a.useMemo((function(){return I.getSkuInfoList(w,H)}),[w,H]),Ie=a.useState(1),pe=Ie[0],be=Ie[1],me=a.useState(-1),Ce=me[0],he=me[1],Be=(null==ge?void 0:ge.pointsPayPairsList[0])||null,Ae=a.useState(Be),ye=Ae[0],fe=Ae[1],Ge=a.useState(""),Qe=Ge[0],Fe=Ge[1],ve=a.useState(0),Ze=ve[0],Ee=ve[1],Se=a.useState(1),Xe=Se[0],Te=Se[1],xe=a.useState(ie),Ue=xe[0],Ne=xe[1],Re=C.productInfoStyle,Oe=C.skuListStyle,Ve=C.purchaseMethodStyle,We=C.qtySelectorSectionStyle,_e=C.qtySelectorStyle,we=C.cartButtonStyle,He=V.topStyle,Ye=V.contentStyle,ke=V.bottomStyle,De=ge.skuGroupLevel1,Le=ge.skuGroupLevel2,Pe=ge.maxSkuLevel,Je=ge.status,Me=ge.skuIdList,ze=ge.mainImageUrl,je=ge.id,Ke=ge.hasPointPayOption,qe=ge.pointsPayPairsList,$e=ge.title,et=ge.price,tt=ge.suggestPrice,nt=function(e){var t=e.serviceType,n=e.isEnableCartButton,r=e.maxValue,i=e.status;return n?!e.isEnableBackInStock&&(t===u.ServiceType.BACK_STAGE?r<=0:t===u.ServiceType.FRONT_STAGE?r<0:i===p.SALE_STATUS[i]):!n}({serviceType:k,isEnableBackInStock:v,isEnableCartButton:E,maxValue:Ze,status:Je}),rt=a.useCallback((function(){if(D)return D(Ze)}),[Ze,D]),it=function(){var e,t,n;return{mainImageUrl:(null===(e=ze.find((function(e){return e.skuId===Ce})))||void 0===e?void 0:e.imageSrc)||ze[0].imageSrc,optionalTypeDef:Ke&&(null==ye?void 0:ye.PairsPoints)>0?"PointsPay":"",optionalTypeId:Ke&&(null==ye?void 0:ye.PairsPoints)>0?null==ye?void 0:ye.PointsPayId:0,points:(null==ye?void 0:ye.PairsPoints)||0,price:(null==ye?void 0:ye.PairsPrice)||(null===(t=de.find((function(e){return e.skuId===Ce})))||void 0===t?void 0:t.price)||et||0,quantity:pe,salePageId:je,sellingQty:(null===(n=de.find((function(e){return e.skuId===Ce})))||void 0===n?void 0:n.sellingQty)||0,shopId:L,skuId:Ce,skuKey:Qe,suggestPrice:tt,title:$e,specialPrice:(null==Ue?void 0:Ue.Price)||0}},ot=a.useCallback((function(e,t){c.map(e,(function(e){if(e.skuId===t)if(e.sellingQty>0){var n=j>-1&&j<e.sellingQty?j:e.sellingQty;Ee(n),be(1),Te(1)}else Ee(0),be(1),Te(1)}))}),[j]),at=function(e){var t;void 0===e&&(e=-1),he(e),ot(de,e);var n=(null===(t=c.find(de,(function(t){return t.skuId===e})))||void 0===t?void 0:t.price)||0;Ne(s.getSalePageSpecialPriceTagData(ne,e,n)),f&&f(e)},ct=a.useCallback((function(e){var t;if(fe(i(i({},ye),e)),e.PairsPoints>0)Ne(null);else if(Ce>0&&ne.length>0){var n=(null===(t=c.find(de,(function(e){return e.skuId===Ce})))||void 0===t?void 0:t.price)||0;Ne(s.getSalePageSpecialPriceTagData(ne,Ce,n))}else Ne(ie)}),[ye,ne,Ce,de,ie]),lt=a.useCallback((function(){if((null==Y?void 0:Y.selectedSkuID)&&(null==Y?void 0:Y.selectedSkuID)>-1){var e=Y.selectedSkuKey,t=Y.selectedSkuID,n=Y.selectedQuantity,r=Y.selectedPointPayOptionId;if(at(t),Fe(e||""),be(n||1),r){var i=c.find(ge.pointsPayPairsList,(function(e){return e.PointsPayId===r}));i&&fe(i)}}}),[ge.pointsPayPairsList,Y,de,ot]);a.useEffect((function(){var e;0!==Pe&&1!==Me.length||(Fe((null===(e=null==De?void 0:De.skuKeyList[0])||void 0===e?void 0:e.skuKey)||""),at(Me[0])),lt()}),[]);var st=!(!v||!(Ze<=0&&Ce>0||v&&Je===p.SALE_STATUS.SoldOut));return o.createElement(b.ProductToCartContainer,null,o.createElement(b.Top,{topStyle:He},ge&&de&&o.createElement(g.ProductInfo,{salePageInfo:ge,skuInfoList:de,selectedPurchaseMethod:ye,skuId:Ce,decimal:h,symbol:M,rate:_,productInfoStyle:Re||{},isDisplayImage:Q,subTitle:R,isPriceOnTop:q,pointText:null==W?void 0:W.pointText,isSuggestPriceShowPrice:ee,selectedSpecialPriceData:Ue,isEnableOriginalPrice:le}),(null==se?void 0:se.specChartId)&&o.createElement(b.SpecChartButton,{onClick:ue},null==se?void 0:se.title,o.createElement("i",{className:"ico ico-chevron-right"}))),o.createElement(b.Content,{contentStyle:Ye},d,Pe>0&&de&&o.createElement(g.SkuList,{skuInfoList:de,skuGroup:{skuGroupLevel1:De,skuGroupLevel2:Le},maxSkuLevel:Pe,updateSelectedSkuId:function(e,t){Fe(t),at(e)},skuListStyle:Oe||{},initSkuKey:Qe,skuSoldOutText:P,skuUpdatedText:J,isEnableBackInStock:v}),X&&Ke&&o.createElement(g.PurchaseMethod,{purchaseMethodList:qe,selectedPurchaseMethod:ye,onSelectPurchaseMethod:ct,decimal:h,symbol:M,rate:_,title:(null==W?void 0:W.title)||"請選擇購買方式",subTitle:null==W?void 0:W.subTitle,purchaseMethodStyle:Ve||{},pointText:null==W?void 0:W.pointText})),o.createElement(b.BottomContainer,null,o.createElement(b.Bottom,{bottomStyle:ke},o.createElement(b.Qty,{qtySelectorSectionStyle:We},st?o.createElement(a.Fragment,null,P):o.createElement(a.Fragment,null,o.createElement(g.QtySelector,{currentValue:pe,maxValue:Ze,minValue:Xe,onIncreaseValue:function(){if(!(Ce>0&&pe>=Ze)&&(be(pe+1),B)){var e=it();B(e)}},onDecreaseValue:function(){var e=+pe-1;if(be(e>=Xe?e:Xe),y){var t=it();y(t)}},onChangeValue:function(e){var t,n=null!==(t=parseInt(e.target.value,10))&&void 0!==t?t:0;be(Ce>0&&n>=Ze?Ze:n)},qtySelectorStyle:_e||{},disabledButton:nt}),!nt&&Ze>0&&pe>=Ze&&rt())),o.createElement(g.CartButton,{isEnableAdidasCustom:N,isBackInStockSubscribedSkuId:x,disabled:nt,onClicked:function(){var e=it();A(e)},cartButtonStyle:we||{},displayText:st?n:l}))))},A=function(e){var t,n,c=e.buttonDisplayText,s=void 0===c?"加入購物車":c,u=e.customStyles,p=void 0===u?{}:u,B=e.decimal,A=e.handleProductToCart,y=e.isDisplayProductImage,f=void 0===y||y,G=e.isEnableCartButton,Q=void 0===G||G,F=e.isEnableAdidasCustom,v=void 0!==F&&F,Z=e.productInfoSubTitle,E=e.productToCartStyle,S=void 0===E?{}:E,X=e.rate,T=e.mainSalePageInfo,x=e.QtyHintBlock,U=e.skuSoldOutText,N=e.skuUpdatedText,R=e.symbol,O=e.isPriceOnTop,V=void 0!==O&&O,W=e.isSuggestPriceShowPrice,_=void 0!==W&&W,w=e.isEnableOriginalPrice,H=void 0===w||w,Y=e.specChartData,k=e.handleOpenSpecChart,D=e.curStep,L=void 0===D?0:D,P=e.includeTheseSalePagesText,J=void 0===P?"內含以下商品":P,M=e.skuSelectPlaceholder,z=void 0===M?"請選擇商品選項":M,j=e.onClickSkuSelect,K=e.confirmSelectedSkuText,q=void 0===K?"確認":K,$=e.onClickConfirmSelectedSku,ee=e.bundleBlocks,te=void 0===ee?[]:ee,ne=e.maxQuantity,re=void 0===ne?1:ne,ie=e.subSalePageInfo,oe=e.DEFAULT_SKU_ID,ae=e.DEFAULT_MAX_QUANTITY,ce=e.defaultSelectedSubSalePageSkuIds,le=e.salePageRemovedPlaceholder,se=void 0===le?"此商品已下架":le,ue=e.notSellingMaskLabelText,ge=void 0===ue?"暫停販售":ue,de=e.browsingMode,Ie=a.useState(1),pe=Ie[0],be=Ie[1],me=a.useState({p1:ce.concat(),p2:ce.concat()}),Ce=me[0],he=me[1],Be=a.useState(0),Ae=Be[0],ye=Be[1],fe=S.topStyle,Ge=S.contentStyle,Qe=S.bottomStyle,Fe=p.productInfoStyle,ve=p.skuListStyle,Ze=p.qtySelectorSectionStyle,Ee=p.qtySelectorStyle,Se=p.cartButtonStyle,Xe=i(i({},Se||C),{customStyle:l.css(h||(h=r(["\n            "," width: 100%\n        "],["\n            "," width: 100%\n        "])),null==Se?void 0:Se.customStyle)}),Te=a.useMemo((function(){return I.getSalePageInfo(T)}),[T]),xe=a.useMemo((function(){return I.getSkuInfoList(T)}),[T]),Ue=a.useMemo((function(){return ie?I.getSalePageInfo(ie):void 0}),[ie]),Ne=a.useMemo((function(){return ie?I.getSkuInfoList(ie):[]}),[ie]),Re=a.useMemo((function(){return{skuGroupLevel1:null==Ue?void 0:Ue.skuGroupLevel1,skuGroupLevel2:null==Ue?void 0:Ue.skuGroupLevel2}}),[Ue]),Oe=a.useMemo((function(){var e=Ce.p2[Ae];if(e!==oe){var t=Ne.find((function(t){return t.skuId===e}));return null==t?void 0:t.skuKey}}),[Ae]);function Ve(e,t){var n;if(!e.salepageScopes[0].hasSku)return"";var r=Ce.p1[t];if(r===oe)return z;var i=d.safeArray(null===(n=null==e?void 0:e.salepageScopes[0])||void 0===n?void 0:n.skuInfo).find((function(e){return e.skuId===r}));return i?d.safeArray(null==i?void 0:i.propertyInfo).map((function(e){return e.displayPropertyName})).join("/"):z}function We(e,t){var n,r=Ce.p1[t],i=e.salepageScopes[0].picUrl;return r===oe?i:(null===(n=d.safeArray((null==Ue?void 0:Ue.mainImageUrl)||[]).find((function(e){return e.skuId===r})))||void 0===n?void 0:n.imageSrc)||i}return o.createElement(b.CarouselContainer,null,o.createElement(b.CarouselViewport,{curStep:L},o.createElement(b.CarouselSlide,{"data-step":0},o.createElement(b.CarouselSlideScrollableArea,null,o.createElement(b.SalePageBundleInfoTop,{topStyle:fe},o.createElement(m.ProductInfoForSalePageBundle,{title:Te.title,imgSrc:null===(t=Te.mainImageUrl[0])||void 0===t?void 0:t.imageSrc,skuItem:xe[0],decimal:B,symbol:R,rate:X,productInfoStyle:Fe||C,isDisplayImage:f,subTitle:Z,isPriceOnTop:V,isSuggestPriceShowPrice:_,selectedSpecialPriceData:void 0,isEnableOriginalPrice:H,browsingMode:de}),(null==Y?void 0:Y.specChartId)&&o.createElement(b.SpecChartButton,{onClick:k},null==Y?void 0:Y.title,o.createElement("i",{className:"ico ico-chevron-right"}))),o.createElement(b.SubSalePagesContent,{contentStyle:Ge,browsingMode:de},o.createElement(b.SubSalePagesBlockTitle,null,J),te.map((function(e,t){return function(e){return new Date(e.salepageScopes[0].sellingEndDateTime)<new Date||e.salepageScopes[0].isClosed||e.salepageScopes[0].hasSku&&0===e.salepageScopes[0].skuInfo.length}(e)?o.createElement(m.ProductInfoClosed,{productInfoStyle:Fe,salePageRemovedPlaceholder:se}):function(e){return new Date(e.salepageScopes[0].sellingStartDateTime)>new Date||e.salepageScopes[0].isSoldout}(e)?o.createElement(m.ProductInfoSoldout,{browsingMode:de,title:e.salepageScopes[0].title,imgSrc:e.salepageScopes[0].picUrl,productInfoStyle:Fe,totalCount:e.blockQtyMust,hasMultiSku:e.salepageScopes[0].skuInfo.length>=2,notSellingMaskLabelText:ge,selectedSkuValueString:Ve(e,t)}):o.createElement(g.ProductInfoWithSkuSelectAndCounter,{key:e.blockId,title:e.salepageScopes[0].title,imgSrc:We(e,t),productInfoStyle:Fe,shouldRenderSkuSelect:e.salepageScopes[0].skuInfo.length>=2,onClickSkuSelect:function(){ye(t),j(e,t)},totalCount:e.blockQtyMust,selectedSkuValueString:Ve(e,t)})})))),o.createElement(b.BottomContainer,null,o.createElement(b.Bottom,{bottomStyle:Qe},o.createElement(b.Qty,{qtySelectorSectionStyle:Ze},o.createElement(g.QtySelector,{currentValue:pe,maxValue:re,minValue:1,onIncreaseValue:function(){return be((function(e){return e+1}))},onDecreaseValue:function(){return be((function(e){return e-1}))},qtySelectorStyle:Ee||C,disabledButton:!1}),Q&&pe>=re&&re!==ae&&o.createElement(x,{maxQuantity:re})),o.createElement(g.CartButton,{isEnableAdidasCustom:v,disabled:!Q,onClicked:function(e){e.stopPropagation(),A({curQuantity:pe,selectedSubSalePageSkuIds:Ce.p1})},cartButtonStyle:Se||C,displayText:s})))),Ue&&o.createElement(b.CarouselSlide,{"data-step":1},o.createElement(b.CarouselSlideScrollableArea,null,o.createElement(b.SalePageBundleInfoTop,{topStyle:fe},o.createElement(g.SimpleProductInfo,{browsingMode:de,title:null===(n=te[Ae])||void 0===n?void 0:n.salepageScopes[0].title,skuId:Ce.p2[Ae],productImageInfoList:Ue.mainImageUrl,productInfoStyle:Fe||C})),o.createElement(b.SalePageBundleP2Content,{contentStyle:Ge},o.createElement(g.SkuList,{key:Ae,initSkuKey:Oe,skuInfoList:Ne,skuGroup:Re,maxSkuLevel:Ue.maxSkuLevel,updateSelectedSkuId:function(e){he((function(t){return t.p2[Ae]=e,i({},t)}))},skuListStyle:ve||C,skuSoldOutText:U,skuUpdatedText:N,isEnableBackInStock:!1}))),o.createElement(b.BottomContainer,null,o.createElement(b.Bottom,{bottomStyle:Qe},o.createElement(g.CartButton,{disabled:!1,isEnableAdidasCustom:v,onClicked:function(){var e=function(){var e=i({},Ce);return e.p1=e.p1.concat(),e.p1[Ae]=e.p2[Ae],he(e),e}();be(1),$({p1SelectedSubSalePageSkuIds:e.p1,bundleBlockIdx:Ae})},cartButtonStyle:Xe||C,displayText:q}))))))}},5493:function(e,t,n){"use strict";var r=this&&this.__makeTemplateObject||function(e,t){return Object.defineProperty?Object.defineProperty(e,"raw",{value:t}):e.raw=t,e};Object.defineProperty(t,"__esModule",{value:!0});var i,o=n(5927),a=n(2568),c=n(5927),l=n(8103),s=a.default.div(i||(i=r(["\n    display: inline-block;\n    text-decoration: ",";\n    color: inherit;\n"],["\n    display: inline-block;\n    text-decoration: ",";\n    color: inherit;\n"])),(function(e){return e.isThrough?"line-through":"none"}));t.default=function(e){var t=e.isThrough,n=void 0!==t&&t,r=e.decimal,i=void 0===r?0:r,a=e.value,u=void 0===a?0:a,g=e.symbol,d=void 0===g?"$":g,I=e.rate,p=void 0===I?1:I,b=e.disableTheme,m=void 0!==b&&b;return o.createElement(s,{isThrough:n,disableTheme:m},"number"==typeof u&&o.createElement(c.Fragment,null,l.formatMoney(u*p,d,i)))}},6115:function(e,t,n){"use strict";var r=this&&this.__makeTemplateObject||function(e,t){return Object.defineProperty?Object.defineProperty(e,"raw",{value:t}):e.raw=t,e};Object.defineProperty(t,"__esModule",{value:!0}),t.CartButton=void 0;var i,o,a,c,l=n(5927),s=n(2568),u=s.default.button(a||(a=r(["\n    cursor: pointer;\n    border-radius: 4px;\n    font-size: 1rem;\n    text-align: center;\n    box-sizing: border-box;\n    display: inline-block;\n    background-color: #dddddd;\n\n    width: 100px;\n    ",";\n"],["\n    cursor: pointer;\n    border-radius: 4px;\n    font-size: 1rem;\n    text-align: center;\n    box-sizing: border-box;\n    display: inline-block;\n    background-color: #dddddd;\n\n    width: 100px;\n    ",";\n"])),(function(e){var t=e.disabled,n=e.customStyle,a=e.disabledStyle;return t?function(e){return e?s.css(i||(i=r(["\n            pointer-events: none;\n            cursor: not-allowed;\n            ","\n        "],["\n            pointer-events: none;\n            cursor: not-allowed;\n            ","\n        "])),e||null):s.css(o||(o=r(["\n        pointer-events: none;\n        color: #ffffff;\n        border: 1px solid #dddddd;\n        background-color: #dddddd;\n        cursor: not-allowed;\n    "],["\n        pointer-events: none;\n        color: #ffffff;\n        border: 1px solid #dddddd;\n        background-color: #dddddd;\n        cursor: not-allowed;\n    "])))}(a):n||void 0})),g=s.default.i(c||(c=r(["\n    padding-right: 16px;\n    font-size: 28px;\n"],["\n    padding-right: 16px;\n    font-size: 28px;\n"])));t.CartButton=function(e){var t=e.onClicked,n=e.disabled,r=void 0!==n&&n,i=e.displayText,o=e.cartButtonStyle,a=e.isBackInStockSubscribedSkuId,c=e.isEnableAdidasCustom,s=o.disabledStyle,d=o.customStyle;return l.createElement(u,{onClick:function(e){e.preventDefault(),e.stopPropagation(),t(e)},disabled:r,customStyle:d,disabledStyle:s},i,c&&!a&&l.createElement(g,{className:"ico ico-arrow-long-forward"}))}},882:function(e,t,n){"use strict";var r=this&&this.__makeTemplateObject||function(e,t){return Object.defineProperty?Object.defineProperty(e,"raw",{value:t}):e.raw=t,e};Object.defineProperty(t,"__esModule",{value:!0}),t.ProductInfoSoldout=t.ProductInfoClosed=t.ProductInfoWithSkuSelectAndCounter=t.SimpleProductInfo=t.ProductInfoForSalePageBundle=t.ProductInfo=void 0;var i,o,a,c,l,s,u,g,d,I,p,b,m,C,h,B,A,y,f,G,Q,F,v=n(5927),Z=n(7450),E=n(2568),S=n(595),X=n(3950),T=n(5493),x=n(8181),U=E.default.div(i||(i=r(["\n    margin: 0;\n    position: relative;\n    display: flex;\n    height: ",";\n    ","\n"],["\n    margin: 0;\n    position: relative;\n    display: flex;\n    height: ",";\n    ","\n"])),(function(e){return e.height||"100%"}),(function(e){return e.containerStyle||null})),N=E.default.div(o||(o=r(["\n    position: relative;\n    width: calc(100% - 130px);\n    text-align: left;\n    box-sizing: border-box;\n    ","\n"],["\n    position: relative;\n    width: calc(100% - 130px);\n    text-align: left;\n    box-sizing: border-box;\n    ","\n"])),(function(e){return e.mainInfoStyle||null})),R=E.default.div(a||(a=r(["\n    position: relative;\n    min-width: 1px;\n    flex-grow: 1;\n    text-align: left;\n    box-sizing: border-box;\n    ","\n    padding-left:  ","\n"],["\n    position: relative;\n    min-width: 1px;\n    flex-grow: 1;\n    text-align: left;\n    box-sizing: border-box;\n    ","\n    padding-left:  ","\n"])),(function(e){return e.mainInfoStyle||null}),(function(e){return e.browsingMode===X.BROWSING_MODE.MOBILE?"8px":"16px"})),O=E.default.img(c||(c=r(["\n    width: ",";\n    height: ",";\n    object-fit: contain;\n"],["\n    width: ",";\n    height: ",";\n    object-fit: contain;\n"])),(function(e){return e.browsingMode===X.BROWSING_MODE.MOBILE?"80px":"120px"}),(function(e){return e.browsingMode===X.BROWSING_MODE.MOBILE?"80px":"120px"})),V=E.default.div(l||(l=r(["\n    width: ",";\n    height: ",";\n    display: flex;\n    align-items: center;\n    justify-content: center;\n    background-color: #f9f9f9;\n    border: 1px solid #d7dde4;\n    box-sizing: border-box;\n"],["\n    width: ",";\n    height: ",";\n    display: flex;\n    align-items: center;\n    justify-content: center;\n    background-color: #f9f9f9;\n    border: 1px solid #d7dde4;\n    box-sizing: border-box;\n"])),(function(e){return e.browsingMode===X.BROWSING_MODE.MOBILE?"80px":"120px"}),(function(e){return e.browsingMode===X.BROWSING_MODE.MOBILE?"80px":"120px"})),W=E.default.div(s||(s=r(["\n    position: relative;\n"],["\n    position: relative;\n"]))),_=E.default.figure(u||(u=r(["\n    display: flex;\n"],["\n    display: flex;\n"]))),w=E.default.h3(g||(g=r(["\n    font-size: 14px;\n    line-height: 150%;\n    color: #4a4e5c;\n    font-weight: normal;\n    display: -webkit-box;\n    overflow: hidden;\n    white-space: normal;\n    text-overflow: ellipsis;\n    word-break: break-all;\n    -webkit-box-orient: vertical;\n    -webkit-line-clamp: 2;\n    ","\n"],["\n    font-size: 14px;\n    line-height: 150%;\n    color: #4a4e5c;\n    font-weight: normal;\n    display: -webkit-box;\n    overflow: hidden;\n    white-space: normal;\n    text-overflow: ellipsis;\n    word-break: break-all;\n    -webkit-box-orient: vertical;\n    -webkit-line-clamp: 2;\n    ","\n"])),(function(e){return e.titleStyle||null})),H=E.default.div(d||(d=r(["\n    position: absolute;\n    bottom: 0;\n"],["\n    position: absolute;\n    bottom: 0;\n"]))),Y=E.default.div(I||(I=r(["\n    display: flex;\n    flex-direction: ",";\n"],["\n    display: flex;\n    flex-direction: ",";\n"])),(function(e){return e.isPriceOnTop?"column-reverse":"column"})),k=E.default.div(p||(p=r(["\n    display: flex;\n    flex-wrap: wrap;\n    gap: 4px;\n"],["\n    display: flex;\n    flex-wrap: wrap;\n    gap: 4px;\n"]))),D=E.default.div(b||(b=r(["\n    padding: 0 4px;\n    font-size: 12px;\n    border-radius: 2px;\n    height: 20px;\n    box-sizing: border-box;\n    line-height: 20px;\n    overflow: hidden;\n    text-overflow: ellipsis;\n    white-space: nowrap;\n    ","\n"],["\n    padding: 0 4px;\n    font-size: 12px;\n    border-radius: 2px;\n    height: 20px;\n    box-sizing: border-box;\n    line-height: 20px;\n    overflow: hidden;\n    text-overflow: ellipsis;\n    white-space: nowrap;\n    ","\n"])),(function(e){return e.tagStyle||null})),L=E.default.div(m||(m=r(["\n    color: #aaa;\n    font-size: 0.8rem;\n    line-height: 1.5;\n    ","\n"],["\n    color: #aaa;\n    font-size: 0.8rem;\n    line-height: 1.5;\n    ","\n"])),(function(e){return e.subTitleStyle||null})),P=E.default.div(C||(C=r(["\n    font-size: 1rem;\n    line-height: 1.5;\n    color: #ff5353;\n    ","\n"],["\n    font-size: 1rem;\n    line-height: 1.5;\n    color: #ff5353;\n    ","\n"])),(function(e){return e.priceStyle||null})),J=E.default.div(h||(h=r(["\n    font-size: 0.8rem;\n    line-height: 1.5;\n    color: #aaa;\n    text-decoration: line-through;\n    ","\n"],["\n    font-size: 0.8rem;\n    line-height: 1.5;\n    color: #aaa;\n    text-decoration: line-through;\n    ","\n"])),(function(e){return e.suggestPriceStyle||null})),M=E.default.div(B||(B=r(["\n    display: flex;\n    align-items: center;\n    gap: 8px;\n    margin-top: 4px;\n"],["\n    display: flex;\n    align-items: center;\n    gap: 8px;\n    margin-top: 4px;\n"]))),z=E.default.div(A||(A=r(["\n    display: flex;\n    align-items: center;\n    justify-content: space-between;\n    padding: 8px;\n    border: 1px solid #ececec;\n    flex-grow: 1;\n    min-width: 1px;\n    cursor: ",";\n    ","\n"],["\n    display: flex;\n    align-items: center;\n    justify-content: space-between;\n    padding: 8px;\n    border: 1px solid #ececec;\n    flex-grow: 1;\n    min-width: 1px;\n    cursor: ",";\n    ","\n"])),(function(e){return e.disabled?"not-allowed":"pointer"}),(function(e){return e.disabled?"background-color: #F8F8F8;":""})),j=E.default.div(y||(y=r(["\n    font-size: 12px;\n    line-height: 1.5;\n    color: #666666;\n    overflow: hidden;\n    text-overflow: ellipsis;\n    white-space: nowrap;\n"],["\n    font-size: 12px;\n    line-height: 1.5;\n    color: #666666;\n    overflow: hidden;\n    text-overflow: ellipsis;\n    white-space: nowrap;\n"]))),K=E.default.div(f||(f=r(["\n    font-size: 14px;\n    line-height: 1.5;\n    color: #666666;\n    flex-grow: 1;\n    min-width: 1px;\n    overflow: hidden;\n    text-overflow: ellipsis;\n    white-space: nowrap;\n"],["\n    font-size: 14px;\n    line-height: 1.5;\n    color: #666666;\n    flex-grow: 1;\n    min-width: 1px;\n    overflow: hidden;\n    text-overflow: ellipsis;\n    white-space: nowrap;\n"]))),q=E.default.div(G||(G=r(["\n    font-size: 14px;\n    line-height: 1.5;\n    color: #666666;\n    min-width: 98px;\n    text-align: right;\n    margin-left: auto;\n"],["\n    font-size: 14px;\n    line-height: 1.5;\n    color: #666666;\n    min-width: 98px;\n    text-align: right;\n    margin-left: auto;\n"]))),$=E.default.div(Q||(Q=r(["\n    position: absolute;\n    left: 0px;\n    top: 0px;\n    bottom: 0;\n    right: 0;\n    background-color: rgba(255, 255, 255, 0.75);\n    display: flex;\n    align-items: center;\n    justify-content: center;\n"],["\n    position: absolute;\n    left: 0px;\n    top: 0px;\n    bottom: 0;\n    right: 0;\n    background-color: rgba(255, 255, 255, 0.75);\n    display: flex;\n    align-items: center;\n    justify-content: center;\n"]))),ee=E.default.div(F||(F=r(["\n    font-size: 12px;\n    line-height: 1.5;\n    padding: 5px 10px;\n    background-color: rgba(0, 0, 0, 0.6);\n    border-radius: 99px;\n    color: white;\n"],["\n    font-size: 12px;\n    line-height: 1.5;\n    padding: 5px 10px;\n    background-color: rgba(0, 0, 0, 0.6);\n    border-radius: 99px;\n    color: white;\n"]))),te=function(e,t){var n,r=Z.find(e,(function(e){return e.skuId===t}));return(null==r?void 0:r.imageSrc)||(null===(n=e[0])||void 0===n?void 0:n.imageSrc)||""};t.ProductInfo=function(e){var t=e.salePageInfo,n=e.skuInfoList,r=e.skuId,i=e.decimal,o=e.symbol,a=e.rate,c=e.selectedPurchaseMethod,l=e.isDisplayImage,s=void 0===l||l,u=e.productInfoStyle,g=void 0===u?{}:u,d=e.subTitle,I=e.isPriceOnTop,p=void 0===I||I,b=e.pointText,m=void 0===b?"點":b,C=e.isSuggestPriceShowPrice,h=void 0!==C&&C,B=e.selectedSpecialPriceData,A=void 0===B?null:B,y=e.isEnableOriginalPrice,f=void 0===y||y,G=t.title,Q=t.mainImageUrl,F=t.maxPrice,E=t.maxSuggestPrice,X=t.minPrice,R=t.minSuggestPrice,V=t.hasPointPayOption,W=g.discountPriceStyle,M=g.mainInfoStyle,z=g.priceStyle,j=g.containerStyle,K=g.suggestPriceStyle,q=g.subTitleStyle,$=g.titleStyle,ee=g.tagStyle,ne=Z.find(n,(function(e){return e.skuId===r})),re=r>0,ie=V&&(null==c?void 0:c.PairsPoints)>0,oe=ie?"PointPay":"Price",ae=ie?c.PairsPrice:0,ce=S.isShowSuggestPrice(oe,X,R,ae)||S.isShowSuggestPrice(oe,F,E,ae),le=A,se=(null==ne?void 0:ne.suggestPrice)||0,ue=(null==ne?void 0:ne.price)||0,ge=(null==le?void 0:le.Price)||0,de=ie?se:S.getDisplaySuggestPrice(ue,se,ge,h),Ie=S.getDisplayPrice(ue,ge),pe=!(!ne||!f)&&S.isShowSuggestPrice(oe,Ie,de,ae),be=F>X&&!re&&!ie,me=le?[le.Label]:[];return v.createElement(U,{containerStyle:j},s&&Q.length>0&&v.createElement(_,null,v.createElement(O,{src:te(Q,r),alt:"img"})),v.createElement(N,{mainInfoStyle:M},v.createElement(w,{titleStyle:$},G),re?v.createElement(H,null,v.createElement(L,{subTitleStyle:q}," ",d," "),(null==me?void 0:me.length)>0&&v.createElement(k,null,me.map((function(e,t){return v.createElement(D,{tagStyle:ee,key:t+"_"+e},e)}))),v.createElement(Y,{isPriceOnTop:p},pe&&v.createElement(J,{suggestPriceStyle:K},v.createElement(T.default,{value:de,decimal:i,symbol:o,rate:a,isThrough:!0,disableTheme:!0})),!V&&v.createElement(P,{priceStyle:pe&&W?W:z},v.createElement(T.default,{value:Ie,decimal:i,symbol:o,rate:a})),V&&v.createElement(P,{priceStyle:pe&&W?W:z},v.createElement(x.PointPlusPrice,{selectedPurchaseMethod:c,decimal:i,symbol:o,rate:a,pointText:m,price:Ie,salePageInfo:t,isShowRangePrice:be,priceStyle:z})))):v.createElement(H,null,v.createElement(L,{subTitleStyle:q}," ",d," "),(null==me?void 0:me.length)>0&&v.createElement(k,null,me.map((function(e,t){return v.createElement(D,{tagStyle:ee,key:t+"_"+e},e)}))),v.createElement(Y,{isPriceOnTop:p},ce&&v.createElement(J,{suggestPriceStyle:K},v.createElement(T.default,{value:R,decimal:i,symbol:o,rate:a,isThrough:!0,disableTheme:!0}),E>R&&v.createElement("span",null,"~",v.createElement(T.default,{value:E,decimal:i,symbol:o,rate:a,isThrough:!0,disableTheme:!0}))),!V&&v.createElement(P,{priceStyle:ce&&W?W:z},v.createElement(T.default,{value:X,decimal:i,symbol:o,rate:a}),F>X&&v.createElement("span",null,"~",v.createElement(T.default,{value:F,decimal:i,symbol:o,rate:a}))),V&&v.createElement(P,{priceStyle:ce&&W?W:z},v.createElement(x.PointPlusPrice,{selectedPurchaseMethod:c,decimal:i,symbol:o,rate:a,pointText:m,salePageInfo:t,isShowRangePrice:be,priceStyle:ce&&W?W:z}))))))},t.ProductInfoForSalePageBundle=function(e){var t=e.title,n=e.imgSrc,r=e.skuItem,i=e.decimal,o=e.symbol,a=e.rate,c=e.isDisplayImage,l=void 0===c||c,s=e.productInfoStyle,u=void 0===s?{}:s,g=e.subTitle,d=e.isPriceOnTop,I=void 0===d||d,p=e.isSuggestPriceShowPrice,b=void 0!==p&&p,m=e.selectedSpecialPriceData,C=e.isEnableOriginalPrice,h=void 0===C||C,B=e.browsingMode,A=u.discountPriceStyle,y=u.mainInfoStyle,f=u.priceStyle,G=u.containerStyle,Q=u.suggestPriceStyle,F=u.subTitleStyle,Z=u.titleStyle,E=u.tagStyle,X=(null==r?void 0:r.suggestPrice)||0,x=(null==r?void 0:r.price)||0,N=(null==m?void 0:m.Price)||0,V=S.getDisplaySuggestPrice(x,X,N,b),W=S.getDisplayPrice(x,N),M=!(!r||!h)&&S.isShowSuggestPrice("Price",W,V,0),z=m?[m.Label]:[];return v.createElement(U,{containerStyle:G,height:"unset"},l&&v.createElement(_,null,v.createElement(O,{src:n,alt:"img",browsingMode:B})),v.createElement(R,{mainInfoStyle:y,browsingMode:B},v.createElement(w,{titleStyle:Z},t),v.createElement(H,null,v.createElement(L,{subTitleStyle:F},g),(null==z?void 0:z.length)>0&&v.createElement(k,null,z.map((function(e,t){return v.createElement(D,{tagStyle:E,key:t+"_"+e},e)}))),v.createElement(Y,{isPriceOnTop:I},M&&v.createElement(J,{suggestPriceStyle:Q},v.createElement(T.default,{value:V,decimal:i,symbol:o,rate:a,isThrough:!0,disableTheme:!0})),v.createElement(P,{priceStyle:M&&A?A:f},v.createElement(T.default,{value:W,decimal:i,symbol:o,rate:a}))))))},t.SimpleProductInfo=function(e){var t=e.title,n=e.productImageInfoList,r=e.skuId,i=e.productInfoStyle,o=void 0===i?{}:i,a=e.browsingMode,c=o.mainInfoStyle,l=o.containerStyle,s=o.titleStyle;return v.createElement(U,{containerStyle:l,height:"unset"},v.createElement(_,null,v.createElement(O,{src:te(n,r),alt:"img",browsingMode:a})),v.createElement(R,{mainInfoStyle:c,browsingMode:a},v.createElement(w,{titleStyle:s},t)))},t.ProductInfoWithSkuSelectAndCounter=function(e){var t=e.title,n=e.imgSrc,r=e.productInfoStyle,i=void 0===r?{}:r,o=e.shouldRenderSkuSelect,a=e.onClickSkuSelect,c=e.totalCount,l=e.selectedSkuValueString,s=i.mainInfoStyle,u=i.containerStyle,g=i.titleStyle;return v.createElement(U,{containerStyle:u,height:"unset"},v.createElement(_,null,v.createElement(O,{src:n,alt:"img",browsingMode:X.BROWSING_MODE.MOBILE})),v.createElement(R,{mainInfoStyle:s,browsingMode:X.BROWSING_MODE.MOBILE},v.createElement(w,{titleStyle:g},t),v.createElement(M,null,o?v.createElement(z,{onClick:a},v.createElement(j,null,l),v.createElement("i",{className:"ico ico-chevron-down"})):v.createElement(K,null,l),v.createElement(q,null,"x",c))))},t.ProductInfoClosed=function(e){var t=e.productInfoStyle,n=void 0===t?{}:t,r=e.salePageRemovedPlaceholder,i=void 0===r?"此商品已下架":r,o=n.mainInfoStyle,a=n.containerStyle,c=n.titleStyle;return v.createElement(U,{containerStyle:a,height:"unset"},v.createElement(V,{browsingMode:X.BROWSING_MODE.MOBILE},v.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",width:"42",height:"42",viewBox:"0 0 42 42",fill:"none"},v.createElement("path",{d:"M10.6153 5.42278C7.74779 5.42278 5.42302 7.74755 5.42302 10.6151C5.42302 13.4826 7.74779 15.8074 10.6153 15.8074C13.4829 15.8074 15.8076 13.4826 15.8076 10.6151C15.8076 7.74755 13.4829 5.42278 10.6153 5.42278ZM10.6153 13.2112C10.2744 13.2114 9.93671 13.1443 9.62168 13.0139C9.30664 12.8834 9.0204 12.6922 8.7793 12.4511C8.5382 12.21 8.34697 11.9238 8.21655 11.6087C8.08612 11.2937 8.01905 10.956 8.01917 10.6151C8.01917 10.1016 8.17144 9.59968 8.4567 9.17274C8.74197 8.74581 9.14744 8.41305 9.62183 8.21655C10.0962 8.02005 10.6182 7.96864 11.1218 8.06882C11.6254 8.16899 12.088 8.41625 12.4511 8.77932C12.8142 9.1424 13.0614 9.60499 13.1616 10.1086C13.2618 10.6122 13.2104 11.1342 13.0139 11.6086C12.8174 12.083 12.4846 12.4884 12.0577 12.7737C11.6307 13.059 11.1288 13.2112 10.6153 13.2112ZM36.5769 0.230469H5.42302C2.55548 0.230469 0.230713 2.55524 0.230713 5.42278V36.5766C0.230713 39.4442 2.55548 41.7689 5.42302 41.7689H36.5769C39.4444 41.7689 41.7692 39.4442 41.7692 36.5766V5.42278C41.7692 2.55524 39.4444 0.230469 36.5769 0.230469ZM5.42302 39.1728C4.73448 39.1728 4.07413 38.8993 3.58726 38.4124C3.10039 37.9255 2.82687 37.2652 2.82687 36.5766V35.3563L13.1399 26.1209L26.1936 39.1728H5.42302ZM39.173 36.5766C39.173 37.2652 38.8995 37.9255 38.4126 38.4124C37.9258 38.8993 37.2654 39.1728 36.5769 39.1728H29.8684L20.3044 29.4828L31.3846 18.4022L39.173 26.1906V36.5766ZM39.173 22.4642L31.3846 14.5091L18.479 27.6343L13.2115 22.2975L2.82687 31.8205V5.42278C2.82687 4.73423 3.10039 4.07389 3.58726 3.58702C4.07413 3.10014 4.73448 2.82662 5.42302 2.82662H36.5769C37.2654 2.82662 37.9258 3.10014 38.4126 3.58702C38.8995 4.07389 39.173 4.73423 39.173 5.42278V22.4642Z",fill:"#B6BEC7",fillOpacity:"0.5"}))),v.createElement(R,{mainInfoStyle:o,browsingMode:X.BROWSING_MODE.MOBILE},v.createElement(w,{titleStyle:c},i)))},t.ProductInfoSoldout=function(e){var t=e.title,n=e.imgSrc,r=e.productInfoStyle,i=void 0===r?{}:r,o=e.totalCount,a=e.hasMultiSku,c=e.notSellingMaskLabelText,l=void 0===c?"暫停販售":c,s=e.selectedSkuValueString,u=i.mainInfoStyle,g=i.containerStyle,d=i.titleStyle;return v.createElement(U,{containerStyle:g,height:"unset"},v.createElement(W,null,v.createElement(_,null,v.createElement(O,{browsingMode:X.BROWSING_MODE.MOBILE,src:n,alt:"img"})),v.createElement($,null,v.createElement(ee,null,l))),v.createElement(R,{mainInfoStyle:u,browsingMode:X.BROWSING_MODE.MOBILE},v.createElement(w,{titleStyle:d},t),v.createElement(M,null,a?v.createElement(z,{"aria-disabled":!0,disabled:!0},v.createElement(j,null,s),v.createElement("i",{className:"ico ico-chevron-down"})):v.createElement(K,null,s),v.createElement(q,null,"x",o))))}},8181:function(e,t,n){"use strict";var r=this&&this.__makeTemplateObject||function(e,t){return Object.defineProperty?Object.defineProperty(e,"raw",{value:t}):e.raw=t,e};Object.defineProperty(t,"__esModule",{value:!0}),t.PointPlusPrice=t.MainInfoPrice=void 0;var i,o,a,c=n(5927),l=n(2568),s=n(5493),u=l.default.div(i||(i=r(["\n    font-size: inherit;\n    line-height: 1.5;\n    color: inherit;\n"],["\n    font-size: inherit;\n    line-height: 1.5;\n    color: inherit;\n"]))),g=l.default.span(o||(o=r(["\n    display: flex;\n    flex-wrap: wrap;\n"],["\n    display: flex;\n    flex-wrap: wrap;\n"])));t.MainInfoPrice=l.default.div(a||(a=r(["\n    font-size: 1rem;\n    line-height: 1.5;\n    color: #ff5353;\n    ","\n"],["\n    font-size: 1rem;\n    line-height: 1.5;\n    color: #ff5353;\n    ","\n"])),(function(e){return e.priceStyle||null})),t.PointPlusPrice=function(e){var n=e.selectedPurchaseMethod,r=e.decimal,i=e.symbol,o=e.rate,a=e.pointText,l=void 0===a?"點":a,d=e.price,I=void 0===d?0:d,p=e.salePageInfo,b=void 0===p?null:p,m=e.isShowRangePrice,C=void 0!==m&&m,h=e.priceStyle,B=n.PairsPoints,A=n.PairsPrice,y=I||A,f=b||{maxPrice:0,minPrice:0},G=f.maxPrice,Q=f.minPrice;return c.createElement(u,null,0===B&&A>0&&c.createElement(c.Fragment,null,C?c.createElement(t.MainInfoPrice,{priceStyle:h},c.createElement(s.default,{value:Q,decimal:r,symbol:i,rate:o}),c.createElement("span",null,"~",c.createElement(s.default,{value:G,decimal:r,symbol:i,rate:o}))):c.createElement(s.default,{value:y,decimal:r,symbol:i,rate:o,disableTheme:!0})),0===A&&B>0&&c.createElement("div",null,B,l),B>0&&A>0&&c.createElement(g,null,c.createElement("span",null,B,l),c.createElement("span",null,"＋"),c.createElement(s.default,{value:A,decimal:r,symbol:i,rate:o,disableTheme:!0})))}},5828:function(e,t,n){"use strict";var r=this&&this.__makeTemplateObject||function(e,t){return Object.defineProperty?Object.defineProperty(e,"raw",{value:t}):e.raw=t,e};Object.defineProperty(t,"__esModule",{value:!0}),t.PurchaseMethod=t.PointpayOption=void 0;var i=n(5927),o=n(2568),a=n(8181),c=o.default.div(d||(d=r(["\n    padding-bottom: 16px;\n"],["\n    padding-bottom: 16px;\n"]))),l=o.default.h6(I||(I=r(["\n    color: #4a4e5c;\n    font-size: 0.8rem;\n    line-height: 1.5;\n    ","\n"],["\n    color: #4a4e5c;\n    font-size: 0.8rem;\n    line-height: 1.5;\n    ","\n"])),(function(e){return e.titleStyle||null})),s=o.default.div(p||(p=r(["\n    padding: 0 2px;\n"],["\n    padding: 0 2px;\n"]))),u=o.default.div(b||(b=r(["\n    color: #aaa;\n    font-size: 0.8rem;\n    line-height: 1.5;\n    padding-top: 5px;\n    ","\n"],["\n    color: #aaa;\n    font-size: 0.8rem;\n    line-height: 1.5;\n    padding-top: 5px;\n    ","\n"])),(function(e){return e.subTitleStyle||null})),g=o.default.span(m||(m=r(["\n    vertical-align: text-bottom;\n    display: inline-block;\n    padding-left: 5px;\n"],["\n    vertical-align: text-bottom;\n    display: inline-block;\n    padding-left: 5px;\n"])));t.PointpayOption=o.default.button(B||(B=r(["\n    -webkit-tap-highlight-color: rgba(0, 0, 0, 0);\n    background-color: white;\n    border-radius: 3px;\n    box-shadow: 0 0 0 1px #ddd;\n    box-sizing: border-box;\n    color: #666;\n    cursor: pointer;\n    display: inline-block;\n    font-size: 0.8rem;\n    line-height: 1.2;\n    margin: 8px 8px 0 0;\n    min-width: 46px;\n    padding: 10px 12px;\n    text-align: center;\n\n    ","\n"],["\n    -webkit-tap-highlight-color: rgba(0, 0, 0, 0);\n    background-color: white;\n    border-radius: 3px;\n    box-shadow: 0 0 0 1px #ddd;\n    box-sizing: border-box;\n    color: #666;\n    cursor: pointer;\n    display: inline-block;\n    font-size: 0.8rem;\n    line-height: 1.2;\n    margin: 8px 8px 0 0;\n    min-width: 46px;\n    padding: 10px 12px;\n    text-align: center;\n\n    ","\n"])),(function(e){var t=e.actived,n=e.customStyle,i=e.activeStyle;return t?function(e){return e||o.css(C||(C=r(["\n        background-color: white;\n        box-shadow: 0 0 0 1px #ff5353;\n        color: #ff5353;\n    "],["\n        background-color: white;\n        box-shadow: 0 0 0 1px #ff5353;\n        color: #ff5353;\n    "])))}(i):n||o.css(h||(h=r(["\n            &:hover {\n                background-color: white;\n                box-shadow: 0 0 0 2px #ff5353;\n                color: #ff5353;\n            }\n        "],["\n            &:hover {\n                background-color: white;\n                box-shadow: 0 0 0 2px #ff5353;\n                color: #ff5353;\n            }\n        "])))}));var d,I,p,b,m,C,h,B,A,y=o.default.i(A||(A=r(["\n    :before {\n        line-height: 15.4px;\n    }\n"],["\n    :before {\n        line-height: 15.4px;\n    }\n"])));t.PurchaseMethod=function(e){var n=e.purchaseMethodList,r=e.selectedPurchaseMethod,o=e.onSelectPurchaseMethod,d=e.decimal,I=e.symbol,p=e.rate,b=e.purchaseMethodStyle,m=void 0===b?{}:b,C=e.title,h=e.subTitle,B=e.pointText,A=m.customStyle,f=m.activeStyle,G=m.subTitleStyle,Q=m.titleStyle;return i.createElement(c,null,n&&C&&i.createElement(l,{titleStyle:Q},C),n&&h&&i.createElement(u,{subTitleStyle:G},i.createElement(y,{className:"ico ico-alert"}),i.createElement(g,null,h)),i.createElement(s,null,n.map((function(e,n){return i.createElement(t.PointpayOption,{customStyle:A,activeStyle:f,key:n,onClick:function(){return o(e)},actived:e.PointsPayId===r.PointsPayId},i.createElement(a.PointPlusPrice,{selectedPurchaseMethod:e,decimal:d,symbol:I,rate:p,pointText:B}))}))))}},8491:function(e,t,n){"use strict";var r=this&&this.__makeTemplateObject||function(e,t){return Object.defineProperty?Object.defineProperty(e,"raw",{value:t}):e.raw=t,e};Object.defineProperty(t,"__esModule",{value:!0}),t.QtySelector=void 0;var i,o,a,c,l,s,u,g=n(5927),d=n(2568),I=n(3771),p=n(2330),b=function(e){return e||d.css(i||(i=r(["\n        color: #aaa;\n        &:hover {\n            cursor: not-allowed !important;\n        }\n    "],["\n        color: #aaa;\n        &:hover {\n            cursor: not-allowed !important;\n        }\n    "])))},m=d.css(o||(o=r(["\n    cursor: pointer;\n    -webkit-tap-highlight-color: rgba(255, 255, 255, 0);\n    color: #aaa;\n"],["\n    cursor: pointer;\n    -webkit-tap-highlight-color: rgba(255, 255, 255, 0);\n    color: #aaa;\n"]))),C=d.default.div(a||(a=r(["\n    display: flex;\n    text-align: center;\n    ","\n"],["\n    display: flex;\n    text-align: center;\n    ","\n"])),(function(e){return e.containerStyle||null})),h=d.default.button(c||(c=r(["\n    ","\n\n    ",";\n"],["\n    ","\n\n    ",";\n"])),m,(function(e){var t=e.disabled,n=e.plusButtonStyle,r=e.disabledButtonStyle;return t?b(r):n||void 0})),B=d.default.button(l||(l=r(["\n    ","\n    ",";\n"],["\n    ","\n    ",";\n"])),m,(function(e){var t=e.disabled,n=e.minusButtonStyle,r=e.disabledButtonStyle;return t?b(r):n||void 0})),A=d.default.div(s||(s=r(["\n    min-width: 100px;\n    display: flex;\n    align-items: center;\n    ","\n"],["\n    min-width: 100px;\n    display: flex;\n    align-items: center;\n    ","\n"])),(function(e){return e.inputBoxStyle||null})),y=d.default.input(u||(u=r(["\n    ::-webkit-outer-spin-button {\n        -webkit-appearance: none;\n        -moz-appearance: none;\n        appearance: none;\n        margin: 0;\n    }\n    ::-webkit-inner-spin-button {\n        -webkit-appearance: none;\n        -moz-appearance: none;\n        appearance: none;\n        margin: 0;\n    }\n    font-size: 1rem;\n    width: 100%;\n    text-align: center;\n    :focus {\n        outline: none;\n    }\n    ","\n"],["\n    ::-webkit-outer-spin-button {\n        -webkit-appearance: none;\n        -moz-appearance: none;\n        appearance: none;\n        margin: 0;\n    }\n    ::-webkit-inner-spin-button {\n        -webkit-appearance: none;\n        -moz-appearance: none;\n        appearance: none;\n        margin: 0;\n    }\n    font-size: 1rem;\n    width: 100%;\n    text-align: center;\n    :focus {\n        outline: none;\n    }\n    ","\n"])),(function(e){return e.inputStyle||null}));t.QtySelector=function(e){var t=e.currentValue,n=e.maxValue,r=e.minValue,i=e.onIncreaseValue,o=e.onDecreaseValue,a=e.onChangeValue,c=e.qtySelectorStyle,l=void 0===c?{}:c,s=e.disabledButton,u=void 0!==s&&s,d=I.getBrowsingMode()===p.BROWSING_MODE.DESKTOP?"number":"tel",b=l.plusButtonStyle,m=l.minusButtonStyle,f=l.disabledButtonStyle,G=l.containerStyle,Q=l.inputStyle,F=l.inputBoxStyle;return g.createElement(C,{containerStyle:G},g.createElement(B,{disabled:t<=r||u,onClick:o,minusButtonStyle:m,disabledButtonStyle:f},g.createElement("i",{className:"ico ico-subtract"})),g.createElement(A,{inputBoxStyle:F},g.createElement(y,{readOnly:!0,type:d,name:"qtyInput",pattern:"[0-9]*",min:r,max:n,value:t,onChange:a,inputStyle:Q})),g.createElement(h,{disabled:!n||t>=n||u,onClick:i,plusButtonStyle:b,disabledButtonStyle:f},g.createElement("i",{className:"ico ico-add"})))}},7186:function(e,t,n){"use strict";var r=this&&this.__makeTemplateObject||function(e,t){return Object.defineProperty?Object.defineProperty(e,"raw",{value:t}):e.raw=t,e};Object.defineProperty(t,"__esModule",{value:!0}),t.SkuElement=void 0;var i,o,a,c,l,s,u,g,d=n(5927),I=n(2568),p=I.default.div(c||(c=r(["\n    padding-bottom: 16px;\n"],["\n    padding-bottom: 16px;\n"]))),b=I.default.div(l||(l=r([""],[""]))),m=I.default.h6(s||(s=r(["\n    color: #4a4e5c;\n    font-size: 0.8rem;\n    line-height: 1.5;\n    ","\n"],["\n    color: #4a4e5c;\n    font-size: 0.8rem;\n    line-height: 1.5;\n    ","\n"])),(function(e){return e.titleStyle||null})),C=I.default.button(g||(g=r(["\n    display: ",";\n    -webkit-tap-highlight-color: rgba(0, 0, 0, 0);\n    background-color: white;\n    border-radius: 3px;\n    box-shadow: 0 0 0 1px #ddd;\n    box-sizing: border-box;\n    color: #666;\n    cursor: pointer;\n    font-size: 0.8rem;\n    line-height: 1.2;\n    margin: 8px 8px 0 0;\n    min-width: 46px;\n    padding: 10px 12px;\n    text-align: center;\n    ","\n"],["\n    display: ",";\n    -webkit-tap-highlight-color: rgba(0, 0, 0, 0);\n    background-color: white;\n    border-radius: 3px;\n    box-shadow: 0 0 0 1px #ddd;\n    box-sizing: border-box;\n    color: #666;\n    cursor: pointer;\n    font-size: 0.8rem;\n    line-height: 1.2;\n    margin: 8px 8px 0 0;\n    min-width: 46px;\n    padding: 10px 12px;\n    text-align: center;\n    ","\n"])),(function(e){return e.hidden?"none":"inline-block"}),(function(e){var t=e.disabled,n=e.actived,c=e.customStyle,l=e.activeStyle,s=e.disabledStyle,g=e.isEnableBackInStock;return t?function(e){return I.css(i||(i=r(["\n        background: #f0f0f0;\n        cursor: pointer;\n        position: relative;\n        text-decoration: line-through;\n        /* tooltip style */\n        &:before {\n            animation: fade-in 0.2s ease-out;\n            background-color: #666;\n            border-radius: 3px;\n            box-sizing: border-box;\n            color: #fff;\n            content: attr(data-tooltip-content);\n            font-size: 0.8rem;\n            left: 50%;\n            min-width: 70px;\n            padding: 4px;\n            position: absolute;\n            text-align: center;\n            top: 100%;\n            transform: translateX(-50%);\n            visibility: hidden;\n            z-index: 1;\n            word-break: keep-all;\n        }\n        /* tooltip 小箭頭 */\n        &:after {\n            border-color: transparent transparent #666666 transparent;\n            border-style: solid;\n            border-width: 6px;\n            content: '';\n            height: 0;\n            left: 50%;\n            position: absolute;\n            top: calc(100% - 11px);\n            transform: translateX(-50%);\n            visibility: hidden;\n            width: 0;\n        }\n        &:hover {\n            &:before,\n            &:after {\n                visibility: visible;\n            }\n        }\n        ","\n    "],["\n        background: #f0f0f0;\n        cursor: pointer;\n        position: relative;\n        text-decoration: line-through;\n        /* tooltip style */\n        &:before {\n            animation: fade-in 0.2s ease-out;\n            background-color: #666;\n            border-radius: 3px;\n            box-sizing: border-box;\n            color: #fff;\n            content: attr(data-tooltip-content);\n            font-size: 0.8rem;\n            left: 50%;\n            min-width: 70px;\n            padding: 4px;\n            position: absolute;\n            text-align: center;\n            top: 100%;\n            transform: translateX(-50%);\n            visibility: hidden;\n            z-index: 1;\n            word-break: keep-all;\n        }\n        /* tooltip 小箭頭 */\n        &:after {\n            border-color: transparent transparent #666666 transparent;\n            border-style: solid;\n            border-width: 6px;\n            content: '';\n            height: 0;\n            left: 50%;\n            position: absolute;\n            top: calc(100% - 11px);\n            transform: translateX(-50%);\n            visibility: hidden;\n            width: 0;\n        }\n        &:hover {\n            &:before,\n            &:after {\n                visibility: visible;\n            }\n        }\n        ","\n    "])),e||null)}(s):n?function(e){var t=e.activeStyle,n=e.isEnableBackInStock;return I.css(a||(a=r(["\n        box-shadow: 0 0 0 1px #ff5353;\n        color: #ff5353;\n        ","\n        ","\n    "],["\n        box-shadow: 0 0 0 1px #ff5353;\n        color: #ff5353;\n        ","\n        ","\n    "])),t||null,n?"text-decoration: line-through;":null)}({activeStyle:l,isEnableBackInStock:g}):g?function(e){return I.css(o||(o=r(["\n        ","\n        text-decoration: line-through;\n        color: #999999;\n    "],["\n        ","\n        text-decoration: line-through;\n        color: #999999;\n    "])),e||null)}(c):c?c||null:I.css(u||(u=r(["\n            &:hover {\n                box-shadow: 0 0 0 2px #ff5353;\n                color: #ff5353;\n            }\n        "],["\n            &:hover {\n                box-shadow: 0 0 0 2px #ff5353;\n                color: #ff5353;\n            }\n        "])))}));t.SkuElement=function(e){var t=e.level,n=e.optionName,r=e.optionList,i=e.isSkuStockUpdated,o=e.selectedKey,a=e.onSelectOption,c=e.customStyle,l=e.activeStyle,s=e.disabledStyle,u=e.titleStyle,g=e.skuSoldOutText,I=void 0===g?"缺貨中":g,h=e.skuUpdatedText,B=void 0===h?"更新中\b":h,A=e.isEnableBackInStock;return d.createElement(p,null,r&&r.length>0&&d.createElement(b,null,d.createElement(m,{titleStyle:u},n),r.map((function(e,n){return d.createElement(C,{key:n,"data-tooltip-content":i?I:B,actived:e.isSelling&&e.skuKey===o||!e.isSelling&&A&&e.skuKey===o,hidden:!e.isShow,disabled:!e.isSelling&&!A,isEnableBackInStock:!e.isSelling&&A,customStyle:c,activeStyle:l,disabledStyle:s,"data-sku-key":e.skuKey,"data-sku-name":e.skuName,"data-is-selling":e.isSelling,"data-selected-sku-level":t,onClick:a},e.skuName)}))))}},2988:function(e,t,n){"use strict";var r=this&&this.__assign||function(){return r=Object.assign||function(e){for(var t,n=1,r=arguments.length;n<r;n++)for(var i in t=arguments[n])Object.prototype.hasOwnProperty.call(t,i)&&(e[i]=t[i]);return e},r.apply(this,arguments)};Object.defineProperty(t,"__esModule",{value:!0}),t.SkuList=void 0;var i=n(5927),o=n(5927),a=n(7450),c=n(7186),l=function(e,t){var n=t.split(";"),r=t;""===n[1]&&(r=n[0]);var i=a.find(e,(function(e){return e.skuKey===r}));return(null==i?void 0:i.skuId)||0},s=function(e,t,n,i,o,c){var l;return 1===n?l=t.skuKeyList.map((function(t){var n=a.find(e,(function(e){return e.skuKey===t.skuKey}));return r({isShow:(null==n?void 0:n.isShow)||!1,isSelling:(null==n?void 0:n.sellingQty)&&(null==n?void 0:n.sellingQty)>0||!1},t)})):2===n&&(l=t.skuKeyList.map((function(t){var n=!1,l=!1;if(1===i&&""!==c)l=(s=a.find(e,(function(e){return t.skuKey+";"+c===e.skuKey})))&&s.sellingQty>0||!1,n=(null==s?void 0:s.isShow)||!1;else if(2===i&&""!==o){var s;l=(s=a.find(e,(function(e){return o+";"+t.skuKey===e.skuKey})))&&s.sellingQty>0||!1,n=(null==s?void 0:s.isShow)||!1}else if(""===o||""===c){var u=a.filter(e,(function(e){return function(e,t,n){return 2===e?n.split(";")[1]===t:n.split(";")[0]===t}(i,t.skuKey,e.skuKey)}));if(0===u.length)l=!1,n=!1;else{var g=a.find(u,(function(e){return e.sellingQty>0})),d=a.find(u,(function(e){return!0===e.isShow}));l=g&&g.sellingQty>0||!1,n=(null==d?void 0:d.isShow)||!1}}return r({isShow:n,isSelling:l},t)}))),l},u=function(e){for(var t="",n=0;n<e.length;n++)if(e[n].isSelling){t=e[n].skuKey;break}return t};t.SkuList=function(e){var t,n,r=e.skuInfoList,a=e.skuGroup,g=e.maxSkuLevel,d=e.updateSelectedSkuId,I=e.skuListStyle,p=void 0===I?{}:I,b=e.initSkuKey,m=e.skuSoldOutText,C=e.skuUpdatedText,h=e.isEnableBackInStock,B=o.useState(""),A=B[0],y=B[1],f=o.useState(""),G=f[0],Q=f[1],F=o.useState(!0),v=F[0],Z=F[1],E=p.customStyle,S=p.activeStyle,X=p.disabledStyle,T=p.titleStyle,x=a.skuGroupLevel1?s(r,a.skuGroupLevel1,g,1,A,G):null,U=a.skuGroupLevel2?s(r,a.skuGroupLevel2,g,2,A,G):null;o.useEffect((function(){if(b){var e=b.split(";");return y(e[0]),void Q(e[1]||"")}1!==(null==x?void 0:x.length)||U||(e=x[0].skuKey.split(";"),y(e[0]),Q(""))}),[b]),o.useEffect((function(){var e=0,t="",n="";v||(1===g?e=l(r,A):(""===G&&U?(n=u(U),t=A+";"+n,Q(n)):""===A&&x?(t=(n=u(x))+";"+G,y(n)):t=A+";"+G,e=l(r,t)),Z(!0),d&&d(e,t||A))}),[v,g,x,U,A,G,r,d]);var N=function(e){e.preventDefault(),e.stopPropagation();var t=e.currentTarget,n=t.getAttribute("data-sku-key")||"",r=JSON.parse(t.getAttribute("data-is-selling")||""),i=parseInt(t.getAttribute("data-selected-sku-level")||"",10);(r||h)&&A!==n&&G!==n&&(1===g?y(n):(1===i&&y(n),2===i&&Q(n)),Z(!1))};return i.createElement(o.Fragment,null,x&&i.createElement(c.SkuElement,{level:1,isSkuStockUpdated:v,optionName:null===(t=a.skuGroupLevel1)||void 0===t?void 0:t.skuGroupName,optionList:x,selectedKey:A,onSelectOption:N,customStyle:E,activeStyle:S,disabledStyle:X,titleStyle:T,skuSoldOutText:m,skuUpdatedText:C,isEnableBackInStock:h}),U&&i.createElement(c.SkuElement,{level:2,isSkuStockUpdated:v,optionName:null===(n=a.skuGroupLevel2)||void 0===n?void 0:n.skuGroupName,optionList:U,selectedKey:G,onSelectOption:N,customStyle:E,activeStyle:S,disabledStyle:X,titleStyle:T,skuSoldOutText:m,skuUpdatedText:C,isEnableBackInStock:h}))}},5601:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.PurchaseMethod=t.QtySelector=t.SkuList=t.ProductInfoClosed=t.ProductInfoSoldout=t.ProductInfoWithSkuSelectAndCounter=t.SimpleProductInfo=t.ProductInfo=t.CartButton=void 0;var r=n(6115);Object.defineProperty(t,"CartButton",{enumerable:!0,get:function(){return r.CartButton}});var i=n(882);Object.defineProperty(t,"ProductInfo",{enumerable:!0,get:function(){return i.ProductInfo}}),Object.defineProperty(t,"SimpleProductInfo",{enumerable:!0,get:function(){return i.SimpleProductInfo}}),Object.defineProperty(t,"ProductInfoWithSkuSelectAndCounter",{enumerable:!0,get:function(){return i.ProductInfoWithSkuSelectAndCounter}}),Object.defineProperty(t,"ProductInfoSoldout",{enumerable:!0,get:function(){return i.ProductInfoSoldout}}),Object.defineProperty(t,"ProductInfoClosed",{enumerable:!0,get:function(){return i.ProductInfoClosed}});var o=n(2988);Object.defineProperty(t,"SkuList",{enumerable:!0,get:function(){return o.SkuList}});var a=n(8491);Object.defineProperty(t,"QtySelector",{enumerable:!0,get:function(){return a.QtySelector}});var c=n(5828);Object.defineProperty(t,"PurchaseMethod",{enumerable:!0,get:function(){return c.PurchaseMethod}})},2330:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.BROWSING_MODE=void 0,t.BROWSING_MODE={DESKTOP:"desktop",MOBILE:"mobile"}},6395:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.SALE_STATUS=void 0,function(e){e.NotFound="NotFound",e.IsClosed="IsClosed",e.UnListing="UnListing",e.NoStart="NoStart",e.SoldOut="SoldOut",e.NotStartSell="NotStartSell"}(t.SALE_STATUS||(t.SALE_STATUS={}))},2680:(e,t,n)=>{"use strict";t.nW=void 0;n(5601);var r=n(8196);Object.defineProperty(t,"nW",{enumerable:!0,get:function(){return r.ProductToCart}})},1241:function(e,t,n){"use strict";var r=this&&this.__makeTemplateObject||function(e,t){return Object.defineProperty?Object.defineProperty(e,"raw",{value:t}):e.raw=t,e};Object.defineProperty(t,"__esModule",{value:!0}),t.SpecChartButton=t.Qty=t.Bottom=t.BottomContainer=t.SubSalePagesBlockTitle=t.SubSalePagesContent=t.SalePageBundleP2Content=t.Content=t.SalePageBundleInfoTop=t.Top=t.CarouselSlideScrollableArea=t.CarouselSlide=t.CarouselViewport=t.CarouselContainer=t.ProductToCartContainer=void 0;var i,o,a,c,l,s,u,g,d,I,p,b,m,C,h,B=n(2568),A=n(3950);t.ProductToCartContainer=B.default.div(i||(i=r(["\n    position: relative;\n    width: 100%;\n    background-color: inherit;\n    display: flex;\n    flex-direction: column;\n    max-height: inherit;\n    align-self: flex-start;\n"],["\n    position: relative;\n    width: 100%;\n    background-color: inherit;\n    display: flex;\n    flex-direction: column;\n    max-height: inherit;\n    align-self: flex-start;\n"]))),t.CarouselContainer=B.default.div(o||(o=r(["\n    overflow: hidden;\n    height: inherit;\n"],["\n    overflow: hidden;\n    height: inherit;\n"]))),t.CarouselViewport=B.default.div(a||(a=r(["\n    display: flex;\n    & > * {\n        min-width: 100%;\n    }\n    transition: transform 0.5s;\n    transform: translateX(",");\n    height: inherit;\n"],["\n    display: flex;\n    & > * {\n        min-width: 100%;\n    }\n    transition: transform 0.5s;\n    transform: translateX(",");\n    height: inherit;\n"])),(function(e){return"-"+100*e.curStep+"%"})),t.CarouselSlide=B.default(t.ProductToCartContainer)(c||(c=r(["\n    height: inherit;\n"],["\n    height: inherit;\n"]))),t.CarouselSlideScrollableArea=B.default.div(l||(l=r(["\n    flex-grow: 1;\n    min-height: 1px;\n    overflow-y: auto;\n"],["\n    flex-grow: 1;\n    min-height: 1px;\n    overflow-y: auto;\n"]))),t.Top=B.default.div(s||(s=r(["\n    padding: 16px;\n    border-bottom: 1px solid #dddddd;\n    flex: 1;\n    ","\n"],["\n    padding: 16px;\n    border-bottom: 1px solid #dddddd;\n    flex: 1;\n    ","\n"])),(function(e){return e.topStyle||null})),t.SalePageBundleInfoTop=B.default(t.Top)(u||(u=r(["\n    flex: unset;\n"],["\n    flex: unset;\n"]))),t.Content=B.default.div(g||(g=r(["\n    overflow-y: auto;\n    overflow-x: hidden;\n    padding: 0 16px;\n    ","\n"],["\n    overflow-y: auto;\n    overflow-x: hidden;\n    padding: 0 16px;\n    ","\n"])),(function(e){return e.contentStyle||null})),t.SalePageBundleP2Content=B.default(t.Content)(d||(d=r(["\n    overflow-y: unset;\n    overflow-x: unset;\n"],["\n    overflow-y: unset;\n    overflow-x: unset;\n"]))),t.SubSalePagesContent=B.default(t.Content)(I||(I=r(["\n    padding: unset;\n    margin: 0 16px;\n    padding-top: 16px;\n    padding-bottom: 16px;\n    border-top: 1px solid #dee2e6;\n    display: flex;\n    flex-direction: column;\n    gap: ","px;\n    flex-grow: 1;\n"],["\n    padding: unset;\n    margin: 0 16px;\n    padding-top: 16px;\n    padding-bottom: 16px;\n    border-top: 1px solid #dee2e6;\n    display: flex;\n    flex-direction: column;\n    gap: ","px;\n    flex-grow: 1;\n"])),(function(e){return e.browsingMode===A.BROWSING_MODE.DESKTOP?"16":"12"})),t.SubSalePagesBlockTitle=B.default.div(p||(p=r(["\n    font-size: 14px;\n    font-weight: 500;\n    line-height: 150%;\n"],["\n    font-size: 14px;\n    font-weight: 500;\n    line-height: 150%;\n"]))),t.BottomContainer=B.default.div(b||(b=r(["\n    width: 100%;\n"],["\n    width: 100%;\n"]))),t.Bottom=B.default.div(m||(m=r(["\n    display: flex;\n    align-items: center;\n    justify-content: space-between;\n    padding: 16px;\n    box-shadow: 0 0 6px 0 rgba(102, 102, 102, 0.25);\n    ","\n"],["\n    display: flex;\n    align-items: center;\n    justify-content: space-between;\n    padding: 16px;\n    box-shadow: 0 0 6px 0 rgba(102, 102, 102, 0.25);\n    ","\n"])),(function(e){return e.bottomStyle||null})),t.Qty=B.default.div(C||(C=r(["\n    display: flex;\n    align-items: center;\n    ","\n"],["\n    display: flex;\n    align-items: center;\n    ","\n"])),(function(e){return e.qtySelectorSectionStyle||null})),t.SpecChartButton=B.default.button(h||(h=r(["\n    display: flex;\n    align-items: center;\n    margin-left: auto;\n    color: #667079;\n    font-size: 0.8rem;\n    background-color: inherit;\n    cursor: pointer;\n\n    & > i {\n        color: #333333;\n    }\n"],["\n    display: flex;\n    align-items: center;\n    margin-left: auto;\n    color: #667079;\n    font-size: 0.8rem;\n    background-color: inherit;\n    cursor: pointer;\n\n    & > i {\n        color: #333333;\n    }\n"])))},3950:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.BROWSING_MODE=t.ServiceType=t.SalePageTypeEnum=void 0,function(e){e.Normal="Normal",e.Bundle="Bundle"}(t.SalePageTypeEnum||(t.SalePageTypeEnum={})),function(e){e.BACK_STAGE="BACK_STAGE",e.FRONT_STAGE="FRONT_STAGE"}(t.ServiceType||(t.ServiceType={})),function(e){e.DESKTOP="desktop",e.MOBILE="mobile"}(t.BROWSING_MODE||(t.BROWSING_MODE={}))},4736:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.safeArray=void 0,t.safeArray=function(e){return Array.isArray(e)?e:[]}},3771:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.isMobile=t.getBrowsingMode=void 0;var r=n(2330);t.getBrowsingMode=function(){return"DeskTop"===(document.cookie.match("(^|; )BrowsingMode=([^;]*)")||[])[2]?r.BROWSING_MODE.DESKTOP:/android|webOS|iPhone|iPod|iOS|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent)||/(tablet|ipad|playbook|silk)|(android(?!.*mobile))/i.test(navigator.userAgent)?r.BROWSING_MODE.MOBILE:r.BROWSING_MODE.DESKTOP},t.isMobile=function(){return t.getBrowsingMode()===r.BROWSING_MODE.MOBILE}},1815:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.getSkuInfoList=t.getSalePageInfo=void 0;var r=n(7450);t.getSalePageInfo=function(e,t){var n,i=e.MajorList[0].SKUList,o=(n=i&&i.length>0?1===i.length?"-1"===i[0].Title?0:1:2:0)>0?r.map(i[0].PropertyList,(function(e){return{skuName:e.Name,skuKey:e.PropertyNameSet}})):[],a=2===n?r.map(i[1].PropertyList,(function(e){return{skuName:e.Name,skuKey:e.PropertyNameSet}})):[],c={skuGroupName:i.length>0?i[0].Title:"-1",skuKeyList:o},l=2===n?{skuGroupName:i[1].Title,skuKeyList:a}:null,s=r.map(e.ImageList,(function(e){return{skuId:e.Id,skuName:e.SKUPropertyNameSet,imageSrc:e.PicUrl}})),u=e.SKUPropertySetList.reduce((function(e,t){return t.SaleProductSKUId&&t.IsShow&&e.push(t.SaleProductSKUId),e}),[]),g=r.maxBy(t,"Price"),d=r.maxBy(t,"SuggestPrice"),I=r.minBy(t,"Price"),p=r.minBy(t,"SuggestPrice"),b=(null==g?void 0:g.Price)||e.MaxPrice,m=(null==d?void 0:d.SuggestPrice)||e.MaxSuggestPrice,C=(null==I?void 0:I.Price)||e.MinPrice,h=(null==p?void 0:p.SuggestPrice)||e.MinSuggestPrice;return{maxSkuLevel:n,skuGroupLevel1:c,skuGroupLevel2:l,id:e.Id,status:e.StatusDef,mainImageUrl:s,price:e.Price,title:e.Title,skuIdList:u,suggestPrice:e.SuggestPrice,maxPrice:b,maxSuggestPrice:m,minPrice:C,minSuggestPrice:h,hasPointPayOption:e.PointsPayPairsList&&e.PointsPayPairsList.length>0,pointsPayPairsList:e.PointsPayPairsList||[]}},t.getSkuInfoList=function(e,t){var n=r.map(e.SKUPropertySetList,(function(e){return{isShow:e.IsShow,skuKey:e.PropertyNameSet,skuId:e.SaleProductSKUId,sellingQty:e.SellingQty,price:e.Price,suggestPrice:e.SuggestPrice}}));return t?function(e,t){var n=r.keyBy(t,"SaleProductSKUId");return r.each(e,(function(e){var t;e.sellingQty=null===(t=n[e.skuId])||void 0===t?void 0:t.SellingQty})),e}(n,t):n}},4244:(e,t)=>{"use strict";t.A={generalStyle:{linkColor:"#428bca",moneyColor:"#ff5353",discountMoneyColor:"#ff5353"},buttonStyle:{primaryBtnBgColor:"#ff5353",primaryBtnTextColor:"#ffffff",secondBtnVariant:"outline",secondBtnBgColor:"#ffffff",secondBtnTextColor:"#ff5353",secondBtnBorderColor:"#ff5353",primaryHeartBtnBgColor:"#ff5353",secondHeartBtnBgColor:"#333333"},tagStyle:{generalTagBgColor:"#fff2f2",generalTagTextColor:"#ff5353",emphasisTagBgColor:"#ff5353",emphasisTagTextColor:"#ffffff",keyWordTagTextColor:"#666666"}}},6449:function(e){var t;t=this,e.exports?e.exports={allCurrencies:[{code:"TWD",symbol:"NT$",decimalDigits:0,decimalSeparator:".",groupSeparator:",",display:"新台幣"},{code:"USD",symbol:"US$",decimalDigits:2,decimalSeparator:".",groupSeparator:",",display:"US dollar"},{code:"HKD",symbol:"HK$",decimalDigits:2,decimalSeparator:".",groupSeparator:",",display:"港幣"},{code:"MOP",symbol:"MOP",decimalDigits:2,decimalSeparator:".",groupSeparator:",",display:"Pataca"},{code:"CNY",symbol:"¥",decimalDigits:2,decimalSeparator:".",groupSeparator:",",display:"人民币"},{code:"MYR",symbol:"RM",decimalDigits:2,decimalSeparator:".",groupSeparator:",",display:"Ringgit Malaysia"},{code:"SGD",symbol:"S$",decimalDigits:2,decimalSeparator:".",groupSeparator:",",display:"Singapore dollar"},{code:"THB",symbol:"฿",decimalDigits:0,decimalSeparator:".",groupSeparator:",",display:"บาท"},{code:"VND",symbol:"₫",decimalDigits:2,decimalSeparator:".",groupSeparator:",",display:"Đồng"},{code:"PHP",symbol:"₱",decimalDigits:2,decimalSeparator:".",groupSeparator:",",display:"Philippine peso"},{code:"KRW",symbol:"₩",decimalDigits:0,decimalSeparator:".",groupSeparator:",",display:"대한민국 원"},{code:"JPY",symbol:"¥",decimalDigits:0,decimalSeparator:".",groupSeparator:",",display:"日本円"},{code:"AUD",symbol:"$",decimalDigits:2,decimalSeparator:".",groupSeparator:",",display:"Australian dollar"},{code:"EUR",symbol:"€",decimalDigits:2,decimalSeparator:".",groupSeparator:",",display:"Euro"},{code:"GBP",symbol:"£",decimalDigits:2,decimalSeparator:".",groupSeparator:",",display:"Pound sterling"},{code:"CAD",symbol:"$",decimalDigits:2,decimalSeparator:".",groupSeparator:",",display:"Canadian dollar"},{code:"IDR",symbol:"Rp",decimalDigits:2,decimalSeparator:".",groupSeparator:",",display:"Rupiah"},{code:"NZD",symbol:"$",decimalDigits:2,decimalSeparator:".",groupSeparator:",",display:"New Zealand dollar"},{code:"SEK",symbol:"kr",decimalDigits:2,decimalSeparator:".",groupSeparator:",",display:"Svensk krona"}]}:(t.nineyi=t.nineyi||{},t.nineyi.i18n=t.nineyi.i18n||{},t.nineyi.i18n.allCurrencies=[{code:"TWD",symbol:"NT$",decimalDigits:0,decimalSeparator:".",groupSeparator:",",display:"新台幣"},{code:"USD",symbol:"US$",decimalDigits:2,decimalSeparator:".",groupSeparator:",",display:"US dollar"},{code:"HKD",symbol:"HK$",decimalDigits:2,decimalSeparator:".",groupSeparator:",",display:"港幣"},{code:"MOP",symbol:"MOP",decimalDigits:2,decimalSeparator:".",groupSeparator:",",display:"Pataca"},{code:"CNY",symbol:"¥",decimalDigits:2,decimalSeparator:".",groupSeparator:",",display:"人民币"},{code:"MYR",symbol:"RM",decimalDigits:2,decimalSeparator:".",groupSeparator:",",display:"Ringgit Malaysia"},{code:"SGD",symbol:"S$",decimalDigits:2,decimalSeparator:".",groupSeparator:",",display:"Singapore dollar"},{code:"THB",symbol:"฿",decimalDigits:0,decimalSeparator:".",groupSeparator:",",display:"บาท"},{code:"VND",symbol:"₫",decimalDigits:2,decimalSeparator:".",groupSeparator:",",display:"Đồng"},{code:"PHP",symbol:"₱",decimalDigits:2,decimalSeparator:".",groupSeparator:",",display:"Philippine peso"},{code:"KRW",symbol:"₩",decimalDigits:0,decimalSeparator:".",groupSeparator:",",display:"대한민국 원"},{code:"JPY",symbol:"¥",decimalDigits:0,decimalSeparator:".",groupSeparator:",",display:"日本円"},{code:"AUD",symbol:"$",decimalDigits:2,decimalSeparator:".",groupSeparator:",",display:"Australian dollar"},{code:"EUR",symbol:"€",decimalDigits:2,decimalSeparator:".",groupSeparator:",",display:"Euro"},{code:"GBP",symbol:"£",decimalDigits:2,decimalSeparator:".",groupSeparator:",",display:"Pound sterling"},{code:"CAD",symbol:"$",decimalDigits:2,decimalSeparator:".",groupSeparator:",",display:"Canadian dollar"},{code:"IDR",symbol:"Rp",decimalDigits:2,decimalSeparator:".",groupSeparator:",",display:"Rupiah"},{code:"NZD",symbol:"$",decimalDigits:2,decimalSeparator:".",groupSeparator:",",display:"New Zealand dollar"},{code:"SEK",symbol:"kr",decimalDigits:2,decimalSeparator:".",groupSeparator:",",display:"Svensk krona"}])},1470:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.checkIsSupportSessionStorage=t.checkIsSupportLocalStorage=void 0,t.checkIsSupportLocalStorage=function(){return"undefined"!=typeof localStorage},t.checkIsSupportSessionStorage=function(){return"undefined"!=typeof sessionStorage}},9818:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.getCookie=t.deleteCookie=t.addCookie=void 0;var r=n(2430);t.addCookie=function(e,t,n){if((0,r.checkIsClientRender)()){var i="";if(n){var o=new Date;o.setTime(o.getTime()+24*n*60*60*1e3),i="; expires=".concat(o.toUTCString())}document.cookie="".concat(e,"=").concat(t).concat(i,"; path=/")}},t.deleteCookie=function(e){if((0,r.checkIsClientRender)()){var t=new Date;document.cookie="".concat(e,"=;expires=").concat(t.toUTCString(),";path=/")}},t.getCookie=function(e){if(!(0,r.checkIsClientRender)())return"";var t=document.cookie.match(new RegExp("(^| )".concat(e,"=([^;]*)(;|$)")));return t?t[2]:""}},8856:function(e,t,n){"use strict";var r=this&&this.__createBinding||(Object.create?function(e,t,n,r){void 0===r&&(r=n);var i=Object.getOwnPropertyDescriptor(t,n);i&&!("get"in i?!t.__esModule:i.writable||i.configurable)||(i={enumerable:!0,get:function(){return t[n]}}),Object.defineProperty(e,r,i)}:function(e,t,n,r){void 0===r&&(r=n),e[r]=t[n]}),i=this&&this.__exportStar||function(e,t){for(var n in e)"default"===n||Object.prototype.hasOwnProperty.call(t,n)||r(t,e,n)};Object.defineProperty(t,"__esModule",{value:!0}),i(n(1470),t),i(n(9818),t),i(n(1950),t),i(n(8379),t),i(n(2430),t),i(n(31),t),i(n(4098),t),i(n(5334),t),i(n(907),t)},1950:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.checkIsMatchNumberKeyCodeAllowed=void 0,t.checkIsMatchNumberKeyCodeAllowed=function(e){return e>47&&e<58||e>95&&e<106||e>36&&e<41||8===e||46===e||102===e||190===e}},8379:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.merge=t.deepClone=t.checkIsArray=t.checkIsObject=void 0;var r=n(7450);t.checkIsObject=function(e){return e===Object(e)&&!Array.isArray(e)},t.checkIsArray=function(e){return Array.isArray(e)},t.deepClone=function(e){return JSON.parse(JSON.stringify(e))},t.merge=function(e,n,i){if(!e||!n)return e||n||{};var o=(0,t.deepClone)(e),a=(0,t.deepClone)(n);return i?(0,r.mergeWith)(o,a,i):(0,r.merge)(o,a)}},2430:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.checkIsServerRender=t.checkIsClientRender=void 0,t.checkIsClientRender=function(){return"undefined"!=typeof window},t.checkIsServerRender=function(){return"undefined"==typeof window}},31:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.removeQueryStringParam=t.appendQueryParam=t.getQueryString=void 0,t.getQueryString=function(e,t){try{var n=RegExp("[?&]".concat(e,"=([^&]*)")).exec(t||document.location.search);return n&&decodeURIComponent(decodeURIComponent(n[1].replace(/\+/g," ")))}catch(r){return null}},t.appendQueryParam=function(e,t,n,r){void 0===r&&(r=!1);var i="",o=e.length;e.indexOf("#")>0&&(o=e.indexOf("#"),i=e.substring(e.indexOf("#"),e.length));var a=e.substring(0,o).split("?"),c="";if(a.length>1)for(var l=a[1].split("&"),s=0;s<l.length;s++){var u=l[s].split("=");u[0]!==t&&(""===c?c="?":c+="&",c+="".concat(u[0],"=").concat(u[1]?u[1]:""))}return""===c&&(c="?"),r?c="?".concat(t,"=").concat(n+(c.length>1?"&".concat(c.substring(1)):"")):(""!==c&&"?"!==c&&(c+="&"),c+="".concat(t,"=").concat(n||"")),a[0]+c+i},t.removeQueryStringParam=function(e,t){var n=t.split("?")[0],r=[],i=t.includes("?")?t.split("?")[1]:"";if(""!==i){for(var o=(r=i.split("&")).length-1;o>=0;o-=1)r[o].split("=")[0]===e&&r.splice(o,1);n="".concat(n,"?").concat(r.join("&"))}return n}},4098:(e,t)=>{"use strict";var n,r;Object.defineProperty(t,"__esModule",{value:!0}),t.checkIsBot=t.getDeviceOS=t.checkIsIE=t.checkIsSafari=t.checkIsChrome=t.checkIsFirefox=t.DeviceOS=t.Browser=void 0,function(e){e.Chrome="Chrome",e.Firefox="Firefox",e.MSIE="MSIE",e.Safari="Safari",e.Trident="Trident"}(n=t.Browser||(t.Browser={})),function(e){e.Android="Android",e.Bot="Bot",e.UnKnown="UnKnown",e.iOS="iOS"}(r=t.DeviceOS||(t.DeviceOS={})),t.checkIsFirefox=function(e){return e.includes(n.Firefox)},t.checkIsChrome=function(e){return e.includes(n.Chrome)},t.checkIsSafari=function(e){return!e.includes(n.Chrome)&&e.includes(n.Safari)},t.checkIsIE=function(e){return e.indexOf(n.Trident)>0||e.indexOf(n.MSIE)>0},t.getDeviceOS=function(e){return/android/i.test(e)?r.Android:/(iPhone|iPad|iPod|iOS)/i.test(e)?r.iOS:/bot|spider|crawl/i.test(e)?r.Bot:r.UnKnown},t.checkIsBot=function(){return"undefined"!=typeof window&&window.navigator&&/bot|spider|crawl/i.test(navigator.userAgent)}},5334:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.checkIsEmail=void 0,t.checkIsEmail=function(e){return/(.+)@(.+)\.(.+)/.test(e)}},907:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.checkIsBooleanString=t.checkIsNumberString=t.checkIsString=t.checkIsUndefined=void 0,t.checkIsUndefined=function(e){return void 0===e},t.checkIsString=function(e){return"string"==typeof e},t.checkIsNumberString=function(e){return!!e&&(0,t.checkIsString)(e)&&!Number.isNaN(Number(e))},t.checkIsBooleanString=function(e){return"true"===e||"false"===e}},595:(e,t,n)=>{"use strict";var r;n.r(t),n.d(t,{filterSalePageSpecialPriceData:()=>d,getDisplayPrice:()=>u,getDisplaySuggestPrice:()=>g,getSalePagePriceRange:()=>m,getSalePageSpecialPriceTagData:()=>b,isShowComingSoon:()=>h,isShowSuggestPrice:()=>C,mappingSalePagePriceRangeData:()=>p,mappingSalePageSpecialPriceList:()=>I,mappingSpecialPriceData:()=>l,mappingSpecialPriceDataLabel:()=>s}),function(e){e.POINT_PAY="PointPay",e.PRICE="Price"}(r||(r={}));var i=["-1"],o=function(e){return"/Date(-62135596800000)/"===e?new Date(0):new Date(parseInt(e.replace("/Date(","").replace(")/",""),10))},a=function(e){return!!/^\/Date/.test(e)},c=function(e,t,n){var r=n.getTime(),i=a("".concat(e))?new Date(o("".concat(e))).getTime():new Date(e).getTime(),c=a("".concat(t))?new Date(o("".concat(t))).getTime():new Date(t).getTime();return i<r&&c>r},l=function(e,t,n){if(void 0===t&&(t=i),void 0===n&&(n=new Date),!e||0===e.length)return null;var r=e.filter((function(e){return c(e.StartDateTime,e.EndDateTime,n)&&t.includes(e.MemberCollectionId)}));if(r.length>0){var o=r.sort((function(e,t){return e.Price!==t.Price?e.Price-t.Price:t.PromotionEngineId-e.PromotionEngineId}))[0];return{price:o.Price,label:o.Label}}return null},s=function(e,t,n){return e&&e.price<=t&&n===r.PRICE?e.label:null},u=function(e,t){return t>0&&t<=e?t:e},g=function(e,t,n,r){return n>0&&n<=e&&r?e:t},d=function(e,t,n){return void 0===n&&(n=new Date),e.filter((function(e){return c(e.StartDateTime,e.EndDateTime,n)&&t.indexOf(e.MemberCollectionId)>=0}))},I=function(e){var t=[];return e.forEach((function(e){e.PriceList.forEach((function(n){var r=t.find((function(e){return e.SkuId===n.SkuId})),i=t.map((function(e){return e.SkuId})).indexOf(n.SkuId),o={PromotionEngineId:e.PromotionEngineId,MemberCollectionId:e.MemberCollectionId,StartDateTime:e.StartDateTime,EndDateTime:e.EndDateTime,SkuId:n.SkuId,Price:n.Price,Label:e.Label};r&&(o.Price<r.Price||o.Price===r.Price&&o.PromotionEngineId>r.PromotionEngineId)&&(t[i]=o),r||t.push(o)}))})),t.sort((function(e,t){return e.Price!==t.Price?e.Price-t.Price:t.PromotionEngineId-e.PromotionEngineId}))},p=function(e,t,n,r){return e.map((function(e){var i,o=t.find((function(t){return t.SkuId===e.SkuId}));if(o){var a=o.Price,c=(null===(i=r.find((function(e){return e.SkuId===o.SkuId})))||void 0===i?void 0:i.Price)||Number.MIN_VALUE;a<=c&&(n&&(e.SuggestPrice=c),e.Price=a)}return e}))},b=function(e,t,n,r){if(void 0===r&&(r=!1),!e)return null;var i=e.find((function(e){return e.SkuId===t}));return i&&i.Price<=(n||Number.MIN_VALUE)&&!r?i:null},m=function(e,t){return e&&e.length>0?(e.sort((function(e,n){return e[t]-n[t]})),{min:e[0][t],max:e[e.length-1][t]}):null},C=function(e,t,n,i){switch(e){case r.POINT_PAY:return n>i;case r.PRICE:return n>t;default:return!1}},h=function(e,t,n){var r=new Date;return!(!e||!t)&&t<=r&&r<e&&n}},2688:function(e,t,n){"use strict";var r=this&&this.__assign||function(){return r=Object.assign||function(e){for(var t,n=1,r=arguments.length;n<r;n++)for(var i in t=arguments[n])Object.prototype.hasOwnProperty.call(t,i)&&(e[i]=t[i]);return e},r.apply(this,arguments)},i=this&&this.__spreadArray||function(e,t,n){if(n||2===arguments.length)for(var r,i=0,o=t.length;i<o;i++)!r&&i in t||(r||(r=Array.prototype.slice.call(t,0,i)),r[i]=t[i]);return e.concat(r||Array.prototype.slice.call(t))},o=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});var a=o(n(9798)),c=new WeakMap,l=function(){function e(e,t,n){if(!(null==e?void 0:e.length)||!(null==t?void 0:t.length))throw new Error("請正確設定 projectId 與 serviceName 初始化 AgathaReporter");c.set(this,{bufferedLogs:[],clientInfo:null!=n?n:null,defaultCustomPayload:null,excludeLogMessages:[],projectId:e,serviceName:"".concat(t.toLowerCase(),"-service")}),this.agatha=null,this.catchException(),this.init()}return e.instance=function(t){return e._instance||(e._instance=new e(t.projectId,t.serviceName,t.clientInfo)),e._instance},e.prototype.catchException=function(){var e=this,t=window.onerror||null,n=window.onunhandledrejection||null;window.onerror=function(n,i,o,a,c){var l,s;if(c){var u=(null===(l=null==c?void 0:c.message)||void 0===l?void 0:l.length)?c.message:(null==n?void 0:n.toString())||null,g=(null===(s=null==c?void 0:c.stack)||void 0===s?void 0:s.length)?c.stack:null;(null==u?void 0:u.length)&&e.sendLogs([{severity:"ERROR",message:u,customPayload:r(r(r(r(r({},g?{stack:g}:{}),i?{source:i}:{}),o?{lineno:o}:{}),a?{colno:a}:{}),{logType:"exception"})}])}return t&&t.call(window,n,i,o,a,c),!0},window.onunhandledrejection=function(t){if(t){var r=null;t.reason&&("string"==typeof t.reason?r=t.reason:t.reason instanceof Error?r=t.reason.message:"object"==typeof t.reason&&(r=JSON.stringify(t.reason))),(null==r?void 0:r.length)&&e.sendLogs([{severity:"ERROR",message:r,customPayload:{logType:"exception"}}])}return n&&n.call(window,t),!0}},e.prototype.init=function(){var e=this,t=c.get(this);t&&(this.agatha=new a.default(r(r({projectId:t.projectId,logName:t.serviceName},t.clientInfo?{clientInfo:t.clientInfo}:{}),{onSuccess:function(){t.bufferedLogs.length&&e.setPrivateValue("bufferedLogs",[])},onError:function(e){console.error("Agatha send log failure: ".concat(e.errorMsg))}})),t.bufferedLogs.length&&this.sendLogs(t.bufferedLogs))},e.prototype.sendLogs=function(e){var t=this,n=c.get(this);if(n)if(this.agatha){var o=i(i([],n.bufferedLogs,!0),e,!0).filter((function(e){return t.isAllowSendLog(e.message)}));this.agatha.sendLogs(o.map((function(e){var n,i,o,a,c;return r(r({},e),{severity:null!==(n=e.severity)&&void 0!==n?n:"ERROR",customPayload:r(r(r({},t.defaultCustomPayload?r({},t.defaultCustomPayload):{}),e.customPayload?r({},e.customPayload):{}),{logType:null!==(o=null===(i=e.customPayload)||void 0===i?void 0:i.logType)&&void 0!==o?o:"javascript-".concat(e.severity.toLowerCase()),href:null!==(c=null===(a=e.customPayload)||void 0===a?void 0:a.href)&&void 0!==c?c:window.location.href})})})))}else this.setPrivateValue("bufferedLogs",i(i([],n.bufferedLogs,!0),e,!0))},e.prototype.isAllowSendLog=function(e){var t,n,r,i=c.get(this);return!(null===(t=null==i?void 0:i.excludeLogMessages)||void 0===t?void 0:t.length)||!(null===(r=null===(n=null==i?void 0:i.excludeLogMessages)||void 0===n?void 0:n.filter((function(t){return e.toLowerCase().includes(t.toLowerCase())})))||void 0===r?void 0:r.length)},e.prototype.setPrivateValue=function(e,t){var n=c.get(this);n&&(n[e]=t,c.set(this,n))},Object.defineProperty(e.prototype,"clientInfo",{set:function(e){var t;this.setPrivateValue("clientInfo",e),null===(t=this.agatha)||void 0===t||t.updateClientInfo(e)},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"excludeLogMessages",{get:function(){var e;return(null===(e=c.get(this))||void 0===e?void 0:e.excludeLogMessages)||[]},set:function(e){this.setPrivateValue("excludeLogMessages",e)},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"defaultCustomPayload",{get:function(){var e;return null===(e=c.get(this))||void 0===e?void 0:e.defaultCustomPayload},set:function(e){this.setPrivateValue("defaultCustomPayload",e)},enumerable:!1,configurable:!0}),e}();t.default=l},5102:function(e,t,n){"use strict";var r=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0}),t.AgathaReporter=t.registeErrorHandler=t.initalizeLogger=t.log=void 0;var i=r(n(3065)),o=n(9833);Object.defineProperty(t,"registeErrorHandler",{enumerable:!0,get:function(){return o.registeErrorHandler}});var a=r(n(2688));t.AgathaReporter=a.default;var c=i.default;t.log=c,t.initalizeLogger=function(e){c.setDefaultLevel(e)}},9833:function(e,t,n){"use strict";var r=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0}),t.registeErrorHandler=void 0;var i=r(n(8627));t.registeErrorHandler=function(e){var t=e.envName,n=void 0===t?"":t,r=e.stackDriverConfig,o=void 0===r?{name:"",version:""}:r,a=o.name,c=o.version;if(""===o.name)throw new Error("stackDriverConfig is invalid!!");var l=a.split(/[. ]+/).pop(),s=n,u=new i.default;return u.start({key:"AIzaSyDI_CdmrnZjKAg5bR4zpwJ2lvhtYG1XktY",projectId:"k8s-91app-dev",service:"".concat(l,"-service-").concat(s),version:c}),u}},8819:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.shopIntroduceCustomerService=t.shopIntroduceShoppingGuide=t.shopIntroducePageInfo=t.officialBrandStory=t.backInStockAlertList=t.traceSalePageList=t.vipMemberIndexPageInfo=t.unknownPageInfo=t.loginIndexPageInfo=t.appDownloadPage=t.payFinishPageInfo=t.payLandingPageInfo=t.payIndexPageInfo=t.shoppingCart=t.eCouponHowToUse=t.collectionDetail=t.collectionViewAll=t.tagCategory=t.loyaltyPointCenter=t.loyaltyPointECouponDetail=t.loyaltyPointECouponList=t.fsEvent=t.newestSalePage=t.storeSidebarCustomLink=t.infoModuleVideoDetail=t.infoModuleVideoList=t.infoModuleAlbumDetail=t.infoModuleAlbumList=t.infoModuleArticleDetail=t.infoModuleArticleList=t.infoModuleList=t.promotionEngine=t.custom=t.hidden=t.vipMemberProfile=t.search=t.hotSaleRanking=t.couponDetail=t.couponList=t.shopStoreDetail=t.shopStoreList=t.promotionDetail=t.promotionList=t.eCouponHistory=t.ecouponDetail=t.ecouponList=t.activityPageInfo=t.salePageInfo=t.shopCategoryPageInfo=t.indexPageInfo=void 0,t.extraPurchaseList=t.addOnsSalePage=t.shoppingCartBatchInsert=t.ecouponIdForLoyaltyPoint=t.ecouponCustomList=t.stampRecordHistory=t.pointHistory=t.walletHistoryTopped=t.walletHistoryCard=t.walletHistoryAll=t.consumptionHistoryOffline=t.consumptionHistoryOnline=t.outerSalesOrder=t.crmShopMemberCardDescPage=t.brandPageWrapper=t.brandIndexWrapper=t.inlineWrapper=t.invitingHistory=t.invitingFriends=t.notFoundPage=t.activityPreparation=t.activityClosed=t.officialClosed=t.serviceInfo=t.preparation=t.payFinishExpressCheckout=t.expressCheckout=t.expressSalePage=t.salePageCommentList=t.gameModuleEvent=t.changeGoodsRequest=t.returnGoodsRequest=t.cancelGoodsRequest=t.promotionGift=t.locationPickupSelectLocation=t.browsingHistory=t.preview=t.questionInsertPageInfo=t.emailNotificationPageInfo=t.agreePrivacyPageInfo=t.myAccountChangePassword=t.invoiceListPageInfo=t.questionCustomerServiceCenter=t.ecouponMyEcoupon=t.tradesOrderDetail=t.tradesOrderList=t.myAccountLocationBooksPageInfo=t.myAccountVipMemberBenefits=t.myAccountPrivacy=t.helpServicePageInfo=void 0,t.streamPage=void 0;var r=n(7031);t.indexPageInfo={pageType:r.PAGE_TYPE.INDEX,pageTitle:"首頁",viewType:"Home",routerPathFunc:function(){return"/"}},t.shopCategoryPageInfo={pageType:r.PAGE_TYPE.CATEGORY,pageTitle:"小分類頁",viewType:"SalePageCategory",routerPathFunc:function(e){var t=e.id;return"/v2/official/SalePageCategory/"+(void 0===t?"":t)}},t.salePageInfo={pageType:r.PAGE_TYPE.SALEPAGE,pageTitle:"商品頁",viewType:"SalePage",routerPathFunc:function(e){var t=e.id;return"/SalePage/Index/"+(void 0===t?"":t)}},t.activityPageInfo={pageType:r.PAGE_TYPE.ACTIVITY,pageTitle:"活動頁公版",viewType:"Activity",routerPathFunc:function(e){var t=e.id;return"/v2/activity/"+(void 0===t?"":t)}},t.ecouponList={pageType:r.PAGE_TYPE.ECOUPON_LIST,pageTitle:"優惠券專區 全部列表",viewType:"ECouponList",routerPathFunc:function(){return"/v2/ECoupon/List"}},t.ecouponDetail={pageType:r.PAGE_TYPE.ECOUPON,pageTitle:"優惠券詳細頁",viewType:"ECouponDetail",routerPathFunc:function(e){var t=e.id;return"/v2/ECoupon/Detail/"+(void 0===t?"":t)}},t.eCouponHistory={pageType:r.PAGE_TYPE.ECOUPON_HISTORY,pageTitle:"優惠券紀錄",viewType:"ECouponECouponHistory",routerPathFunc:function(){return"/V2/ECoupon/ECouponHistory"}},t.promotionList={pageType:r.PAGE_TYPE.PROMOTION_LIST,pageTitle:"折扣活動列表頁",viewType:"PromotionList",routerPathFunc:function(){return"/v2/Promotion/List"}},t.promotionDetail={pageType:r.PAGE_TYPE.PROMOTION,pageTitle:"折扣活動內容頁-現折活動",viewType:"PromotionDetail",routerPathFunc:function(e){var t=e.id;return"/Promotion/Detail/"+(void 0===t?"":t)}},t.shopStoreList={pageType:r.PAGE_TYPE.SHOP_STORE_LIST,pageTitle:"門市資訊",viewType:"StoreList",routerPathFunc:function(e){return"/v2/Shop/StoreList/"+(e.shopId||"")}},t.shopStoreDetail={pageType:r.PAGE_TYPE.SHOP_STORE_DETAIL,pageTitle:"門市詳細",viewType:"StoreDetail",routerPathFunc:function(e){var t=e.shopId,n=e.id;return"/Shop/StoreDetail/"+(t||"")+"/"+(void 0===n?"":n)}},t.couponList={pageType:r.PAGE_TYPE.COUPON_LIST,pageTitle:"門市優惠券列表",viewType:"ECouponListCoupon",routerPathFunc:function(){return"/v2/ECoupon/List/Coupon"}},t.couponDetail={pageType:r.PAGE_TYPE.COUPON,pageTitle:"門市優惠券",viewType:"CouponDetail",routerPathFunc:function(e){var t=e.id;return"/Coupon/Detail/"+(void 0===t?"":t)}},t.hotSaleRanking={pageType:r.PAGE_TYPE.HOT_SALE_RANKING,pageTitle:"熱銷排行榜",viewType:"HotSaleRanking",routerPathFunc:function(e){return"/Shop/HotSaleRanking/"+(e.shopId||"")+"?period=Weekly"}},t.search={pageType:r.PAGE_TYPE.SEARCH,pageTitle:"搜尋結果",viewType:"Search",routerPathFunc:function(e){var t=e.shopId,n=e.id;return"/v2/Search?q="+encodeURI(String(n))+"&shopId="+(t||"")}},t.vipMemberProfile={pageType:r.PAGE_TYPE.VIP_MEMBER_PROFILE,pageTitle:"會員基本資料",viewType:"VipMemberProfile",routerPathFunc:function(){return"/v2/VipMember/Profile"}},t.hidden={pageType:r.PAGE_TYPE.HIDDEN,pageTitle:"隱形活動頁",viewType:"HiddenPage",routerPathFunc:function(e){var t=e.id;return"/hidden/"+(void 0===t?"":t)}},t.custom={pageType:r.PAGE_TYPE.CUSTOM,pageTitle:"自訂頁",viewType:"CustomPage",routerPathFunc:function(e){var t=e.id;return"/page/"+(void 0===t?"":t)}},t.promotionEngine={pageType:r.PAGE_TYPE.PROMOTION_ENGINE,pageTitle:"促購引擎折扣活動內容頁",viewType:"PromotionEngineDetail",routerPathFunc:function(e){var t=e.id;return"/v2/PromotionEngine/Detail/"+(void 0===t?"":t)}},t.infoModuleList={pageType:r.PAGE_TYPE.SHOP_INFO_MODULE_LIST,pageTitle:"資訊模組列表頁",viewType:"InfoModule",routerPathFunc:function(){return"/v2/shop/InfoModuleList#/"}},t.infoModuleArticleList={pageType:r.PAGE_TYPE.SHOP_INFO_MODULE_ARTICLE_LIST,pageTitle:"文章列表頁",viewType:"Article",routerPathFunc:function(){return"/v2/shop/InfoModuleList#!/ArticleList"}},t.infoModuleArticleDetail={pageType:r.PAGE_TYPE.SHOP_INFO_MODULE_ARTICLE_DETAIL,pageTitle:"圖文模組頁",viewType:"ArticleDetail",routerPathFunc:function(e){var t=e.id;return"/Article/Detail/"+(void 0===t?"":t)}},t.infoModuleAlbumList={pageType:r.PAGE_TYPE.SHOP_INFO_MODULE_ALBUM_LIST,pageTitle:"相簿列表頁",viewType:"Album",routerPathFunc:function(){return"/v2/shop/InfoModuleList#!/AlbumList"}},t.infoModuleAlbumDetail={pageType:r.PAGE_TYPE.SHOP_INFO_MODULE_ALBUM_DETAIL,pageTitle:"相簿模組頁",viewType:"AlbumDetail",routerPathFunc:function(e){var t=e.id;return"/Album/Detail/"+(void 0===t?"":t)}},t.infoModuleVideoList={pageType:r.PAGE_TYPE.SHOP_INFO_MODULE_VIDEO_LIST,pageTitle:"影片列表頁",viewType:"Video",routerPathFunc:function(){return"/v2/shop/InfoModuleList#!/VideoList"}},t.infoModuleVideoDetail={pageType:r.PAGE_TYPE.SHOP_INFO_MODULE_VIDEO_DETAIL,pageTitle:"影音模組頁",viewType:"VideoDetail",routerPathFunc:function(e){var t=e.id;return"/Video/Detail/"+(void 0===t?"":t)}},t.storeSidebarCustomLink={pageType:r.PAGE_TYPE.STORE_SIDEBAR_CUSTOM_LINK,pageTitle:"側欄門市自訂連結",viewType:"VIPMemberCustomLinkRelay",routerPathFunc:function(e){var t=e.id;return"/v2/VIPMember/CustomLinkRelay/"+(void 0===t?"":t)}},t.newestSalePage={pageType:r.PAGE_TYPE.NEWEST_SALEPAGE,pageTitle:"最新商品頁",viewType:"NewestSalePage",routerPathFunc:function(){return"/v2/Official/NewestSalePage"}},t.fsEvent={pageType:r.PAGE_TYPE.FS_EVENT,pageTitle:"Fever social 活動頁",viewType:"NewestSalePage",routerPathFunc:function(e){var t=e.shopId,n=e.id;return"/v2/FSevent/"+(t||"")+"/"+(void 0===n?"":n)}},t.loyaltyPointECouponList={pageType:r.PAGE_TYPE.LOYALTY_POINT_ECOUPON_LIST,pageTitle:"會員點數兌換專區",viewType:"LoyaltyPointToECouponList",routerPathFunc:function(){return"/v2/LoyaltyPoint/ECouponList"}},t.loyaltyPointECouponDetail={pageType:r.PAGE_TYPE.LOYALTY_POINT_ECOUPON_DETAIL,pageTitle:"紅利點數折價券詳細頁",viewType:"LoyaltyPointToECouponDetail",routerPathFunc:function(){return"/v2/LoyaltyPoint/ECouponDetail"}},t.loyaltyPointCenter={pageType:r.PAGE_TYPE.LOYALTY_POINT_CENTER,pageTitle:"會員點數中心",viewType:"LoyaltyPointCenter",routerPathFunc:function(){return"/V2/LoyaltyPoint/Index"}},t.tagCategory={pageType:r.PAGE_TYPE.TAG_CATEGORY,pageTitle:"標籤分類頁",viewType:"TagCategory",routerPathFunc:function(e){var t=e.id;return"/tagCategory/"+(void 0===t?"":t)}},t.collectionViewAll={pageType:r.PAGE_TYPE.COLLECTION_VIEW_ALL,pageTitle:"穿搭一覽頁",viewType:"CollectionList",routerPathFunc:function(){return"/catalog/collectionList"}},t.collectionDetail={pageType:r.PAGE_TYPE.COLLECTION_DETAIL,pageTitle:"穿搭詳細頁",viewType:"CollectionDetail",routerPathFunc:function(e){var t=e.id;return"/catalog/collectionDetail/"+(void 0===t?"":t)}},t.eCouponHowToUse={pageType:r.PAGE_TYPE.ECOUPON_HOW_TO_USE,pageTitle:"折價券使用說明",viewType:"ECouponHowToUse",routerPathFunc:function(){return"ECoupon/HowToUse"}},t.shoppingCart={pageType:r.PAGE_TYPE.SHOPPING_CART,pageTitle:"購物車",viewType:"ShoppingCart",routerPathFunc:function(e){return"/v2/ShoppingCart/Index?shopId="+(e.shopId||"")+"#/Info/Index"}},t.payIndexPageInfo={pageType:r.PAGE_TYPE.PAY_INDEX,pageTitle:"結帳付款頁",viewType:"Pay",routerPathFunc:function(e){var t=e.shopId,n=e.id;return"/v2/Pay?k="+(void 0===n?"":n)+"shopId="+(t||"")+"#/Info/PayAdvanced"}},t.payLandingPageInfo={pageType:r.PAGE_TYPE.PAY_LANDING,pageTitle:"結帳付款頁等待頁",viewType:"PayLanding",routerPathFunc:function(){return"/v2/Pay/Landing"}},t.payFinishPageInfo={pageType:r.PAGE_TYPE.PAY_FINISH,pageTitle:"結帳完成頁",viewType:"PayFinish",routerPathFunc:function(e){var t=e.shopId,n=e.id;return"/v2/Pay/Finish?k="+(void 0===n?"":n)+"&shopId="+(t||"")}},t.appDownloadPage={pageType:r.PAGE_TYPE.APP_DOWNLOAD,pageTitle:"導下載頁",viewType:"AppDownload",routerPathFunc:function(){return"/app/download"}},t.loginIndexPageInfo={pageType:r.PAGE_TYPE.LOGIN,pageTitle:"登入",viewType:"Login",routerPathFunc:function(){return"/V2/Login/Index"}},t.unknownPageInfo={pageType:null,pageTitle:"不明的頁面",viewType:"unknown",routerPathFunc:function(){return""}},t.vipMemberIndexPageInfo={pageType:r.PAGE_TYPE.VIP_MEMBER,viewType:"VipMember",pageTitle:"會員專區",routerPathFunc:function(){return"/V2/VipMember/Index"}},t.traceSalePageList={viewType:"WishList",pageType:r.PAGE_TYPE.TRACE_SALE_PAGE_LIST,pageTitle:"我的收藏",routerPathFunc:function(){return"/TraceSalePageList/TraceSalePageList"}},t.backInStockAlertList={viewType:"BackInStockAlertList",pageType:r.PAGE_TYPE.BACK_IN_STOCK_ALERT_LIST,pageTitle:"貨到通知",routerPathFunc:function(){return"/v2/BackInStockAlertList"}},t.officialBrandStory={viewType:"BrandStory",pageType:r.PAGE_TYPE.OFFICIAL_BRAND_STORY,pageTitle:"品牌故事",routerPathFunc:function(){return"/v2/Official/BrandStory"}},t.shopIntroducePageInfo={viewType:"Introduce",pageType:r.PAGE_TYPE.SHOP_INTRODUCE,pageTitle:"商店簡介",routerPathFunc:function(e){return"/shop/introduce/"+(e.shopId||"")+"?t=1"}},t.shopIntroduceShoppingGuide={viewType:"Introduce",pageType:r.PAGE_TYPE.SHOP_INTRODUCE_SHOPPING_GUIDE,pageTitle:"購物說明",routerPathFunc:function(e){return"/shop/introduce/"+(e.shopId||"")+"?t=2"}},t.shopIntroduceCustomerService={viewType:"Introduce",pageType:r.PAGE_TYPE.SHOP_INTRODUCE_CUSTOMER_SERVICE,pageTitle:"商店客服",routerPathFunc:function(e){return"/shop/introduce/"+(e.shopId||"")+"?t=3"}},t.helpServicePageInfo={pageType:null,viewType:"",pageTitle:"購物說明",routerPathFunc:function(e){return"/shop/introduce/"+(e.shopId||"")+"?t=2"}},t.myAccountPrivacy={pageType:r.PAGE_TYPE.MY_ACCOUNT_PRIVACY,pageTitle:"隱私權條款頁",viewType:"Privacy",routerPathFunc:function(){return"/MyAccount/Privacy"}},t.myAccountVipMemberBenefits={pageType:r.PAGE_TYPE.MY_ACCOUNT_VIP_MEMBER_BENEFITS,viewType:"VipMemberBenefits",pageTitle:"會員權益說明",routerPathFunc:function(){return"/V2/MyAccount/VipMemberBenefits"}},t.myAccountLocationBooksPageInfo={pageType:null,viewType:"",pageTitle:"常用收件人",routerPathFunc:function(){return"/MyAccount/LocationBooks"}},t.tradesOrderList={pageType:r.PAGE_TYPE.TRADES_ORDER_LIST,viewType:"TradesOrderList",pageTitle:"訂單列表",routerPathFunc:function(){return"/V2/TradesOrder/TradesOrderList"}},t.tradesOrderDetail={pageType:r.PAGE_TYPE.TRADES_ORDER_LIST,viewType:"TradesOrderDetail",pageTitle:"訂單明細",routerPathFunc:function(){return"/V2/TradesOrder/TradesOrderDetail"}},t.ecouponMyEcoupon={pageType:r.PAGE_TYPE.ECOUPON_MY_ECOUPON,pageTitle:"我的優惠券",viewType:"ECouponMyECoupon",routerPathFunc:function(){return"/V2/ECoupon/MyECoupon"}},t.questionCustomerServiceCenter={pageType:r.PAGE_TYPE.QUESTION_CUSTOMER_SERVICE_CENTER,viewType:"CustomerServiceCenter",pageTitle:"常見問題",routerPathFunc:function(){return"/Question/CustomerServiceCenter"}},t.invoiceListPageInfo={pageType:null,viewType:"",pageTitle:"常用統一編號",routerPathFunc:function(){return"/MyAccount/InvoiceList"}},t.myAccountChangePassword={pageType:r.PAGE_TYPE.MY_ACCOUNT_CHANGE_PASSWORD,viewType:"ChangePassword",pageTitle:"修改密碼",routerPathFunc:function(){return"/V2/MyAccount/ChangePassword"}},t.agreePrivacyPageInfo={pageType:null,viewType:"",pageTitle:"會員權益聲明",routerPathFunc:function(){return"/V2/VipMember/agreePrivacy"}},t.emailNotificationPageInfo={pageType:null,viewType:"",pageTitle:"通知相關設定",routerPathFunc:function(){return"/V2/VipMember/EmailNotification"}},t.questionInsertPageInfo={pageType:r.PAGE_TYPE.QUESTION_INSERT,viewType:"QuestionInsert",pageTitle:"客服留言/問答紀錄",routerPathFunc:function(e){return"/Question/QuestionInsert/0?sId="+(e.shopId||"")}},t.preview={pageType:r.PAGE_TYPE.PRIVIEW,viewType:"Preview",pageTitle:"預覽頁",routerPathFunc:function(e){var t=e.id;return"/preview/"+(void 0===t?"":t)}},t.browsingHistory={pageType:r.PAGE_TYPE.BROWSING_HISTORY,viewType:"BrowsingHistory",pageTitle:"瀏覽紀錄",routerPathFunc:function(){return"/v2/browsingHistory"}},t.locationPickupSelectLocation={pageType:r.PAGE_TYPE.LOCATION_PICK_UP_SELECT_LOCATION,viewType:"LocationPickup",pageTitle:"選擇門市",routerPathFunc:function(){return"/V2/LocationPickup/SelectLocation"}},t.promotionGift={pageType:r.PAGE_TYPE.PROMOTION_GIFT,viewType:"PromotionGift",pageTitle:"贈品詳細",routerPathFunc:function(){return"/V2/Promotion/Gift"}},t.cancelGoodsRequest={pageType:r.PAGE_TYPE.CANCEL_GOODS_REQUEST,viewType:"CancelGoodsRequest",pageTitle:"訂單取消",routerPathFunc:function(){return"/V2/CancelGoodsRequest/list"}},t.returnGoodsRequest={pageType:r.PAGE_TYPE.RETURN_GOODS_REQUEST,viewType:"ReturnGoodsRequest",pageTitle:"訂單退貨",routerPathFunc:function(){return"/V2/ReturnGoodsRequest/list"}},t.changeGoodsRequest={pageType:r.PAGE_TYPE.CHANGE_GOODS_REQUEST,viewType:"ChangeGoodsRequest",pageTitle:"訂單換貨",routerPathFunc:function(){return"/V2/ChangeGoodsRequest/list"}},t.gameModuleEvent={pageType:r.PAGE_TYPE.GAME_MODULE_EVENT,pageTitle:"遊戲產生器活動頁",viewType:"GameModuleEvent",routerPathFunc:function(e){var t=e.shopId,n=e.id;return"/V2/GameModule/"+(t||"")+"/gpc001/"+(void 0===n?"":n)}},t.salePageCommentList={pageType:r.PAGE_TYPE.SALEPAGE_COMMENT_LIST,pageTitle:"評價列表頁",viewType:"SalePageComment",routerPathFunc:function(e){var t=e.id;return"/v2/SalePageComment/List?salePageId="+(void 0===t?"":t)}},t.expressSalePage={pageType:r.PAGE_TYPE.EXPRESS_SALEPAGE,pageTitle:"商品頁_express",viewType:"ExpressSalePage",routerPathFunc:function(e){var t=e.id;return"/cms/liff/tall/expressSalePage/"+(void 0===t?"":t)}},t.expressCheckout={pageType:r.PAGE_TYPE.EXPRESS_CHECKOUT,pageTitle:"快速結帳",viewType:"ExpressCheckout",routerPathFunc:function(e){var t=e.id;return"/v2/checkouts/"+(void 0===t?"":t)+"?pageType=express"}},t.payFinishExpressCheckout={pageType:r.PAGE_TYPE.EXPRESS_CHECKOUT_PAY_FINISH,pageTitle:"結帳完成頁",viewType:"ExpressCheckout",routerPathFunc:function(e){var t=e.shopId,n=e.id;return"/v2/Pay/Finish?k="+(void 0===n?"":n)+"&shopId="+(t||"")+"&pageType=express"}},t.preparation={pageType:r.PAGE_TYPE.PREPARATION,pageTitle:"網站準備中",viewType:"Preparation",routerPathFunc:function(e){return"/V2/Static/Official/OfficialPreparation.htm?shopId="+e.shopId+"&reason=InProcess"}},t.serviceInfo={pageType:r.PAGE_TYPE.SERVICEINFO,pageTitle:"例行系統維護中",viewType:"ServiceInfo",routerPathFunc:function(){return"/service_info.htm"}},t.officialClosed={pageType:r.PAGE_TYPE.OFFICIAL_CLOSED,pageTitle:"網站關閉",viewType:"OfficialClosed",routerPathFunc:function(){return"/V2/Static/Official/Officialclosed.htm"}},t.activityClosed={pageType:r.PAGE_TYPE.ACTIVITY_CLOSED,pageTitle:"活動已結束",viewType:"Activityclosed",routerPathFunc:function(){return"/v2/Static/Activity/Activityclosed.html"}},t.activityPreparation={pageType:r.PAGE_TYPE.ACTIVITY_PREPARATION,pageTitle:"活動尚未開始",viewType:"ActivityPreparation",routerPathFunc:function(){return"/v2/Static/Activity/ActivityPreparation.html"}},t.notFoundPage={pageType:r.PAGE_TYPE.NOT_FOUND_PAGE,pageTitle:"找不到該頁面",viewType:"NotFoundPage",routerPathFunc:function(){return"/404V2.html"}},t.invitingFriends={pageType:r.PAGE_TYPE.INVITING_FRIENDS,pageTitle:"邀請好友",viewType:"SharedInvitation",routerPathFunc:function(){return"/V2/MyAccount/InvitingFriends"}},t.invitingHistory={pageType:r.PAGE_TYPE.INVITING_HISTORY,pageTitle:"邀請紀錄",viewType:"InvitingHistory",routerPathFunc:function(){return"/V2/MyAccount/InvitingHistory"}},t.inlineWrapper={pageType:r.PAGE_TYPE.INLINE_WRAPPER,pageTitle:"inline ifarme 頁",viewType:"IfarmeWrappery",routerPathFunc:function(e){return"/catalog/inlineWrapper/"+e.serviceType+"/"+e.id}},t.brandIndexWrapper={pageType:r.PAGE_TYPE.BRAND_INDEX,pageTitle:"品牌總覽頁",viewType:"ProductBrandOverview",routerPathFunc:function(){return"/V2/Brand"}},t.brandPageWrapper={pageType:r.PAGE_TYPE.BRAND_PAGE,pageTitle:"商品品牌頁",viewType:"BrandPage",routerPathFunc:function(e){var t=e.id;return"/V2/Brand/"+(void 0===t?"":t)}},t.crmShopMemberCardDescPage={pageType:r.PAGE_TYPE.MEMBER_CARD_DESC,pageTitle:"會員專區_會員制度說明頁",viewType:"CRMShopMemberCard",routerPathFunc:function(){return"/V2/CRMShopMemberCard/Description.html"}},t.outerSalesOrder={pageType:r.PAGE_TYPE.OUTER_SLAES_ORDER,pageTitle:"交易紀錄頁",viewType:"OuterSalesOrder",routerPathFunc:function(){return"/V2/MembershipCard/OuterSalesOrder#/"}},t.consumptionHistoryOnline={pageType:r.PAGE_TYPE.CONSUMPTION_HISTORY_ONLINE,pageTitle:"交易紀錄頁_消費紀錄_線上",viewType:"ConsumptionHistoryOnline",routerPathFunc:function(){return"/V2/MembershipCard/OuterSalesOrder#/consumption-history/online"}},t.consumptionHistoryOffline={pageType:r.PAGE_TYPE.CONSUMPTION_HISTORY_ONLINE,pageTitle:"交易紀錄頁_消費紀錄_門市",viewType:"ConsumptionHistoryOffline",routerPathFunc:function(){return"/V2/MembershipCard/OuterSalesOrder#/consumption-history/offline"}},t.walletHistoryAll={pageType:r.PAGE_TYPE.WALLET_HISTORY_ALL,pageTitle:"交易紀錄頁_POYABuy紀錄_全部",viewType:"WalletHistoryAll",routerPathFunc:function(){return"/V2/MembershipCard/OuterSalesOrder#/wallet-history/all"}},t.walletHistoryCard={pageType:r.PAGE_TYPE.WALLET_HISTORY_CARD,pageTitle:"交易紀錄頁_POYABuy紀錄_信用卡",viewType:"WalletHistoryCard",routerPathFunc:function(){return"/V2/MembershipCard/OuterSalesOrder#/wallet-history/card"}},t.walletHistoryTopped={pageType:r.PAGE_TYPE.WALLET_HISTORY_CARD,pageTitle:"交易紀錄頁_POYABuy紀錄_儲值金",viewType:"WalletHistoryTopped",routerPathFunc:function(){return"/V2/MembershipCard/OuterSalesOrder#/wallet-history/topped"}},t.pointHistory={pageType:r.PAGE_TYPE.POINT_HISTORY,pageTitle:"交易紀錄頁_點數紀錄",viewType:"PointHistory",routerPathFunc:function(){return"/V2/MembershipCard/OuterSalesOrder#/point-history"}},t.stampRecordHistory={pageType:r.PAGE_TYPE.STAMP_RECORD_HISTORY,pageTitle:"交易紀錄頁_印花紀錄",viewType:"StampRecordHistory",routerPathFunc:function(){return"/V2/MembershipCard/OuterSalesOrder#/stampRecord-history"}},t.ecouponCustomList={pageType:r.PAGE_TYPE.ECOUPON_CUSTOM_LIST,pageTitle:"優惠券專區 自訂券列表",viewType:"ecouponCustomList",routerPathFunc:function(e){var t=e.id;return"/v2/ECoupon/List?TypeDef=ECouponCustom&ECouponCustomId="+(void 0===t?"":t)}},t.ecouponIdForLoyaltyPoint={pageType:r.PAGE_TYPE.ECOUPON_ID_FOR_LOYALTY_POINT,pageTitle:"優惠券詳細頁(紅利點數兌換)",viewType:"ecouponIdForLoyaltyPoint",routerPathFunc:function(e){var t=e.id;return"/v2/LoyaltyPoint/ECouponDetail?eCouponId="+(void 0===t?"":t)}},t.shoppingCartBatchInsert={pageType:r.PAGE_TYPE.SHOPPING_CART_BATCH_INSERT,pageTitle:"購物車批次新增轉導頁",viewType:"ShoppingCartBatchInsert",routerPathFunc:function(){return"/v2/ShoppingCart/BatchInsert"}},t.addOnsSalePage={pageType:r.PAGE_TYPE.ADD_ONS_SALEPAGE,pageTitle:"商品頁",viewType:"AddOnsSalePage",routerPathFunc:function(e){var t=e.id;return"/AddOnsSalePage/Index/"+(void 0===t?"":t)}},t.extraPurchaseList={pageType:r.PAGE_TYPE.EXTRA_PURCHASE_LIST,pageTitle:"加價購專區",viewType:"AddOnsSalePageArea",routerPathFunc:function(e){var t=e.id;return"/V2/AddOnsSalePage/ExtraPurchaseList/"+(void 0===t?"":t)}},t.streamPage={pageType:r.PAGE_TYPE.STREAM,pageTitle:"影片頁",viewType:"StreamPage",routerPathFunc:function(e){var t=e.id;return"/catalog/stream/"+(void 0===t?"":t)}}},7031:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.PAGE_NAME=t.URL_TYPE=t.PAGE_TYPE=void 0,t.PAGE_TYPE={INDEX:"p01",CATEGORY:"p02",SALEPAGE:"p03",ACTIVITY:"p04",ECOUPON_LIST:"p05",ECOUPON:"p06",PROMOTION_LIST:"p07",PROMOTION:"p08",SHOP_STORE_LIST:"p09",SHOP_STORE_DETAIL:"p10",COUPON_LIST:"p11",COUPON:"p12",HOT_SALE_RANKING:"p13",SEARCH:"p14",VIP_MEMBER_PROFILE:"p15",HIDDEN:"p16",CUSTOM:"p17",PROMOTION_ENGINE:"p18",SHOP_INFO_MODULE_LIST:"p19",SHOP_INFO_MODULE_ARTICLE_LIST:"p20",SHOP_INFO_MODULE_ARTICLE_DETAIL:"p21",SHOP_INFO_MODULE_ALBUM_LIST:"p22",SHOP_INFO_MODULE_ALBUM_DETAIL:"p23",SHOP_INFO_MODULE_VIDEO_LIST:"p24",SHOP_INFO_MODULE_VIDEO_DETAIL:"p25",STORE_SIDEBAR_CUSTOM_LINK:"p26",NEWEST_SALEPAGE:"p27",FS_EVENT:"p28",LOYALTY_POINT_ECOUPON_LIST:"p29",TAG_CATEGORY:"p30",COLLECTION_VIEW_ALL:"p31",COLLECTION_DETAIL:"p32",ECOUPON_HOW_TO_USE:"p33",SHOPPING_CART:"p34",PAY_INDEX:"p35",PAY_LANDING:"p36",PAY_FINISH:"p37",APP_DOWNLOAD:"p38",LOGIN:"p39",TRADES_ORDER_LIST:"p40",PRIVIEW:"p41",BROWSING_HISTORY:"p42",SHOP_INTRODUCE:"p43",VIP_MEMBER:"p44",LOCATION_PICK_UP_SELECT_LOCATION:"p45",OFFICIAL_BRAND_STORY:"p46",SHOP_INTRODUCE_CUSTOMER_SERVICE:"p47",SHOP_INTRODUCE_SHOPPING_GUIDE:"p48",QUESTION_INSERT:"p49",QUESTION_CUSTOMER_SERVICE_CENTER:"p50",MY_ACCOUNT_PRIVACY:"p51",MY_ACCOUNT_VIP_MEMBER_BENEFITS:"p52",MY_ACCOUNT_CHANGE_PASSWORD:"p53",PROMOTION_GIFT:"p54",LOYALTY_POINT_CENTER:"p55",ECOUPON_HISTORY:"p56",ECOUPON_MY_ECOUPON:"p57",TRACE_SALE_PAGE_LIST:"p58",CANCEL_GOODS_REQUEST:"p59",RETURN_GOODS_REQUEST:"p60",CHANGE_GOODS_REQUEST:"p61",GAME_MODULE_EVENT:"p62",BACK_IN_STOCK_ALERT_LIST:"p63",SALEPAGE_COMMENT_LIST:"p64",EXPRESS_SALEPAGE:"p65",LOYALTY_POINT_ECOUPON_DETAIL:"p66",EXPRESS_CHECKOUT:"p67",EXPRESS_CHECKOUT_PAY_FINISH:"p68",PREVIEW:"p69",PREPARATION:"p70",SERVICEINFO:"p71",OFFICIAL_CLOSED:"p72",ACTIVITY_CLOSED:"p73",ACTIVITY_PREPARATION:"p74",NOT_FOUND_PAGE:"p75",INVITING_FRIENDS:"p76",INVITING_HISTORY:"p77",INLINE_WRAPPER:"P78",BRAND_INDEX:"P79",BRAND_PAGE:"P80",MEMBER_CARD_DESC:"p81",OUTER_SLAES_ORDER:"p82",CONSUMPTION_HISTORY_ONLINE:"p83",CONSUMPTION_HISTORY_OFFLINE:"p84",WALLET_HISTORY_ALL:"p85",WALLET_HISTORY_CARD:"p86",WALLET_HISTORY_TOPPED:"p87",POINT_HISTORY:"p88",STAMP_RECORD_HISTORY:"p89",ECOUPON_CUSTOM_LIST:"p90",ECOUPON_ID_FOR_LOYALTY_POINT:"p91",SHOPPING_CART_BATCH_INSERT:"p92",ADD_ONS_SALEPAGE:"p93",EXTRA_PURCHASE_LIST:"p94",STREAM:"p95",UNKNOWN:"unknown"},t.URL_TYPE={CUSTOM:"custom",INTERNAL:"internal",NONE:"none"},t.PAGE_NAME={INDEX:"index",HIDDEN:"hidden",PREVIEW:"preview",CUSTOM:"custom",CATEGORY:"category",TAG_CATEGORY:"tagCategory",COLLECTION_LIST:"collectionList",COLLECTION_DETAIL:"collectionDetail",BROWSING_HISTORY:"browsingHistory",DOWNLOAD:"download",HOT_SALE_RANKING:"hotSaleRanking",EXPRESS_SALEPAGE:"expressSalePage",SEARCH:"search",NEWEST_SALE_PAGE:"newestSalePage",LINE_EXPRESS_RELAY:"lineExpressRelay",INLINE_WRAPPER:"inlineWrapper",LINE:"line",STREAM:"stream"}},3718:function(e,t,n){"use strict";var r=this&&this.__createBinding||(Object.create?function(e,t,n,r){void 0===r&&(r=n),Object.defineProperty(e,r,{enumerable:!0,get:function(){return t[n]}})}:function(e,t,n,r){void 0===r&&(r=n),e[r]=t[n]}),i=this&&this.__exportStar||function(e,t){for(var n in e)"default"===n||Object.prototype.hasOwnProperty.call(t,n)||r(t,e,n)};Object.defineProperty(t,"__esModule",{value:!0}),i(n(7031),t),i(n(9311),t)},9311:function(e,t,n){"use strict";var r=this&&this.__createBinding||(Object.create?function(e,t,n,r){void 0===r&&(r=n),Object.defineProperty(e,r,{enumerable:!0,get:function(){return t[n]}})}:function(e,t,n,r){void 0===r&&(r=n),e[r]=t[n]}),i=this&&this.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),o=this&&this.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var n in e)"default"!==n&&Object.prototype.hasOwnProperty.call(e,n)&&r(t,e,n);return i(t,e),t};Object.defineProperty(t,"__esModule",{value:!0}),t.getPageUrl=t.getPageInfoByPageType=t.getPageInfoByPathRegex=t.PageInfoMap=void 0;var a=n(7031),c=o(n(8819));t.PageInfoMap=new Map([[a.PAGE_TYPE.INDEX,c.indexPageInfo],[a.PAGE_TYPE.CATEGORY,c.shopCategoryPageInfo],[a.PAGE_TYPE.SALEPAGE,c.salePageInfo],[a.PAGE_TYPE.ACTIVITY,c.activityPageInfo],[a.PAGE_TYPE.ECOUPON_LIST,c.ecouponList],[a.PAGE_TYPE.ECOUPON,c.ecouponDetail],[a.PAGE_TYPE.PROMOTION_LIST,c.promotionList],[a.PAGE_TYPE.PROMOTION,c.promotionDetail],[a.PAGE_TYPE.SHOP_STORE_LIST,c.shopStoreList],[a.PAGE_TYPE.SHOP_STORE_DETAIL,c.shopStoreDetail],[a.PAGE_TYPE.COUPON_LIST,c.couponList],[a.PAGE_TYPE.COUPON,c.couponDetail],[a.PAGE_TYPE.HOT_SALE_RANKING,c.hotSaleRanking],[a.PAGE_TYPE.SEARCH,c.search],[a.PAGE_TYPE.VIP_MEMBER_PROFILE,c.vipMemberProfile],[a.PAGE_TYPE.HIDDEN,c.hidden],[a.PAGE_TYPE.CUSTOM,c.custom],[a.PAGE_TYPE.PROMOTION_ENGINE,c.promotionEngine],[a.PAGE_TYPE.SHOP_INFO_MODULE_LIST,c.infoModuleList],[a.PAGE_TYPE.SHOP_INFO_MODULE_ARTICLE_LIST,c.infoModuleArticleList],[a.PAGE_TYPE.SHOP_INFO_MODULE_ARTICLE_DETAIL,c.infoModuleArticleDetail],[a.PAGE_TYPE.SHOP_INFO_MODULE_ALBUM_LIST,c.infoModuleAlbumList],[a.PAGE_TYPE.SHOP_INFO_MODULE_ALBUM_DETAIL,c.infoModuleAlbumDetail],[a.PAGE_TYPE.SHOP_INFO_MODULE_VIDEO_LIST,c.infoModuleVideoList],[a.PAGE_TYPE.SHOP_INFO_MODULE_VIDEO_DETAIL,c.infoModuleVideoDetail],[a.PAGE_TYPE.STORE_SIDEBAR_CUSTOM_LINK,c.storeSidebarCustomLink],[a.PAGE_TYPE.NEWEST_SALEPAGE,c.newestSalePage],[a.PAGE_TYPE.FS_EVENT,c.fsEvent],[a.PAGE_TYPE.LOYALTY_POINT_ECOUPON_LIST,c.loyaltyPointECouponList],[a.PAGE_TYPE.TAG_CATEGORY,c.tagCategory],[a.PAGE_TYPE.COLLECTION_VIEW_ALL,c.collectionViewAll],[a.PAGE_TYPE.COLLECTION_DETAIL,c.collectionDetail],[a.PAGE_TYPE.ECOUPON_HOW_TO_USE,c.eCouponHowToUse],[a.PAGE_TYPE.SHOPPING_CART,c.shoppingCart],[a.PAGE_TYPE.SHOPPING_CART_BATCH_INSERT,c.shoppingCartBatchInsert],[a.PAGE_TYPE.PAY_INDEX,c.payIndexPageInfo],[a.PAGE_TYPE.PAY_LANDING,c.payLandingPageInfo],[a.PAGE_TYPE.PAY_FINISH,c.payFinishPageInfo],[a.PAGE_TYPE.APP_DOWNLOAD,c.appDownloadPage],[a.PAGE_TYPE.UNKNOWN,c.unknownPageInfo],[a.PAGE_TYPE.LOGIN,c.loginIndexPageInfo],[a.PAGE_TYPE.TRADES_ORDER_LIST,c.tradesOrderList],[a.PAGE_TYPE.PRIVIEW,c.preview],[a.PAGE_TYPE.BROWSING_HISTORY,c.browsingHistory],[a.PAGE_TYPE.SHOP_INTRODUCE,c.shopIntroducePageInfo],[a.PAGE_TYPE.SHOP_INTRODUCE_SHOPPING_GUIDE,c.shopIntroduceShoppingGuide],[a.PAGE_TYPE.SHOP_INTRODUCE_CUSTOMER_SERVICE,c.shopIntroduceCustomerService],[a.PAGE_TYPE.VIP_MEMBER,c.vipMemberIndexPageInfo],[a.PAGE_TYPE.LOCATION_PICK_UP_SELECT_LOCATION,c.locationPickupSelectLocation],[a.PAGE_TYPE.OFFICIAL_BRAND_STORY,c.officialBrandStory],[a.PAGE_TYPE.QUESTION_INSERT,c.questionInsertPageInfo],[a.PAGE_TYPE.QUESTION_CUSTOMER_SERVICE_CENTER,c.questionCustomerServiceCenter],[a.PAGE_TYPE.MY_ACCOUNT_PRIVACY,c.myAccountPrivacy],[a.PAGE_TYPE.MY_ACCOUNT_VIP_MEMBER_BENEFITS,c.myAccountVipMemberBenefits],[a.PAGE_TYPE.MY_ACCOUNT_CHANGE_PASSWORD,c.myAccountChangePassword],[a.PAGE_TYPE.PROMOTION_GIFT,c.promotionGift],[a.PAGE_TYPE.LOYALTY_POINT_CENTER,c.loyaltyPointCenter],[a.PAGE_TYPE.ECOUPON_HISTORY,c.eCouponHistory],[a.PAGE_TYPE.ECOUPON_MY_ECOUPON,c.ecouponMyEcoupon],[a.PAGE_TYPE.TRACE_SALE_PAGE_LIST,c.traceSalePageList],[a.PAGE_TYPE.CANCEL_GOODS_REQUEST,c.cancelGoodsRequest],[a.PAGE_TYPE.RETURN_GOODS_REQUEST,c.returnGoodsRequest],[a.PAGE_TYPE.CHANGE_GOODS_REQUEST,c.changeGoodsRequest],[a.PAGE_TYPE.GAME_MODULE_EVENT,c.gameModuleEvent],[a.PAGE_TYPE.BACK_IN_STOCK_ALERT_LIST,c.backInStockAlertList],[a.PAGE_TYPE.SALEPAGE_COMMENT_LIST,c.salePageCommentList],[a.PAGE_TYPE.EXPRESS_SALEPAGE,c.expressSalePage],[a.PAGE_TYPE.LOYALTY_POINT_ECOUPON_DETAIL,c.loyaltyPointECouponDetail],[a.PAGE_TYPE.EXPRESS_CHECKOUT,c.expressCheckout],[a.PAGE_TYPE.EXPRESS_CHECKOUT_PAY_FINISH,c.payFinishExpressCheckout],[a.PAGE_TYPE.PREVIEW,c.preview],[a.PAGE_TYPE.PREPARATION,c.preparation],[a.PAGE_TYPE.SERVICEINFO,c.serviceInfo],[a.PAGE_TYPE.OFFICIAL_CLOSED,c.officialClosed],[a.PAGE_TYPE.ACTIVITY_CLOSED,c.activityClosed],[a.PAGE_TYPE.ACTIVITY_PREPARATION,c.activityPreparation],[a.PAGE_TYPE.INVITING_FRIENDS,c.invitingFriends],[a.PAGE_TYPE.INVITING_HISTORY,c.invitingHistory],[a.PAGE_TYPE.INLINE_WRAPPER,c.inlineWrapper],[a.PAGE_TYPE.BRAND_INDEX,c.brandIndexWrapper],[a.PAGE_TYPE.BRAND_PAGE,c.brandPageWrapper],[a.PAGE_TYPE.NOT_FOUND_PAGE,c.notFoundPage],[a.PAGE_TYPE.MEMBER_CARD_DESC,c.crmShopMemberCardDescPage],[a.PAGE_TYPE.OUTER_SLAES_ORDER,c.outerSalesOrder],[a.PAGE_TYPE.CONSUMPTION_HISTORY_ONLINE,c.consumptionHistoryOnline],[a.PAGE_TYPE.CONSUMPTION_HISTORY_OFFLINE,c.consumptionHistoryOffline],[a.PAGE_TYPE.WALLET_HISTORY_ALL,c.walletHistoryAll],[a.PAGE_TYPE.WALLET_HISTORY_CARD,c.walletHistoryCard],[a.PAGE_TYPE.WALLET_HISTORY_TOPPED,c.walletHistoryTopped],[a.PAGE_TYPE.POINT_HISTORY,c.pointHistory],[a.PAGE_TYPE.STAMP_RECORD_HISTORY,c.stampRecordHistory],[a.PAGE_TYPE.ECOUPON_CUSTOM_LIST,c.ecouponCustomList],[a.PAGE_TYPE.ECOUPON_ID_FOR_LOYALTY_POINT,c.ecouponIdForLoyaltyPoint],[a.PAGE_TYPE.ADD_ONS_SALEPAGE,c.addOnsSalePage],[a.PAGE_TYPE.EXTRA_PURCHASE_LIST,c.extraPurchaseList],[a.PAGE_TYPE.STREAM,c.streamPage]]),t.getPageInfoByPathRegex=function(e,n,r){if(!e)return c.unknownPageInfo;var i,o=n||"undefined"!=typeof window?window.location.search:"",l=r||"undefined"!=typeof window?window.location.hash:"";switch(!0){case/(\/v2\/official\/$)|(\/v2\/official$)|^$|(^\/$)|(\/v2\/official\/Index$)|(\/v2\/official\/Index\/)/gi.test(e):i=c.indexPageInfo;break;case/\/v2\/official\/salepagecategory\/*/gi.test(e):i=c.shopCategoryPageInfo;break;case/\/salepage\/index\/*/gi.test(e):i=c.salePageInfo;break;case/\/v2\/activity\/*/gi.test(e):i=c.activityPageInfo;break;case/\/preview\/*/gi.test(e):i=c.preview;break;case/\/ecoupon\/list\/*/gi.test(e):i=/TypeDef=ECouponCustom/gi.test(o)?c.ecouponCustomList:c.ecouponList;break;case/\/v2\/ecoupon\/detail\/*/gi.test(e):i=c.ecouponDetail;break;case/\/v2\/promotion\/list\/*/gi.test(e):i=c.promotionList;break;case/\/promotion\/detail\/*/gi.test(e):i=c.promotionDetail;break;case/\/v2\/promotion\/gift\/*/gi.test(e):i=c.promotionGift;break;case/\/v2\/shop\/storeList\/*/gi.test(e):i=c.shopStoreList;break;case/\/shop\/storeDetail\/*/gi.test(e):i=c.shopStoreDetail;break;case/\/ecoupon\/list\/coupon\/*/gi.test(e):i=c.couponList;break;case/\/coupon\/detail\/*/gi.test(e):i=c.couponDetail;break;case/\/shop\/hotSaleRanking\/*/gi.test(e):i=c.hotSaleRanking;break;case/\/search\/*/gi.test(e):i=c.search;break;case/\/v2\/vipMember\/profile\/*/gi.test(e):i=c.vipMemberProfile;break;case/\/hidden\/*/gi.test(e):i=c.hidden;break;case/\/page\/*/gi.test(e):i=c.custom;break;case/\/v2\/promotionengine\/detail\/*/gi.test(e):i=c.promotionEngine;break;case/\/v2\/shop\/InfoModuleList\/*/gi.test(e):i="#/AlbumList"===l?c.infoModuleAlbumList:"#/ArticleList"===l?c.infoModuleArticleList:"#/VideoList"===l?c.infoModuleVideoList:c.infoModuleList;break;case/\/Article\/Detail\/*/gi.test(e):i=c.infoModuleArticleDetail;break;case/\/Album\/Detail\/*/gi.test(e):i=c.infoModuleAlbumDetail;break;case/\/Video\/Detail\/*/gi.test(e):i=c.infoModuleVideoDetail;break;case/\/v2\/official\/newestSalePage\/*/gi.test(e):i=c.newestSalePage;break;case/\/fsevent\/*/gi.test(e):i=c.fsEvent;break;case/\/v2\/LoyaltyPoint\/ECouponList\/*/gi.test(e):i=c.loyaltyPointECouponList;break;case/\/v2\/LoyaltyPoint\/index\/*/gi.test(e):i=c.loyaltyPointCenter;break;case/\/v2\/LoyaltyPoint\/ECouponDetail\/*/gi.test(e):i=/eCouponId=/gi.test(o)?c.ecouponIdForLoyaltyPoint:c.loyaltyPointECouponDetail;break;case/\/tag\/category\/*/gi.test(e):i=c.tagCategory;break;case/\/collectionList\/*/gi.test(e):i=t.PageInfoMap.get(a.PAGE_TYPE.COLLECTION_VIEW_ALL);break;case/\/collectionDetail\/*/gi.test(e):i=t.PageInfoMap.get(a.PAGE_TYPE.COLLECTION_DETAIL);break;case/\/ecoupon\/howToUse\/*/gi.test(e):i=c.eCouponHowToUse;break;case/\/v2\/ShoppingCart\/BatchInsert*/gi.test(e):i=c.shoppingCartBatchInsert;break;case/\/v2\/ShoppingCart*/gi.test(e):i=c.shoppingCart;break;case/\/v2\/pay\/index\/*|\/v2\/pay$/gi.test(e):i=c.payIndexPageInfo;break;case/\/v2\/pay\/landing\/*/gi.test(e):i=c.payLandingPageInfo;break;case/\/v2\/pay\/finish\/*/gi.test(e):var s=(null==o?void 0:o.length)?o.slice(1).split("&").reduce((function(e,t){var n,r=t.split("="),i=r[0],o=r[1];return Object.assign(e,((n={})[i]=o,n))}),{}):null;i=(null==s?void 0:s.pageType)&&"express"===s.pageType?c.payFinishExpressCheckout:c.payFinishPageInfo;break;case/\/app\/download\/*/gi.test(e):i=c.appDownloadPage;break;case/\/v2\/LocationPickup\/SelectLocation\/*/gi.test(e):i=c.locationPickupSelectLocation;break;case/\/TraceSalePageList\/TraceSalePageList\/*/gi.test(e):i=c.traceSalePageList;break;case/\/Official\/BrandStory\/*/gi.test(e):i=c.officialBrandStory;break;case/\/shop\/introduce\/*/gi.test(e):/t=1/gi.test(o)?i=c.shopIntroducePageInfo:/t=2/gi.test(o)?i=c.shopIntroduceShoppingGuide:/t=3/gi.test(o)&&(i=c.shopIntroduceCustomerService);break;case/\/Help\/ServiceInfo\/*/gi.test(e):i=c.helpServicePageInfo;break;case/\/MyAccount\/Privacy\/*/gi.test(e):i=c.myAccountPrivacy;break;case/\/MyAccount\/VipMemberBenefits\/*/gi.test(e):i=c.myAccountVipMemberBenefits;break;case/\/MyAccount\/LocationBooks\/*/gi.test(e):i=c.myAccountLocationBooksPageInfo;break;case/\/V2\/TradesOrder\/TradesOrderList*/gi.test(e):i=c.tradesOrderList;break;case/\/V2\/TradesOrder\/TradesOrderDetail*/gi.test(e):i=c.tradesOrderDetail;break;case/\/ECoupon\/MyECoupon\/*/gi.test(e):i=c.ecouponMyEcoupon;break;case/\/ECoupon\/ECouponHistory\/*/gi.test(e):i=c.eCouponHistory;break;case/\/Question\/CustomerServiceCenter\/*/gi.test(e):i=c.questionCustomerServiceCenter;break;case/\/MyAccount\/InvoiceList\/*/gi.test(e):i=c.invoiceListPageInfo;break;case/\/V2\/MyAccount\/ChangePassword\/*/gi.test(e):i=c.myAccountChangePassword;break;case/\/V2\/VipMember\/AgreePrivacy\/*/gi.test(e):i=c.agreePrivacyPageInfo;break;case/\/V2\/VipMember\/EmailNotification\/*/gi.test(e):i=c.emailNotificationPageInfo;break;case/\/V2\/VipMember\/*/gi.test(e):i=c.vipMemberIndexPageInfo;break;case/\/Login\/Index\/*/gi.test(e):i=c.loginIndexPageInfo;break;case/\/Question\/QuestionInsert\/*/gi.test(e):i=c.questionInsertPageInfo;break;case/\/v2\/browsingHistory\/*/gi.test(e):i=c.browsingHistory;break;case/\/v2\/CancelGoodsRequest\/list*/gi.test(e):i=c.cancelGoodsRequest;break;case/\/v2\/ReturnGoodsRequest\/list*/gi.test(e):i=c.returnGoodsRequest;break;case/\/v2\/ChangeGoodsRequest\/list*/gi.test(e):i=c.changeGoodsRequest;break;case/\/V2\/GameModule\/*/gi.test(e):i=c.gameModuleEvent;break;case/\/v2\/BackInStockAlertList\/*/gi.test(e):i=c.backInStockAlertList;break;case/\/v2\/SalePageComment\/list*/gi.test(e):i=c.salePageCommentList;break;case/(\/cms\/liff\/tall\/expressSalePage\/*)|(\/catalog\/expressSalePage\/*)/gi.test(e):i=c.expressSalePage;break;case/\/v2\/checkouts\/*/gi.test(e):i=c.expressCheckout;break;case/\/v2\/Static\/Official\/OfficialPreparation/gi.test(e):i=c.preparation;break;case/\/service_info/gi.test(e):i=c.serviceInfo;break;case/\/V2\/Static\/Official\/Officialclose/gi.test(e):i=c.officialClosed;break;case/\/v2\/Static\/Activity\/Activityclosed/gi.test(e):i=c.activityClosed;break;case/\/v2\/Static\/Activity\/ActivityPreparation/gi.test(e):i=c.activityPreparation;break;case/\/404V2/gi.test(e):i=c.notFoundPage;break;case/\/V2\/MyAccount\/InvitingFriends/gi.test(e):i=c.invitingFriends;break;case/\/V2\/MyAccount\/InvitingHistory/gi.test(e):i=c.invitingHistory;break;case/\/catalog\/inlineWrapper/gi.test(e):i=c.inlineWrapper;break;case/\/catalog\/stream/gi.test(e):i=c.streamPage;break;case/\/V2\/Brand$/gi.test(e):i=c.brandIndexWrapper;break;case/\/V2\/Brand\/\S/gi.test(e):i=c.brandPageWrapper;break;case/\/V2\/CRMShopMemberCard\/Description/gi.test(e):i=c.crmShopMemberCardDescPage;break;case/\/v2\/MembershipCard\/OuterSalesOrder\/*/gi.test(e):i=l.includes("#/consumption-history/online")?c.consumptionHistoryOnline:l.includes("#/consumption-history/offline")?c.consumptionHistoryOffline:"#/wallet-history/all"===l?c.walletHistoryAll:"#/wallet-history/card"===l?c.walletHistoryCard:"#/wallet-history/topped"===l?c.walletHistoryTopped:"#/point-history"===l?c.pointHistory:"#/stampRecord-history"===l?c.stampRecordHistory:c.outerSalesOrder;break;case/\/AddOnsSalePage\/Index\/*/gi.test(e):i=c.addOnsSalePage;break;case/\/AddOnsSalePage\/ExtraPurchaseList\/*/gi.test(e):i=c.extraPurchaseList}return i||c.unknownPageInfo},t.getPageInfoByPageType=function(e){return t.PageInfoMap.get(e)||c.unknownPageInfo},t.getPageUrl=function(e,n,r){void 0===r&&(r={id:""});var i="//"+e,o=(t.PageInfoMap.get(n)||{}).routerPathFunc,a=o?o(r):"";return n.includes("P78_")?i+"/catalog/inlineWrapper/"+("RESERVATION"===n.split("_")[1]?"TableReservation":"TakeoutOrDelivery"):""+i+a}},9698:function(e,t,n){"use strict";var r=this&&this.__createBinding||(Object.create?function(e,t,n,r){void 0===r&&(r=n);var i=Object.getOwnPropertyDescriptor(t,n);i&&!("get"in i?!t.__esModule:i.writable||i.configurable)||(i={enumerable:!0,get:function(){return t[n]}}),Object.defineProperty(e,r,i)}:function(e,t,n,r){void 0===r&&(r=n),e[r]=t[n]}),i=this&&this.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),o=this&&this.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var n in e)"default"!==n&&Object.prototype.hasOwnProperty.call(e,n)&&r(t,e,n);return i(t,e),t},a=this&&this.__awaiter||function(e,t,n,r){return new(n||(n=Promise))((function(i,o){function a(e){try{l(r.next(e))}catch(t){o(t)}}function c(e){try{l(r.throw(e))}catch(t){o(t)}}function l(e){var t;e.done?i(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,c)}l((r=r.apply(e,t||[])).next())}))},c=this&&this.__generator||function(e,t){var n,r,i,o,a={label:0,sent:function(){if(1&i[0])throw i[1];return i[1]},trys:[],ops:[]};return o={next:c(0),throw:c(1),return:c(2)},"function"==typeof Symbol&&(o[Symbol.iterator]=function(){return this}),o;function c(c){return function(l){return function(c){if(n)throw new TypeError("Generator is already executing.");for(;o&&(o=0,c[0]&&(a=0)),a;)try{if(n=1,r&&(i=2&c[0]?r.return:c[0]?r.throw||((i=r.return)&&i.call(r),0):r.next)&&!(i=i.call(r,c[1])).done)return i;switch(r=0,i&&(c=[2&c[0],i.value]),c[0]){case 0:case 1:i=c;break;case 4:return a.label++,{value:c[1],done:!1};case 5:a.label++,r=c[1],c=[0];continue;case 7:c=a.ops.pop(),a.trys.pop();continue;default:if(!((i=(i=a.trys).length>0&&i[i.length-1])||6!==c[0]&&2!==c[0])){a=0;continue}if(3===c[0]&&(!i||c[1]>i[0]&&c[1]<i[3])){a.label=c[1];break}if(6===c[0]&&a.label<i[1]){a.label=i[1],i=c;break}if(i&&a.label<i[2]){a.label=i[2],a.ops.push(c);break}i[2]&&a.ops.pop(),a.trys.pop();continue}c=t.call(e,a)}catch(l){c=[6,l],r=0}finally{n=i=0}if(5&c[0])throw c[1];return{value:c[0]?c[1]:void 0,done:!0}}([c,l])}}};Object.defineProperty(t,"__esModule",{value:!0}),t.fetchApi=t.requestBuilder=t.RequestMethod=void 0;var l,s=n(2403),u=o(n(5734)),g=n(2282);!function(e){e.DELETE="DELETE",e.FORM="FORM",e.GET="GET",e.HEAD="HEAD",e.POST="POST",e.PUT="PUT"}(l=t.RequestMethod||(t.RequestMethod={}));var d=function(e,t,n){return n!==l.PUT&&n!==l.POST&&n!==l.DELETE||e.set("Content-Type","application/json"),t&&e.set(t),e};t.requestBuilder=function(e,t,n){void 0===n&&(n="");var r=t.headers,i=t.body,o=t.formData,a=t.method;if(a===l.GET){var c=u.get(e);return d(c,r,a).query(n)}return a===l.POST?(c=u.post(e),d(c,r,a).query(n).send(i)):a===l.PUT?(c=u.put(e),d(c,r,a).query(n).send(i)):a===l.DELETE?(c=u.delete(e),d(c,r,a).query(n).send(i)):a===l.FORM?(c=u.post(e),d(c,r,a).query(n).send(o)):a===l.HEAD?u.head(e).query(n):void 0},t.fetchApi=function(e,n){return void 0===n&&(n={method:l.GET}),a(this,void 0,void 0,(function(){var r,i,o,a,l,u,d;return c(this,(function(c){switch(c.label){case 0:return c.trys.push([0,2,,3]),r=e.split("?")[0]||"",i=e.split("?")[1]||"",o=(0,t.requestBuilder)(r,n,i),a=n.timeout||{response:1e4,deadline:2e4},o?[4,o.timeout(a)]:[2,Promise.reject(new Error("request is null"))];case 1:return l=c.sent(),s.redirect[l.status]||s.retry[l.status]?[2,Promise.reject(new Error(l.body))]:[2,Promise.resolve(l.body)];case 2:return(u=c.sent()).timeout?(d=(n||{}).traceId,[2,Promise.reject((0,g.timeoutError)(u,d||""))]):[2,Promise.reject(u)];case 3:return[2]}}))}))}},2282:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.timeoutError=void 0,t.timeoutError=function(e,t){return{name:"TimeoutError",message:(null==e?void 0:e.message)||"Connection timeout. Please try again.",code:"".concat(t,"_E001")}}},794:(e,t,n)=>{"use strict";n.d(t,{K3:()=>d,KG:()=>l,XM:()=>s,Xn:()=>g,lB:()=>c});var r,i=n(5927),o=n.n(i),a=n(1004);function c(){return r||(r=o().createContext({})),r}var l,s=function(e){var t=e.client,n=e.children,r=c();return o().createElement(r.Consumer,null,(function(e){return void 0===e&&(e={}),t&&e.client!==t&&(e=Object.assign({},e,{client:t})),(0,a.V1)(e.client,5),o().createElement(r.Provider,{value:e},n)}))};!function(e){e[e.Query=0]="Query",e[e.Mutation=1]="Mutation",e[e.Subscription=2]="Subscription"}(l||(l={}));var u=new Map;function g(e){var t;switch(e){case l.Query:t="Query";break;case l.Mutation:t="Mutation";break;case l.Subscription:t="Subscription"}return t}function d(e){var t,n,r=u.get(e);if(r)return r;(0,a.V1)(!!e&&!!e.kind,1);var i=e.definitions.filter((function(e){return"FragmentDefinition"===e.kind})),o=e.definitions.filter((function(e){return"OperationDefinition"===e.kind&&"query"===e.operation})),c=e.definitions.filter((function(e){return"OperationDefinition"===e.kind&&"mutation"===e.operation})),s=e.definitions.filter((function(e){return"OperationDefinition"===e.kind&&"subscription"===e.operation}));(0,a.V1)(!i.length||o.length||c.length||s.length,2),(0,a.V1)(o.length+c.length+s.length<=1,3),n=o.length?l.Query:l.Mutation,o.length||c.length||(n=l.Subscription);var g=o.length?o:c.length?c:s;(0,a.V1)(1===g.length,4);var d=g[0];t=d.variableDefinitions||[];var I={name:d.name&&"Name"===d.name.kind?d.name.value:"data",type:n,variables:t};return u.set(e,I),I}},3978:(e,t,n)=>{"use strict";n.d(t,{IT:()=>g});var r=n(794),i=n(5215),o=n(5927),a=n(4937),c=n(2834),l=n(1004),s=function(){function e(e,t){this.isMounted=!1,this.previousOptions={},this.context={},this.options={},this.options=e||{},this.context=t||{}}return e.prototype.getOptions=function(){return this.options},e.prototype.setOptions=function(e,t){void 0===t&&(t=!1),t&&!(0,c.L)(this.options,e)&&(this.previousOptions=this.options),this.options=e},e.prototype.unmount=function(){this.isMounted=!1},e.prototype.refreshClient=function(){var e=this.options&&this.options.client||this.context&&this.context.client;(0,l.V1)(!!e,2);var t=!1;return e!==this.client&&(t=!0,this.client=e,this.cleanup()),{client:this.client,isNew:t}},e.prototype.verifyDocumentType=function(e,t){var n=(0,r.K3)(e);(0,r.Xn)(t),(0,r.Xn)(n.type),(0,l.V1)(n.type===t,3)},e}(),u=function(e){function t(t){var n=t.options,r=t.context,i=t.onNewData,o=e.call(this,n,r)||this;return o.previousData={},o.currentObservable={},o.runLazy=!1,o.runLazyQuery=function(e){o.cleanup(),o.runLazy=!0,o.lazyOptions=e,o.onNewData()},o.getExecuteResult=function(){var e=o.getQueryResult();return o.startQuerySubscription(),e},o.obsRefetch=function(e){return o.currentObservable.query.refetch(e)},o.obsFetchMore=function(e){return o.currentObservable.query.fetchMore(e)},o.obsUpdateQuery=function(e){return o.currentObservable.query.updateQuery(e)},o.obsStartPolling=function(e){o.currentObservable&&o.currentObservable.query&&o.currentObservable.query.startPolling(e)},o.obsStopPolling=function(){o.currentObservable&&o.currentObservable.query&&o.currentObservable.query.stopPolling()},o.obsSubscribeToMore=function(e){return o.currentObservable.query.subscribeToMore(e)},o.onNewData=i,o}return(0,i.C6)(t,e),t.prototype.execute=function(){this.refreshClient();var e=this.getOptions(),t=e.skip,n=e.query;return(t||n!==this.previousData.query)&&(this.removeQuerySubscription(),this.previousData.query=n),this.updateObservableQuery(),this.isMounted&&this.startQuerySubscription(),this.getExecuteSsrResult()||this.getExecuteResult()},t.prototype.executeLazy=function(){return this.runLazy?[this.runLazyQuery,this.execute()]:[this.runLazyQuery,{loading:!1,networkStatus:a.pT.ready,called:!1,data:void 0}]},t.prototype.fetchData=function(){var e=this.getOptions();if(e.skip||!1===e.ssr)return!1;var t=this.currentObservable.query;return!!t.getCurrentResult().loading&&t.result()},t.prototype.afterExecute=function(e){var t=(void 0===e?{}:e).lazy,n=void 0!==t&&t;return this.isMounted=!0,n&&!this.runLazy||this.handleErrorOrCompleted(),this.previousOptions=this.getOptions(),this.unmount.bind(this)},t.prototype.cleanup=function(){this.removeQuerySubscription(),delete this.currentObservable.query,delete this.previousData.result},t.prototype.getOptions=function(){var t=e.prototype.getOptions.call(this);return this.lazyOptions&&(t.variables=(0,i.Cl)((0,i.Cl)({},t.variables),this.lazyOptions.variables),t.context=(0,i.Cl)((0,i.Cl)({},t.context),this.lazyOptions.context)),this.runLazy&&delete t.skip,t},t.prototype.ssrInitiated=function(){return this.context&&this.context.renderPromises},t.prototype.getExecuteSsrResult=function(){var e,t=!1===this.getOptions().ssr,n=this.refreshClient().client.disableNetworkFetches,r=(0,i.Cl)({loading:!0,networkStatus:a.pT.loading,called:!0,data:void 0,stale:!1,client:this.client},this.observableQueryFields());return t&&(this.ssrInitiated()||n)?(this.previousData.result=r,r):(this.ssrInitiated()&&(e=this.context.renderPromises.addQueryPromise(this,this.getExecuteResult)||r),e)},t.prototype.prepareObservableQueryOptions=function(){var e=this.getOptions();this.verifyDocumentType(e.query,r.KG.Query);var t=e.displayName||"Query";return!this.ssrInitiated()||"network-only"!==e.fetchPolicy&&"cache-and-network"!==e.fetchPolicy||(e.fetchPolicy="cache-first"),(0,i.Cl)((0,i.Cl)({},e),{displayName:t,context:e.context,metadata:{reactComponent:{displayName:t}}})},t.prototype.initializeObservableQuery=function(){var e,t;if(this.ssrInitiated()&&(this.currentObservable.query=this.context.renderPromises.getSSRObservable(this.getOptions())),!this.currentObservable.query){var n=this.prepareObservableQueryOptions();this.previousData.observableQueryOptions=(0,i.Cl)((0,i.Cl)({},n),{children:null}),this.currentObservable.query=this.refreshClient().client.watchQuery((0,i.Cl)({},n)),this.ssrInitiated()&&(null===(t=null===(e=this.context)||void 0===e?void 0:e.renderPromises)||void 0===t||t.registerSSRObservable(this.currentObservable.query,n))}},t.prototype.updateObservableQuery=function(){if(this.currentObservable.query){var e=(0,i.Cl)((0,i.Cl)({},this.prepareObservableQueryOptions()),{children:null});(0,c.L)(e,this.previousData.observableQueryOptions)||(this.previousData.observableQueryOptions=e,this.currentObservable.query.setOptions(e).catch((function(){})))}else this.initializeObservableQuery()},t.prototype.startQuerySubscription=function(){var e=this;if(!this.currentObservable.subscription&&!this.getOptions().skip){var t=this.currentObservable.query;this.currentObservable.subscription=t.subscribe({next:function(t){var n=t.loading,r=t.networkStatus,i=t.data,o=e.previousData.result;o&&o.loading===n&&o.networkStatus===r&&(0,c.L)(o.data,i)||e.onNewData()},error:function(t){if(e.resubscribeToQuery(),!t.hasOwnProperty("graphQLErrors"))throw t;var n=e.previousData.result;(n&&n.loading||!(0,c.L)(t,e.previousData.error))&&(e.previousData.error=t,e.onNewData())}})}},t.prototype.resubscribeToQuery=function(){this.removeQuerySubscription();var e=this.currentObservable.query.getLastError(),t=this.currentObservable.query.getLastResult();this.currentObservable.query.resetLastResults(),this.startQuerySubscription(),Object.assign(this.currentObservable.query,{lastError:e,lastResult:t})},t.prototype.getQueryResult=function(){var e=this.observableQueryFields(),t=this.getOptions();if(t.skip)e=(0,i.Cl)((0,i.Cl)({},e),{data:void 0,error:void 0,loading:!1,called:!0});else{var n=this.currentObservable.query.getCurrentResult(),r=n.loading,o=n.partial,c=n.networkStatus,l=n.errors,s=n.error,u=n.data;if(l&&l.length>0&&(s=new a.K4({graphQLErrors:l})),e=(0,i.Cl)((0,i.Cl)({},e),{loading:r,networkStatus:c,error:s,called:!0}),r){var g=this.previousData.result&&this.previousData.result.data;e.data=g&&u?(0,i.Cl)((0,i.Cl)({},g),u):g||u}else if(s)Object.assign(e,{data:(this.currentObservable.query.getLastResult()||{}).data});else{var d=this.currentObservable.query.options.fetchPolicy;if(t.partialRefetch&&!u&&o&&"cache-only"!==d)return Object.assign(e,{loading:!0,networkStatus:a.pT.loading}),e.refetch(),e;e.data=u}}return e.client=this.client,this.previousData.loading=this.previousData.result&&this.previousData.result.loading||!1,this.previousData.result=e,this.currentObservable.query&&this.currentObservable.query.resetQueryStoreErrors(),e},t.prototype.handleErrorOrCompleted=function(){if(this.currentObservable.query&&this.previousData.result){var e=this.previousData.result,t=e.data,n=e.loading,r=e.error;if(!n){var i=this.getOptions(),o=i.query,a=i.variables,l=i.onCompleted,s=i.onError;if(this.previousOptions&&!this.previousData.loading&&(0,c.L)(this.previousOptions.query,o)&&(0,c.L)(this.previousOptions.variables,a))return;l&&!r?l(t):s&&r&&s(r)}}},t.prototype.removeQuerySubscription=function(){this.currentObservable.subscription&&(this.currentObservable.subscription.unsubscribe(),delete this.currentObservable.subscription)},t.prototype.observableQueryFields=function(){return{variables:this.currentObservable.query.variables,refetch:this.obsRefetch,fetchMore:this.obsFetchMore,updateQuery:this.obsUpdateQuery,startPolling:this.obsStartPolling,stopPolling:this.obsStopPolling,subscribeToMore:this.obsSubscribeToMore}},t}(s);function g(e,t){return function(e,t,n){void 0===n&&(n=!1);var a=(0,o.useContext)((0,r.lB)()),l=(0,o.useReducer)((function(e){return e+1}),0),s=l[0],g=l[1],d=t?(0,i.Cl)((0,i.Cl)({},t),{query:e}):{query:e},I=(0,o.useRef)(),p=I.current||new u({options:d,context:a,onNewData:function(){p.ssrInitiated()?g():Promise.resolve().then(g)}});p.setOptions(d),p.context=a,p.ssrInitiated()&&!I.current&&(I.current=p);var b,m,C,h=(b=function(){return n?p.executeLazy():p.execute()},m={options:(0,i.Cl)((0,i.Cl)({},d),{onError:void 0,onCompleted:void 0}),context:a,tick:s},(C=(0,o.useRef)()).current&&(0,c.L)(m,C.current.key)||(C.current={key:m,value:b()}),C.current.value),B=n?h[1]:h;return(0,o.useEffect)((function(){return I.current||(I.current=p),function(){return p.cleanup()}}),[]),(0,o.useEffect)((function(){return p.afterExecute({lazy:n})}),[B.loading,B.networkStatus,B.error,B.data]),h}(e,t,!1)}!function(e){function t(t){var n=t.options,i=t.context,o=t.result,a=t.setResult,c=e.call(this,n,i)||this;return c.runMutation=function(e){void 0===e&&(e={}),c.onMutationStart();var t=c.generateNewMutationId();return c.mutate(e).then((function(e){return c.onMutationCompleted(e,t),e})).catch((function(e){if(c.onMutationError(e,t),!c.getOptions().onError)throw e}))},c.verifyDocumentType(n.mutation,r.KG.Mutation),c.result=o,c.setResult=a,c.mostRecentMutationId=0,c}(0,i.C6)(t,e),t.prototype.execute=function(e){return this.isMounted=!0,this.verifyDocumentType(this.getOptions().mutation,r.KG.Mutation),e.client=this.refreshClient().client,[this.runMutation,e]},t.prototype.afterExecute=function(){return this.isMounted=!0,this.unmount.bind(this)},t.prototype.cleanup=function(){},t.prototype.mutate=function(e){var t=this.getOptions(),n=t.mutation,r=t.variables,o=t.optimisticResponse,a=t.update,c=t.context,l=void 0===c?{}:c,s=t.awaitRefetchQueries,u=void 0!==s&&s,g=t.fetchPolicy,d=(0,i.Cl)({},e),I=Object.assign({},r,d.variables);return delete d.variables,this.refreshClient().client.mutate((0,i.Cl)({mutation:n,optimisticResponse:o,refetchQueries:d.refetchQueries||this.getOptions().refetchQueries,awaitRefetchQueries:u,update:a,context:l,fetchPolicy:g,variables:I},d))},t.prototype.onMutationStart=function(){this.result.loading||this.getOptions().ignoreResults||this.updateResult({loading:!0,error:void 0,data:void 0,called:!0})},t.prototype.onMutationCompleted=function(e,t){var n=this.getOptions(),r=n.onCompleted,i=n.ignoreResults,o=e.data,c=e.errors,l=c&&c.length>0?new a.K4({graphQLErrors:c}):void 0;this.isMostRecentMutation(t)&&!i&&this.updateResult({called:!0,loading:!1,data:o,error:l}),r&&r(o)},t.prototype.onMutationError=function(e,t){var n=this.getOptions().onError;this.isMostRecentMutation(t)&&this.updateResult({loading:!1,error:e,data:void 0,called:!0}),n&&n(e)},t.prototype.generateNewMutationId=function(){return++this.mostRecentMutationId},t.prototype.isMostRecentMutation=function(e){return this.mostRecentMutationId===e},t.prototype.updateResult=function(e){!this.isMounted||this.previousResult&&(0,c.L)(this.previousResult,e)||(this.setResult(e),this.previousResult=e)}}(s),function(e){function t(t){var n=t.options,r=t.context,i=t.setResult,o=e.call(this,n,r)||this;return o.currentObservable={},o.setResult=i,o.initialize(n),o}(0,i.C6)(t,e),t.prototype.execute=function(e){if(!0===this.getOptions().skip)return this.cleanup(),{loading:!1,error:void 0,data:void 0,variables:this.getOptions().variables};var t=e;this.refreshClient().isNew&&(t=this.getLoadingResult());var n=this.getOptions().shouldResubscribe;return"function"==typeof n&&(n=!!n(this.getOptions())),!1!==n&&this.previousOptions&&Object.keys(this.previousOptions).length>0&&(this.previousOptions.subscription!==this.getOptions().subscription||!(0,c.L)(this.previousOptions.variables,this.getOptions().variables)||this.previousOptions.skip!==this.getOptions().skip)&&(this.cleanup(),t=this.getLoadingResult()),this.initialize(this.getOptions()),this.startSubscription(),this.previousOptions=this.getOptions(),(0,i.Cl)((0,i.Cl)({},t),{variables:this.getOptions().variables})},t.prototype.afterExecute=function(){this.isMounted=!0},t.prototype.cleanup=function(){this.endSubscription(),delete this.currentObservable.query},t.prototype.initialize=function(e){this.currentObservable.query||!0===this.getOptions().skip||(this.currentObservable.query=this.refreshClient().client.subscribe({query:e.subscription,variables:e.variables,fetchPolicy:e.fetchPolicy}))},t.prototype.startSubscription=function(){this.currentObservable.subscription||(this.currentObservable.subscription=this.currentObservable.query.subscribe({next:this.updateCurrentData.bind(this),error:this.updateError.bind(this),complete:this.completeSubscription.bind(this)}))},t.prototype.getLoadingResult=function(){return{loading:!0,error:void 0,data:void 0}},t.prototype.updateResult=function(e){this.isMounted&&this.setResult(e)},t.prototype.updateCurrentData=function(e){var t=this.getOptions().onSubscriptionData;this.updateResult({data:e.data,loading:!1,error:void 0}),t&&t({client:this.refreshClient().client,subscriptionData:e})},t.prototype.updateError=function(e){this.updateResult({error:e,loading:!1})},t.prototype.completeSubscription=function(){var e=this.getOptions().onSubscriptionComplete;e&&e(),this.endSubscription()},t.prototype.endSubscription=function(){this.currentObservable.subscription&&(this.currentObservable.subscription.unsubscribe(),delete this.currentObservable.subscription)}}(s),function(){function e(){this.queryPromises=new Map,this.queryInfoTrie=new Map}e.prototype.registerSSRObservable=function(e,t){this.lookupQueryInfo(t).observable=e},e.prototype.getSSRObservable=function(e){return this.lookupQueryInfo(e).observable},e.prototype.addQueryPromise=function(e,t){return this.lookupQueryInfo(e.getOptions()).seen?t():(this.queryPromises.set(e.getOptions(),new Promise((function(t){t(e.fetchData())}))),null)},e.prototype.hasPromises=function(){return this.queryPromises.size>0},e.prototype.consumeAndAwaitPromises=function(){var e=this,t=[];return this.queryPromises.forEach((function(n,r){e.lookupQueryInfo(r).seen=!0,t.push(n)})),this.queryPromises.clear(),Promise.all(t)},e.prototype.lookupQueryInfo=function(e){var t=this.queryInfoTrie,n=e.query,r=e.variables,i=t.get(n)||new Map;t.has(n)||t.set(n,i);var o=JSON.stringify(r),a=i.get(o)||{seen:!1,observable:null};return i.has(o)||i.set(o,a),a}}()},2834:(e,t,n)=>{"use strict";n.d(t,{L:()=>c});var r=Object.prototype,i=r.toString,o=r.hasOwnProperty,a=new Map;function c(e,t){try{return l(e,t)}finally{a.clear()}}function l(e,t){if(e===t)return!0;var n=i.call(e);if(n!==i.call(t))return!1;switch(n){case"[object Array]":if(e.length!==t.length)return!1;case"[object Object]":if(s(e,t))return!0;var r=Object.keys(e),a=Object.keys(t),c=r.length;if(c!==a.length)return!1;for(var u=0;u<c;++u)if(!o.call(t,r[u]))return!1;for(u=0;u<c;++u){var g=r[u];if(!l(e[g],t[g]))return!1}return!0;case"[object Error]":return e.name===t.name&&e.message===t.message;case"[object Number]":if(e!=e)return t!=t;case"[object Boolean]":case"[object Date]":return+e==+t;case"[object RegExp]":case"[object String]":return e==""+t;case"[object Map]":case"[object Set]":if(e.size!==t.size)return!1;if(s(e,t))return!0;for(var d=e.entries(),I="[object Map]"===n;;){var p=d.next();if(p.done)break;var b=p.value,m=b[0],C=b[1];if(!t.has(m))return!1;if(I&&!l(C,t.get(m)))return!1}return!0}return!1}function s(e,t){var n=a.get(e);if(n){if(n.has(t))return!0}else a.set(e,n=new Set);return n.add(t),!1}},8103:function(e,t){
/*!
 * accounting.js v0.4.1
 * Copyright 2014 Open Exchange Rates
 *
 * Freely distributable under the MIT license.
 * Portions of accounting.js are inspired or borrowed from underscore.js
 *
 * Full details and documentation:
 * http://openexchangerates.github.io/accounting.js/
 */
!function(){var n={version:"0.4.1",settings:{currency:{symbol:"$",format:"%s%v",decimal:".",thousand:",",precision:2,grouping:3},number:{precision:0,grouping:3,thousand:",",decimal:"."}}},r=Array.prototype.map,i=Array.isArray,o=Object.prototype.toString;function a(e){return!!(""===e||e&&e.charCodeAt&&e.substr)}function c(e){return i?i(e):"[object Array]"===o.call(e)}function l(e){return e&&"[object Object]"===o.call(e)}function s(e,t){var n;for(n in e=e||{},t=t||{})t.hasOwnProperty(n)&&null==e[n]&&(e[n]=t[n]);return e}function u(e,t,n){var i,o,a=[];if(!e)return a;if(r&&e.map===r)return e.map(t,n);for(i=0,o=e.length;i<o;i++)a[i]=t.call(n,e[i],i,e);return a}function g(e,t){return e=Math.round(Math.abs(e)),isNaN(e)?t:e}function d(e){var t=n.settings.currency.format;return"function"==typeof e&&(e=e()),a(e)&&e.match("%v")?{pos:e,neg:e.replace("-","").replace("%v","-%v"),zero:e}:e&&e.pos&&e.pos.match("%v")?e:a(t)?n.settings.currency.format={pos:t,neg:t.replace("%v","-%v"),zero:t}:t}var I=n.unformat=n.parse=function(e,t){if(c(e))return u(e,(function(e){return I(e,t)}));if("number"==typeof(e=e||0))return e;t=t||n.settings.number.decimal;var r=new RegExp("[^0-9-"+t+"]",["g"]),i=parseFloat((""+e).replace(/\((.*)\)/,"-$1").replace(r,"").replace(t,"."));return isNaN(i)?0:i},p=n.toFixed=function(e,t){t=g(t,n.settings.number.precision);var r=Math.pow(10,t);return(Math.round(n.unformat(e)*r)/r).toFixed(t)},b=n.formatNumber=n.format=function(e,t,r,i){if(c(e))return u(e,(function(e){return b(e,t,r,i)}));e=I(e);var o=s(l(t)?t:{precision:t,thousand:r,decimal:i},n.settings.number),a=g(o.precision),d=e<0?"-":"",m=parseInt(p(Math.abs(e||0),a),10)+"",C=m.length>3?m.length%3:0;return d+(C?m.substr(0,C)+o.thousand:"")+m.substr(C).replace(/(\d{3})(?=\d)/g,"$1"+o.thousand)+(a?o.decimal+p(Math.abs(e),a).split(".")[1]:"")},m=n.formatMoney=function(e,t,r,i,o,a){if(c(e))return u(e,(function(e){return m(e,t,r,i,o,a)}));e=I(e);var p=s(l(t)?t:{symbol:t,precision:r,thousand:i,decimal:o,format:a},n.settings.currency),C=d(p.format);return(e>0?C.pos:e<0?C.neg:C.zero).replace("%s",p.symbol).replace("%v",b(Math.abs(e),g(p.precision),p.thousand,p.decimal))};n.formatColumn=function(e,t,r,i,o,p){if(!e)return[];var m=s(l(t)?t:{symbol:t,precision:r,thousand:i,decimal:o,format:p},n.settings.currency),C=d(m.format),h=C.pos.indexOf("%s")<C.pos.indexOf("%v"),B=0,A=u(e,(function(e,t){if(c(e))return n.formatColumn(e,m);var r=((e=I(e))>0?C.pos:e<0?C.neg:C.zero).replace("%s",m.symbol).replace("%v",b(Math.abs(e),g(m.precision),m.thousand,m.decimal));return r.length>B&&(B=r.length),r}));return u(A,(function(e,t){return a(e)&&e.length<B?h?e.replace(m.symbol,m.symbol+new Array(B-e.length+1).join(" ")):new Array(B-e.length+1).join(" ")+e:e}))},e.exports&&(t=e.exports=n),t.accounting=n}()},8477:(e,t,n)=>{"use strict";n.d(t,{D9:()=>ae});var r=n(5215),i=n(5950);function o(e){return{kind:"Document",definitions:[{kind:"OperationDefinition",operation:"query",name:{kind:"Name",value:"GeneratedClientQuery"},selectionSet:a(e)}]}}function a(e){if("number"==typeof e||"boolean"==typeof e||"string"==typeof e||null==e)return null;if(Array.isArray(e))return a(e[0]);var t=[];return Object.keys(e).forEach((function(n){var r={kind:"Field",name:{kind:"Name",value:n},selectionSet:a(e[n])||void 0};t.push(r)})),{kind:"SelectionSet",selections:t}}var c,l={kind:"Document",definitions:[{kind:"OperationDefinition",operation:"query",name:null,variableDefinitions:null,directives:[],selectionSet:{kind:"SelectionSet",selections:[{kind:"Field",alias:null,name:{kind:"Name",value:"__typename"},arguments:[],directives:[],selectionSet:null}]}}]},s=function(){function e(){}return e.prototype.transformDocument=function(e){return e},e.prototype.transformForLink=function(e){return e},e.prototype.readQuery=function(e,t){return void 0===t&&(t=!1),this.read({query:e.query,variables:e.variables,optimistic:t})},e.prototype.readFragment=function(e,t){return void 0===t&&(t=!1),this.read({query:(0,i.ct)(e.fragment,e.fragmentName),variables:e.variables,rootId:e.id,optimistic:t})},e.prototype.writeQuery=function(e){this.write({dataId:"ROOT_QUERY",result:e.data,query:e.query,variables:e.variables})},e.prototype.writeFragment=function(e){this.write({dataId:e.id,result:e.data,variables:e.variables,query:(0,i.ct)(e.fragment,e.fragmentName)})},e.prototype.writeData=function(e){var t,n,r=e.id,i=e.data;if(void 0!==r){var c=null;try{c=this.read({rootId:r,optimistic:!1,query:l})}catch(g){}var s=c&&c.__typename||"__ClientData",u=Object.assign({__typename:s},i);this.writeFragment({id:r,fragment:(t=u,n=s,{kind:"Document",definitions:[{kind:"FragmentDefinition",typeCondition:{kind:"NamedType",name:{kind:"Name",value:n||"__FakeType"}},name:{kind:"Name",value:"GeneratedClientQuery"},selectionSet:a(t)}]}),data:u})}else this.writeQuery({query:o(i),data:i})},e}();c||(c={});var u=n(2834),g=null,d={},I=1,p="@wry/context:Slot",b=Array,m=b[p]||function(){var e=function(){function e(){this.id=["slot",I++,Date.now(),Math.random().toString(36).slice(2)].join(":")}return e.prototype.hasValue=function(){for(var e=g;e;e=e.parent)if(this.id in e.slots){var t=e.slots[this.id];if(t===d)break;return e!==g&&(g.slots[this.id]=t),!0}return g&&(g.slots[this.id]=d),!1},e.prototype.getValue=function(){if(this.hasValue())return g.slots[this.id]},e.prototype.withValue=function(e,t,n,r){var i,o=((i={__proto__:null})[this.id]=e,i),a=g;g={parent:a,slots:o};try{return t.apply(r,n)}finally{g=a}},e.bind=function(e){var t=g;return function(){var n=g;try{return g=t,e.apply(this,arguments)}finally{g=n}}},e.noContext=function(e,t,n){if(!g)return e.apply(n,t);var r=g;try{return g=null,e.apply(n,t)}finally{g=r}},e}();try{Object.defineProperty(b,p,{value:b[p]=e,enumerable:!1,writable:!1,configurable:!1})}finally{return e}}();function C(){}m.bind,m.noContext;var h=function(){function e(e,t){void 0===e&&(e=1/0),void 0===t&&(t=C),this.max=e,this.dispose=t,this.map=new Map,this.newest=null,this.oldest=null}return e.prototype.has=function(e){return this.map.has(e)},e.prototype.get=function(e){var t=this.getEntry(e);return t&&t.value},e.prototype.getEntry=function(e){var t=this.map.get(e);if(t&&t!==this.newest){var n=t.older,r=t.newer;r&&(r.older=n),n&&(n.newer=r),t.older=this.newest,t.older.newer=t,t.newer=null,this.newest=t,t===this.oldest&&(this.oldest=r)}return t},e.prototype.set=function(e,t){var n=this.getEntry(e);return n?n.value=t:(n={key:e,value:t,newer:null,older:this.newest},this.newest&&(this.newest.newer=n),this.newest=n,this.oldest=this.oldest||n,this.map.set(e,n),n.value)},e.prototype.clean=function(){for(;this.oldest&&this.map.size>this.max;)this.delete(this.oldest.key)},e.prototype.delete=function(e){var t=this.map.get(e);return!!t&&(t===this.newest&&(this.newest=t.older),t===this.oldest&&(this.oldest=t.newer),t.newer&&(t.newer.older=t.older),t.older&&(t.older.newer=t.newer),this.map.delete(e),this.dispose(t.value,e),!0)},e}(),B=new m,A=[],y=[];function f(e,t){if(!e)throw new Error(t||"assertion failure")}function G(e){switch(e.length){case 0:throw new Error("unknown value");case 1:return e[0];case 2:throw e[1]}}var Q=function(){function e(t,n){this.fn=t,this.args=n,this.parents=new Set,this.childValues=new Map,this.dirtyChildren=null,this.dirty=!0,this.recomputing=!1,this.value=[],++e.count}return e.prototype.recompute=function(){if(f(!this.recomputing,"already recomputing"),function(e){var t=B.getValue();if(t)return e.parents.add(t),t.childValues.has(e)||t.childValues.set(e,[]),v(e)?S(t,e):X(t,e),t}(this)||!x(this))return v(this)?function(e){var t=U(e);return B.withValue(e,F,[e]),function(e){if("function"==typeof e.subscribe)try{R(e),e.unsubscribe=e.subscribe.apply(null,e.args)}catch(t){return e.setDirty(),!1}return!0}(e)&&function(e){e.dirty=!1,v(e)||E(e)}(e),t.forEach(x),G(e.value)}(this):G(this.value)},e.prototype.setDirty=function(){this.dirty||(this.dirty=!0,this.value.length=0,Z(this),R(this))},e.prototype.dispose=function(){var e=this;U(this).forEach(x),R(this),this.parents.forEach((function(t){t.setDirty(),N(t,e)}))},e.count=0,e}();function F(e){e.recomputing=!0,e.value.length=0;try{e.value[0]=e.fn.apply(null,e.args)}catch(t){e.value[1]=t}e.recomputing=!1}function v(e){return e.dirty||!(!e.dirtyChildren||!e.dirtyChildren.size)}function Z(e){e.parents.forEach((function(t){return S(t,e)}))}function E(e){e.parents.forEach((function(t){return X(t,e)}))}function S(e,t){if(f(e.childValues.has(t)),f(v(t)),e.dirtyChildren){if(e.dirtyChildren.has(t))return}else e.dirtyChildren=y.pop()||new Set;e.dirtyChildren.add(t),Z(e)}function X(e,t){f(e.childValues.has(t)),f(!v(t));var n=e.childValues.get(t);0===n.length?e.childValues.set(t,t.value.slice(0)):function(e,t){var n=e.length;return n>0&&n===t.length&&e[n-1]===t[n-1]}(n,t.value)||e.setDirty(),T(e,t),v(e)||E(e)}function T(e,t){var n=e.dirtyChildren;n&&(n.delete(t),0===n.size&&(y.length<100&&y.push(n),e.dirtyChildren=null))}function x(e){return 0===e.parents.size&&"function"==typeof e.reportOrphan&&!0===e.reportOrphan()}function U(e){var t=A;return e.childValues.size>0&&(t=[],e.childValues.forEach((function(n,r){N(e,r),t.push(r)}))),f(null===e.dirtyChildren),t}function N(e,t){t.parents.delete(e),e.childValues.delete(t),T(e,t)}function R(e){var t=e.unsubscribe;"function"==typeof t&&(e.unsubscribe=void 0,t())}var O=function(){function e(e){this.weakness=e}return e.prototype.lookup=function(){for(var e=[],t=0;t<arguments.length;t++)e[t]=arguments[t];return this.lookupArray(e)},e.prototype.lookupArray=function(e){var t=this;return e.forEach((function(e){return t=t.getChildTrie(e)})),t.data||(t.data=Object.create(null))},e.prototype.getChildTrie=function(t){var n=this.weakness&&function(e){switch(typeof e){case"object":if(null===e)break;case"function":return!0}return!1}(t)?this.weak||(this.weak=new WeakMap):this.strong||(this.strong=new Map),r=n.get(t);return r||n.set(t,r=new e(this.weakness)),r},e}(),V=new O("function"==typeof WeakMap);function W(){for(var e=[],t=0;t<arguments.length;t++)e[t]=arguments[t];return V.lookupArray(e)}var _=new Set;function w(e,t){void 0===t&&(t=Object.create(null));var n=new h(t.max||Math.pow(2,16),(function(e){return e.dispose()})),r=!!t.disposable,i=t.makeCacheKey||W;function o(){if(!r||B.hasValue()){var o=i.apply(null,arguments);if(void 0===o)return e.apply(null,arguments);var a=Array.prototype.slice.call(arguments),c=n.get(o);c?c.args=a:(c=new Q(e,a),n.set(o,c),c.subscribe=t.subscribe,r&&(c.reportOrphan=function(){return n.delete(o)}));var l=c.recompute();return n.set(o,c),_.add(n),B.hasValue()||(_.forEach((function(e){return e.clean()})),_.clear()),r?void 0:l}}return o.dirty=function(){var e=i.apply(null,arguments),t=void 0!==e&&n.get(e);t&&t.setDirty()},o}var H=n(1004),Y=!1;function k(){var e=!Y;return(0,i.Nu)()||(Y=!0),e}var D=function(){function e(){}return e.prototype.ensureReady=function(){return Promise.resolve()},e.prototype.canBypassInit=function(){return!0},e.prototype.match=function(e,t,n){var r=n.store.get(e.id),i="ROOT_QUERY"===e.id;if(!r)return i;var o=r.__typename,a=void 0===o?i&&"Query":o;return a&&a===t||(k(),"heuristic")},e}(),L=(function(){function e(e){e&&e.introspectionQueryResultData?(this.possibleTypesMap=this.parseIntrospectionResult(e.introspectionQueryResultData),this.isReady=!0):this.isReady=!1,this.match=this.match.bind(this)}e.prototype.match=function(e,t,n){(0,H.V1)(this.isReady,1);var r=n.store.get(e.id),i="ROOT_QUERY"===e.id;if(!r)return i;var o=r.__typename,a=void 0===o?i&&"Query":o;if((0,H.V1)(a,2),a===t)return!0;var c=this.possibleTypesMap[t];return!!(a&&c&&c.indexOf(a)>-1)},e.prototype.parseIntrospectionResult=function(e){var t={};return e.__schema.types.forEach((function(e){"UNION"!==e.kind&&"INTERFACE"!==e.kind||(t[e.name]=e.possibleTypes.map((function(e){return e.name})))})),t}}(),Object.prototype.hasOwnProperty),P=function(){function e(e){var t=this;void 0===e&&(e=Object.create(null)),this.data=e,this.depend=w((function(e){return t.data[e]}),{disposable:!0,makeCacheKey:function(e){return e}})}return e.prototype.toObject=function(){return this.data},e.prototype.get=function(e){return this.depend(e),this.data[e]},e.prototype.set=function(e,t){t!==this.data[e]&&(this.data[e]=t,this.depend.dirty(e))},e.prototype.delete=function(e){L.call(this.data,e)&&(delete this.data[e],this.depend.dirty(e))},e.prototype.clear=function(){this.replace(null)},e.prototype.replace=function(e){var t=this;e?(Object.keys(e).forEach((function(n){t.set(n,e[n])})),Object.keys(this.data).forEach((function(n){L.call(e,n)||t.delete(n)}))):Object.keys(this.data).forEach((function(e){t.delete(e)}))},e}();function J(e){return new P(e)}var M=function(){function e(e){var t=this,n=void 0===e?{}:e,r=n.cacheKeyRoot,o=void 0===r?new O(i.et):r,a=n.freezeResults,c=void 0!==a&&a,l=this,s=l.executeStoreQuery,u=l.executeSelectionSet,g=l.executeSubSelectedArray;this.freezeResults=c,this.executeStoreQuery=w((function(e){return s.call(t,e)}),{makeCacheKey:function(e){var t=e.query,n=e.rootValue,r=e.contextValue,i=e.variableValues,a=e.fragmentMatcher;if(r.store instanceof P)return o.lookup(r.store,t,a,JSON.stringify(i),n.id)}}),this.executeSelectionSet=w((function(e){return u.call(t,e)}),{makeCacheKey:function(e){var t=e.selectionSet,n=e.rootValue,r=e.execContext;if(r.contextValue.store instanceof P)return o.lookup(r.contextValue.store,t,r.fragmentMatcher,JSON.stringify(r.variableValues),n.id)}}),this.executeSubSelectedArray=w((function(e){return g.call(t,e)}),{makeCacheKey:function(e){var t=e.field,n=e.array,r=e.execContext;if(r.contextValue.store instanceof P)return o.lookup(r.contextValue.store,t,n,JSON.stringify(r.variableValues))}})}return e.prototype.readQueryFromStore=function(e){return this.diffQueryAgainstStore((0,r.Cl)((0,r.Cl)({},e),{returnPartialData:!1})).result},e.prototype.diffQueryAgainstStore=function(e){var t=e.store,n=e.query,r=e.variables,o=e.previousResult,a=e.returnPartialData,c=void 0===a||a,l=e.rootId,s=void 0===l?"ROOT_QUERY":l,g=e.fragmentMatcherFunction,d=e.config,I=(0,i.AT)(n);r=(0,i.kp)({},(0,i.wY)(I),r);var p={store:t,dataIdFromObject:d&&d.dataIdFromObject,cacheRedirects:d&&d.cacheRedirects||{}},b=this.executeStoreQuery({query:n,rootValue:{type:"id",id:s,generated:!0,typename:"Query"},contextValue:p,variableValues:r,fragmentMatcher:g}),m=b.missing&&b.missing.length>0;return m&&!c&&b.missing.forEach((function(e){if(!e.tolerable)throw new H.zU(8)})),o&&(0,u.L)(o,b.result)&&(b.result=o),{result:b.result,complete:!m}},e.prototype.executeStoreQuery=function(e){var t=e.query,n=e.rootValue,r=e.contextValue,o=e.variableValues,a=e.fragmentMatcher,c=void 0===a?j:a,l=(0,i.Vn)(t),s=(0,i.zK)(t),u={query:t,fragmentMap:(0,i.JG)(s),contextValue:r,variableValues:o,fragmentMatcher:c};return this.executeSelectionSet({selectionSet:l.selectionSet,rootValue:n,execContext:u})},e.prototype.executeSelectionSet=function(e){var t=this,n=e.selectionSet,o=e.rootValue,a=e.execContext,c=a.fragmentMap,l=a.contextValue,s=a.variableValues,u={result:null},g=[],d=l.store.get(o.id),I=d&&d.__typename||"ROOT_QUERY"===o.id&&"Query"||void 0;function p(e){var t;return e.missing&&(u.missing=u.missing||[],(t=u.missing).push.apply(t,e.missing)),e.result}return n.selections.forEach((function(e){var n;if((0,i.MS)(e,s))if((0,i.dt)(e)){var u=p(t.executeField(d,I,e,a));void 0!==u&&g.push(((n={})[(0,i.ue)(e)]=u,n))}else{var b=void 0;if((0,i.kd)(e))b=e;else if(!(b=c[e.name.value]))throw new H.zU(9);var m=b.typeCondition&&b.typeCondition.name.value,C=!m||a.fragmentMatcher(o,m,l);if(C){var h=t.executeSelectionSet({selectionSet:b.selectionSet,rootValue:o,execContext:a});"heuristic"===C&&h.missing&&(h=(0,r.Cl)((0,r.Cl)({},h),{missing:h.missing.map((function(e){return(0,r.Cl)((0,r.Cl)({},e),{tolerable:!0})}))})),g.push(p(h))}}})),u.result=(0,i.IM)(g),this.freezeResults,u},e.prototype.executeField=function(e,t,n,r){var o=r.variableValues,a=r.contextValue,c=function(e,t,n,r,o,a){var c=a.directives,l=n;(r||c)&&(l=(0,i.o5)(l,r,c));var s=void 0;if(e&&void 0===(s=e[l])&&o.cacheRedirects&&"string"==typeof t){var u=o.cacheRedirects[t];if(u){var g=u[n];g&&(s=g(e,r,{getCacheKey:function(e){var t=o.dataIdFromObject(e);return t&&(0,i.Uw)({id:t,typename:e.__typename})}}))}}return void 0===s?{result:s,missing:[{object:e,fieldName:l,tolerable:!1}]}:((0,i.Wi)(s)&&(s=s.json),{result:s})}(e,t,n.name.value,(0,i.MB)(n,o),a,{resultKey:(0,i.ue)(n),directives:(0,i.i2)(n,o)});return Array.isArray(c.result)?this.combineExecResults(c,this.executeSubSelectedArray({field:n,array:c.result,execContext:r})):n.selectionSet?null==c.result?c:this.combineExecResults(c,this.executeSelectionSet({selectionSet:n.selectionSet,rootValue:c.result,execContext:r})):(z(n,c.result),this.freezeResults,c)},e.prototype.combineExecResults=function(){for(var e,t=[],n=0;n<arguments.length;n++)t[n]=arguments[n];return t.forEach((function(t){t.missing&&(e=e||[]).push.apply(e,t.missing)})),{result:t.pop().result,missing:e}},e.prototype.executeSubSelectedArray=function(e){var t,n=this,r=e.field,i=e.array,o=e.execContext;function a(e){return e.missing&&(t=t||[]).push.apply(t,e.missing),e.result}return i=i.map((function(e){return null===e?null:Array.isArray(e)?a(n.executeSubSelectedArray({field:r,array:e,execContext:o})):r.selectionSet?a(n.executeSelectionSet({selectionSet:r.selectionSet,rootValue:e,execContext:o})):(z(r,e),e)})),this.freezeResults,{result:i,missing:t}},e}();function z(e,t){if(!e.selectionSet&&(0,i.d)(t))throw new H.zU(10)}function j(){return!0}var K=function(){function e(e){void 0===e&&(e=Object.create(null)),this.data=e}return e.prototype.toObject=function(){return this.data},e.prototype.get=function(e){return this.data[e]},e.prototype.set=function(e,t){this.data[e]=t},e.prototype.delete=function(e){this.data[e]=void 0},e.prototype.clear=function(){this.data=Object.create(null)},e.prototype.replace=function(e){this.data=e||Object.create(null)},e}(),q=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.type="WriteError",t}return(0,r.C6)(t,e),t}(Error),$=function(){function e(){}return e.prototype.writeQueryToStore=function(e){var t=e.query,n=e.result,r=e.store,i=void 0===r?J():r,o=e.variables,a=e.dataIdFromObject,c=e.fragmentMatcherFunction;return this.writeResultToStore({dataId:"ROOT_QUERY",result:n,document:t,store:i,variables:o,dataIdFromObject:a,fragmentMatcherFunction:c})},e.prototype.writeResultToStore=function(e){var t=e.dataId,n=e.result,r=e.document,o=e.store,a=void 0===o?J():o,c=e.variables,l=e.dataIdFromObject,s=e.fragmentMatcherFunction,u=(0,i.Vu)(r);try{return this.writeSelectionSetToStore({result:n,dataId:t,selectionSet:u.selectionSet,context:{store:a,processedData:{},variables:(0,i.kp)({},(0,i.wY)(u),c),dataIdFromObject:l,fragmentMap:(0,i.JG)((0,i.zK)(r)),fragmentMatcherFunction:s}})}catch(g){throw function(e,t){var n=new q("Error writing result to store for query:\n "+JSON.stringify(t));return n.message+="\n"+e.message,n.stack=e.stack,n}(g,r)}},e.prototype.writeSelectionSetToStore=function(e){var t=this,n=e.result,r=e.dataId,o=e.selectionSet,a=e.context,c=a.variables,l=a.store,s=a.fragmentMap;return o.selections.forEach((function(e){var o;if((0,i.MS)(e,c))if((0,i.dt)(e)){var l=(0,i.ue)(e),u=n[l];if(void 0!==u)t.writeFieldToStore({dataId:r,value:u,field:e,context:a});else{var g=!1,d=!1;e.directives&&e.directives.length&&(g=e.directives.some((function(e){return e.name&&"defer"===e.name.value})),d=e.directives.some((function(e){return e.name&&"client"===e.name.value}))),!g&&!d&&a.fragmentMatcherFunction}}else{var I=void 0;(0,i.kd)(e)?I=e:(I=(s||{})[e.name.value],(0,H.V1)(I,3));var p=!0;if(a.fragmentMatcherFunction&&I.typeCondition){var b=r||"self",m=(0,i.Uw)({id:b,typename:void 0}),C={store:new K((o={},o[b]=n,o)),cacheRedirects:{}},h=a.fragmentMatcherFunction(m,I.typeCondition.name.value,C);(0,i.KV)(),p=!!h}p&&t.writeSelectionSetToStore({result:n,selectionSet:I.selectionSet,dataId:r,context:a})}})),l},e.prototype.writeFieldToStore=function(e){var t,n,o,a=e.field,c=e.value,l=e.dataId,s=e.context,g=s.variables,d=s.dataIdFromObject,I=s.store,p=(0,i.Ii)(a,g);if(a.selectionSet&&null!==c)if(Array.isArray(c)){var b=l+"."+p;n=this.processArrayValue(c,b,a.selectionSet,s)}else{var m=l+"."+p,C=!0;if(ee(m)||(m="$"+m),d){var h=d(c);(0,H.V1)(!h||!ee(h),4),(h||"number"==typeof h&&0===h)&&(m=h,C=!1)}ne(m,a,s.processedData)||this.writeSelectionSetToStore({dataId:m,result:c,selectionSet:a.selectionSet,context:s});var B=c.__typename;n=(0,i.Uw)({id:m,typename:B},C);var A=(o=I.get(l))&&o[p];if(A!==n&&(0,i.d)(A)){var y=void 0!==A.typename,f=void 0!==B,G=y&&f&&A.typename!==B;(0,H.V1)(!C||A.generated||G,5),(0,H.V1)(!y||f,6),A.generated&&(G?C||I.delete(A.id):te(A.id,n.id,I))}}else n=null!=c&&"object"==typeof c?{type:"json",json:c}:c;(o=I.get(l))&&(0,u.L)(n,o[p])||I.set(l,(0,r.Cl)((0,r.Cl)({},o),((t={})[p]=n,t)))},e.prototype.processArrayValue=function(e,t,n,r){var o=this;return e.map((function(e,a){if(null===e)return null;var c=t+"."+a;if(Array.isArray(e))return o.processArrayValue(e,c,n,r);var l=!0;if(r.dataIdFromObject){var s=r.dataIdFromObject(e);s&&(c=s,l=!1)}return ne(c,n,r.processedData)||o.writeSelectionSetToStore({dataId:c,result:e,selectionSet:n,context:r}),(0,i.Uw)({id:c,typename:e.__typename},l)}))},e}();function ee(e){return"$"===e[0]}function te(e,t,n){if(e===t)return!1;var o=n.get(e),a=n.get(t),c=!1;Object.keys(o).forEach((function(e){var t=o[e],r=a[e];(0,i.d)(t)&&ee(t.id)&&(0,i.d)(r)&&!(0,u.L)(t,r)&&te(t.id,r.id,n)&&(c=!0)})),n.delete(e);var l=(0,r.Cl)((0,r.Cl)({},o),a);return(0,u.L)(l,a)?c:(n.set(t,l),!0)}function ne(e,t,n){if(!n)return!1;if(n[e]){if(n[e].indexOf(t)>=0)return!0;n[e].push(t)}else n[e]=[t];return!1}var re={fragmentMatcher:new D,dataIdFromObject:function(e){if(e.__typename){if(void 0!==e.id)return e.__typename+":"+e.id;if(void 0!==e._id)return e.__typename+":"+e._id}return null},addTypename:!0,resultCaching:!0,freezeResults:!1},ie=Object.prototype.hasOwnProperty,oe=function(e){function t(t,n,r){var i=e.call(this,Object.create(null))||this;return i.optimisticId=t,i.parent=n,i.transaction=r,i}return(0,r.C6)(t,e),t.prototype.toObject=function(){return(0,r.Cl)((0,r.Cl)({},this.parent.toObject()),this.data)},t.prototype.get=function(e){return ie.call(this.data,e)?this.data[e]:this.parent.get(e)},t}(K),ae=function(e){function t(t){void 0===t&&(t={});var n=e.call(this)||this;n.watches=new Set,n.typenameDocumentCache=new Map,n.cacheKeyRoot=new O(i.et),n.silenceBroadcast=!1,n.config=(0,r.Cl)((0,r.Cl)({},re),t),n.config.customResolvers&&(n.config.cacheRedirects=n.config.customResolvers),n.config.cacheResolvers&&(n.config.cacheRedirects=n.config.cacheResolvers),n.addTypename=!!n.config.addTypename,n.data=n.config.resultCaching?new P:new K,n.optimisticData=n.data,n.storeWriter=new $,n.storeReader=new M({cacheKeyRoot:n.cacheKeyRoot,freezeResults:t.freezeResults});var o=n,a=o.maybeBroadcastWatch;return n.maybeBroadcastWatch=w((function(e){return a.call(n,e)}),{makeCacheKey:function(e){if(!e.optimistic&&!e.previousResult)return o.data instanceof P?o.cacheKeyRoot.lookup(e.query,JSON.stringify(e.variables)):void 0}}),n}return(0,r.C6)(t,e),t.prototype.restore=function(e){return e&&this.data.replace(e),this},t.prototype.extract=function(e){return void 0===e&&(e=!1),(e?this.optimisticData:this.data).toObject()},t.prototype.read=function(e){if("string"==typeof e.rootId&&void 0===this.data.get(e.rootId))return null;var t=this.config.fragmentMatcher,n=t&&t.match;return this.storeReader.readQueryFromStore({store:e.optimistic?this.optimisticData:this.data,query:this.transformDocument(e.query),variables:e.variables,rootId:e.rootId,fragmentMatcherFunction:n,previousResult:e.previousResult,config:this.config})||null},t.prototype.write=function(e){var t=this.config.fragmentMatcher,n=t&&t.match;this.storeWriter.writeResultToStore({dataId:e.dataId,result:e.result,variables:e.variables,document:this.transformDocument(e.query),store:this.data,dataIdFromObject:this.config.dataIdFromObject,fragmentMatcherFunction:n}),this.broadcastWatches()},t.prototype.diff=function(e){var t=this.config.fragmentMatcher,n=t&&t.match;return this.storeReader.diffQueryAgainstStore({store:e.optimistic?this.optimisticData:this.data,query:this.transformDocument(e.query),variables:e.variables,returnPartialData:e.returnPartialData,previousResult:e.previousResult,fragmentMatcherFunction:n,config:this.config})},t.prototype.watch=function(e){var t=this;return this.watches.add(e),function(){t.watches.delete(e)}},t.prototype.evict=function(e){throw new H.zU(7)},t.prototype.reset=function(){return this.data.clear(),this.broadcastWatches(),Promise.resolve()},t.prototype.removeOptimistic=function(e){for(var t=[],n=0,r=this.optimisticData;r instanceof oe;)r.optimisticId===e?++n:t.push(r),r=r.parent;if(n>0){for(this.optimisticData=r;t.length>0;){var i=t.pop();this.performTransaction(i.transaction,i.optimisticId)}this.broadcastWatches()}},t.prototype.performTransaction=function(e,t){var n=this.data,r=this.silenceBroadcast;this.silenceBroadcast=!0,"string"==typeof t&&(this.data=this.optimisticData=new oe(t,this.optimisticData,e));try{e(this)}finally{this.silenceBroadcast=r,this.data=n}this.broadcastWatches()},t.prototype.recordOptimisticTransaction=function(e,t){return this.performTransaction(e,t)},t.prototype.transformDocument=function(e){if(this.addTypename){var t=this.typenameDocumentCache.get(e);return t||(t=(0,i.XY)(e),this.typenameDocumentCache.set(e,t),this.typenameDocumentCache.set(t,t)),t}return e},t.prototype.broadcastWatches=function(){var e=this;this.silenceBroadcast||this.watches.forEach((function(t){return e.maybeBroadcastWatch(t)}))},t.prototype.maybeBroadcastWatch=function(e){e.callback(this.diff({query:e.query,variables:e.variables,previousResult:e.previousResult&&e.previousResult(),optimistic:e.optimistic}))},t}(s)},4937:(e,t,n)=>{"use strict";n.d(t,{K4:()=>m,Ri:()=>E,pT:()=>r});var r,i=n(5215),o=n(5950),a=n(2834),c=n(8117),l=n(9356),s=n(9423),u=n(1004),g=n(9111);function d(e){return e<7}!function(e){e[e.loading=1]="loading",e[e.setVariables=2]="setVariables",e[e.fetchMore=3]="fetchMore",e[e.refetch=4]="refetch",e[e.poll=6]="poll",e[e.ready=7]="ready",e[e.error=8]="error"}(r||(r={}));var I=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return(0,i.C6)(t,e),t.prototype[s.A]=function(){return this},t.prototype["@@observable"]=function(){return this},t}(c.A);function p(e){return Array.isArray(e)&&e.length>0}var b,m=function(e){function t(n){var r,i,o=n.graphQLErrors,a=n.networkError,c=n.errorMessage,l=n.extraInfo,s=e.call(this,c)||this;return s.graphQLErrors=o||[],s.networkError=a||null,s.message=c||(i="",p((r=s).graphQLErrors)&&r.graphQLErrors.forEach((function(e){var t=e?e.message:"Error message not found.";i+="GraphQL error: "+t+"\n"})),r.networkError&&(i+="Network error: "+r.networkError.message+"\n"),i=i.replace(/\n$/,"")),s.extraInfo=l,s.__proto__=t.prototype,s}return(0,i.C6)(t,e),t}(Error);!function(e){e[e.normal=1]="normal",e[e.refetch=2]="refetch",e[e.poll=3]="poll"}(b||(b={}));var C=function(e){function t(t){var n=t.queryManager,r=t.options,i=t.shouldSubscribe,a=void 0===i||i,c=e.call(this,(function(e){return c.onSubscribe(e)}))||this;c.observers=new Set,c.subscriptions=new Set,c.isTornDown=!1,c.options=r,c.variables=r.variables||{},c.queryId=n.generateQueryId(),c.shouldSubscribe=a;var l=(0,o.Vu)(r.query);return c.queryName=l&&l.name&&l.name.value,c.queryManager=n,c}return(0,i.C6)(t,e),t.prototype.result=function(){var e=this;return new Promise((function(t,n){var r={next:function(n){t(n),e.observers.delete(r),e.observers.size||e.queryManager.removeQuery(e.queryId),setTimeout((function(){i.unsubscribe()}),0)},error:n},i=e.subscribe(r)}))},t.prototype.currentResult=function(){var e=this.getCurrentResult();return void 0===e.data&&(e.data={}),e},t.prototype.getCurrentResult=function(){if(this.isTornDown){var e=this.lastResult;return{data:!this.lastError&&e&&e.data||void 0,error:this.lastError,loading:!1,networkStatus:r.error}}var t,n,o,a=this.queryManager.getCurrentQueryResult(this),c=a.data,l=a.partial,s=this.queryManager.queryStore.get(this.queryId),u=this.options.fetchPolicy,g="network-only"===u||"no-cache"===u;if(s){var I=s.networkStatus;if(n=s,void 0===(o=this.options.errorPolicy)&&(o="none"),n&&(n.networkError||"none"===o&&p(n.graphQLErrors)))return{data:void 0,loading:!1,networkStatus:I,error:new m({graphQLErrors:s.graphQLErrors,networkError:s.networkError})};s.variables&&(this.options.variables=(0,i.Cl)((0,i.Cl)({},this.options.variables),s.variables),this.variables=this.options.variables),t={data:c,loading:d(I),networkStatus:I},s.graphQLErrors&&"all"===this.options.errorPolicy&&(t.errors=s.graphQLErrors)}else{var b=g||l&&"cache-only"!==u;t={data:c,loading:b,networkStatus:b?r.loading:r.ready}}return l||this.updateLastResult((0,i.Cl)((0,i.Cl)({},t),{stale:!1})),(0,i.Cl)((0,i.Cl)({},t),{partial:l})},t.prototype.isDifferentFromLastResult=function(e){var t=this.lastResultSnapshot;return!(t&&e&&t.networkStatus===e.networkStatus&&t.stale===e.stale&&(0,a.L)(t.data,e.data))},t.prototype.getLastResult=function(){return this.lastResult},t.prototype.getLastError=function(){return this.lastError},t.prototype.resetLastResults=function(){delete this.lastResult,delete this.lastResultSnapshot,delete this.lastError,this.isTornDown=!1},t.prototype.resetQueryStoreErrors=function(){var e=this.queryManager.queryStore.get(this.queryId);e&&(e.networkError=null,e.graphQLErrors=[])},t.prototype.refetch=function(e){var t=this.options.fetchPolicy;return"cache-only"===t?Promise.reject(new u.zU(1)):("no-cache"!==t&&"cache-and-network"!==t&&(t="network-only"),(0,a.L)(this.variables,e)||(this.variables=(0,i.Cl)((0,i.Cl)({},this.variables),e)),(0,a.L)(this.options.variables,this.variables)||(this.options.variables=(0,i.Cl)((0,i.Cl)({},this.options.variables),this.variables)),this.queryManager.fetchQuery(this.queryId,(0,i.Cl)((0,i.Cl)({},this.options),{fetchPolicy:t}),b.refetch))},t.prototype.fetchMore=function(e){var t=this;(0,u.V1)(e.updateQuery,2);var n=(0,i.Cl)((0,i.Cl)({},e.query?e:(0,i.Cl)((0,i.Cl)((0,i.Cl)({},this.options),e),{variables:(0,i.Cl)((0,i.Cl)({},this.variables),e.variables)})),{fetchPolicy:"network-only"}),r=this.queryManager.generateQueryId();return this.queryManager.fetchQuery(r,n,b.normal,this.queryId).then((function(i){return t.updateQuery((function(t){return e.updateQuery(t,{fetchMoreResult:i.data,variables:n.variables})})),t.queryManager.stopQuery(r),i}),(function(e){throw t.queryManager.stopQuery(r),e}))},t.prototype.subscribeToMore=function(e){var t=this,n=this.queryManager.startGraphQLSubscription({query:e.document,variables:e.variables}).subscribe({next:function(n){var r=e.updateQuery;r&&t.updateQuery((function(e,t){var i=t.variables;return r(e,{subscriptionData:n,variables:i})}))},error:function(t){e.onError&&e.onError(t)}});return this.subscriptions.add(n),function(){t.subscriptions.delete(n)&&n.unsubscribe()}},t.prototype.setOptions=function(e){var t=this.options.fetchPolicy;this.options=(0,i.Cl)((0,i.Cl)({},this.options),e),e.pollInterval?this.startPolling(e.pollInterval):0===e.pollInterval&&this.stopPolling();var n=e.fetchPolicy;return this.setVariables(this.options.variables,t!==n&&("cache-only"===t||"standby"===t||"network-only"===n),e.fetchResults)},t.prototype.setVariables=function(e,t,n){return void 0===t&&(t=!1),void 0===n&&(n=!0),this.isTornDown=!1,e=e||this.variables,!t&&(0,a.L)(e,this.variables)?this.observers.size&&n?this.result():Promise.resolve():(this.variables=this.options.variables=e,this.observers.size?this.queryManager.fetchQuery(this.queryId,this.options):Promise.resolve())},t.prototype.updateQuery=function(e){var t=this.queryManager,n=t.getQueryWithPreviousResult(this.queryId),r=n.previousResult,i=n.variables,a=n.document,c=(0,o.VL)((function(){return e(r,{variables:i})}));c&&(t.dataStore.markUpdateQueryResult(a,i,c),t.broadcastQueries())},t.prototype.stopPolling=function(){this.queryManager.stopPollingQuery(this.queryId),this.options.pollInterval=void 0},t.prototype.startPolling=function(e){A(this),this.options.pollInterval=e,this.queryManager.startPollingQuery(this.options,this.queryId)},t.prototype.updateLastResult=function(e){var t=this.lastResult;return this.lastResult=e,this.lastResultSnapshot=this.queryManager.assumeImmutableResults?e:(0,o.mg)(e),t},t.prototype.onSubscribe=function(e){var t=this;try{var n=e._subscription._observer;n&&!n.error&&(n.error=h)}catch(i){}var r=!this.observers.size;return this.observers.add(e),e.next&&this.lastResult&&e.next(this.lastResult),e.error&&this.lastError&&e.error(this.lastError),r&&this.setUpQuery(),function(){t.observers.delete(e)&&!t.observers.size&&t.tearDownQuery()}},t.prototype.setUpQuery=function(){var e=this,t=this.queryManager,n=this.queryId;this.shouldSubscribe&&t.addObservableQuery(n,this),this.options.pollInterval&&(A(this),t.startPollingQuery(this.options,n));var o=function(t){e.updateLastResult((0,i.Cl)((0,i.Cl)({},e.lastResult),{errors:t.graphQLErrors,networkStatus:r.error,loading:!1})),B(e.observers,"error",e.lastError=t)};t.observeQuery(n,this.options,{next:function(n){if(e.lastError||e.isDifferentFromLastResult(n)){var r=e.updateLastResult(n),i=e.options,o=i.query,c=i.variables,l=i.fetchPolicy;t.transform(o).hasClientExports?t.getLocalState().addExportedVariables(o,c).then((function(i){var c=e.variables;e.variables=e.options.variables=i,!n.loading&&r&&"cache-only"!==l&&t.transform(o).serverQuery&&!(0,a.L)(c,i)?e.refetch():B(e.observers,"next",n)})):B(e.observers,"next",n)}},error:o}).catch(o)},t.prototype.tearDownQuery=function(){var e=this.queryManager;this.isTornDown=!0,e.stopPollingQuery(this.queryId),this.subscriptions.forEach((function(e){return e.unsubscribe()})),this.subscriptions.clear(),e.removeObservableQuery(this.queryId),e.stopQuery(this.queryId),this.observers.clear()},t}(I);function h(e){}function B(e,t,n){var r=[];e.forEach((function(e){return e[t]&&r.push(e)})),r.forEach((function(e){return e[t](n)}))}function A(e){var t=e.options.fetchPolicy;(0,u.V1)("cache-first"!==t&&"cache-only"!==t,3)}var y=function(){function e(){this.store={}}return e.prototype.getStore=function(){return this.store},e.prototype.get=function(e){return this.store[e]},e.prototype.initMutation=function(e,t,n){this.store[e]={mutation:t,variables:n||{},loading:!0,error:null}},e.prototype.markMutationError=function(e,t){var n=this.store[e];n&&(n.loading=!1,n.error=t)},e.prototype.markMutationResult=function(e){var t=this.store[e];t&&(t.loading=!1,t.error=null)},e.prototype.reset=function(){this.store={}},e}(),f=function(){function e(){this.store={}}return e.prototype.getStore=function(){return this.store},e.prototype.get=function(e){return this.store[e]},e.prototype.initQuery=function(e){var t=this.store[e.queryId];(0,u.V1)(!t||t.document===e.document||(0,a.L)(t.document,e.document),19);var n,i=!1,o=null;e.storePreviousVariables&&t&&t.networkStatus!==r.loading&&((0,a.L)(t.variables,e.variables)||(i=!0,o=t.variables)),n=i?r.setVariables:e.isPoll?r.poll:e.isRefetch?r.refetch:r.loading;var c=[];t&&t.graphQLErrors&&(c=t.graphQLErrors),this.store[e.queryId]={document:e.document,variables:e.variables,previousVariables:o,networkError:null,graphQLErrors:c,networkStatus:n,metadata:e.metadata},"string"==typeof e.fetchMoreForQueryId&&this.store[e.fetchMoreForQueryId]&&(this.store[e.fetchMoreForQueryId].networkStatus=r.fetchMore)},e.prototype.markQueryResult=function(e,t,n){this.store&&this.store[e]&&(this.store[e].networkError=null,this.store[e].graphQLErrors=p(t.errors)?t.errors:[],this.store[e].previousVariables=null,this.store[e].networkStatus=r.ready,"string"==typeof n&&this.store[n]&&(this.store[n].networkStatus=r.ready))},e.prototype.markQueryError=function(e,t,n){this.store&&this.store[e]&&(this.store[e].networkError=t,this.store[e].networkStatus=r.error,"string"==typeof n&&this.markQueryResultClient(n,!0))},e.prototype.markQueryResultClient=function(e,t){var n=this.store&&this.store[e];n&&(n.networkError=null,n.previousVariables=null,t&&(n.networkStatus=r.ready))},e.prototype.stopQuery=function(e){delete this.store[e]},e.prototype.reset=function(e){var t=this;Object.keys(this.store).forEach((function(n){e.indexOf(n)<0?t.stopQuery(n):t.store[n].networkStatus=r.loading}))},e}(),G=function(){function e(e){var t=e.cache,n=e.client,r=e.resolvers,i=e.fragmentMatcher;this.cache=t,n&&(this.client=n),r&&this.addResolvers(r),i&&this.setFragmentMatcher(i)}return e.prototype.addResolvers=function(e){var t=this;this.resolvers=this.resolvers||{},Array.isArray(e)?e.forEach((function(e){t.resolvers=(0,o.D9)(t.resolvers,e)})):this.resolvers=(0,o.D9)(this.resolvers,e)},e.prototype.setResolvers=function(e){this.resolvers={},this.addResolvers(e)},e.prototype.getResolvers=function(){return this.resolvers||{}},e.prototype.runResolvers=function(e){var t=e.document,n=e.remoteResult,r=e.context,o=e.variables,a=e.onlyRunForcedResolvers,c=void 0!==a&&a;return(0,i.sH)(this,void 0,void 0,(function(){return(0,i.YH)(this,(function(e){return t?[2,this.resolveDocument(t,n.data,r,o,this.fragmentMatcher,c).then((function(e){return(0,i.Cl)((0,i.Cl)({},n),{data:e.result})}))]:[2,n]}))}))},e.prototype.setFragmentMatcher=function(e){this.fragmentMatcher=e},e.prototype.getFragmentMatcher=function(){return this.fragmentMatcher},e.prototype.clientQuery=function(e){return(0,o.d8)(["client"],e)&&this.resolvers?e:null},e.prototype.serverQuery=function(e){return this.resolvers?(0,o.er)(e):e},e.prototype.prepareContext=function(e){void 0===e&&(e={});var t=this.cache;return(0,i.Cl)((0,i.Cl)({},e),{cache:t,getCacheKey:function(e){if(t.config)return t.config.dataIdFromObject(e);(0,u.V1)(!1,6)}})},e.prototype.addExportedVariables=function(e,t,n){return void 0===t&&(t={}),void 0===n&&(n={}),(0,i.sH)(this,void 0,void 0,(function(){return(0,i.YH)(this,(function(r){return e?[2,this.resolveDocument(e,this.buildRootValueFromCache(e,t)||{},this.prepareContext(n),t).then((function(e){return(0,i.Cl)((0,i.Cl)({},t),e.exportedVariables)}))]:[2,(0,i.Cl)({},t)]}))}))},e.prototype.shouldForceResolvers=function(e){var t=!1;return(0,g.visit)(e,{Directive:{enter:function(e){if("client"===e.name.value&&e.arguments&&(t=e.arguments.some((function(e){return"always"===e.name.value&&"BooleanValue"===e.value.kind&&!0===e.value.value}))))return g.BREAK}}}),t},e.prototype.buildRootValueFromCache=function(e,t){return this.cache.diff({query:(0,o.zc)(e),variables:t,returnPartialData:!0,optimistic:!1}).result},e.prototype.resolveDocument=function(e,t,n,r,a,c){return void 0===n&&(n={}),void 0===r&&(r={}),void 0===a&&(a=function(){return!0}),void 0===c&&(c=!1),(0,i.sH)(this,void 0,void 0,(function(){var l,s,u,g,d,I,p,b,m;return(0,i.YH)(this,(function(C){var h;return l=(0,o.Vn)(e),s=(0,o.zK)(e),u=(0,o.JG)(s),g=l.operation,d=g?(h=g).charAt(0).toUpperCase()+h.slice(1):"Query",p=(I=this).cache,b=I.client,m={fragmentMap:u,context:(0,i.Cl)((0,i.Cl)({},n),{cache:p,client:b}),variables:r,fragmentMatcher:a,defaultOperationType:d,exportedVariables:{},onlyRunForcedResolvers:c},[2,this.resolveSelectionSet(l.selectionSet,t,m).then((function(e){return{result:e,exportedVariables:m.exportedVariables}}))]}))}))},e.prototype.resolveSelectionSet=function(e,t,n){return(0,i.sH)(this,void 0,void 0,(function(){var r,a,c,l,s,g=this;return(0,i.YH)(this,(function(d){return r=n.fragmentMap,a=n.context,c=n.variables,l=[t],s=function(e){return(0,i.sH)(g,void 0,void 0,(function(){var s,g;return(0,i.YH)(this,(function(i){return(0,o.MS)(e,c)?(0,o.dt)(e)?[2,this.resolveField(e,t,n).then((function(t){var n;void 0!==t&&l.push(((n={})[(0,o.ue)(e)]=t,n))}))]:((0,o.kd)(e)?s=e:(s=r[e.name.value],(0,u.V1)(s,7)),s&&s.typeCondition&&(g=s.typeCondition.name.value,n.fragmentMatcher(t,g,a))?[2,this.resolveSelectionSet(s.selectionSet,t,n).then((function(e){l.push(e)}))]:[2]):[2]}))}))},[2,Promise.all(e.selections.map(s)).then((function(){return(0,o.IM)(l)}))]}))}))},e.prototype.resolveField=function(e,t,n){return(0,i.sH)(this,void 0,void 0,(function(){var r,a,c,l,s,u,g,d,I,p=this;return(0,i.YH)(this,(function(i){return r=n.variables,a=e.name.value,c=(0,o.ue)(e),l=a!==c,s=t[c]||t[a],u=Promise.resolve(s),n.onlyRunForcedResolvers&&!this.shouldForceResolvers(e)||(g=t.__typename||n.defaultOperationType,(d=this.resolvers&&this.resolvers[g])&&(I=d[l?a:c])&&(u=Promise.resolve(I(t,(0,o.MB)(e,r),n.context,{field:e,fragmentMap:n.fragmentMap})))),[2,u.then((function(t){return void 0===t&&(t=s),e.directives&&e.directives.forEach((function(e){"export"===e.name.value&&e.arguments&&e.arguments.forEach((function(e){"as"===e.name.value&&"StringValue"===e.value.kind&&(n.exportedVariables[e.value.value]=t)}))})),e.selectionSet?null==t?t:Array.isArray(t)?p.resolveSubSelectedArray(e,t,n):e.selectionSet?p.resolveSelectionSet(e.selectionSet,t,n):void 0:t}))]}))}))},e.prototype.resolveSubSelectedArray=function(e,t,n){var r=this;return Promise.all(t.map((function(t){return null===t?null:Array.isArray(t)?r.resolveSubSelectedArray(e,t,n):e.selectionSet?r.resolveSelectionSet(e.selectionSet,t,n):void 0})))},e}();function Q(e){var t=new Set,n=null;return new I((function(r){return t.add(r),n=n||e.subscribe({next:function(e){t.forEach((function(t){return t.next&&t.next(e)}))},error:function(e){t.forEach((function(t){return t.error&&t.error(e)}))},complete:function(){t.forEach((function(e){return e.complete&&e.complete()}))}}),function(){t.delete(r)&&!t.size&&n&&(n.unsubscribe(),n=null)}}))}var F=Object.prototype.hasOwnProperty,v=function(){function e(e){var t=e.link,n=e.queryDeduplication,r=void 0!==n&&n,i=e.store,a=e.onBroadcast,c=void 0===a?function(){}:a,l=e.ssrMode,s=void 0!==l&&l,u=e.clientAwareness,g=void 0===u?{}:u,d=e.localState,I=e.assumeImmutableResults;this.mutationStore=new y,this.queryStore=new f,this.clientAwareness={},this.idCounter=1,this.queries=new Map,this.fetchQueryRejectFns=new Map,this.transformCache=new(o.et?WeakMap:Map),this.inFlightLinkObservables=new Map,this.pollingInfoByQueryId=new Map,this.link=t,this.queryDeduplication=r,this.dataStore=i,this.onBroadcast=c,this.clientAwareness=g,this.localState=d||new G({cache:i.getCache()}),this.ssrMode=s,this.assumeImmutableResults=!!I}return e.prototype.stop=function(){var e=this;this.queries.forEach((function(t,n){e.stopQueryNoBroadcast(n)})),this.fetchQueryRejectFns.forEach((function(e){e(new u.zU(8))}))},e.prototype.mutate=function(e){var t=e.mutation,n=e.variables,r=e.optimisticResponse,a=e.updateQueries,c=e.refetchQueries,l=void 0===c?[]:c,s=e.awaitRefetchQueries,g=void 0!==s&&s,d=e.update,I=e.errorPolicy,b=void 0===I?"none":I,C=e.fetchPolicy,h=e.context,B=void 0===h?{}:h;return(0,i.sH)(this,void 0,void 0,(function(){var e,c,s,I=this;return(0,i.YH)(this,(function(h){switch(h.label){case 0:return(0,u.V1)(t,9),(0,u.V1)(!C||"no-cache"===C,10),e=this.generateQueryId(),t=this.transform(t).document,this.setQuery(e,(function(){return{document:t}})),n=this.getVariables(t,n),this.transform(t).hasClientExports?[4,this.localState.addExportedVariables(t,n,B)]:[3,2];case 1:n=h.sent(),h.label=2;case 2:return c=function(){var e={};return a&&I.queries.forEach((function(t,n){var r=t.observableQuery;if(r){var i=r.queryName;i&&F.call(a,i)&&(e[n]={updater:a[i],query:I.queryStore.get(n)})}})),e},this.mutationStore.initMutation(e,t,n),this.dataStore.markMutationInit({mutationId:e,document:t,variables:n,updateQueries:c(),update:d,optimisticResponse:r}),this.broadcastQueries(),s=this,[2,new Promise((function(a,u){var I,h;s.getObservableFromLink(t,(0,i.Cl)((0,i.Cl)({},B),{optimisticResponse:r}),n,!1).subscribe({next:function(r){(0,o.to)(r)&&"none"===b?h=new m({graphQLErrors:r.errors}):(s.mutationStore.markMutationResult(e),"no-cache"!==C&&s.dataStore.markMutationResult({mutationId:e,result:r,document:t,variables:n,updateQueries:c(),update:d}),I=r)},error:function(t){s.mutationStore.markMutationError(e,t),s.dataStore.markMutationComplete({mutationId:e,optimisticResponse:r}),s.broadcastQueries(),s.setQuery(e,(function(){return{document:null}})),u(new m({networkError:t}))},complete:function(){if(h&&s.mutationStore.markMutationError(e,h),s.dataStore.markMutationComplete({mutationId:e,optimisticResponse:r}),s.broadcastQueries(),h)u(h);else{"function"==typeof l&&(l=l(I));var t=[];p(l)&&l.forEach((function(e){if("string"==typeof e)s.queries.forEach((function(n){var r=n.observableQuery;r&&r.queryName===e&&t.push(r.refetch())}));else{var n={query:e.query,variables:e.variables,fetchPolicy:"network-only"};e.context&&(n.context=e.context),t.push(s.query(n))}})),Promise.all(g?t:[]).then((function(){s.setQuery(e,(function(){return{document:null}})),"ignore"===b&&I&&(0,o.to)(I)&&delete I.errors,a(I)}))}}})}))]}}))}))},e.prototype.fetchQuery=function(e,t,n,r){return(0,i.sH)(this,void 0,void 0,(function(){var a,c,l,s,u,g,d,I,p,C,h,B,A,y,f,G,Q,F,v=this;return(0,i.YH)(this,(function(Z){switch(Z.label){case 0:return a=t.metadata,c=void 0===a?null:a,l=t.fetchPolicy,s=void 0===l?"cache-first":l,u=t.context,g=void 0===u?{}:u,d=this.transform(t.query).document,I=this.getVariables(d,t.variables),this.transform(d).hasClientExports?[4,this.localState.addExportedVariables(d,I,g)]:[3,2];case 1:I=Z.sent(),Z.label=2;case 2:if(t=(0,i.Cl)((0,i.Cl)({},t),{variables:I}),h=C="network-only"===s||"no-cache"===s,C||(B=this.dataStore.getCache().diff({query:d,variables:I,returnPartialData:!0,optimistic:!1}),A=B.complete,y=B.result,h=!A||"cache-and-network"===s,p=y),f=h&&"cache-only"!==s&&"standby"!==s,(0,o.d8)(["live"],d)&&(f=!0),G=this.idCounter++,Q="no-cache"!==s?this.updateQueryWatch(e,d,t):void 0,this.setQuery(e,(function(){return{document:d,lastRequestId:G,invalidated:!0,cancel:Q}})),this.invalidate(r),this.queryStore.initQuery({queryId:e,document:d,storePreviousVariables:f,variables:I,isPoll:n===b.poll,isRefetch:n===b.refetch,metadata:c,fetchMoreForQueryId:r}),this.broadcastQueries(),f){if(F=this.fetchRequest({requestId:G,queryId:e,document:d,options:t,fetchMoreForQueryId:r}).catch((function(t){throw t.hasOwnProperty("graphQLErrors")?t:(G>=v.getQuery(e).lastRequestId&&(v.queryStore.markQueryError(e,t,r),v.invalidate(e),v.invalidate(r),v.broadcastQueries()),new m({networkError:t}))})),"cache-and-network"!==s)return[2,F];F.catch((function(){}))}return this.queryStore.markQueryResultClient(e,!f),this.invalidate(e),this.invalidate(r),this.transform(d).hasForcedResolvers?[2,this.localState.runResolvers({document:d,remoteResult:{data:p},context:g,variables:I,onlyRunForcedResolvers:!0}).then((function(n){return v.markQueryResult(e,n,t,r),v.broadcastQueries(),n}))]:(this.broadcastQueries(),[2,{data:p}])}}))}))},e.prototype.markQueryResult=function(e,t,n,r){var i=n.fetchPolicy,o=n.variables,a=n.errorPolicy;"no-cache"===i?this.setQuery(e,(function(){return{newData:{result:t.data,complete:!0}}})):this.dataStore.markQueryResult(t,this.getQuery(e).document,o,r,"ignore"===a||"all"===a)},e.prototype.queryListenerForObserver=function(e,t,n){var r=this;function i(e,t){if(n[e])try{n[e](t)}catch(r){}}return function(n,o){if(r.invalidate(e,!1),n){var a=r.getQuery(e),c=a.observableQuery,l=a.document,s=c?c.options.fetchPolicy:t.fetchPolicy;if("standby"!==s){var u=d(n.networkStatus),g=c&&c.getLastResult(),I=!(!g||g.networkStatus===n.networkStatus),b=t.returnPartialData||!o&&n.previousVariables||I&&t.notifyOnNetworkStatusChange||"cache-only"===s||"cache-and-network"===s;if(!u||b){var C=p(n.graphQLErrors),h=c&&c.options.errorPolicy||t.errorPolicy||"none";if("none"===h&&C||n.networkError)return i("error",new m({graphQLErrors:n.graphQLErrors,networkError:n.networkError}));try{var B=void 0,A=void 0;if(o)"no-cache"!==s&&"network-only"!==s&&r.setQuery(e,(function(){return{newData:null}})),B=o.result,A=!o.complete;else{var y=c&&c.getLastError(),f="none"!==h&&(y&&y.graphQLErrors)!==n.graphQLErrors;if(g&&g.data&&!f)B=g.data,A=!1;else{var G=r.dataStore.getCache().diff({query:l,variables:n.previousVariables||n.variables,returnPartialData:!0,optimistic:!0});B=G.result,A=!G.complete}}var Q=A&&!(t.returnPartialData||"cache-only"===s),F={data:Q?g&&g.data:B,loading:u,networkStatus:n.networkStatus,stale:Q};"all"===h&&C&&(F.errors=n.graphQLErrors),i("next",F)}catch(v){i("error",new m({networkError:v}))}}}}}},e.prototype.transform=function(e){var t=this.transformCache;if(!t.has(e)){var n=this.dataStore.getCache(),r=n.transformDocument(e),i=(0,o.hX)(n.transformForLink(r)),a=this.localState.clientQuery(r),c=this.localState.serverQuery(i),l={document:r,hasClientExports:(0,o.f2)(r),hasForcedResolvers:this.localState.shouldForceResolvers(r),clientQuery:a,serverQuery:c,defaultVars:(0,o.wY)((0,o.Vu)(r))},s=function(e){e&&!t.has(e)&&t.set(e,l)};s(e),s(r),s(a),s(c)}return t.get(e)},e.prototype.getVariables=function(e,t){return(0,i.Cl)((0,i.Cl)({},this.transform(e).defaultVars),t)},e.prototype.watchQuery=function(e,t){void 0===t&&(t=!0),(0,u.V1)("standby"!==e.fetchPolicy,11),e.variables=this.getVariables(e.query,e.variables),void 0===e.notifyOnNetworkStatusChange&&(e.notifyOnNetworkStatusChange=!1);var n=(0,i.Cl)({},e);return new C({queryManager:this,options:n,shouldSubscribe:t})},e.prototype.query=function(e){var t=this;return(0,u.V1)(e.query,12),(0,u.V1)("Document"===e.query.kind,13),(0,u.V1)(!e.returnPartialData,14),(0,u.V1)(!e.pollInterval,15),new Promise((function(n,r){var i=t.watchQuery(e,!1);t.fetchQueryRejectFns.set("query:"+i.queryId,r),i.result().then(n,r).then((function(){return t.fetchQueryRejectFns.delete("query:"+i.queryId)}))}))},e.prototype.generateQueryId=function(){return String(this.idCounter++)},e.prototype.stopQueryInStore=function(e){this.stopQueryInStoreNoBroadcast(e),this.broadcastQueries()},e.prototype.stopQueryInStoreNoBroadcast=function(e){this.stopPollingQuery(e),this.queryStore.stopQuery(e),this.invalidate(e)},e.prototype.addQueryListener=function(e,t){this.setQuery(e,(function(e){return e.listeners.add(t),{invalidated:!1}}))},e.prototype.updateQueryWatch=function(e,t,n){var r=this,i=this.getQuery(e).cancel;return i&&i(),this.dataStore.getCache().watch({query:t,variables:n.variables,optimistic:!0,previousResult:function(){var t=null,n=r.getQuery(e).observableQuery;if(n){var i=n.getLastResult();i&&(t=i.data)}return t},callback:function(t){r.setQuery(e,(function(){return{invalidated:!0,newData:t}}))}})},e.prototype.addObservableQuery=function(e,t){this.setQuery(e,(function(){return{observableQuery:t}}))},e.prototype.removeObservableQuery=function(e){var t=this.getQuery(e).cancel;this.setQuery(e,(function(){return{observableQuery:null}})),t&&t()},e.prototype.clearStore=function(){this.fetchQueryRejectFns.forEach((function(e){e(new u.zU(16))}));var e=[];return this.queries.forEach((function(t,n){t.observableQuery&&e.push(n)})),this.queryStore.reset(e),this.mutationStore.reset(),this.dataStore.reset()},e.prototype.resetStore=function(){var e=this;return this.clearStore().then((function(){return e.reFetchObservableQueries()}))},e.prototype.reFetchObservableQueries=function(e){var t=this;void 0===e&&(e=!1);var n=[];return this.queries.forEach((function(r,i){var o=r.observableQuery;if(o){var a=o.options.fetchPolicy;o.resetLastResults(),"cache-only"===a||!e&&"standby"===a||n.push(o.refetch()),t.setQuery(i,(function(){return{newData:null}})),t.invalidate(i)}})),this.broadcastQueries(),Promise.all(n)},e.prototype.observeQuery=function(e,t,n){return this.addQueryListener(e,this.queryListenerForObserver(e,t,n)),this.fetchQuery(e,t)},e.prototype.startQuery=function(e,t,n){return this.addQueryListener(e,n),this.fetchQuery(e,t).catch((function(){})),e},e.prototype.startGraphQLSubscription=function(e){var t=this,n=e.query,r=e.fetchPolicy,i=e.variables;n=this.transform(n).document,i=this.getVariables(n,i);var a=function(e){return t.getObservableFromLink(n,{},e,!1).map((function(i){if(r&&"no-cache"===r||(t.dataStore.markSubscriptionResult(i,n,e),t.broadcastQueries()),(0,o.to)(i))throw new m({graphQLErrors:i.errors});return i}))};if(this.transform(n).hasClientExports){var c=this.localState.addExportedVariables(n,i).then(a);return new I((function(e){var t=null;return c.then((function(n){return t=n.subscribe(e)}),e.error),function(){return t&&t.unsubscribe()}}))}return a(i)},e.prototype.stopQuery=function(e){this.stopQueryNoBroadcast(e),this.broadcastQueries()},e.prototype.stopQueryNoBroadcast=function(e){this.stopQueryInStoreNoBroadcast(e),this.removeQuery(e)},e.prototype.removeQuery=function(e){this.fetchQueryRejectFns.delete("query:"+e),this.fetchQueryRejectFns.delete("fetchRequest:"+e),this.getQuery(e).subscriptions.forEach((function(e){return e.unsubscribe()})),this.queries.delete(e)},e.prototype.getCurrentQueryResult=function(e,t){void 0===t&&(t=!0);var n=e.options,r=n.variables,i=n.query,o=n.fetchPolicy,a=n.returnPartialData,c=e.getLastResult(),l=this.getQuery(e.queryId).newData;if(l&&l.complete)return{data:l.result,partial:!1};if("no-cache"===o||"network-only"===o)return{data:void 0,partial:!1};var s=this.dataStore.getCache().diff({query:i,variables:r,previousResult:c?c.data:void 0,returnPartialData:!0,optimistic:t}),u=s.result,g=s.complete;return{data:g||a?u:void 0,partial:!g}},e.prototype.getQueryWithPreviousResult=function(e){var t;if("string"==typeof e){var n=this.getQuery(e).observableQuery;(0,u.V1)(n,17),t=n}else t=e;var r=t.options,i=r.variables,o=r.query;return{previousResult:this.getCurrentQueryResult(t,!1).data,variables:i,document:o}},e.prototype.broadcastQueries=function(){var e=this;this.onBroadcast(),this.queries.forEach((function(t,n){t.invalidated&&t.listeners.forEach((function(r){r&&r(e.queryStore.get(n),t.newData)}))}))},e.prototype.getLocalState=function(){return this.localState},e.prototype.getObservableFromLink=function(e,t,n,r){var a,c=this;void 0===r&&(r=this.queryDeduplication);var s=this.transform(e).serverQuery;if(s){var u=this.inFlightLinkObservables,g=this.link,d={query:s,variables:n,operationName:(0,o.n4)(s)||void 0,context:this.prepareContext((0,i.Cl)((0,i.Cl)({},t),{forceFetch:!r}))};if(t=d.context,r){var p=u.get(s)||new Map;u.set(s,p);var b=JSON.stringify(n);if(!(a=p.get(b))){p.set(b,a=Q((0,l.g7)(g,d)));var m=function(){p.delete(b),p.size||u.delete(s),C.unsubscribe()},C=a.subscribe({next:m,error:m,complete:m})}}else a=Q((0,l.g7)(g,d))}else a=I.of({data:{}}),t=this.prepareContext(t);var h=this.transform(e).clientQuery;return h&&(a=function(e,t){return new I((function(n){var r=n.next,i=n.error,o=n.complete,a=0,c=!1,l={next:function(e){++a,new Promise((function(n){n(t(e))})).then((function(e){--a,r&&r.call(n,e),c&&l.complete()}),(function(e){--a,i&&i.call(n,e)}))},error:function(e){i&&i.call(n,e)},complete:function(){c=!0,a||o&&o.call(n)}},s=e.subscribe(l);return function(){return s.unsubscribe()}}))}(a,(function(e){return c.localState.runResolvers({document:h,remoteResult:e,context:t,variables:n})}))),a},e.prototype.fetchRequest=function(e){var t,n,i=this,o=e.requestId,a=e.queryId,c=e.document,l=e.options,s=e.fetchMoreForQueryId,u=l.variables,g=l.errorPolicy,d=void 0===g?"none":g,I=l.fetchPolicy;return new Promise((function(e,g){var b=i.getObservableFromLink(c,l.context,u),C="fetchRequest:"+a;i.fetchQueryRejectFns.set(C,g);var h=function(){i.fetchQueryRejectFns.delete(C),i.setQuery(a,(function(e){e.subscriptions.delete(B)}))},B=b.map((function(e){if(o>=i.getQuery(a).lastRequestId&&(i.markQueryResult(a,e,l,s),i.queryStore.markQueryResult(a,e,s),i.invalidate(a),i.invalidate(s),i.broadcastQueries()),"none"===d&&p(e.errors))return g(new m({graphQLErrors:e.errors}));if("all"===d&&(n=e.errors),s||"no-cache"===I)t=e.data;else{var r=i.dataStore.getCache().diff({variables:u,query:c,optimistic:!1,returnPartialData:!0}),b=r.result;(r.complete||l.returnPartialData)&&(t=b)}})).subscribe({error:function(e){h(),g(e)},complete:function(){h(),e({data:t,errors:n,loading:!1,networkStatus:r.ready,stale:!1})}});i.setQuery(a,(function(e){e.subscriptions.add(B)}))}))},e.prototype.getQuery=function(e){return this.queries.get(e)||{listeners:new Set,invalidated:!1,document:null,newData:null,lastRequestId:1,observableQuery:null,subscriptions:new Set}},e.prototype.setQuery=function(e,t){var n=this.getQuery(e),r=(0,i.Cl)((0,i.Cl)({},n),t(n));this.queries.set(e,r)},e.prototype.invalidate=function(e,t){void 0===t&&(t=!0),e&&this.setQuery(e,(function(){return{invalidated:t}}))},e.prototype.prepareContext=function(e){void 0===e&&(e={});var t=this.localState.prepareContext(e);return(0,i.Cl)((0,i.Cl)({},t),{clientAwareness:this.clientAwareness})},e.prototype.checkInFlight=function(e){var t=this.queryStore.get(e);return t&&t.networkStatus!==r.ready&&t.networkStatus!==r.error},e.prototype.startPollingQuery=function(e,t,n){var r=this,o=e.pollInterval;if((0,u.V1)(o,18),!this.ssrMode){var a=this.pollingInfoByQueryId.get(t);a||this.pollingInfoByQueryId.set(t,a={}),a.interval=o,a.options=(0,i.Cl)((0,i.Cl)({},e),{fetchPolicy:"network-only"});var c=function(){var e=r.pollingInfoByQueryId.get(t);e&&(r.checkInFlight(t)?l():r.fetchQuery(t,e.options,b.poll).then(l,l))},l=function(){var e=r.pollingInfoByQueryId.get(t);e&&(clearTimeout(e.timeout),e.timeout=setTimeout(c,e.interval))};n&&this.addQueryListener(t,n),l()}return t},e.prototype.stopPollingQuery=function(e){this.pollingInfoByQueryId.delete(e)},e}(),Z=function(){function e(e){this.cache=e}return e.prototype.getCache=function(){return this.cache},e.prototype.markQueryResult=function(e,t,n,r,i){void 0===i&&(i=!1);var a=!(0,o.to)(e);i&&(0,o.to)(e)&&e.data&&(a=!0),!r&&a&&this.cache.write({result:e.data,dataId:"ROOT_QUERY",query:t,variables:n})},e.prototype.markSubscriptionResult=function(e,t,n){(0,o.to)(e)||this.cache.write({result:e.data,dataId:"ROOT_SUBSCRIPTION",query:t,variables:n})},e.prototype.markMutationInit=function(e){var t,n=this;e.optimisticResponse&&(t="function"==typeof e.optimisticResponse?e.optimisticResponse(e.variables):e.optimisticResponse,this.cache.recordOptimisticTransaction((function(r){var i=n.cache;n.cache=r;try{n.markMutationResult({mutationId:e.mutationId,result:{data:t},document:e.document,variables:e.variables,updateQueries:e.updateQueries,update:e.update})}finally{n.cache=i}}),e.mutationId))},e.prototype.markMutationResult=function(e){var t=this;if(!(0,o.to)(e.result)){var n=[{result:e.result.data,dataId:"ROOT_MUTATION",query:e.document,variables:e.variables}],r=e.updateQueries;r&&Object.keys(r).forEach((function(i){var a=r[i],c=a.query,l=a.updater,s=t.cache.diff({query:c.document,variables:c.variables,returnPartialData:!0,optimistic:!1}),u=s.result;if(s.complete){var g=(0,o.VL)((function(){return l(u,{mutationResult:e.result,queryName:(0,o.n4)(c.document)||void 0,queryVariables:c.variables})}));g&&n.push({result:g,dataId:"ROOT_QUERY",query:c.document,variables:c.variables})}})),this.cache.performTransaction((function(t){n.forEach((function(e){return t.write(e)}));var r=e.update;r&&(0,o.VL)((function(){return r(t,e.result)}))}))}},e.prototype.markMutationComplete=function(e){var t=e.mutationId;e.optimisticResponse&&this.cache.removeOptimistic(t)},e.prototype.markUpdateQueryResult=function(e,t,n){this.cache.write({result:n,dataId:"ROOT_QUERY",variables:t,query:e})},e.prototype.reset=function(){return this.cache.reset()},e}(),E=function(){function e(e){var t=this;this.defaultOptions={},this.resetStoreCallbacks=[],this.clearStoreCallbacks=[];var n=e.cache,r=e.ssrMode,i=void 0!==r&&r,o=e.ssrForceFetchDelay,a=void 0===o?0:o,c=e.connectToDevTools,s=e.queryDeduplication,g=void 0===s||s,d=e.defaultOptions,I=e.assumeImmutableResults,p=void 0!==I&&I,b=e.resolvers,m=e.typeDefs,C=e.fragmentMatcher,h=e.name,B=e.version,A=e.link;if(!A&&b&&(A=l.Ch.empty()),!A||!n)throw new u.zU(4);this.link=A,this.cache=n,this.store=new Z(n),this.disableNetworkFetches=i||a>0,this.queryDeduplication=g,this.defaultOptions=d||{},this.typeDefs=m,a&&setTimeout((function(){return t.disableNetworkFetches=!1}),a),this.watchQuery=this.watchQuery.bind(this),this.query=this.query.bind(this),this.mutate=this.mutate.bind(this),this.resetStore=this.resetStore.bind(this),this.reFetchObservableQueries=this.reFetchObservableQueries.bind(this),void 0!==c&&c&&"undefined"!=typeof window&&(window.__APOLLO_CLIENT__=this),this.version="2.6.10",this.localState=new G({cache:n,client:this,resolvers:b,fragmentMatcher:C}),this.queryManager=new v({link:this.link,store:this.store,queryDeduplication:g,ssrMode:i,clientAwareness:{name:h,version:B},localState:this.localState,assumeImmutableResults:p,onBroadcast:function(){t.devToolsHookCb&&t.devToolsHookCb({action:{},state:{queries:t.queryManager.queryStore.getStore(),mutations:t.queryManager.mutationStore.getStore()},dataWithOptimisticResults:t.cache.extract(!0)})}})}return e.prototype.stop=function(){this.queryManager.stop()},e.prototype.watchQuery=function(e){return this.defaultOptions.watchQuery&&(e=(0,i.Cl)((0,i.Cl)({},this.defaultOptions.watchQuery),e)),!this.disableNetworkFetches||"network-only"!==e.fetchPolicy&&"cache-and-network"!==e.fetchPolicy||(e=(0,i.Cl)((0,i.Cl)({},e),{fetchPolicy:"cache-first"})),this.queryManager.watchQuery(e)},e.prototype.query=function(e){return this.defaultOptions.query&&(e=(0,i.Cl)((0,i.Cl)({},this.defaultOptions.query),e)),(0,u.V1)("cache-and-network"!==e.fetchPolicy,5),this.disableNetworkFetches&&"network-only"===e.fetchPolicy&&(e=(0,i.Cl)((0,i.Cl)({},e),{fetchPolicy:"cache-first"})),this.queryManager.query(e)},e.prototype.mutate=function(e){return this.defaultOptions.mutate&&(e=(0,i.Cl)((0,i.Cl)({},this.defaultOptions.mutate),e)),this.queryManager.mutate(e)},e.prototype.subscribe=function(e){return this.queryManager.startGraphQLSubscription(e)},e.prototype.readQuery=function(e,t){return void 0===t&&(t=!1),this.cache.readQuery(e,t)},e.prototype.readFragment=function(e,t){return void 0===t&&(t=!1),this.cache.readFragment(e,t)},e.prototype.writeQuery=function(e){var t=this.cache.writeQuery(e);return this.queryManager.broadcastQueries(),t},e.prototype.writeFragment=function(e){var t=this.cache.writeFragment(e);return this.queryManager.broadcastQueries(),t},e.prototype.writeData=function(e){var t=this.cache.writeData(e);return this.queryManager.broadcastQueries(),t},e.prototype.__actionHookForDevTools=function(e){this.devToolsHookCb=e},e.prototype.__requestRaw=function(e){return(0,l.g7)(this.link,e)},e.prototype.initQueryManager=function(){return this.queryManager},e.prototype.resetStore=function(){var e=this;return Promise.resolve().then((function(){return e.queryManager.clearStore()})).then((function(){return Promise.all(e.resetStoreCallbacks.map((function(e){return e()})))})).then((function(){return e.reFetchObservableQueries()}))},e.prototype.clearStore=function(){var e=this;return Promise.resolve().then((function(){return e.queryManager.clearStore()})).then((function(){return Promise.all(e.clearStoreCallbacks.map((function(e){return e()})))}))},e.prototype.onResetStore=function(e){var t=this;return this.resetStoreCallbacks.push(e),function(){t.resetStoreCallbacks=t.resetStoreCallbacks.filter((function(t){return t!==e}))}},e.prototype.onClearStore=function(e){var t=this;return this.clearStoreCallbacks.push(e),function(){t.clearStoreCallbacks=t.clearStoreCallbacks.filter((function(t){return t!==e}))}},e.prototype.reFetchObservableQueries=function(e){return this.queryManager.reFetchObservableQueries(e)},e.prototype.extract=function(e){return this.cache.extract(e)},e.prototype.restore=function(e){return this.cache.restore(e)},e.prototype.addResolvers=function(e){this.localState.addResolvers(e)},e.prototype.setResolvers=function(e){this.localState.setResolvers(e)},e.prototype.getResolvers=function(){return this.localState.getResolvers()},e.prototype.setLocalStateFragmentMatcher=function(e){this.localState.setFragmentMatcher(e)},e}()},5981:(e,t,n)=>{"use strict";n.d(t,{$:()=>g});var r=n(5215),i=n(9356),o=n(8117),a=n(585),c=n(1004),l={http:{includeQuery:!0,includeExtensions:!1},headers:{accept:"*/*","content-type":"application/json"},options:{method:"POST"}},s=function(e,t,n){var r=new Error(n);throw r.name="ServerError",r.response=e,r.statusCode=e.status,r.result=t,r},u=function(e,t){var n;try{n=JSON.stringify(e)}catch(i){var r=new c.zU(2);throw r.parseError=i,r}return n},g=function(e){void 0===e&&(e={});var t=e.uri,n=void 0===t?"/graphql":t,g=e.fetch,d=e.includeExtensions,I=e.useGETForQueries,p=(0,r.Tt)(e,["uri","fetch","includeExtensions","useGETForQueries"]);!function(e){if(!e&&"undefined"==typeof fetch)throw new c.zU(1)}(g),g||(g=fetch);var b={http:{includeExtensions:d},options:p.fetchOptions,credentials:p.credentials,headers:p.headers};return new i.Ch((function(e){var t=function(e,t){return e.getContext().uri||("function"==typeof t?t(e):t||"/graphql")}(e,n),c=e.getContext(),d={};if(c.clientAwareness){var p=c.clientAwareness,m=p.name,C=p.version;m&&(d["apollographql-client-name"]=m),C&&(d["apollographql-client-version"]=C)}var h,B=(0,r.Cl)({},d,c.headers),A={http:c.http,options:c.fetchOptions,credentials:c.credentials,headers:B},y=function(e,t){for(var n=[],i=2;i<arguments.length;i++)n[i-2]=arguments[i];var o=(0,r.Cl)({},t.options,{headers:t.headers,credentials:t.credentials}),c=t.http;n.forEach((function(e){o=(0,r.Cl)({},o,e.options,{headers:(0,r.Cl)({},o.headers,e.headers)}),e.credentials&&(o.credentials=e.credentials),c=(0,r.Cl)({},c,e.http)}));var l=e.operationName,s=e.extensions,u=e.variables,g=e.query,d={operationName:l,variables:u};return c.includeExtensions&&(d.extensions=s),c.includeQuery&&(d.query=(0,a.y)(g)),{options:o,body:d}}(e,l,b,A),f=y.options,G=y.body;if(!f.signal){var Q=function(){if("undefined"==typeof AbortController)return{controller:!1,signal:!1};var e=new AbortController;return{controller:e,signal:e.signal}}(),F=Q.controller,v=Q.signal;(h=F)&&(f.signal=v)}if(I&&!e.query.definitions.some((function(e){return"OperationDefinition"===e.kind&&"mutation"===e.operation}))&&(f.method="GET"),"GET"===f.method){var Z=function(e,t){var n=[],r=function(e,t){n.push(e+"="+encodeURIComponent(t))};if("query"in t&&r("query",t.query),t.operationName&&r("operationName",t.operationName),t.variables){var i=void 0;try{i=u(t.variables)}catch(S){return{parseError:S}}r("variables",i)}if(t.extensions){var o=void 0;try{o=u(t.extensions)}catch(S){return{parseError:S}}r("extensions",o)}var a="",c=e,l=e.indexOf("#");-1!==l&&(a=e.substr(l),c=e.substr(0,l));var s=-1===c.indexOf("?")?"?":"&";return{newURI:c+s+n.join("&")+a}}(t,G),E=Z.newURI,S=Z.parseError;if(S)return(0,i.NQ)(S);t=E}else try{f.body=u(G)}catch(S){return(0,i.NQ)(S)}return new o.A((function(n){var r;return g(t,f).then((function(t){return e.setContext({response:t}),t})).then((r=e,function(e){return e.text().then((function(t){try{return JSON.parse(t)}catch(r){var n=r;return n.name="ServerParseError",n.response=e,n.statusCode=e.status,n.bodyText=t,Promise.reject(n)}})).then((function(t){return e.status>=300&&s(e,t,"Response not successful: Received status code "+e.status),Array.isArray(t)||t.hasOwnProperty("data")||t.hasOwnProperty("errors")||s(e,t,"Server response was missing for query '"+(Array.isArray(r)?r.map((function(e){return e.operationName})):r.operationName)+"'."),t}))})).then((function(e){return n.next(e),n.complete(),e})).catch((function(e){"AbortError"!==e.name&&(e.result&&e.result.errors&&e.result.data&&n.next(e.result),n.error(e))})),function(){h&&h.abort()}}))}))};!function(e){(0,r.C6)((function(t){return e.call(this,g(t).request)||this}),e)}(i.Ch)},9356:(e,t,n)=>{"use strict";n.d(t,{Ch:()=>p,NQ:()=>l,g7:()=>b});var r=n(8117),i=n(1004),o=n(5215),a=n(5950);function c(e){return e.request.length<=1}function l(e){return new r.A((function(t){t.error(e)}))}function s(e,t){return t?t(e):r.A.of()}function u(e){return"function"==typeof e?new p(e):e}function g(){return new p((function(){return r.A.of()}))}function d(e){return 0===e.length?g():e.map(u).reduce((function(e,t){return e.concat(t)}))}function I(e,t,n){var i=u(t),o=u(n||new p(s));return c(i)&&c(o)?new p((function(t){return e(t)?i.request(t)||r.A.of():o.request(t)||r.A.of()})):new p((function(t,n){return e(t)?i.request(t,n)||r.A.of():o.request(t,n)||r.A.of()}))}!function(e){(0,o.C6)((function(t,n){var r=e.call(this,t)||this;return r.link=n,r}),e)}(Error);var p=function(){function e(e){e&&(this.request=e)}return e.prototype.split=function(t,n,r){return this.concat(I(t,n,r||new e(s)))},e.prototype.concat=function(e){return function(e,t){var n=u(e);if(c(n))return n;var i=u(t);return c(i)?new p((function(e){return n.request(e,(function(e){return i.request(e)||r.A.of()}))||r.A.of()})):new p((function(e,t){return n.request(e,(function(e){return i.request(e,t)||r.A.of()}))||r.A.of()}))}(this,e)},e.prototype.request=function(e,t){throw new i.zU(1)},e.empty=g,e.from=d,e.split=I,e.execute=b,e}();function b(e,t){return e.request(function(e,t){var n=(0,o.Cl)({},e);return Object.defineProperty(t,"setContext",{enumerable:!1,value:function(e){n="function"==typeof e?(0,o.Cl)({},n,e(n)):(0,o.Cl)({},n,e)}}),Object.defineProperty(t,"getContext",{enumerable:!1,value:function(){return(0,o.Cl)({},n)}}),Object.defineProperty(t,"toKey",{enumerable:!1,value:function(){return function(e){var t=e.query,n=e.variables,r=e.operationName;return JSON.stringify([r,t,n])}(t)}}),t}(t.context,function(e){var t={variables:e.variables||{},extensions:e.extensions||{},operationName:e.operationName,query:e.query};return t.operationName||(t.operationName="string"!=typeof t.query?(0,a.n4)(t.query):""),t}(function(e){for(var t=["query","operationName","variables","extensions","context"],n=0,r=Object.keys(e);n<r.length;n++){var o=r[n];if(t.indexOf(o)<0)throw new i.zU(2)}return e}(t))))||r.A.of()}},5950:(e,t,n)=>{"use strict";n.d(t,{AT:()=>X,D9:()=>ne,IM:()=>re,Ii:()=>s,JG:()=>x,KV:()=>K,MB:()=>d,MS:()=>A,Nu:()=>q,Uw:()=>C,VL:()=>$,Vn:()=>T,Vu:()=>Z,Wi:()=>h,XY:()=>w,ct:()=>Q,d:()=>m,d8:()=>y,dt:()=>p,er:()=>L,et:()=>P,f2:()=>f,hX:()=>Y,i2:()=>B,kd:()=>b,kp:()=>F,mg:()=>M,n4:()=>E,o5:()=>g,to:()=>ee,ue:()=>I,wY:()=>U,zK:()=>S,zc:()=>D});var r=n(9111),i=n(1004),o=n(5215),a=n(2492),c=n.n(a);function l(e,t,n,r){if(function(e){return"IntValue"===e.kind}(n)||function(e){return"FloatValue"===e.kind}(n))e[t.value]=Number(n.value);else if(function(e){return"BooleanValue"===e.kind}(n)||function(e){return"StringValue"===e.kind}(n))e[t.value]=n.value;else if(function(e){return"ObjectValue"===e.kind}(n)){var o={};n.fields.map((function(e){return l(o,e.name,e.value,r)})),e[t.value]=o}else if(function(e){return"Variable"===e.kind}(n)){var a=(r||{})[n.name.value];e[t.value]=a}else if(function(e){return"ListValue"===e.kind}(n))e[t.value]=n.values.map((function(e){var n={};return l(n,t,e,r),n[t.value]}));else if(function(e){return"EnumValue"===e.kind}(n))e[t.value]=n.value;else{if(!function(e){return"NullValue"===e.kind}(n))throw new i.zU(17);e[t.value]=null}}function s(e,t){var n=null;e.directives&&(n={},e.directives.forEach((function(e){n[e.name.value]={},e.arguments&&e.arguments.forEach((function(r){var i=r.name,o=r.value;return l(n[e.name.value],i,o,t)}))})));var r=null;return e.arguments&&e.arguments.length&&(r={},e.arguments.forEach((function(e){var n=e.name,i=e.value;return l(r,n,i,t)}))),g(e.name.value,r,n)}n(2834);var u=["connection","include","skip","client","rest","export"];function g(e,t,n){if(n&&n.connection&&n.connection.key){if(n.connection.filter&&n.connection.filter.length>0){var r=n.connection.filter?n.connection.filter:[];r.sort();var i=t,o={};return r.forEach((function(e){o[e]=i[e]})),n.connection.key+"("+JSON.stringify(o)+")"}return n.connection.key}var a=e;if(t){var l=c()(t);a+="("+l+")"}return n&&Object.keys(n).forEach((function(e){-1===u.indexOf(e)&&(n[e]&&Object.keys(n[e]).length?a+="@"+e+"("+JSON.stringify(n[e])+")":a+="@"+e)})),a}function d(e,t){if(e.arguments&&e.arguments.length){var n={};return e.arguments.forEach((function(e){var r=e.name,i=e.value;return l(n,r,i,t)})),n}return null}function I(e){return e.alias?e.alias.value:e.name.value}function p(e){return"Field"===e.kind}function b(e){return"InlineFragment"===e.kind}function m(e){return e&&"id"===e.type&&"boolean"==typeof e.generated}function C(e,t){return void 0===t&&(t=!1),(0,o.Cl)({type:"id",generated:t},"string"==typeof e?{id:e,typename:void 0}:e)}function h(e){return null!=e&&"object"==typeof e&&"json"===e.type}function B(e,t){if(e.directives&&e.directives.length){var n={};return e.directives.forEach((function(e){n[e.name.value]=d(e,t)})),n}return null}function A(e,t){return void 0===t&&(t={}),(n=e.directives,n?n.filter(G).map((function(e){var t=e.arguments;e.name.value,(0,i.V1)(t&&1===t.length,14);var n=t[0];(0,i.V1)(n.name&&"if"===n.name.value,15);var r=n.value;return(0,i.V1)(r&&("Variable"===r.kind||"BooleanValue"===r.kind),16),{directive:e,ifArgument:n}})):[]).every((function(e){var n=e.directive,r=e.ifArgument,o=!1;return"Variable"===r.value.kind?(o=t[r.value.name.value],(0,i.V1)(void 0!==o,13)):o=r.value.value,"skip"===n.name.value?!o:o}));var n}function y(e,t){return function(e){var t=[];return(0,r.visit)(e,{Directive:function(e){t.push(e.name.value)}}),t}(t).some((function(t){return e.indexOf(t)>-1}))}function f(e){return e&&y(["client"],e)&&y(["export"],e)}function G(e){var t=e.name.value;return"skip"===t||"include"===t}function Q(e,t){var n=t,r=[];return e.definitions.forEach((function(e){if("OperationDefinition"===e.kind)throw new i.zU(11);"FragmentDefinition"===e.kind&&r.push(e)})),void 0===n&&((0,i.V1)(1===r.length,12),n=r[0].name.value),(0,o.Cl)((0,o.Cl)({},e),{definitions:(0,o.aN)([{kind:"OperationDefinition",operation:"query",selectionSet:{kind:"SelectionSet",selections:[{kind:"FragmentSpread",name:{kind:"Name",value:n}}]}}],e.definitions)})}function F(e){for(var t=[],n=1;n<arguments.length;n++)t[n-1]=arguments[n];return t.forEach((function(t){null!=t&&Object.keys(t).forEach((function(n){e[n]=t[n]}))})),e}function v(e){(0,i.V1)(e&&"Document"===e.kind,2);var t=e.definitions.filter((function(e){return"FragmentDefinition"!==e.kind})).map((function(e){if("OperationDefinition"!==e.kind)throw new i.zU(3);return e}));return(0,i.V1)(t.length<=1,4),e}function Z(e){return v(e),e.definitions.filter((function(e){return"OperationDefinition"===e.kind}))[0]}function E(e){return e.definitions.filter((function(e){return"OperationDefinition"===e.kind&&e.name})).map((function(e){return e.name.value}))[0]||null}function S(e){return e.definitions.filter((function(e){return"FragmentDefinition"===e.kind}))}function X(e){var t=Z(e);return(0,i.V1)(t&&"query"===t.operation,6),t}function T(e){var t;v(e);for(var n=0,r=e.definitions;n<r.length;n++){var o=r[n];if("OperationDefinition"===o.kind){var a=o.operation;if("query"===a||"mutation"===a||"subscription"===a)return o}"FragmentDefinition"!==o.kind||t||(t=o)}if(t)return t;throw new i.zU(10)}function x(e){void 0===e&&(e=[]);var t={};return e.forEach((function(e){t[e.name.value]=e})),t}function U(e){if(e&&e.variableDefinitions&&e.variableDefinitions.length){var t=e.variableDefinitions.filter((function(e){return e.defaultValue})).map((function(e){var t=e.variable,n=e.defaultValue,r={};return l(r,t.name,n),r}));return F.apply(void 0,(0,o.aN)([{}],t))}return{}}function N(e,t,n){var r=0;return e.forEach((function(n,i){t.call(this,n,i,e)&&(e[r++]=n)}),n),e.length=r,e}var R={kind:"Field",name:{kind:"Name",value:"__typename"}};function O(e,t){return e.selectionSet.selections.every((function(e){return"FragmentSpread"===e.kind&&O(t[e.name.value],t)}))}function V(e){return O(Z(e)||function(e){(0,i.V1)("Document"===e.kind,7),(0,i.V1)(e.definitions.length<=1,8);var t=e.definitions[0];return(0,i.V1)("FragmentDefinition"===t.kind,9),t}(e),x(S(e)))?null:e}function W(e){return function(t){return e.some((function(e){return e.name&&e.name===t.name.value||e.test&&e.test(t)}))}}function _(e,t){var n=Object.create(null),i=[],a=Object.create(null),c=[],l=V((0,r.visit)(t,{Variable:{enter:function(e,t,r){"VariableDefinition"!==r.kind&&(n[e.name.value]=!0)}},Field:{enter:function(t){if(e&&t.directives&&e.some((function(e){return e.remove}))&&t.directives&&t.directives.some(W(e)))return t.arguments&&t.arguments.forEach((function(e){"Variable"===e.value.kind&&i.push({name:e.value.name.value})})),t.selectionSet&&k(t.selectionSet).forEach((function(e){c.push({name:e.name.value})})),null}},FragmentSpread:{enter:function(e){a[e.name.value]=!0}},Directive:{enter:function(t){if(W(e)(t))return null}}}));return l&&N(i,(function(e){return!n[e.name]})).length&&(l=function(e,t){var n=function(e){return function(t){return e.some((function(e){return t.value&&"Variable"===t.value.kind&&t.value.name&&(e.name===t.value.name.value||e.test&&e.test(t))}))}}(e);return V((0,r.visit)(t,{OperationDefinition:{enter:function(t){return(0,o.Cl)((0,o.Cl)({},t),{variableDefinitions:t.variableDefinitions.filter((function(t){return!e.some((function(e){return e.name===t.variable.name.value}))}))})}},Field:{enter:function(t){if(e.some((function(e){return e.remove}))){var r=0;if(t.arguments.forEach((function(e){n(e)&&(r+=1)})),1===r)return null}}},Argument:{enter:function(e){if(n(e))return null}}}))}(i,l)),l&&N(c,(function(e){return!a[e.name]})).length&&(l=function(e,t){function n(t){if(e.some((function(e){return e.name===t.name.value})))return null}return V((0,r.visit)(t,{FragmentSpread:{enter:n},FragmentDefinition:{enter:n}}))}(c,l)),l}function w(e){return(0,r.visit)(v(e),{SelectionSet:{enter:function(e,t,n){if(!n||"OperationDefinition"!==n.kind){var r=e.selections;if(r&&!r.some((function(e){return p(e)&&("__typename"===e.name.value||0===e.name.value.lastIndexOf("__",0))}))){var i=n;if(!(p(i)&&i.directives&&i.directives.some((function(e){return"export"===e.name.value}))))return(0,o.Cl)((0,o.Cl)({},e),{selections:(0,o.aN)(r,[R])})}}}}})}var H={test:function(e){var t="connection"===e.name.value;return t&&(!e.arguments||e.arguments.some((function(e){return"key"===e.name.value}))),t}};function Y(e){return _([H],v(e))}function k(e){var t=[];return e.selections.forEach((function(e){(p(e)||b(e))&&e.selectionSet?k(e.selectionSet).forEach((function(e){return t.push(e)})):"FragmentSpread"===e.kind&&t.push(e)})),t}function D(e){return"query"===T(e).operation?e:(0,r.visit)(e,{OperationDefinition:{enter:function(e){return(0,o.Cl)((0,o.Cl)({},e),{operation:"query"})}}})}function L(e){v(e);var t=_([{test:function(e){return"client"===e.name.value},remove:!0}],e);return t&&(t=(0,r.visit)(t,{FragmentDefinition:{enter:function(e){if(e.selectionSet&&e.selectionSet.selections.every((function(e){return p(e)&&"__typename"===e.name.value})))return null}}})),t}var P="function"==typeof WeakMap&&!("object"==typeof navigator&&"ReactNative"===navigator.product),J=Object.prototype.toString;function M(e){return z(e,new Map)}function z(e,t){switch(J.call(e)){case"[object Array]":if(t.has(e))return t.get(e);var n=e.slice(0);return t.set(e,n),n.forEach((function(e,r){n[r]=z(e,t)})),n;case"[object Object]":if(t.has(e))return t.get(e);var r=Object.create(Object.getPrototypeOf(e));return t.set(e,r),Object.keys(e).forEach((function(n){r[n]=z(e[n],t)})),r;default:return e}}function j(e){return("undefined"!=typeof process?"production":"development")===e}function K(){return!0===j("production")}function q(){return!0===j("test")}function $(e){try{return e()}catch(t){console.error&&console.error(t)}}function ee(e){return e.errors&&e.errors.length}var te=Object.prototype.hasOwnProperty;function ne(){for(var e=[],t=0;t<arguments.length;t++)e[t]=arguments[t];return re(e)}function re(e){var t=e[0]||{},n=e.length;if(n>1){var r=[];t=ae(t,r);for(var i=1;i<n;++i)t=oe(t,e[i],r)}return t}function ie(e){return null!==e&&"object"==typeof e}function oe(e,t,n){return ie(t)&&ie(e)?(Object.isExtensible&&!Object.isExtensible(e)&&(e=ae(e,n)),Object.keys(t).forEach((function(r){var i=t[r];if(te.call(e,r)){var o=e[r];i!==o&&(e[r]=oe(ae(o,n),i,n))}else e[r]=i})),e):t}function ae(e,t){return null!==e&&"object"==typeof e&&t.indexOf(e)<0&&(e=Array.isArray(e)?e.slice(0):(0,o.Cl)({__proto__:Object.getPrototypeOf(e)},e),t.push(e)),e}Object.create({})},8075:(e,t,n)=>{"use strict";var r=n(453),i=n(487),o=i(r("String.prototype.indexOf"));e.exports=function(e,t){var n=r(e,!!t);return"function"==typeof n&&o(e,".prototype.")>-1?i(n):n}},487:(e,t,n)=>{"use strict";var r=n(6743),i=n(453),o=i("%Function.prototype.apply%"),a=i("%Function.prototype.call%"),c=i("%Reflect.apply%",!0)||r.call(a,o),l=i("%Object.getOwnPropertyDescriptor%",!0),s=i("%Object.defineProperty%",!0),u=i("%Math.max%");if(s)try{s({},"a",{value:1})}catch(d){s=null}e.exports=function(e){var t=c(r,a,arguments);return l&&s&&l(t,"length").configurable&&s(t,"length",{value:1+u(0,e.length-(arguments.length-1))}),t};var g=function(){return c(r,o,arguments)};s?s(e.exports,"apply",{value:g}):e.exports.apply=g},5971:e=>{function t(e){if(e)return function(e){for(var n in t.prototype)e[n]=t.prototype[n];return e}(e)}e.exports=t,t.prototype.on=t.prototype.addEventListener=function(e,t){return this._callbacks=this._callbacks||{},(this._callbacks["$"+e]=this._callbacks["$"+e]||[]).push(t),this},t.prototype.once=function(e,t){function n(){this.off(e,n),t.apply(this,arguments)}return n.fn=t,this.on(e,n),this},t.prototype.off=t.prototype.removeListener=t.prototype.removeAllListeners=t.prototype.removeEventListener=function(e,t){if(this._callbacks=this._callbacks||{},0==arguments.length)return this._callbacks={},this;var n,r=this._callbacks["$"+e];if(!r)return this;if(1==arguments.length)return delete this._callbacks["$"+e],this;for(var i=0;i<r.length;i++)if((n=r[i])===t||n.fn===t){r.splice(i,1);break}return 0===r.length&&delete this._callbacks["$"+e],this},t.prototype.emit=function(e){this._callbacks=this._callbacks||{};for(var t=new Array(arguments.length-1),n=this._callbacks["$"+e],r=1;r<arguments.length;r++)t[r-1]=arguments[r];if(n){r=0;for(var i=(n=n.slice(0)).length;r<i;++r)n[r].apply(this,t)}return this},t.prototype.listeners=function(e){return this._callbacks=this._callbacks||{},this._callbacks["$"+e]||[]},t.prototype.hasListeners=function(e){return!!this.listeners(e).length}},4945:function(e,t){var n="undefined"!=typeof self?self:this,r=function(){function e(){this.fetch=!1,this.DOMException=n.DOMException}return e.prototype=n,new e}();!function(e){!function(t){var n="URLSearchParams"in e,r="Symbol"in e&&"iterator"in Symbol,i="FileReader"in e&&"Blob"in e&&function(){try{return new Blob,!0}catch(e){return!1}}(),o="FormData"in e,a="ArrayBuffer"in e;if(a)var c=["[object Int8Array]","[object Uint8Array]","[object Uint8ClampedArray]","[object Int16Array]","[object Uint16Array]","[object Int32Array]","[object Uint32Array]","[object Float32Array]","[object Float64Array]"],l=ArrayBuffer.isView||function(e){return e&&c.indexOf(Object.prototype.toString.call(e))>-1};function s(e){if("string"!=typeof e&&(e=String(e)),/[^a-z0-9\-#$%&'*+.^_`|~]/i.test(e))throw new TypeError("Invalid character in header field name");return e.toLowerCase()}function u(e){return"string"!=typeof e&&(e=String(e)),e}function g(e){var t={next:function(){var t=e.shift();return{done:void 0===t,value:t}}};return r&&(t[Symbol.iterator]=function(){return t}),t}function d(e){this.map={},e instanceof d?e.forEach((function(e,t){this.append(t,e)}),this):Array.isArray(e)?e.forEach((function(e){this.append(e[0],e[1])}),this):e&&Object.getOwnPropertyNames(e).forEach((function(t){this.append(t,e[t])}),this)}function I(e){if(e.bodyUsed)return Promise.reject(new TypeError("Already read"));e.bodyUsed=!0}function p(e){return new Promise((function(t,n){e.onload=function(){t(e.result)},e.onerror=function(){n(e.error)}}))}function b(e){var t=new FileReader,n=p(t);return t.readAsArrayBuffer(e),n}function m(e){if(e.slice)return e.slice(0);var t=new Uint8Array(e.byteLength);return t.set(new Uint8Array(e)),t.buffer}function C(){return this.bodyUsed=!1,this._initBody=function(e){var t;this._bodyInit=e,e?"string"==typeof e?this._bodyText=e:i&&Blob.prototype.isPrototypeOf(e)?this._bodyBlob=e:o&&FormData.prototype.isPrototypeOf(e)?this._bodyFormData=e:n&&URLSearchParams.prototype.isPrototypeOf(e)?this._bodyText=e.toString():a&&i&&(t=e)&&DataView.prototype.isPrototypeOf(t)?(this._bodyArrayBuffer=m(e.buffer),this._bodyInit=new Blob([this._bodyArrayBuffer])):a&&(ArrayBuffer.prototype.isPrototypeOf(e)||l(e))?this._bodyArrayBuffer=m(e):this._bodyText=e=Object.prototype.toString.call(e):this._bodyText="",this.headers.get("content-type")||("string"==typeof e?this.headers.set("content-type","text/plain;charset=UTF-8"):this._bodyBlob&&this._bodyBlob.type?this.headers.set("content-type",this._bodyBlob.type):n&&URLSearchParams.prototype.isPrototypeOf(e)&&this.headers.set("content-type","application/x-www-form-urlencoded;charset=UTF-8"))},i&&(this.blob=function(){var e=I(this);if(e)return e;if(this._bodyBlob)return Promise.resolve(this._bodyBlob);if(this._bodyArrayBuffer)return Promise.resolve(new Blob([this._bodyArrayBuffer]));if(this._bodyFormData)throw new Error("could not read FormData body as blob");return Promise.resolve(new Blob([this._bodyText]))},this.arrayBuffer=function(){return this._bodyArrayBuffer?I(this)||Promise.resolve(this._bodyArrayBuffer):this.blob().then(b)}),this.text=function(){var e,t,n,r=I(this);if(r)return r;if(this._bodyBlob)return e=this._bodyBlob,n=p(t=new FileReader),t.readAsText(e),n;if(this._bodyArrayBuffer)return Promise.resolve(function(e){for(var t=new Uint8Array(e),n=new Array(t.length),r=0;r<t.length;r++)n[r]=String.fromCharCode(t[r]);return n.join("")}(this._bodyArrayBuffer));if(this._bodyFormData)throw new Error("could not read FormData body as text");return Promise.resolve(this._bodyText)},o&&(this.formData=function(){return this.text().then(A)}),this.json=function(){return this.text().then(JSON.parse)},this}d.prototype.append=function(e,t){e=s(e),t=u(t);var n=this.map[e];this.map[e]=n?n+", "+t:t},d.prototype.delete=function(e){delete this.map[s(e)]},d.prototype.get=function(e){return e=s(e),this.has(e)?this.map[e]:null},d.prototype.has=function(e){return this.map.hasOwnProperty(s(e))},d.prototype.set=function(e,t){this.map[s(e)]=u(t)},d.prototype.forEach=function(e,t){for(var n in this.map)this.map.hasOwnProperty(n)&&e.call(t,this.map[n],n,this)},d.prototype.keys=function(){var e=[];return this.forEach((function(t,n){e.push(n)})),g(e)},d.prototype.values=function(){var e=[];return this.forEach((function(t){e.push(t)})),g(e)},d.prototype.entries=function(){var e=[];return this.forEach((function(t,n){e.push([n,t])})),g(e)},r&&(d.prototype[Symbol.iterator]=d.prototype.entries);var h=["DELETE","GET","HEAD","OPTIONS","POST","PUT"];function B(e,t){var n,r,i=(t=t||{}).body;if(e instanceof B){if(e.bodyUsed)throw new TypeError("Already read");this.url=e.url,this.credentials=e.credentials,t.headers||(this.headers=new d(e.headers)),this.method=e.method,this.mode=e.mode,this.signal=e.signal,i||null==e._bodyInit||(i=e._bodyInit,e.bodyUsed=!0)}else this.url=String(e);if(this.credentials=t.credentials||this.credentials||"same-origin",!t.headers&&this.headers||(this.headers=new d(t.headers)),this.method=(r=(n=t.method||this.method||"GET").toUpperCase(),h.indexOf(r)>-1?r:n),this.mode=t.mode||this.mode||null,this.signal=t.signal||this.signal,this.referrer=null,("GET"===this.method||"HEAD"===this.method)&&i)throw new TypeError("Body not allowed for GET or HEAD requests");this._initBody(i)}function A(e){var t=new FormData;return e.trim().split("&").forEach((function(e){if(e){var n=e.split("="),r=n.shift().replace(/\+/g," "),i=n.join("=").replace(/\+/g," ");t.append(decodeURIComponent(r),decodeURIComponent(i))}})),t}function y(e,t){t||(t={}),this.type="default",this.status=void 0===t.status?200:t.status,this.ok=this.status>=200&&this.status<300,this.statusText="statusText"in t?t.statusText:"OK",this.headers=new d(t.headers),this.url=t.url||"",this._initBody(e)}B.prototype.clone=function(){return new B(this,{body:this._bodyInit})},C.call(B.prototype),C.call(y.prototype),y.prototype.clone=function(){return new y(this._bodyInit,{status:this.status,statusText:this.statusText,headers:new d(this.headers),url:this.url})},y.error=function(){var e=new y(null,{status:0,statusText:""});return e.type="error",e};var f=[301,302,303,307,308];y.redirect=function(e,t){if(-1===f.indexOf(t))throw new RangeError("Invalid status code");return new y(null,{status:t,headers:{location:e}})},t.DOMException=e.DOMException;try{new t.DOMException}catch(Q){t.DOMException=function(e,t){this.message=e,this.name=t;var n=Error(e);this.stack=n.stack},t.DOMException.prototype=Object.create(Error.prototype),t.DOMException.prototype.constructor=t.DOMException}function G(e,n){return new Promise((function(r,o){var a=new B(e,n);if(a.signal&&a.signal.aborted)return o(new t.DOMException("Aborted","AbortError"));var c=new XMLHttpRequest;function l(){c.abort()}c.onload=function(){var e,t,n={status:c.status,statusText:c.statusText,headers:(e=c.getAllResponseHeaders()||"",t=new d,e.replace(/\r?\n[\t ]+/g," ").split(/\r?\n/).forEach((function(e){var n=e.split(":"),r=n.shift().trim();if(r){var i=n.join(":").trim();t.append(r,i)}})),t)};n.url="responseURL"in c?c.responseURL:n.headers.get("X-Request-URL");var i="response"in c?c.response:c.responseText;r(new y(i,n))},c.onerror=function(){o(new TypeError("Network request failed"))},c.ontimeout=function(){o(new TypeError("Network request failed"))},c.onabort=function(){o(new t.DOMException("Aborted","AbortError"))},c.open(a.method,a.url,!0),"include"===a.credentials?c.withCredentials=!0:"omit"===a.credentials&&(c.withCredentials=!1),"responseType"in c&&i&&(c.responseType="blob"),a.headers.forEach((function(e,t){c.setRequestHeader(t,e)})),a.signal&&(a.signal.addEventListener("abort",l),c.onreadystatechange=function(){4===c.readyState&&a.signal.removeEventListener("abort",l)}),c.send(void 0===a._bodyInit?null:a._bodyInit)}))}G.polyfill=!0,e.fetch||(e.fetch=G,e.Headers=d,e.Request=B,e.Response=y),t.Headers=d,t.Request=B,t.Response=y,t.fetch=G,Object.defineProperty(t,"__esModule",{value:!0})}({})}(r),r.fetch.ponyfill=!0,delete r.fetch.polyfill;var i=r;(t=i.fetch).default=i.fetch,t.fetch=i.fetch,t.Headers=i.Headers,t.Request=i.Request,t.Response=i.Response,e.exports=t},4353:function(e){e.exports=function(){"use strict";var e=6e4,t=36e5,n="millisecond",r="second",i="minute",o="hour",a="day",c="week",l="month",s="quarter",u="year",g="date",d="Invalid Date",I=/^(\d{4})[-/]?(\d{1,2})?[-/]?(\d{0,2})[Tt\s]*(\d{1,2})?:?(\d{1,2})?:?(\d{1,2})?[.:]?(\d+)?$/,p=/\[([^\]]+)]|Y{1,4}|M{1,4}|D{1,2}|d{1,4}|H{1,2}|h{1,2}|a|A|m{1,2}|s{1,2}|Z{1,2}|SSS/g,b={name:"en",weekdays:"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),months:"January_February_March_April_May_June_July_August_September_October_November_December".split("_"),ordinal:function(e){var t=["th","st","nd","rd"],n=e%100;return"["+e+(t[(n-20)%10]||t[n]||t[0])+"]"}},m=function(e,t,n){var r=String(e);return!r||r.length>=t?e:""+Array(t+1-r.length).join(n)+e},C={s:m,z:function(e){var t=-e.utcOffset(),n=Math.abs(t),r=Math.floor(n/60),i=n%60;return(t<=0?"+":"-")+m(r,2,"0")+":"+m(i,2,"0")},m:function e(t,n){if(t.date()<n.date())return-e(n,t);var r=12*(n.year()-t.year())+(n.month()-t.month()),i=t.clone().add(r,l),o=n-i<0,a=t.clone().add(r+(o?-1:1),l);return+(-(r+(n-i)/(o?i-a:a-i))||0)},a:function(e){return e<0?Math.ceil(e)||0:Math.floor(e)},p:function(e){return{M:l,y:u,w:c,d:a,D:g,h:o,m:i,s:r,ms:n,Q:s}[e]||String(e||"").toLowerCase().replace(/s$/,"")},u:function(e){return void 0===e}},h="en",B={};B[h]=b;var A="$isDayjsObject",y=function(e){return e instanceof F||!(!e||!e[A])},f=function e(t,n,r){var i;if(!t)return h;if("string"==typeof t){var o=t.toLowerCase();B[o]&&(i=o),n&&(B[o]=n,i=o);var a=t.split("-");if(!i&&a.length>1)return e(a[0])}else{var c=t.name;B[c]=t,i=c}return!r&&i&&(h=i),i||!r&&h},G=function(e,t){if(y(e))return e.clone();var n="object"==typeof t?t:{};return n.date=e,n.args=arguments,new F(n)},Q=C;Q.l=f,Q.i=y,Q.w=function(e,t){return G(e,{locale:t.$L,utc:t.$u,x:t.$x,$offset:t.$offset})};var F=function(){function b(e){this.$L=f(e.locale,null,!0),this.parse(e),this.$x=this.$x||e.x||{},this[A]=!0}var m=b.prototype;return m.parse=function(e){this.$d=function(e){var t=e.date,n=e.utc;if(null===t)return new Date(NaN);if(Q.u(t))return new Date;if(t instanceof Date)return new Date(t);if("string"==typeof t&&!/Z$/i.test(t)){var r=t.match(I);if(r){var i=r[2]-1||0,o=(r[7]||"0").substring(0,3);return n?new Date(Date.UTC(r[1],i,r[3]||1,r[4]||0,r[5]||0,r[6]||0,o)):new Date(r[1],i,r[3]||1,r[4]||0,r[5]||0,r[6]||0,o)}}return new Date(t)}(e),this.init()},m.init=function(){var e=this.$d;this.$y=e.getFullYear(),this.$M=e.getMonth(),this.$D=e.getDate(),this.$W=e.getDay(),this.$H=e.getHours(),this.$m=e.getMinutes(),this.$s=e.getSeconds(),this.$ms=e.getMilliseconds()},m.$utils=function(){return Q},m.isValid=function(){return!(this.$d.toString()===d)},m.isSame=function(e,t){var n=G(e);return this.startOf(t)<=n&&n<=this.endOf(t)},m.isAfter=function(e,t){return G(e)<this.startOf(t)},m.isBefore=function(e,t){return this.endOf(t)<G(e)},m.$g=function(e,t,n){return Q.u(e)?this[t]:this.set(n,e)},m.unix=function(){return Math.floor(this.valueOf()/1e3)},m.valueOf=function(){return this.$d.getTime()},m.startOf=function(e,t){var n=this,s=!!Q.u(t)||t,d=Q.p(e),I=function(e,t){var r=Q.w(n.$u?Date.UTC(n.$y,t,e):new Date(n.$y,t,e),n);return s?r:r.endOf(a)},p=function(e,t){return Q.w(n.toDate()[e].apply(n.toDate("s"),(s?[0,0,0,0]:[23,59,59,999]).slice(t)),n)},b=this.$W,m=this.$M,C=this.$D,h="set"+(this.$u?"UTC":"");switch(d){case u:return s?I(1,0):I(31,11);case l:return s?I(1,m):I(0,m+1);case c:var B=this.$locale().weekStart||0,A=(b<B?b+7:b)-B;return I(s?C-A:C+(6-A),m);case a:case g:return p(h+"Hours",0);case o:return p(h+"Minutes",1);case i:return p(h+"Seconds",2);case r:return p(h+"Milliseconds",3);default:return this.clone()}},m.endOf=function(e){return this.startOf(e,!1)},m.$set=function(e,t){var c,s=Q.p(e),d="set"+(this.$u?"UTC":""),I=(c={},c[a]=d+"Date",c[g]=d+"Date",c[l]=d+"Month",c[u]=d+"FullYear",c[o]=d+"Hours",c[i]=d+"Minutes",c[r]=d+"Seconds",c[n]=d+"Milliseconds",c)[s],p=s===a?this.$D+(t-this.$W):t;if(s===l||s===u){var b=this.clone().set(g,1);b.$d[I](p),b.init(),this.$d=b.set(g,Math.min(this.$D,b.daysInMonth())).$d}else I&&this.$d[I](p);return this.init(),this},m.set=function(e,t){return this.clone().$set(e,t)},m.get=function(e){return this[Q.p(e)]()},m.add=function(n,s){var g,d=this;n=Number(n);var I=Q.p(s),p=function(e){var t=G(d);return Q.w(t.date(t.date()+Math.round(e*n)),d)};if(I===l)return this.set(l,this.$M+n);if(I===u)return this.set(u,this.$y+n);if(I===a)return p(1);if(I===c)return p(7);var b=(g={},g[i]=e,g[o]=t,g[r]=1e3,g)[I]||1,m=this.$d.getTime()+n*b;return Q.w(m,this)},m.subtract=function(e,t){return this.add(-1*e,t)},m.format=function(e){var t=this,n=this.$locale();if(!this.isValid())return n.invalidDate||d;var r=e||"YYYY-MM-DDTHH:mm:ssZ",i=Q.z(this),o=this.$H,a=this.$m,c=this.$M,l=n.weekdays,s=n.months,u=n.meridiem,g=function(e,n,i,o){return e&&(e[n]||e(t,r))||i[n].slice(0,o)},I=function(e){return Q.s(o%12||12,e,"0")},b=u||function(e,t,n){var r=e<12?"AM":"PM";return n?r.toLowerCase():r};return r.replace(p,(function(e,r){return r||function(e){switch(e){case"YY":return String(t.$y).slice(-2);case"YYYY":return Q.s(t.$y,4,"0");case"M":return c+1;case"MM":return Q.s(c+1,2,"0");case"MMM":return g(n.monthsShort,c,s,3);case"MMMM":return g(s,c);case"D":return t.$D;case"DD":return Q.s(t.$D,2,"0");case"d":return String(t.$W);case"dd":return g(n.weekdaysMin,t.$W,l,2);case"ddd":return g(n.weekdaysShort,t.$W,l,3);case"dddd":return l[t.$W];case"H":return String(o);case"HH":return Q.s(o,2,"0");case"h":return I(1);case"hh":return I(2);case"a":return b(o,a,!0);case"A":return b(o,a,!1);case"m":return String(a);case"mm":return Q.s(a,2,"0");case"s":return String(t.$s);case"ss":return Q.s(t.$s,2,"0");case"SSS":return Q.s(t.$ms,3,"0");case"Z":return i}return null}(e)||i.replace(":","")}))},m.utcOffset=function(){return 15*-Math.round(this.$d.getTimezoneOffset()/15)},m.diff=function(n,g,d){var I,p=this,b=Q.p(g),m=G(n),C=(m.utcOffset()-this.utcOffset())*e,h=this-m,B=function(){return Q.m(p,m)};switch(b){case u:I=B()/12;break;case l:I=B();break;case s:I=B()/3;break;case c:I=(h-C)/6048e5;break;case a:I=(h-C)/864e5;break;case o:I=h/t;break;case i:I=h/e;break;case r:I=h/1e3;break;default:I=h}return d?I:Q.a(I)},m.daysInMonth=function(){return this.endOf(l).$D},m.$locale=function(){return B[this.$L]},m.locale=function(e,t){if(!e)return this.$L;var n=this.clone(),r=f(e,t,!0);return r&&(n.$L=r),n},m.clone=function(){return Q.w(this.$d,this)},m.toDate=function(){return new Date(this.valueOf())},m.toJSON=function(){return this.isValid()?this.toISOString():null},m.toISOString=function(){return this.$d.toISOString()},m.toString=function(){return this.$d.toUTCString()},b}(),v=F.prototype;return G.prototype=v,[["$ms",n],["$s",r],["$m",i],["$H",o],["$W",a],["$M",l],["$y",u],["$D",g]].forEach((function(e){v[e[1]]=function(t){return this.$g(t,e[0],e[1])}})),G.extend=function(e,t){return e.$i||(e(t,F,G),e.$i=!0),G},G.locale=f,G.isDayjs=y,G.unix=function(e){return G(1e3*e)},G.en=B[h],G.Ls=B,G.p={},G}()},7872:function(e){e.exports=function(){"use strict";return function(e,t,n){t.prototype.isBetween=function(e,t,r,i){var o=n(e),a=n(t),c="("===(i=i||"()")[0],l=")"===i[1];return(c?this.isAfter(o,r):!this.isBefore(o,r))&&(l?this.isBefore(a,r):!this.isAfter(a,r))||(c?this.isBefore(o,r):!this.isAfter(o,r))&&(l?this.isAfter(a,r):!this.isBefore(a,r))}}}()},2838:function(e){
/*! @license DOMPurify 3.1.2 | (c) Cure53 and other contributors | Released under the Apache license 2.0 and Mozilla Public License 2.0 | github.com/cure53/DOMPurify/blob/3.1.2/LICENSE */
e.exports=function(){"use strict";const{entries:e,setPrototypeOf:t,isFrozen:n,getPrototypeOf:r,getOwnPropertyDescriptor:i}=Object;let{freeze:o,seal:a,create:c}=Object,{apply:l,construct:s}="undefined"!=typeof Reflect&&Reflect;o||(o=function(e){return e}),a||(a=function(e){return e}),l||(l=function(e,t,n){return e.apply(t,n)}),s||(s=function(e,t){return new e(...t)});const u=f(Array.prototype.forEach),g=f(Array.prototype.pop),d=f(Array.prototype.push),I=f(String.prototype.toLowerCase),p=f(String.prototype.toString),b=f(String.prototype.match),m=f(String.prototype.replace),C=f(String.prototype.indexOf),h=f(String.prototype.trim),B=f(Object.prototype.hasOwnProperty),A=f(RegExp.prototype.test),y=function(e){return function(){for(var t=arguments.length,n=new Array(t),r=0;r<t;r++)n[r]=arguments[r];return s(e,n)}}(TypeError);function f(e){return function(t){for(var n=arguments.length,r=new Array(n>1?n-1:0),i=1;i<n;i++)r[i-1]=arguments[i];return l(e,t,r)}}function G(e,r){let i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:I;t&&t(e,null);let o=r.length;for(;o--;){let t=r[o];if("string"==typeof t){const e=i(t);e!==t&&(n(r)||(r[o]=e),t=e)}e[t]=!0}return e}function Q(e){for(let t=0;t<e.length;t++)B(e,t)||(e[t]=null);return e}function F(t){const n=c(null);for(const[r,i]of e(t))B(t,r)&&(Array.isArray(i)?n[r]=Q(i):i&&"object"==typeof i&&i.constructor===Object?n[r]=F(i):n[r]=i);return n}function v(e,t){for(;null!==e;){const n=i(e,t);if(n){if(n.get)return f(n.get);if("function"==typeof n.value)return f(n.value)}e=r(e)}return function(){return null}}const Z=o(["a","abbr","acronym","address","area","article","aside","audio","b","bdi","bdo","big","blink","blockquote","body","br","button","canvas","caption","center","cite","code","col","colgroup","content","data","datalist","dd","decorator","del","details","dfn","dialog","dir","div","dl","dt","element","em","fieldset","figcaption","figure","font","footer","form","h1","h2","h3","h4","h5","h6","head","header","hgroup","hr","html","i","img","input","ins","kbd","label","legend","li","main","map","mark","marquee","menu","menuitem","meter","nav","nobr","ol","optgroup","option","output","p","picture","pre","progress","q","rp","rt","ruby","s","samp","section","select","shadow","small","source","spacer","span","strike","strong","style","sub","summary","sup","table","tbody","td","template","textarea","tfoot","th","thead","time","tr","track","tt","u","ul","var","video","wbr"]),E=o(["svg","a","altglyph","altglyphdef","altglyphitem","animatecolor","animatemotion","animatetransform","circle","clippath","defs","desc","ellipse","filter","font","g","glyph","glyphref","hkern","image","line","lineargradient","marker","mask","metadata","mpath","path","pattern","polygon","polyline","radialgradient","rect","stop","style","switch","symbol","text","textpath","title","tref","tspan","view","vkern"]),S=o(["feBlend","feColorMatrix","feComponentTransfer","feComposite","feConvolveMatrix","feDiffuseLighting","feDisplacementMap","feDistantLight","feDropShadow","feFlood","feFuncA","feFuncB","feFuncG","feFuncR","feGaussianBlur","feImage","feMerge","feMergeNode","feMorphology","feOffset","fePointLight","feSpecularLighting","feSpotLight","feTile","feTurbulence"]),X=o(["animate","color-profile","cursor","discard","font-face","font-face-format","font-face-name","font-face-src","font-face-uri","foreignobject","hatch","hatchpath","mesh","meshgradient","meshpatch","meshrow","missing-glyph","script","set","solidcolor","unknown","use"]),T=o(["math","menclose","merror","mfenced","mfrac","mglyph","mi","mlabeledtr","mmultiscripts","mn","mo","mover","mpadded","mphantom","mroot","mrow","ms","mspace","msqrt","mstyle","msub","msup","msubsup","mtable","mtd","mtext","mtr","munder","munderover","mprescripts"]),x=o(["maction","maligngroup","malignmark","mlongdiv","mscarries","mscarry","msgroup","mstack","msline","msrow","semantics","annotation","annotation-xml","mprescripts","none"]),U=o(["#text"]),N=o(["accept","action","align","alt","autocapitalize","autocomplete","autopictureinpicture","autoplay","background","bgcolor","border","capture","cellpadding","cellspacing","checked","cite","class","clear","color","cols","colspan","controls","controlslist","coords","crossorigin","datetime","decoding","default","dir","disabled","disablepictureinpicture","disableremoteplayback","download","draggable","enctype","enterkeyhint","face","for","headers","height","hidden","high","href","hreflang","id","inputmode","integrity","ismap","kind","label","lang","list","loading","loop","low","max","maxlength","media","method","min","minlength","multiple","muted","name","nonce","noshade","novalidate","nowrap","open","optimum","pattern","placeholder","playsinline","poster","preload","pubdate","radiogroup","readonly","rel","required","rev","reversed","role","rows","rowspan","spellcheck","scope","selected","shape","size","sizes","span","srclang","start","src","srcset","step","style","summary","tabindex","title","translate","type","usemap","valign","value","width","wrap","xmlns","slot"]),R=o(["accent-height","accumulate","additive","alignment-baseline","ascent","attributename","attributetype","azimuth","basefrequency","baseline-shift","begin","bias","by","class","clip","clippathunits","clip-path","clip-rule","color","color-interpolation","color-interpolation-filters","color-profile","color-rendering","cx","cy","d","dx","dy","diffuseconstant","direction","display","divisor","dur","edgemode","elevation","end","fill","fill-opacity","fill-rule","filter","filterunits","flood-color","flood-opacity","font-family","font-size","font-size-adjust","font-stretch","font-style","font-variant","font-weight","fx","fy","g1","g2","glyph-name","glyphref","gradientunits","gradienttransform","height","href","id","image-rendering","in","in2","k","k1","k2","k3","k4","kerning","keypoints","keysplines","keytimes","lang","lengthadjust","letter-spacing","kernelmatrix","kernelunitlength","lighting-color","local","marker-end","marker-mid","marker-start","markerheight","markerunits","markerwidth","maskcontentunits","maskunits","max","mask","media","method","mode","min","name","numoctaves","offset","operator","opacity","order","orient","orientation","origin","overflow","paint-order","path","pathlength","patterncontentunits","patterntransform","patternunits","points","preservealpha","preserveaspectratio","primitiveunits","r","rx","ry","radius","refx","refy","repeatcount","repeatdur","restart","result","rotate","scale","seed","shape-rendering","specularconstant","specularexponent","spreadmethod","startoffset","stddeviation","stitchtiles","stop-color","stop-opacity","stroke-dasharray","stroke-dashoffset","stroke-linecap","stroke-linejoin","stroke-miterlimit","stroke-opacity","stroke","stroke-width","style","surfacescale","systemlanguage","tabindex","targetx","targety","transform","transform-origin","text-anchor","text-decoration","text-rendering","textlength","type","u1","u2","unicode","values","viewbox","visibility","version","vert-adv-y","vert-origin-x","vert-origin-y","width","word-spacing","wrap","writing-mode","xchannelselector","ychannelselector","x","x1","x2","xmlns","y","y1","y2","z","zoomandpan"]),O=o(["accent","accentunder","align","bevelled","close","columnsalign","columnlines","columnspan","denomalign","depth","dir","display","displaystyle","encoding","fence","frame","height","href","id","largeop","length","linethickness","lspace","lquote","mathbackground","mathcolor","mathsize","mathvariant","maxsize","minsize","movablelimits","notation","numalign","open","rowalign","rowlines","rowspacing","rowspan","rspace","rquote","scriptlevel","scriptminsize","scriptsizemultiplier","selection","separator","separators","stretchy","subscriptshift","supscriptshift","symmetric","voffset","width","xmlns"]),V=o(["xlink:href","xml:id","xlink:title","xml:space","xmlns:xlink"]),W=a(/\{\{[\w\W]*|[\w\W]*\}\}/gm),_=a(/<%[\w\W]*|[\w\W]*%>/gm),w=a(/\${[\w\W]*}/gm),H=a(/^data-[\-\w.\u00B7-\uFFFF]/),Y=a(/^aria-[\-\w]+$/),k=a(/^(?:(?:(?:f|ht)tps?|mailto|tel|callto|sms|cid|xmpp):|[^a-z]|[a-z+.\-]+(?:[^a-z+.\-:]|$))/i),D=a(/^(?:\w+script|data):/i),L=a(/[\u0000-\u0020\u00A0\u1680\u180E\u2000-\u2029\u205F\u3000]/g),P=a(/^html$/i),J=a(/^[a-z][.\w]*(-[.\w]+)+$/i);var M=Object.freeze({__proto__:null,MUSTACHE_EXPR:W,ERB_EXPR:_,TMPLIT_EXPR:w,DATA_ATTR:H,ARIA_ATTR:Y,IS_ALLOWED_URI:k,IS_SCRIPT_OR_DATA:D,ATTR_WHITESPACE:L,DOCTYPE_NAME:P,CUSTOM_ELEMENT:J});return function t(){let n=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"undefined"==typeof window?null:window;const r=e=>t(e);if(r.version="3.1.2",r.removed=[],!n||!n.document||9!==n.document.nodeType)return r.isSupported=!1,r;let{document:i}=n;const a=i,l=a.currentScript,{DocumentFragment:s,HTMLTemplateElement:f,Node:Q,Element:W,NodeFilter:_,NamedNodeMap:w=n.NamedNodeMap||n.MozNamedAttrMap,HTMLFormElement:H,DOMParser:Y,trustedTypes:D}=n,L=W.prototype,J=v(L,"cloneNode"),z=v(L,"nextSibling"),j=v(L,"childNodes"),K=v(L,"parentNode");if("function"==typeof f){const e=i.createElement("template");e.content&&e.content.ownerDocument&&(i=e.content.ownerDocument)}let q,$="";const{implementation:ee,createNodeIterator:te,createDocumentFragment:ne,getElementsByTagName:re}=i,{importNode:ie}=a;let oe={};r.isSupported="function"==typeof e&&"function"==typeof K&&ee&&void 0!==ee.createHTMLDocument;const{MUSTACHE_EXPR:ae,ERB_EXPR:ce,TMPLIT_EXPR:le,DATA_ATTR:se,ARIA_ATTR:ue,IS_SCRIPT_OR_DATA:ge,ATTR_WHITESPACE:de,CUSTOM_ELEMENT:Ie}=M;let{IS_ALLOWED_URI:pe}=M,be=null;const me=G({},[...Z,...E,...S,...T,...U]);let Ce=null;const he=G({},[...N,...R,...O,...V]);let Be=Object.seal(c(null,{tagNameCheck:{writable:!0,configurable:!1,enumerable:!0,value:null},attributeNameCheck:{writable:!0,configurable:!1,enumerable:!0,value:null},allowCustomizedBuiltInElements:{writable:!0,configurable:!1,enumerable:!0,value:!1}})),Ae=null,ye=null,fe=!0,Ge=!0,Qe=!1,Fe=!0,ve=!1,Ze=!0,Ee=!1,Se=!1,Xe=!1,Te=!1,xe=!1,Ue=!1,Ne=!0,Re=!1,Oe=!0,Ve=!1,We={},_e=null;const we=G({},["annotation-xml","audio","colgroup","desc","foreignobject","head","iframe","math","mi","mn","mo","ms","mtext","noembed","noframes","noscript","plaintext","script","style","svg","template","thead","title","video","xmp"]);let He=null;const Ye=G({},["audio","video","img","source","image","track"]);let ke=null;const De=G({},["alt","class","for","id","label","name","pattern","placeholder","role","summary","title","value","style","xmlns"]),Le="http://www.w3.org/1998/Math/MathML",Pe="http://www.w3.org/2000/svg",Je="http://www.w3.org/1999/xhtml";let Me=Je,ze=!1,je=null;const Ke=G({},[Le,Pe,Je],p);let qe=null;const $e=["application/xhtml+xml","text/html"];let et=null,tt=null;const nt=i.createElement("form"),rt=function(e){return e instanceof RegExp||e instanceof Function},it=function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};if(!tt||tt!==e){if(e&&"object"==typeof e||(e={}),e=F(e),qe=-1===$e.indexOf(e.PARSER_MEDIA_TYPE)?"text/html":e.PARSER_MEDIA_TYPE,et="application/xhtml+xml"===qe?p:I,be=B(e,"ALLOWED_TAGS")?G({},e.ALLOWED_TAGS,et):me,Ce=B(e,"ALLOWED_ATTR")?G({},e.ALLOWED_ATTR,et):he,je=B(e,"ALLOWED_NAMESPACES")?G({},e.ALLOWED_NAMESPACES,p):Ke,ke=B(e,"ADD_URI_SAFE_ATTR")?G(F(De),e.ADD_URI_SAFE_ATTR,et):De,He=B(e,"ADD_DATA_URI_TAGS")?G(F(Ye),e.ADD_DATA_URI_TAGS,et):Ye,_e=B(e,"FORBID_CONTENTS")?G({},e.FORBID_CONTENTS,et):we,Ae=B(e,"FORBID_TAGS")?G({},e.FORBID_TAGS,et):{},ye=B(e,"FORBID_ATTR")?G({},e.FORBID_ATTR,et):{},We=!!B(e,"USE_PROFILES")&&e.USE_PROFILES,fe=!1!==e.ALLOW_ARIA_ATTR,Ge=!1!==e.ALLOW_DATA_ATTR,Qe=e.ALLOW_UNKNOWN_PROTOCOLS||!1,Fe=!1!==e.ALLOW_SELF_CLOSE_IN_ATTR,ve=e.SAFE_FOR_TEMPLATES||!1,Ze=!1!==e.SAFE_FOR_XML,Ee=e.WHOLE_DOCUMENT||!1,Te=e.RETURN_DOM||!1,xe=e.RETURN_DOM_FRAGMENT||!1,Ue=e.RETURN_TRUSTED_TYPE||!1,Xe=e.FORCE_BODY||!1,Ne=!1!==e.SANITIZE_DOM,Re=e.SANITIZE_NAMED_PROPS||!1,Oe=!1!==e.KEEP_CONTENT,Ve=e.IN_PLACE||!1,pe=e.ALLOWED_URI_REGEXP||k,Me=e.NAMESPACE||Je,Be=e.CUSTOM_ELEMENT_HANDLING||{},e.CUSTOM_ELEMENT_HANDLING&&rt(e.CUSTOM_ELEMENT_HANDLING.tagNameCheck)&&(Be.tagNameCheck=e.CUSTOM_ELEMENT_HANDLING.tagNameCheck),e.CUSTOM_ELEMENT_HANDLING&&rt(e.CUSTOM_ELEMENT_HANDLING.attributeNameCheck)&&(Be.attributeNameCheck=e.CUSTOM_ELEMENT_HANDLING.attributeNameCheck),e.CUSTOM_ELEMENT_HANDLING&&"boolean"==typeof e.CUSTOM_ELEMENT_HANDLING.allowCustomizedBuiltInElements&&(Be.allowCustomizedBuiltInElements=e.CUSTOM_ELEMENT_HANDLING.allowCustomizedBuiltInElements),ve&&(Ge=!1),xe&&(Te=!0),We&&(be=G({},U),Ce=[],!0===We.html&&(G(be,Z),G(Ce,N)),!0===We.svg&&(G(be,E),G(Ce,R),G(Ce,V)),!0===We.svgFilters&&(G(be,S),G(Ce,R),G(Ce,V)),!0===We.mathMl&&(G(be,T),G(Ce,O),G(Ce,V))),e.ADD_TAGS&&(be===me&&(be=F(be)),G(be,e.ADD_TAGS,et)),e.ADD_ATTR&&(Ce===he&&(Ce=F(Ce)),G(Ce,e.ADD_ATTR,et)),e.ADD_URI_SAFE_ATTR&&G(ke,e.ADD_URI_SAFE_ATTR,et),e.FORBID_CONTENTS&&(_e===we&&(_e=F(_e)),G(_e,e.FORBID_CONTENTS,et)),Oe&&(be["#text"]=!0),Ee&&G(be,["html","head","body"]),be.table&&(G(be,["tbody"]),delete Ae.tbody),e.TRUSTED_TYPES_POLICY){if("function"!=typeof e.TRUSTED_TYPES_POLICY.createHTML)throw y('TRUSTED_TYPES_POLICY configuration option must provide a "createHTML" hook.');if("function"!=typeof e.TRUSTED_TYPES_POLICY.createScriptURL)throw y('TRUSTED_TYPES_POLICY configuration option must provide a "createScriptURL" hook.');q=e.TRUSTED_TYPES_POLICY,$=q.createHTML("")}else void 0===q&&(q=function(e,t){if("object"!=typeof e||"function"!=typeof e.createPolicy)return null;let n=null;const r="data-tt-policy-suffix";t&&t.hasAttribute(r)&&(n=t.getAttribute(r));const i="dompurify"+(n?"#"+n:"");try{return e.createPolicy(i,{createHTML:e=>e,createScriptURL:e=>e})}catch(o){return console.warn("TrustedTypes policy "+i+" could not be created."),null}}(D,l)),null!==q&&"string"==typeof $&&($=q.createHTML(""));o&&o(e),tt=e}},ot=G({},["mi","mo","mn","ms","mtext"]),at=G({},["foreignobject","annotation-xml"]),ct=G({},["title","style","font","a","script"]),lt=G({},[...E,...S,...X]),st=G({},[...T,...x]),ut=function(e){d(r.removed,{element:e});try{e.parentNode.removeChild(e)}catch(n){e.remove()}},gt=function(e,t){try{d(r.removed,{attribute:t.getAttributeNode(e),from:t})}catch(i){d(r.removed,{attribute:null,from:t})}if(t.removeAttribute(e),"is"===e&&!Ce[e])if(Te||xe)try{ut(t)}catch(i){}else try{t.setAttribute(e,"")}catch(i){}},dt=function(e){let t=null,n=null;if(Xe)e="<remove></remove>"+e;else{const t=b(e,/^[\r\n\t ]+/);n=t&&t[0]}"application/xhtml+xml"===qe&&Me===Je&&(e='<html xmlns="http://www.w3.org/1999/xhtml"><head></head><body>'+e+"</body></html>");const r=q?q.createHTML(e):e;if(Me===Je)try{t=(new Y).parseFromString(r,qe)}catch(l){}if(!t||!t.documentElement){t=ee.createDocument(Me,"template",null);try{t.documentElement.innerHTML=ze?$:r}catch(l){}}const o=t.body||t.documentElement;return e&&n&&o.insertBefore(i.createTextNode(n),o.childNodes[0]||null),Me===Je?re.call(t,Ee?"html":"body")[0]:Ee?t.documentElement:o},It=function(e){return te.call(e.ownerDocument||e,e,_.SHOW_ELEMENT|_.SHOW_COMMENT|_.SHOW_TEXT|_.SHOW_PROCESSING_INSTRUCTION|_.SHOW_CDATA_SECTION,null)},pt=function(e){return"function"==typeof Q&&e instanceof Q},bt=function(e,t,n){oe[e]&&u(oe[e],(e=>{e.call(r,t,n,tt)}))},mt=function(e){let t=null;if(bt("beforeSanitizeElements",e,null),function(e){return e instanceof H&&(void 0!==e.__depth&&"number"!=typeof e.__depth||void 0!==e.__removalCount&&"number"!=typeof e.__removalCount||"string"!=typeof e.nodeName||"string"!=typeof e.textContent||"function"!=typeof e.removeChild||!(e.attributes instanceof w)||"function"!=typeof e.removeAttribute||"function"!=typeof e.setAttribute||"string"!=typeof e.namespaceURI||"function"!=typeof e.insertBefore||"function"!=typeof e.hasChildNodes)}(e))return ut(e),!0;const n=et(e.nodeName);if(bt("uponSanitizeElement",e,{tagName:n,allowedTags:be}),e.hasChildNodes()&&!pt(e.firstElementChild)&&A(/<[/\w]/g,e.innerHTML)&&A(/<[/\w]/g,e.textContent))return ut(e),!0;if(7===e.nodeType)return ut(e),!0;if(Ze&&8===e.nodeType&&A(/<[/\w]/g,e.data))return ut(e),!0;if(!be[n]||Ae[n]){if(!Ae[n]&&ht(n)){if(Be.tagNameCheck instanceof RegExp&&A(Be.tagNameCheck,n))return!1;if(Be.tagNameCheck instanceof Function&&Be.tagNameCheck(n))return!1}if(Oe&&!_e[n]){const t=K(e)||e.parentNode,n=j(e)||e.childNodes;if(n&&t)for(let r=n.length-1;r>=0;--r){const i=J(n[r],!0);i.__removalCount=(e.__removalCount||0)+1,t.insertBefore(i,z(e))}}return ut(e),!0}return e instanceof W&&!function(e){let t=K(e);t&&t.tagName||(t={namespaceURI:Me,tagName:"template"});const n=I(e.tagName),r=I(t.tagName);return!!je[e.namespaceURI]&&(e.namespaceURI===Pe?t.namespaceURI===Je?"svg"===n:t.namespaceURI===Le?"svg"===n&&("annotation-xml"===r||ot[r]):Boolean(lt[n]):e.namespaceURI===Le?t.namespaceURI===Je?"math"===n:t.namespaceURI===Pe?"math"===n&&at[r]:Boolean(st[n]):e.namespaceURI===Je?!(t.namespaceURI===Pe&&!at[r])&&!(t.namespaceURI===Le&&!ot[r])&&!st[n]&&(ct[n]||!lt[n]):!("application/xhtml+xml"!==qe||!je[e.namespaceURI]))}(e)?(ut(e),!0):"noscript"!==n&&"noembed"!==n&&"noframes"!==n||!A(/<\/no(script|embed|frames)/i,e.innerHTML)?(ve&&3===e.nodeType&&(t=e.textContent,u([ae,ce,le],(e=>{t=m(t,e," ")})),e.textContent!==t&&(d(r.removed,{element:e.cloneNode()}),e.textContent=t)),bt("afterSanitizeElements",e,null),!1):(ut(e),!0)},Ct=function(e,t,n){if(Ne&&("id"===t||"name"===t)&&(n in i||n in nt))return!1;if(Ge&&!ye[t]&&A(se,t));else if(fe&&A(ue,t));else if(!Ce[t]||ye[t]){if(!(ht(e)&&(Be.tagNameCheck instanceof RegExp&&A(Be.tagNameCheck,e)||Be.tagNameCheck instanceof Function&&Be.tagNameCheck(e))&&(Be.attributeNameCheck instanceof RegExp&&A(Be.attributeNameCheck,t)||Be.attributeNameCheck instanceof Function&&Be.attributeNameCheck(t))||"is"===t&&Be.allowCustomizedBuiltInElements&&(Be.tagNameCheck instanceof RegExp&&A(Be.tagNameCheck,n)||Be.tagNameCheck instanceof Function&&Be.tagNameCheck(n))))return!1}else if(ke[t]);else if(A(pe,m(n,de,"")));else if("src"!==t&&"xlink:href"!==t&&"href"!==t||"script"===e||0!==C(n,"data:")||!He[e])if(Qe&&!A(ge,m(n,de,"")));else if(n)return!1;return!0},ht=function(e){return"annotation-xml"!==e&&b(e,Ie)},Bt=function(e){bt("beforeSanitizeAttributes",e,null);const{attributes:t}=e;if(!t)return;const n={attrName:"",attrValue:"",keepAttr:!0,allowedAttributes:Ce};let i=t.length;for(;i--;){const a=t[i],{name:c,namespaceURI:l,value:s}=a,d=et(c);let I="value"===c?s:h(s);if(n.attrName=d,n.attrValue=I,n.keepAttr=!0,n.forceKeepAttr=void 0,bt("uponSanitizeAttribute",e,n),I=n.attrValue,n.forceKeepAttr)continue;if(gt(c,e),!n.keepAttr)continue;if(!Fe&&A(/\/>/i,I)){gt(c,e);continue}ve&&u([ae,ce,le],(e=>{I=m(I,e," ")}));const p=et(e.nodeName);if(Ct(p,d,I)){if(!Re||"id"!==d&&"name"!==d||(gt(c,e),I="user-content-"+I),q&&"object"==typeof D&&"function"==typeof D.getAttributeType)if(l);else switch(D.getAttributeType(p,d)){case"TrustedHTML":I=q.createHTML(I);break;case"TrustedScriptURL":I=q.createScriptURL(I)}try{l?e.setAttributeNS(l,c,I):e.setAttribute(c,I),g(r.removed)}catch(o){}}}bt("afterSanitizeAttributes",e,null)},At=function e(t){let n=null;const r=It(t);for(bt("beforeSanitizeShadowDOM",t,null);n=r.nextNode();){if(bt("uponSanitizeShadowNode",n,null),mt(n))continue;const t=K(n);1===n.nodeType&&(t&&t.__depth?n.__depth=(n.__removalCount||0)+t.__depth+1:n.__depth=1),n.__depth>=255&&ut(n),n.content instanceof s&&(n.content.__depth=n.__depth,e(n.content)),Bt(n)}bt("afterSanitizeShadowDOM",t,null)};return r.sanitize=function(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},n=null,i=null,o=null,c=null;if(ze=!e,ze&&(e="\x3c!--\x3e"),"string"!=typeof e&&!pt(e)){if("function"!=typeof e.toString)throw y("toString is not a function");if("string"!=typeof(e=e.toString()))throw y("dirty is not a string, aborting")}if(!r.isSupported)return e;if(Se||it(t),r.removed=[],"string"==typeof e&&(Ve=!1),Ve){if(e.nodeName){const t=et(e.nodeName);if(!be[t]||Ae[t])throw y("root node is forbidden and cannot be sanitized in-place")}}else if(e instanceof Q)n=dt("\x3c!----\x3e"),i=n.ownerDocument.importNode(e,!0),1===i.nodeType&&"BODY"===i.nodeName||"HTML"===i.nodeName?n=i:n.appendChild(i);else{if(!Te&&!ve&&!Ee&&-1===e.indexOf("<"))return q&&Ue?q.createHTML(e):e;if(n=dt(e),!n)return Te?null:Ue?$:""}n&&Xe&&ut(n.firstChild);const l=It(Ve?e:n);for(;o=l.nextNode();){if(mt(o))continue;const e=K(o);1===o.nodeType&&(e&&e.__depth?o.__depth=(o.__removalCount||0)+e.__depth+1:o.__depth=1),o.__depth>=255&&ut(o),o.content instanceof s&&(o.content.__depth=o.__depth,At(o.content)),Bt(o)}if(Ve)return e;if(Te){if(xe)for(c=ne.call(n.ownerDocument);n.firstChild;)c.appendChild(n.firstChild);else c=n;return(Ce.shadowroot||Ce.shadowrootmode)&&(c=ie.call(a,c,!0)),c}let g=Ee?n.outerHTML:n.innerHTML;return Ee&&be["!doctype"]&&n.ownerDocument&&n.ownerDocument.doctype&&n.ownerDocument.doctype.name&&A(P,n.ownerDocument.doctype.name)&&(g="<!DOCTYPE "+n.ownerDocument.doctype.name+">\n"+g),ve&&u([ae,ce,le],(e=>{g=m(g,e," ")})),q&&Ue?q.createHTML(g):g},r.setConfig=function(){it(arguments.length>0&&void 0!==arguments[0]?arguments[0]:{}),Se=!0},r.clearConfig=function(){tt=null,Se=!1},r.isValidAttribute=function(e,t,n){tt||it({});const r=et(e),i=et(t);return Ct(r,i,n)},r.addHook=function(e,t){"function"==typeof t&&(oe[e]=oe[e]||[],d(oe[e],t))},r.removeHook=function(e){if(oe[e])return g(oe[e])},r.removeHooks=function(e){oe[e]&&(oe[e]=[])},r.removeAllHooks=function(){oe={}},r}()}()},1040:(e,t,n)=>{var r=n(8404),i=n(2524).each;function o(e,t){this.query=e,this.isUnconditional=t,this.handlers=[],this.mql=window.matchMedia(e);var n=this;this.listener=function(e){n.mql=e.currentTarget||e,n.assess()},this.mql.addListener(this.listener)}o.prototype={constuctor:o,addHandler:function(e){var t=new r(e);this.handlers.push(t),this.matches()&&t.on()},removeHandler:function(e){var t=this.handlers;i(t,(function(n,r){if(n.equals(e))return n.destroy(),!t.splice(r,1)}))},matches:function(){return this.mql.matches||this.isUnconditional},clear:function(){i(this.handlers,(function(e){e.destroy()})),this.mql.removeListener(this.listener),this.handlers.length=0},assess:function(){var e=this.matches()?"on":"off";i(this.handlers,(function(t){t[e]()}))}},e.exports=o},1098:(e,t,n)=>{var r=n(1040),i=n(2524),o=i.each,a=i.isFunction,c=i.isArray;function l(){if(!window.matchMedia)throw new Error("matchMedia not present, legacy browsers require a polyfill");this.queries={},this.browserIsIncapable=!window.matchMedia("only all").matches}l.prototype={constructor:l,register:function(e,t,n){var i=this.queries,l=n&&this.browserIsIncapable;return i[e]||(i[e]=new r(e,l)),a(t)&&(t={match:t}),c(t)||(t=[t]),o(t,(function(t){a(t)&&(t={match:t}),i[e].addHandler(t)})),this},unregister:function(e,t){var n=this.queries[e];return n&&(t?n.removeHandler(t):(n.clear(),delete this.queries[e])),this}},e.exports=l},8404:e=>{function t(e){this.options=e,!e.deferSetup&&this.setup()}t.prototype={constructor:t,setup:function(){this.options.setup&&this.options.setup(),this.initialised=!0},on:function(){!this.initialised&&this.setup(),this.options.match&&this.options.match()},off:function(){this.options.unmatch&&this.options.unmatch()},destroy:function(){this.options.destroy?this.options.destroy():this.off()},equals:function(e){return this.options===e||this.options.match===e}},e.exports=t},2524:e=>{e.exports={isFunction:function(e){return"function"==typeof e},isArray:function(e){return"[object Array]"===Object.prototype.toString.apply(e)},each:function(e,t){for(var n=0,r=e.length;n<r&&!1!==t(e[n],n);n++);}}},2386:(e,t,n)=>{var r=n(1098);e.exports=new r},4263:function(e,t,n){var r,i,o;!function(){"use strict";i=[n(343)],void 0===(o="function"==typeof(r=function(e){var t=/(^|@)\S+:\d+/,n=/^\s*at .*(\S+:\d+|\(native\))/m,r=/^(eval@)?(\[native code])?$/;return{parse:function(e){if(void 0!==e.stacktrace||void 0!==e["opera#sourceloc"])return this.parseOpera(e);if(e.stack&&e.stack.match(n))return this.parseV8OrIE(e);if(e.stack)return this.parseFFOrSafari(e);throw new Error("Cannot parse given Error object")},extractLocation:function(e){if(-1===e.indexOf(":"))return[e];var t=/(.+?)(?::(\d+))?(?::(\d+))?$/.exec(e.replace(/[()]/g,""));return[t[1],t[2]||void 0,t[3]||void 0]},parseV8OrIE:function(t){return t.stack.split("\n").filter((function(e){return!!e.match(n)}),this).map((function(t){t.indexOf("(eval ")>-1&&(t=t.replace(/eval code/g,"eval").replace(/(\(eval at [^()]*)|(,.*$)/g,""));var n=t.replace(/^\s+/,"").replace(/\(eval code/g,"(").replace(/^.*?\s+/,""),r=n.match(/ (\(.+\)$)/);n=r?n.replace(r[0],""):n;var i=this.extractLocation(r?r[1]:n),o=r&&n||void 0,a=["eval","<anonymous>"].indexOf(i[0])>-1?void 0:i[0];return new e({functionName:o,fileName:a,lineNumber:i[1],columnNumber:i[2],source:t})}),this)},parseFFOrSafari:function(t){return t.stack.split("\n").filter((function(e){return!e.match(r)}),this).map((function(t){if(t.indexOf(" > eval")>-1&&(t=t.replace(/ line (\d+)(?: > eval line \d+)* > eval:\d+:\d+/g,":$1")),-1===t.indexOf("@")&&-1===t.indexOf(":"))return new e({functionName:t});var n=/((.*".+"[^@]*)?[^@]*)(?:@)/,r=t.match(n),i=r&&r[1]?r[1]:void 0,o=this.extractLocation(t.replace(n,""));return new e({functionName:i,fileName:o[0],lineNumber:o[1],columnNumber:o[2],source:t})}),this)},parseOpera:function(e){return!e.stacktrace||e.message.indexOf("\n")>-1&&e.message.split("\n").length>e.stacktrace.split("\n").length?this.parseOpera9(e):e.stack?this.parseOpera11(e):this.parseOpera10(e)},parseOpera9:function(t){for(var n=/Line (\d+).*script (?:in )?(\S+)/i,r=t.message.split("\n"),i=[],o=2,a=r.length;o<a;o+=2){var c=n.exec(r[o]);c&&i.push(new e({fileName:c[2],lineNumber:c[1],source:r[o]}))}return i},parseOpera10:function(t){for(var n=/Line (\d+).*script (?:in )?(\S+)(?:: In function (\S+))?$/i,r=t.stacktrace.split("\n"),i=[],o=0,a=r.length;o<a;o+=2){var c=n.exec(r[o]);c&&i.push(new e({functionName:c[3]||void 0,fileName:c[2],lineNumber:c[1],source:r[o]}))}return i},parseOpera11:function(n){return n.stack.split("\n").filter((function(e){return!!e.match(t)&&!e.match(/^Error created at/)}),this).map((function(t){var n,r=t.split("@"),i=this.extractLocation(r.pop()),o=r.shift()||"",a=o.replace(/<anonymous function(: (\w+))?>/,"$2").replace(/\([^)]*\)/g,"")||void 0;o.match(/\(([^)]*)\)/)&&(n=o.replace(/^[^(]+\(([^)]*)\)$/,"$1"));var c=void 0===n||"[arguments not available]"===n?void 0:n.split(",");return new e({functionName:a,args:c,fileName:i[0],lineNumber:i[1],columnNumber:i[2],source:t})}),this)}}})?r.apply(t,i):r)||(e.exports=o)}()},2492:e=>{"use strict";e.exports=function(e,t){t||(t={}),"function"==typeof t&&(t={cmp:t});var n,r="boolean"==typeof t.cycles&&t.cycles,i=t.cmp&&(n=t.cmp,function(e){return function(t,r){var i={key:t,value:e[t]},o={key:r,value:e[r]};return n(i,o)}}),o=[];return function e(t){if(t&&t.toJSON&&"function"==typeof t.toJSON&&(t=t.toJSON()),void 0!==t){if("number"==typeof t)return isFinite(t)?""+t:"null";if("object"!=typeof t)return JSON.stringify(t);var n,a;if(Array.isArray(t)){for(a="[",n=0;n<t.length;n++)n&&(a+=","),a+=e(t[n])||"null";return a+"]"}if(null===t)return"null";if(-1!==o.indexOf(t)){if(r)return JSON.stringify("__cycle__");throw new TypeError("Converting circular structure to JSON")}var c=o.push(t)-1,l=Object.keys(t).sort(i&&i(t));for(a="",n=0;n<l.length;n++){var s=l[n],u=e(t[s]);u&&(a&&(a+=","),a+=JSON.stringify(s)+":"+u)}return o.splice(c,1),"{"+a+"}"}}(e)}},8463:e=>{e.exports=a,a.default=a,a.stable=u,a.stableStringify=u;var t="[...]",n="[Circular]",r=[],i=[];function o(){return{depthLimit:Number.MAX_SAFE_INTEGER,edgesLimit:Number.MAX_SAFE_INTEGER}}function a(e,t,n,a){var c;void 0===a&&(a=o()),l(e,"",0,[],void 0,0,a);try{c=0===i.length?JSON.stringify(e,t,n):JSON.stringify(e,d(t),n)}catch(u){return JSON.stringify("[unable to serialize, circular reference is too complex to analyze]")}finally{for(;0!==r.length;){var s=r.pop();4===s.length?Object.defineProperty(s[0],s[1],s[3]):s[0][s[1]]=s[2]}}return c}function c(e,t,n,o){var a=Object.getOwnPropertyDescriptor(o,n);void 0!==a.get?a.configurable?(Object.defineProperty(o,n,{value:e}),r.push([o,n,t,a])):i.push([t,n,e]):(o[n]=e,r.push([o,n,t]))}function l(e,r,i,o,a,s,u){var g;if(s+=1,"object"==typeof e&&null!==e){for(g=0;g<o.length;g++)if(o[g]===e)return void c(n,e,r,a);if(void 0!==u.depthLimit&&s>u.depthLimit)return void c(t,e,r,a);if(void 0!==u.edgesLimit&&i+1>u.edgesLimit)return void c(t,e,r,a);if(o.push(e),Array.isArray(e))for(g=0;g<e.length;g++)l(e[g],g,g,o,e,s,u);else{var d=Object.keys(e);for(g=0;g<d.length;g++){var I=d[g];l(e[I],I,g,o,e,s,u)}}o.pop()}}function s(e,t){return e<t?-1:e>t?1:0}function u(e,t,n,a){void 0===a&&(a=o());var c,l=g(e,"",0,[],void 0,0,a)||e;try{c=0===i.length?JSON.stringify(l,t,n):JSON.stringify(l,d(t),n)}catch(u){return JSON.stringify("[unable to serialize, circular reference is too complex to analyze]")}finally{for(;0!==r.length;){var s=r.pop();4===s.length?Object.defineProperty(s[0],s[1],s[3]):s[0][s[1]]=s[2]}}return c}function g(e,i,o,a,l,u,d){var I;if(u+=1,"object"==typeof e&&null!==e){for(I=0;I<a.length;I++)if(a[I]===e)return void c(n,e,i,l);try{if("function"==typeof e.toJSON)return}catch(C){return}if(void 0!==d.depthLimit&&u>d.depthLimit)return void c(t,e,i,l);if(void 0!==d.edgesLimit&&o+1>d.edgesLimit)return void c(t,e,i,l);if(a.push(e),Array.isArray(e))for(I=0;I<e.length;I++)g(e[I],I,I,a,e,u,d);else{var p={},b=Object.keys(e).sort(s);for(I=0;I<b.length;I++){var m=b[I];g(e[m],m,I,a,e,u,d),p[m]=e[m]}if(void 0===l)return p;r.push([l,i,e]),l[i]=p}a.pop()}}function d(e){return e=void 0!==e?e:function(e,t){return t},function(t,n){if(i.length>0)for(var r=0;r<i.length;r++){var o=i[r];if(o[1]===t&&o[0]===n){n=o[2],i.splice(r,1);break}}return e.call(this,t,n)}}},9353:e=>{"use strict";var t=Array.prototype.slice,n=Object.prototype.toString;e.exports=function(e){var r=this;if("function"!=typeof r||"[object Function]"!==n.call(r))throw new TypeError("Function.prototype.bind called on incompatible "+r);for(var i,o=t.call(arguments,1),a=Math.max(0,r.length-o.length),c=[],l=0;l<a;l++)c.push("$"+l);if(i=Function("binder","return function ("+c.join(",")+"){ return binder.apply(this,arguments); }")((function(){if(this instanceof i){var n=r.apply(this,o.concat(t.call(arguments)));return Object(n)===n?n:this}return r.apply(e,o.concat(t.call(arguments)))})),r.prototype){var s=function(){};s.prototype=r.prototype,i.prototype=new s,s.prototype=null}return i}},6743:(e,t,n)=>{"use strict";var r=n(9353);e.exports=Function.prototype.bind||r},453:(e,t,n)=>{"use strict";var r,i=SyntaxError,o=Function,a=TypeError,c=function(e){try{return o('"use strict"; return ('+e+").constructor;")()}catch(t){}},l=Object.getOwnPropertyDescriptor;if(l)try{l({},"")}catch(X){l=null}var s=function(){throw new a},u=l?function(){try{return s}catch(e){try{return l(arguments,"callee").get}catch(t){return s}}}():s,g=n(4039)(),d=n(24)(),I=Object.getPrototypeOf||(d?function(e){return e.__proto__}:null),p={},b="undefined"!=typeof Uint8Array&&I?I(Uint8Array):r,m={"%AggregateError%":"undefined"==typeof AggregateError?r:AggregateError,"%Array%":Array,"%ArrayBuffer%":"undefined"==typeof ArrayBuffer?r:ArrayBuffer,"%ArrayIteratorPrototype%":g&&I?I([][Symbol.iterator]()):r,"%AsyncFromSyncIteratorPrototype%":r,"%AsyncFunction%":p,"%AsyncGenerator%":p,"%AsyncGeneratorFunction%":p,"%AsyncIteratorPrototype%":p,"%Atomics%":"undefined"==typeof Atomics?r:Atomics,"%BigInt%":"undefined"==typeof BigInt?r:BigInt,"%BigInt64Array%":"undefined"==typeof BigInt64Array?r:BigInt64Array,"%BigUint64Array%":"undefined"==typeof BigUint64Array?r:BigUint64Array,"%Boolean%":Boolean,"%DataView%":"undefined"==typeof DataView?r:DataView,"%Date%":Date,"%decodeURI%":decodeURI,"%decodeURIComponent%":decodeURIComponent,"%encodeURI%":encodeURI,"%encodeURIComponent%":encodeURIComponent,"%Error%":Error,"%eval%":eval,"%EvalError%":EvalError,"%Float32Array%":"undefined"==typeof Float32Array?r:Float32Array,"%Float64Array%":"undefined"==typeof Float64Array?r:Float64Array,"%FinalizationRegistry%":"undefined"==typeof FinalizationRegistry?r:FinalizationRegistry,"%Function%":o,"%GeneratorFunction%":p,"%Int8Array%":"undefined"==typeof Int8Array?r:Int8Array,"%Int16Array%":"undefined"==typeof Int16Array?r:Int16Array,"%Int32Array%":"undefined"==typeof Int32Array?r:Int32Array,"%isFinite%":isFinite,"%isNaN%":isNaN,"%IteratorPrototype%":g&&I?I(I([][Symbol.iterator]())):r,"%JSON%":"object"==typeof JSON?JSON:r,"%Map%":"undefined"==typeof Map?r:Map,"%MapIteratorPrototype%":"undefined"!=typeof Map&&g&&I?I((new Map)[Symbol.iterator]()):r,"%Math%":Math,"%Number%":Number,"%Object%":Object,"%parseFloat%":parseFloat,"%parseInt%":parseInt,"%Promise%":"undefined"==typeof Promise?r:Promise,"%Proxy%":"undefined"==typeof Proxy?r:Proxy,"%RangeError%":RangeError,"%ReferenceError%":ReferenceError,"%Reflect%":"undefined"==typeof Reflect?r:Reflect,"%RegExp%":RegExp,"%Set%":"undefined"==typeof Set?r:Set,"%SetIteratorPrototype%":"undefined"!=typeof Set&&g&&I?I((new Set)[Symbol.iterator]()):r,"%SharedArrayBuffer%":"undefined"==typeof SharedArrayBuffer?r:SharedArrayBuffer,"%String%":String,"%StringIteratorPrototype%":g&&I?I(""[Symbol.iterator]()):r,"%Symbol%":g?Symbol:r,"%SyntaxError%":i,"%ThrowTypeError%":u,"%TypedArray%":b,"%TypeError%":a,"%Uint8Array%":"undefined"==typeof Uint8Array?r:Uint8Array,"%Uint8ClampedArray%":"undefined"==typeof Uint8ClampedArray?r:Uint8ClampedArray,"%Uint16Array%":"undefined"==typeof Uint16Array?r:Uint16Array,"%Uint32Array%":"undefined"==typeof Uint32Array?r:Uint32Array,"%URIError%":URIError,"%WeakMap%":"undefined"==typeof WeakMap?r:WeakMap,"%WeakRef%":"undefined"==typeof WeakRef?r:WeakRef,"%WeakSet%":"undefined"==typeof WeakSet?r:WeakSet};if(I)try{null.error}catch(X){var C=I(I(X));m["%Error.prototype%"]=C}var h=function e(t){var n;if("%AsyncFunction%"===t)n=c("async function () {}");else if("%GeneratorFunction%"===t)n=c("function* () {}");else if("%AsyncGeneratorFunction%"===t)n=c("async function* () {}");else if("%AsyncGenerator%"===t){var r=e("%AsyncGeneratorFunction%");r&&(n=r.prototype)}else if("%AsyncIteratorPrototype%"===t){var i=e("%AsyncGenerator%");i&&I&&(n=I(i.prototype))}return m[t]=n,n},B={"%ArrayBufferPrototype%":["ArrayBuffer","prototype"],"%ArrayPrototype%":["Array","prototype"],"%ArrayProto_entries%":["Array","prototype","entries"],"%ArrayProto_forEach%":["Array","prototype","forEach"],"%ArrayProto_keys%":["Array","prototype","keys"],"%ArrayProto_values%":["Array","prototype","values"],"%AsyncFunctionPrototype%":["AsyncFunction","prototype"],"%AsyncGenerator%":["AsyncGeneratorFunction","prototype"],"%AsyncGeneratorPrototype%":["AsyncGeneratorFunction","prototype","prototype"],"%BooleanPrototype%":["Boolean","prototype"],"%DataViewPrototype%":["DataView","prototype"],"%DatePrototype%":["Date","prototype"],"%ErrorPrototype%":["Error","prototype"],"%EvalErrorPrototype%":["EvalError","prototype"],"%Float32ArrayPrototype%":["Float32Array","prototype"],"%Float64ArrayPrototype%":["Float64Array","prototype"],"%FunctionPrototype%":["Function","prototype"],"%Generator%":["GeneratorFunction","prototype"],"%GeneratorPrototype%":["GeneratorFunction","prototype","prototype"],"%Int8ArrayPrototype%":["Int8Array","prototype"],"%Int16ArrayPrototype%":["Int16Array","prototype"],"%Int32ArrayPrototype%":["Int32Array","prototype"],"%JSONParse%":["JSON","parse"],"%JSONStringify%":["JSON","stringify"],"%MapPrototype%":["Map","prototype"],"%NumberPrototype%":["Number","prototype"],"%ObjectPrototype%":["Object","prototype"],"%ObjProto_toString%":["Object","prototype","toString"],"%ObjProto_valueOf%":["Object","prototype","valueOf"],"%PromisePrototype%":["Promise","prototype"],"%PromiseProto_then%":["Promise","prototype","then"],"%Promise_all%":["Promise","all"],"%Promise_reject%":["Promise","reject"],"%Promise_resolve%":["Promise","resolve"],"%RangeErrorPrototype%":["RangeError","prototype"],"%ReferenceErrorPrototype%":["ReferenceError","prototype"],"%RegExpPrototype%":["RegExp","prototype"],"%SetPrototype%":["Set","prototype"],"%SharedArrayBufferPrototype%":["SharedArrayBuffer","prototype"],"%StringPrototype%":["String","prototype"],"%SymbolPrototype%":["Symbol","prototype"],"%SyntaxErrorPrototype%":["SyntaxError","prototype"],"%TypedArrayPrototype%":["TypedArray","prototype"],"%TypeErrorPrototype%":["TypeError","prototype"],"%Uint8ArrayPrototype%":["Uint8Array","prototype"],"%Uint8ClampedArrayPrototype%":["Uint8ClampedArray","prototype"],"%Uint16ArrayPrototype%":["Uint16Array","prototype"],"%Uint32ArrayPrototype%":["Uint32Array","prototype"],"%URIErrorPrototype%":["URIError","prototype"],"%WeakMapPrototype%":["WeakMap","prototype"],"%WeakSetPrototype%":["WeakSet","prototype"]},A=n(6743),y=n(9030),f=A.call(Function.call,Array.prototype.concat),G=A.call(Function.apply,Array.prototype.splice),Q=A.call(Function.call,String.prototype.replace),F=A.call(Function.call,String.prototype.slice),v=A.call(Function.call,RegExp.prototype.exec),Z=/[^%.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|%$))/g,E=/\\(\\)?/g,S=function(e,t){var n,r=e;if(y(B,r)&&(r="%"+(n=B[r])[0]+"%"),y(m,r)){var o=m[r];if(o===p&&(o=h(r)),void 0===o&&!t)throw new a("intrinsic "+e+" exists, but is not available. Please file an issue!");return{alias:n,name:r,value:o}}throw new i("intrinsic "+e+" does not exist!")};e.exports=function(e,t){if("string"!=typeof e||0===e.length)throw new a("intrinsic name must be a non-empty string");if(arguments.length>1&&"boolean"!=typeof t)throw new a('"allowMissing" argument must be a boolean');if(null===v(/^%?[^%]*%?$/,e))throw new i("`%` may not be present anywhere but at the beginning and end of the intrinsic name");var n=function(e){var t=F(e,0,1),n=F(e,-1);if("%"===t&&"%"!==n)throw new i("invalid intrinsic syntax, expected closing `%`");if("%"===n&&"%"!==t)throw new i("invalid intrinsic syntax, expected opening `%`");var r=[];return Q(e,Z,(function(e,t,n,i){r[r.length]=n?Q(i,E,"$1"):t||e})),r}(e),r=n.length>0?n[0]:"",o=S("%"+r+"%",t),c=o.name,s=o.value,u=!1,g=o.alias;g&&(r=g[0],G(n,f([0,1],g)));for(var d=1,I=!0;d<n.length;d+=1){var p=n[d],b=F(p,0,1),C=F(p,-1);if(('"'===b||"'"===b||"`"===b||'"'===C||"'"===C||"`"===C)&&b!==C)throw new i("property names with quotes must have matching quotes");if("constructor"!==p&&I||(u=!0),y(m,c="%"+(r+="."+p)+"%"))s=m[c];else if(null!=s){if(!(p in s)){if(!t)throw new a("base intrinsic for "+e+" exists, but the property is not available.");return}if(l&&d+1>=n.length){var h=l(s,p);s=(I=!!h)&&"get"in h&&!("originalValue"in h.get)?h.get:s[p]}else I=y(s,p),s=s[p];I&&!u&&(m[c]=s)}}return s}},7358:(e,t,n)=>{var r=n(246).parse;function i(e){return e.replace(/[\s,]+/g," ").trim()}var o={},a={},c=!0;function l(e,t){var n=Object.prototype.toString.call(e);if("[object Array]"===n)return e.map((function(e){return l(e,t)}));if("[object Object]"!==n)throw new Error("Unexpected input.");t&&e.loc&&delete e.loc,e.loc&&(delete e.loc.startToken,delete e.loc.endToken);var r,i,o,a=Object.keys(e);for(r in a)a.hasOwnProperty(r)&&(i=e[a[r]],"[object Object]"!==(o=Object.prototype.toString.call(i))&&"[object Array]"!==o||(e[a[r]]=l(i,!0)));return e}var s=!1;function u(e){var t=i(e);if(o[t])return o[t];var n=r(e,{experimentalFragmentVariables:s});if(!n||"Document"!==n.kind)throw new Error("Not a valid GraphQL document.");return n=l(n=function(e){for(var t,n={},r=[],o=0;o<e.definitions.length;o++){var l=e.definitions[o];if("FragmentDefinition"===l.kind){var s=l.name.value,u=i((t=l.loc).source.body.substring(t.start,t.end));a.hasOwnProperty(s)&&!a[s][u]?(c&&console.warn("Warning: fragment with name "+s+" already exists.\ngraphql-tag enforces all fragment names across your application to be unique; read more about\nthis in the docs: http://dev.apollodata.com/core/fragments.html#unique-names"),a[s][u]=!0):a.hasOwnProperty(s)||(a[s]={},a[s][u]=!0),n[u]||(n[u]=!0,r.push(l))}else r.push(l)}return e.definitions=r,e}(n),!1),o[t]=n,n}function g(){for(var e=Array.prototype.slice.call(arguments),t=e[0],n="string"==typeof t?t:t[0],r=1;r<e.length;r++)e[r]&&e[r].kind&&"Document"===e[r].kind?n+=e[r].loc.source.body:n+=e[r],n+=t[r];return u(n)}g.default=g,g.resetCaches=function(){o={},a={}},g.disableFragmentWarnings=function(){c=!1},g.enableExperimentalFragmentVariables=function(){s=!0},g.disableExperimentalFragmentVariables=function(){s=!1},e.exports=g},1702:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.GraphQLError=c,t.printError=l;var r,i=(r=n(5569))&&r.__esModule?r:{default:r},o=n(9530),a=n(825);function c(e,t,n,r,a,l,s){var u=Array.isArray(t)?0!==t.length?t:void 0:t?[t]:void 0,g=n;if(!g&&u){var d=u[0];g=d&&d.loc&&d.loc.source}var I,p=r;!p&&u&&(p=u.reduce((function(e,t){return t.loc&&e.push(t.loc.start),e}),[])),p&&0===p.length&&(p=void 0),r&&n?I=r.map((function(e){return(0,o.getLocation)(n,e)})):u&&(I=u.reduce((function(e,t){return t.loc&&e.push((0,o.getLocation)(t.loc.source,t.loc.start)),e}),[]));var b=s;if(null==b&&null!=l){var m=l.extensions;(0,i.default)(m)&&(b=m)}Object.defineProperties(this,{message:{value:e,enumerable:!0,writable:!0},locations:{value:I||void 0,enumerable:Boolean(I)},path:{value:a||void 0,enumerable:Boolean(a)},nodes:{value:u||void 0},source:{value:g||void 0},positions:{value:p||void 0},originalError:{value:l},extensions:{value:b||void 0,enumerable:Boolean(b)}}),l&&l.stack?Object.defineProperty(this,"stack",{value:l.stack,writable:!0,configurable:!0}):Error.captureStackTrace?Error.captureStackTrace(this,c):Object.defineProperty(this,"stack",{value:Error().stack,writable:!0,configurable:!0})}function l(e){var t=e.message;if(e.nodes)for(var n=0,r=e.nodes;n<r.length;n++){var i=r[n];i.loc&&(t+="\n\n"+(0,a.printLocation)(i.loc))}else if(e.source&&e.locations)for(var o=0,c=e.locations;o<c.length;o++){var l=c[o];t+="\n\n"+(0,a.printSourceLocation)(e.source,l)}return t}c.prototype=Object.create(Error.prototype,{constructor:{value:c},name:{value:"GraphQLError"},toString:{value:function(){return l(this)}}})},1352:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.syntaxError=function(e,t,n){return new r.GraphQLError("Syntax Error: ".concat(n),void 0,e,[t])};var r=n(1702)},6633:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:e.prototype.toString;e.prototype.toJSON=t,e.prototype.inspect=t,i.default&&(e.prototype[i.default]=t)};var r,i=(r=n(8493))&&r.__esModule?r:{default:r}},6192:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=function(e){"function"==typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e.prototype,Symbol.toStringTag,{get:function(){return this.constructor.name}})}},3028:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=function(e,t){if(!Boolean(e))throw new Error(t)}},9657:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=function(e){return l(e,[])};var r,i=(r=n(8493))&&r.__esModule?r:{default:r};function o(e){return o="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},o(e)}var a=10,c=2;function l(e,t){switch(o(e)){case"string":return JSON.stringify(e);case"function":return e.name?"[function ".concat(e.name,"]"):"[function]";case"object":return null===e?"null":function(e,t){if(-1!==t.indexOf(e))return"[Circular]";var n=[].concat(t,[e]),r=function(e){var t=e[String(i.default)];return"function"==typeof t?t:"function"==typeof e.inspect?e.inspect:void 0}(e);if(void 0!==r){var o=r.call(e);if(o!==e)return"string"==typeof o?o:l(o,n)}else if(Array.isArray(e))return function(e,t){if(0===e.length)return"[]";if(t.length>c)return"[Array]";for(var n=Math.min(a,e.length),r=e.length-n,i=[],o=0;o<n;++o)i.push(l(e[o],t));return 1===r?i.push("... 1 more item"):r>1&&i.push("... ".concat(r," more items")),"["+i.join(", ")+"]"}(e,n);return function(e,t){var n=Object.keys(e);return 0===n.length?"{}":t.length>c?"["+function(e){var t=Object.prototype.toString.call(e).replace(/^\[object /,"").replace(/]$/,"");if("Object"===t&&"function"==typeof e.constructor){var n=e.constructor.name;if("string"==typeof n&&""!==n)return n}return t}(e)+"]":"{ "+n.map((function(n){return n+": "+l(e[n],t)})).join(", ")+" }"}(e,n)}(e,t);default:return String(e)}}},5569:(e,t)=>{"use strict";function n(e){return n="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},n(e)}Object.defineProperty(t,"__esModule",{value:!0}),t.default=function(e){return"object"==n(e)&&null!==e}},8493:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var n="function"==typeof Symbol&&"function"==typeof Symbol.for?Symbol.for("nodejs.util.inspect.custom"):void 0;t.default=n},9165:(e,t)=>{"use strict";function n(e){for(var t=null,n=1;n<e.length;n++){var i=e[n],o=r(i);if(o!==i.length&&(null===t||o<t)&&0===(t=o))break}return null===t?0:t}function r(e){for(var t=0;t<e.length&&(" "===e[t]||"\t"===e[t]);)t++;return t}function i(e){return r(e)===e.length}Object.defineProperty(t,"__esModule",{value:!0}),t.dedentBlockStringValue=function(e){var t=e.split(/\r\n|[\n\r]/g),r=n(t);if(0!==r)for(var o=1;o<t.length;o++)t[o]=t[o].slice(r);for(;t.length>0&&i(t[0]);)t.shift();for(;t.length>0&&i(t[t.length-1]);)t.pop();return t.join("\n")},t.getBlockStringIndentation=n,t.printBlockString=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"",n=arguments.length>2&&void 0!==arguments[2]&&arguments[2],r=-1===e.indexOf("\n"),i=" "===e[0]||"\t"===e[0],o='"'===e[e.length-1],a=!r||o||n,c="";return!a||r&&i||(c+="\n"+t),c+=t?e.replace(/\n/g,"\n"+t):e,a&&(c+="\n"),'"""'+c.replace(/"""/g,'\\"""')+'"""'}},5919:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.DirectiveLocation=void 0;var n=Object.freeze({QUERY:"QUERY",MUTATION:"MUTATION",SUBSCRIPTION:"SUBSCRIPTION",FIELD:"FIELD",FRAGMENT_DEFINITION:"FRAGMENT_DEFINITION",FRAGMENT_SPREAD:"FRAGMENT_SPREAD",INLINE_FRAGMENT:"INLINE_FRAGMENT",VARIABLE_DEFINITION:"VARIABLE_DEFINITION",SCHEMA:"SCHEMA",SCALAR:"SCALAR",OBJECT:"OBJECT",FIELD_DEFINITION:"FIELD_DEFINITION",ARGUMENT_DEFINITION:"ARGUMENT_DEFINITION",INTERFACE:"INTERFACE",UNION:"UNION",ENUM:"ENUM",ENUM_VALUE:"ENUM_VALUE",INPUT_OBJECT:"INPUT_OBJECT",INPUT_FIELD_DEFINITION:"INPUT_FIELD_DEFINITION"});t.DirectiveLocation=n},7030:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.Kind=void 0;var n=Object.freeze({NAME:"Name",DOCUMENT:"Document",OPERATION_DEFINITION:"OperationDefinition",VARIABLE_DEFINITION:"VariableDefinition",SELECTION_SET:"SelectionSet",FIELD:"Field",ARGUMENT:"Argument",FRAGMENT_SPREAD:"FragmentSpread",INLINE_FRAGMENT:"InlineFragment",FRAGMENT_DEFINITION:"FragmentDefinition",VARIABLE:"Variable",INT:"IntValue",FLOAT:"FloatValue",STRING:"StringValue",BOOLEAN:"BooleanValue",NULL:"NullValue",ENUM:"EnumValue",LIST:"ListValue",OBJECT:"ObjectValue",OBJECT_FIELD:"ObjectField",DIRECTIVE:"Directive",NAMED_TYPE:"NamedType",LIST_TYPE:"ListType",NON_NULL_TYPE:"NonNullType",SCHEMA_DEFINITION:"SchemaDefinition",OPERATION_TYPE_DEFINITION:"OperationTypeDefinition",SCALAR_TYPE_DEFINITION:"ScalarTypeDefinition",OBJECT_TYPE_DEFINITION:"ObjectTypeDefinition",FIELD_DEFINITION:"FieldDefinition",INPUT_VALUE_DEFINITION:"InputValueDefinition",INTERFACE_TYPE_DEFINITION:"InterfaceTypeDefinition",UNION_TYPE_DEFINITION:"UnionTypeDefinition",ENUM_TYPE_DEFINITION:"EnumTypeDefinition",ENUM_VALUE_DEFINITION:"EnumValueDefinition",INPUT_OBJECT_TYPE_DEFINITION:"InputObjectTypeDefinition",DIRECTIVE_DEFINITION:"DirectiveDefinition",SCHEMA_EXTENSION:"SchemaExtension",SCALAR_TYPE_EXTENSION:"ScalarTypeExtension",OBJECT_TYPE_EXTENSION:"ObjectTypeExtension",INTERFACE_TYPE_EXTENSION:"InterfaceTypeExtension",UNION_TYPE_EXTENSION:"UnionTypeExtension",ENUM_TYPE_EXTENSION:"EnumTypeExtension",INPUT_OBJECT_TYPE_EXTENSION:"InputObjectTypeExtension"});t.Kind=n},6083:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.createLexer=function(e,t){var n=new u(c.TokenKind.SOF,0,0,0,0,null);return{source:e,options:t,lastToken:n,token:n,line:1,lineStart:0,advance:l,lookahead:s}},t.isPunctuatorToken=function(e){var t=e.kind;return t===c.TokenKind.BANG||t===c.TokenKind.DOLLAR||t===c.TokenKind.AMP||t===c.TokenKind.PAREN_L||t===c.TokenKind.PAREN_R||t===c.TokenKind.SPREAD||t===c.TokenKind.COLON||t===c.TokenKind.EQUALS||t===c.TokenKind.AT||t===c.TokenKind.BRACKET_L||t===c.TokenKind.BRACKET_R||t===c.TokenKind.BRACE_L||t===c.TokenKind.PIPE||t===c.TokenKind.BRACE_R};var r,i=(r=n(6633))&&r.__esModule?r:{default:r},o=n(1352),a=n(9165),c=n(3038);function l(){return this.lastToken=this.token,this.token=this.lookahead()}function s(){var e=this.token;if(e.kind!==c.TokenKind.EOF)do{e=e.next||(e.next=d(this,e))}while(e.kind===c.TokenKind.COMMENT);return e}function u(e,t,n,r,i,o,a){this.kind=e,this.start=t,this.end=n,this.line=r,this.column=i,this.value=a,this.prev=o,this.next=null}function g(e){return isNaN(e)?c.TokenKind.EOF:e<127?JSON.stringify(String.fromCharCode(e)):'"\\u'.concat(("00"+e.toString(16).toUpperCase()).slice(-4),'"')}function d(e,t){var n=e.source,r=n.body,i=r.length,l=function(e,t,n){for(var r=e.length,i=t;i<r;){var o=e.charCodeAt(i);if(9===o||32===o||44===o||65279===o)++i;else if(10===o)++i,++n.line,n.lineStart=i;else{if(13!==o)break;10===e.charCodeAt(i+1)?i+=2:++i,++n.line,n.lineStart=i}}return i}(r,t.end,e),s=e.line,d=1+l-e.lineStart;if(l>=i)return new u(c.TokenKind.EOF,i,i,s,d,t);var b=r.charCodeAt(l);switch(b){case 33:return new u(c.TokenKind.BANG,l,l+1,s,d,t);case 35:return function(e,t,n,r,i){var o,a=e.body,l=t;do{o=a.charCodeAt(++l)}while(!isNaN(o)&&(o>31||9===o));return new u(c.TokenKind.COMMENT,t,l,n,r,i,a.slice(t+1,l))}(n,l,s,d,t);case 36:return new u(c.TokenKind.DOLLAR,l,l+1,s,d,t);case 38:return new u(c.TokenKind.AMP,l,l+1,s,d,t);case 40:return new u(c.TokenKind.PAREN_L,l,l+1,s,d,t);case 41:return new u(c.TokenKind.PAREN_R,l,l+1,s,d,t);case 46:if(46===r.charCodeAt(l+1)&&46===r.charCodeAt(l+2))return new u(c.TokenKind.SPREAD,l,l+3,s,d,t);break;case 58:return new u(c.TokenKind.COLON,l,l+1,s,d,t);case 61:return new u(c.TokenKind.EQUALS,l,l+1,s,d,t);case 64:return new u(c.TokenKind.AT,l,l+1,s,d,t);case 91:return new u(c.TokenKind.BRACKET_L,l,l+1,s,d,t);case 93:return new u(c.TokenKind.BRACKET_R,l,l+1,s,d,t);case 123:return new u(c.TokenKind.BRACE_L,l,l+1,s,d,t);case 124:return new u(c.TokenKind.PIPE,l,l+1,s,d,t);case 125:return new u(c.TokenKind.BRACE_R,l,l+1,s,d,t);case 65:case 66:case 67:case 68:case 69:case 70:case 71:case 72:case 73:case 74:case 75:case 76:case 77:case 78:case 79:case 80:case 81:case 82:case 83:case 84:case 85:case 86:case 87:case 88:case 89:case 90:case 95:case 97:case 98:case 99:case 100:case 101:case 102:case 103:case 104:case 105:case 106:case 107:case 108:case 109:case 110:case 111:case 112:case 113:case 114:case 115:case 116:case 117:case 118:case 119:case 120:case 121:case 122:return function(e,t,n,r,i){for(var o=e.body,a=o.length,l=t+1,s=0;l!==a&&!isNaN(s=o.charCodeAt(l))&&(95===s||s>=48&&s<=57||s>=65&&s<=90||s>=97&&s<=122);)++l;return new u(c.TokenKind.NAME,t,l,n,r,i,o.slice(t,l))}(n,l,s,d,t);case 45:case 48:case 49:case 50:case 51:case 52:case 53:case 54:case 55:case 56:case 57:return function(e,t,n,r,i,a){var l=e.body,s=n,d=t,p=!1;if(45===s&&(s=l.charCodeAt(++d)),48===s){if((s=l.charCodeAt(++d))>=48&&s<=57)throw(0,o.syntaxError)(e,d,"Invalid number, unexpected digit after 0: ".concat(g(s),"."))}else d=I(e,d,s),s=l.charCodeAt(d);if(46===s&&(p=!0,s=l.charCodeAt(++d),d=I(e,d,s),s=l.charCodeAt(d)),69!==s&&101!==s||(p=!0,43!==(s=l.charCodeAt(++d))&&45!==s||(s=l.charCodeAt(++d)),d=I(e,d,s),s=l.charCodeAt(d)),46===s||69===s||101===s)throw(0,o.syntaxError)(e,d,"Invalid number, expected digit but got: ".concat(g(s),"."));return new u(p?c.TokenKind.FLOAT:c.TokenKind.INT,t,d,r,i,a,l.slice(t,d))}(n,l,b,s,d,t);case 34:return 34===r.charCodeAt(l+1)&&34===r.charCodeAt(l+2)?function(e,t,n,r,i,l){for(var s=e.body,d=t+3,I=d,p=0,b="";d<s.length&&!isNaN(p=s.charCodeAt(d));){if(34===p&&34===s.charCodeAt(d+1)&&34===s.charCodeAt(d+2))return b+=s.slice(I,d),new u(c.TokenKind.BLOCK_STRING,t,d+3,n,r,i,(0,a.dedentBlockStringValue)(b));if(p<32&&9!==p&&10!==p&&13!==p)throw(0,o.syntaxError)(e,d,"Invalid character within String: ".concat(g(p),"."));10===p?(++d,++l.line,l.lineStart=d):13===p?(10===s.charCodeAt(d+1)?d+=2:++d,++l.line,l.lineStart=d):92===p&&34===s.charCodeAt(d+1)&&34===s.charCodeAt(d+2)&&34===s.charCodeAt(d+3)?(b+=s.slice(I,d)+'"""',I=d+=4):++d}throw(0,o.syntaxError)(e,d,"Unterminated string.")}(n,l,s,d,t,e):function(e,t,n,r,i){for(var a=e.body,l=t+1,s=l,d=0,I="";l<a.length&&!isNaN(d=a.charCodeAt(l))&&10!==d&&13!==d;){if(34===d)return I+=a.slice(s,l),new u(c.TokenKind.STRING,t,l+1,n,r,i,I);if(d<32&&9!==d)throw(0,o.syntaxError)(e,l,"Invalid character within String: ".concat(g(d),"."));if(++l,92===d){switch(I+=a.slice(s,l-1),d=a.charCodeAt(l)){case 34:I+='"';break;case 47:I+="/";break;case 92:I+="\\";break;case 98:I+="\b";break;case 102:I+="\f";break;case 110:I+="\n";break;case 114:I+="\r";break;case 116:I+="\t";break;case 117:var b=p(a.charCodeAt(l+1),a.charCodeAt(l+2),a.charCodeAt(l+3),a.charCodeAt(l+4));if(b<0){var m=a.slice(l+1,l+5);throw(0,o.syntaxError)(e,l,"Invalid character escape sequence: \\u".concat(m,"."))}I+=String.fromCharCode(b),l+=4;break;default:throw(0,o.syntaxError)(e,l,"Invalid character escape sequence: \\".concat(String.fromCharCode(d),"."))}s=++l}}throw(0,o.syntaxError)(e,l,"Unterminated string.")}(n,l,s,d,t)}throw(0,o.syntaxError)(n,l,function(e){return e<32&&9!==e&&10!==e&&13!==e?"Cannot contain the invalid character ".concat(g(e),"."):39===e?"Unexpected single quote character ('), did you mean to use a double quote (\")?":"Cannot parse the unexpected character ".concat(g(e),".")}(b))}function I(e,t,n){var r=e.body,i=t,a=n;if(a>=48&&a<=57){do{a=r.charCodeAt(++i)}while(a>=48&&a<=57);return i}throw(0,o.syntaxError)(e,i,"Invalid number, expected digit but got: ".concat(g(a),"."))}function p(e,t,n,r){return b(e)<<12|b(t)<<8|b(n)<<4|b(r)}function b(e){return e>=48&&e<=57?e-48:e>=65&&e<=70?e-55:e>=97&&e<=102?e-87:-1}(0,i.default)(u,(function(){return{kind:this.kind,value:this.value,line:this.line,column:this.column}}))},9530:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.getLocation=function(e,t){for(var n,r=/\r\n|[\n\r]/g,i=1,o=t+1;(n=r.exec(e.body))&&n.index<t;)i+=1,o=t+1-(n.index+n[0].length);return{line:i,column:o}}},246:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.parse=function(e,t){return new I(e,t).parseDocument()},t.parseValue=function(e,t){var n=new I(e,t);n.expectToken(g.TokenKind.SOF);var r=n.parseValueLiteral(!1);return n.expectToken(g.TokenKind.EOF),r},t.parseType=function(e,t){var n=new I(e,t);n.expectToken(g.TokenKind.SOF);var r=n.parseTypeReference();return n.expectToken(g.TokenKind.EOF),r};var r=d(n(9657)),i=d(n(3028)),o=d(n(6633)),a=n(1352),c=n(7030),l=n(6876),s=n(6083),u=n(5919),g=n(3038);function d(e){return e&&e.__esModule?e:{default:e}}var I=function(){function e(e,t){var n="string"==typeof e?new l.Source(e):e;n instanceof l.Source||(0,i.default)(0,"Must provide Source. Received: ".concat((0,r.default)(n))),this._lexer=(0,s.createLexer)(n),this._options=t||{}}var t=e.prototype;return t.parseName=function(){var e=this.expectToken(g.TokenKind.NAME);return{kind:c.Kind.NAME,value:e.value,loc:this.loc(e)}},t.parseDocument=function(){var e=this._lexer.token;return{kind:c.Kind.DOCUMENT,definitions:this.many(g.TokenKind.SOF,this.parseDefinition,g.TokenKind.EOF),loc:this.loc(e)}},t.parseDefinition=function(){if(this.peek(g.TokenKind.NAME))switch(this._lexer.token.value){case"query":case"mutation":case"subscription":return this.parseOperationDefinition();case"fragment":return this.parseFragmentDefinition();case"schema":case"scalar":case"type":case"interface":case"union":case"enum":case"input":case"directive":return this.parseTypeSystemDefinition();case"extend":return this.parseTypeSystemExtension()}else{if(this.peek(g.TokenKind.BRACE_L))return this.parseOperationDefinition();if(this.peekDescription())return this.parseTypeSystemDefinition()}throw this.unexpected()},t.parseOperationDefinition=function(){var e=this._lexer.token;if(this.peek(g.TokenKind.BRACE_L))return{kind:c.Kind.OPERATION_DEFINITION,operation:"query",name:void 0,variableDefinitions:[],directives:[],selectionSet:this.parseSelectionSet(),loc:this.loc(e)};var t,n=this.parseOperationType();return this.peek(g.TokenKind.NAME)&&(t=this.parseName()),{kind:c.Kind.OPERATION_DEFINITION,operation:n,name:t,variableDefinitions:this.parseVariableDefinitions(),directives:this.parseDirectives(!1),selectionSet:this.parseSelectionSet(),loc:this.loc(e)}},t.parseOperationType=function(){var e=this.expectToken(g.TokenKind.NAME);switch(e.value){case"query":return"query";case"mutation":return"mutation";case"subscription":return"subscription"}throw this.unexpected(e)},t.parseVariableDefinitions=function(){return this.optionalMany(g.TokenKind.PAREN_L,this.parseVariableDefinition,g.TokenKind.PAREN_R)},t.parseVariableDefinition=function(){var e=this._lexer.token;return{kind:c.Kind.VARIABLE_DEFINITION,variable:this.parseVariable(),type:(this.expectToken(g.TokenKind.COLON),this.parseTypeReference()),defaultValue:this.expectOptionalToken(g.TokenKind.EQUALS)?this.parseValueLiteral(!0):void 0,directives:this.parseDirectives(!0),loc:this.loc(e)}},t.parseVariable=function(){var e=this._lexer.token;return this.expectToken(g.TokenKind.DOLLAR),{kind:c.Kind.VARIABLE,name:this.parseName(),loc:this.loc(e)}},t.parseSelectionSet=function(){var e=this._lexer.token;return{kind:c.Kind.SELECTION_SET,selections:this.many(g.TokenKind.BRACE_L,this.parseSelection,g.TokenKind.BRACE_R),loc:this.loc(e)}},t.parseSelection=function(){return this.peek(g.TokenKind.SPREAD)?this.parseFragment():this.parseField()},t.parseField=function(){var e,t,n=this._lexer.token,r=this.parseName();return this.expectOptionalToken(g.TokenKind.COLON)?(e=r,t=this.parseName()):t=r,{kind:c.Kind.FIELD,alias:e,name:t,arguments:this.parseArguments(!1),directives:this.parseDirectives(!1),selectionSet:this.peek(g.TokenKind.BRACE_L)?this.parseSelectionSet():void 0,loc:this.loc(n)}},t.parseArguments=function(e){var t=e?this.parseConstArgument:this.parseArgument;return this.optionalMany(g.TokenKind.PAREN_L,t,g.TokenKind.PAREN_R)},t.parseArgument=function(){var e=this._lexer.token,t=this.parseName();return this.expectToken(g.TokenKind.COLON),{kind:c.Kind.ARGUMENT,name:t,value:this.parseValueLiteral(!1),loc:this.loc(e)}},t.parseConstArgument=function(){var e=this._lexer.token;return{kind:c.Kind.ARGUMENT,name:this.parseName(),value:(this.expectToken(g.TokenKind.COLON),this.parseValueLiteral(!0)),loc:this.loc(e)}},t.parseFragment=function(){var e=this._lexer.token;this.expectToken(g.TokenKind.SPREAD);var t=this.expectOptionalKeyword("on");return!t&&this.peek(g.TokenKind.NAME)?{kind:c.Kind.FRAGMENT_SPREAD,name:this.parseFragmentName(),directives:this.parseDirectives(!1),loc:this.loc(e)}:{kind:c.Kind.INLINE_FRAGMENT,typeCondition:t?this.parseNamedType():void 0,directives:this.parseDirectives(!1),selectionSet:this.parseSelectionSet(),loc:this.loc(e)}},t.parseFragmentDefinition=function(){var e=this._lexer.token;return this.expectKeyword("fragment"),this._options.experimentalFragmentVariables?{kind:c.Kind.FRAGMENT_DEFINITION,name:this.parseFragmentName(),variableDefinitions:this.parseVariableDefinitions(),typeCondition:(this.expectKeyword("on"),this.parseNamedType()),directives:this.parseDirectives(!1),selectionSet:this.parseSelectionSet(),loc:this.loc(e)}:{kind:c.Kind.FRAGMENT_DEFINITION,name:this.parseFragmentName(),typeCondition:(this.expectKeyword("on"),this.parseNamedType()),directives:this.parseDirectives(!1),selectionSet:this.parseSelectionSet(),loc:this.loc(e)}},t.parseFragmentName=function(){if("on"===this._lexer.token.value)throw this.unexpected();return this.parseName()},t.parseValueLiteral=function(e){var t=this._lexer.token;switch(t.kind){case g.TokenKind.BRACKET_L:return this.parseList(e);case g.TokenKind.BRACE_L:return this.parseObject(e);case g.TokenKind.INT:return this._lexer.advance(),{kind:c.Kind.INT,value:t.value,loc:this.loc(t)};case g.TokenKind.FLOAT:return this._lexer.advance(),{kind:c.Kind.FLOAT,value:t.value,loc:this.loc(t)};case g.TokenKind.STRING:case g.TokenKind.BLOCK_STRING:return this.parseStringLiteral();case g.TokenKind.NAME:return"true"===t.value||"false"===t.value?(this._lexer.advance(),{kind:c.Kind.BOOLEAN,value:"true"===t.value,loc:this.loc(t)}):"null"===t.value?(this._lexer.advance(),{kind:c.Kind.NULL,loc:this.loc(t)}):(this._lexer.advance(),{kind:c.Kind.ENUM,value:t.value,loc:this.loc(t)});case g.TokenKind.DOLLAR:if(!e)return this.parseVariable()}throw this.unexpected()},t.parseStringLiteral=function(){var e=this._lexer.token;return this._lexer.advance(),{kind:c.Kind.STRING,value:e.value,block:e.kind===g.TokenKind.BLOCK_STRING,loc:this.loc(e)}},t.parseList=function(e){var t=this,n=this._lexer.token;return{kind:c.Kind.LIST,values:this.any(g.TokenKind.BRACKET_L,(function(){return t.parseValueLiteral(e)}),g.TokenKind.BRACKET_R),loc:this.loc(n)}},t.parseObject=function(e){var t=this,n=this._lexer.token;return{kind:c.Kind.OBJECT,fields:this.any(g.TokenKind.BRACE_L,(function(){return t.parseObjectField(e)}),g.TokenKind.BRACE_R),loc:this.loc(n)}},t.parseObjectField=function(e){var t=this._lexer.token,n=this.parseName();return this.expectToken(g.TokenKind.COLON),{kind:c.Kind.OBJECT_FIELD,name:n,value:this.parseValueLiteral(e),loc:this.loc(t)}},t.parseDirectives=function(e){for(var t=[];this.peek(g.TokenKind.AT);)t.push(this.parseDirective(e));return t},t.parseDirective=function(e){var t=this._lexer.token;return this.expectToken(g.TokenKind.AT),{kind:c.Kind.DIRECTIVE,name:this.parseName(),arguments:this.parseArguments(e),loc:this.loc(t)}},t.parseTypeReference=function(){var e,t=this._lexer.token;return this.expectOptionalToken(g.TokenKind.BRACKET_L)?(e=this.parseTypeReference(),this.expectToken(g.TokenKind.BRACKET_R),e={kind:c.Kind.LIST_TYPE,type:e,loc:this.loc(t)}):e=this.parseNamedType(),this.expectOptionalToken(g.TokenKind.BANG)?{kind:c.Kind.NON_NULL_TYPE,type:e,loc:this.loc(t)}:e},t.parseNamedType=function(){var e=this._lexer.token;return{kind:c.Kind.NAMED_TYPE,name:this.parseName(),loc:this.loc(e)}},t.parseTypeSystemDefinition=function(){var e=this.peekDescription()?this._lexer.lookahead():this._lexer.token;if(e.kind===g.TokenKind.NAME)switch(e.value){case"schema":return this.parseSchemaDefinition();case"scalar":return this.parseScalarTypeDefinition();case"type":return this.parseObjectTypeDefinition();case"interface":return this.parseInterfaceTypeDefinition();case"union":return this.parseUnionTypeDefinition();case"enum":return this.parseEnumTypeDefinition();case"input":return this.parseInputObjectTypeDefinition();case"directive":return this.parseDirectiveDefinition()}throw this.unexpected(e)},t.peekDescription=function(){return this.peek(g.TokenKind.STRING)||this.peek(g.TokenKind.BLOCK_STRING)},t.parseDescription=function(){if(this.peekDescription())return this.parseStringLiteral()},t.parseSchemaDefinition=function(){var e=this._lexer.token;this.expectKeyword("schema");var t=this.parseDirectives(!0),n=this.many(g.TokenKind.BRACE_L,this.parseOperationTypeDefinition,g.TokenKind.BRACE_R);return{kind:c.Kind.SCHEMA_DEFINITION,directives:t,operationTypes:n,loc:this.loc(e)}},t.parseOperationTypeDefinition=function(){var e=this._lexer.token,t=this.parseOperationType();this.expectToken(g.TokenKind.COLON);var n=this.parseNamedType();return{kind:c.Kind.OPERATION_TYPE_DEFINITION,operation:t,type:n,loc:this.loc(e)}},t.parseScalarTypeDefinition=function(){var e=this._lexer.token,t=this.parseDescription();this.expectKeyword("scalar");var n=this.parseName(),r=this.parseDirectives(!0);return{kind:c.Kind.SCALAR_TYPE_DEFINITION,description:t,name:n,directives:r,loc:this.loc(e)}},t.parseObjectTypeDefinition=function(){var e=this._lexer.token,t=this.parseDescription();this.expectKeyword("type");var n=this.parseName(),r=this.parseImplementsInterfaces(),i=this.parseDirectives(!0),o=this.parseFieldsDefinition();return{kind:c.Kind.OBJECT_TYPE_DEFINITION,description:t,name:n,interfaces:r,directives:i,fields:o,loc:this.loc(e)}},t.parseImplementsInterfaces=function(){var e=[];if(this.expectOptionalKeyword("implements")){this.expectOptionalToken(g.TokenKind.AMP);do{e.push(this.parseNamedType())}while(this.expectOptionalToken(g.TokenKind.AMP)||this._options.allowLegacySDLImplementsInterfaces&&this.peek(g.TokenKind.NAME))}return e},t.parseFieldsDefinition=function(){return this._options.allowLegacySDLEmptyFields&&this.peek(g.TokenKind.BRACE_L)&&this._lexer.lookahead().kind===g.TokenKind.BRACE_R?(this._lexer.advance(),this._lexer.advance(),[]):this.optionalMany(g.TokenKind.BRACE_L,this.parseFieldDefinition,g.TokenKind.BRACE_R)},t.parseFieldDefinition=function(){var e=this._lexer.token,t=this.parseDescription(),n=this.parseName(),r=this.parseArgumentDefs();this.expectToken(g.TokenKind.COLON);var i=this.parseTypeReference(),o=this.parseDirectives(!0);return{kind:c.Kind.FIELD_DEFINITION,description:t,name:n,arguments:r,type:i,directives:o,loc:this.loc(e)}},t.parseArgumentDefs=function(){return this.optionalMany(g.TokenKind.PAREN_L,this.parseInputValueDef,g.TokenKind.PAREN_R)},t.parseInputValueDef=function(){var e=this._lexer.token,t=this.parseDescription(),n=this.parseName();this.expectToken(g.TokenKind.COLON);var r,i=this.parseTypeReference();this.expectOptionalToken(g.TokenKind.EQUALS)&&(r=this.parseValueLiteral(!0));var o=this.parseDirectives(!0);return{kind:c.Kind.INPUT_VALUE_DEFINITION,description:t,name:n,type:i,defaultValue:r,directives:o,loc:this.loc(e)}},t.parseInterfaceTypeDefinition=function(){var e=this._lexer.token,t=this.parseDescription();this.expectKeyword("interface");var n=this.parseName(),r=this.parseDirectives(!0),i=this.parseFieldsDefinition();return{kind:c.Kind.INTERFACE_TYPE_DEFINITION,description:t,name:n,directives:r,fields:i,loc:this.loc(e)}},t.parseUnionTypeDefinition=function(){var e=this._lexer.token,t=this.parseDescription();this.expectKeyword("union");var n=this.parseName(),r=this.parseDirectives(!0),i=this.parseUnionMemberTypes();return{kind:c.Kind.UNION_TYPE_DEFINITION,description:t,name:n,directives:r,types:i,loc:this.loc(e)}},t.parseUnionMemberTypes=function(){var e=[];if(this.expectOptionalToken(g.TokenKind.EQUALS)){this.expectOptionalToken(g.TokenKind.PIPE);do{e.push(this.parseNamedType())}while(this.expectOptionalToken(g.TokenKind.PIPE))}return e},t.parseEnumTypeDefinition=function(){var e=this._lexer.token,t=this.parseDescription();this.expectKeyword("enum");var n=this.parseName(),r=this.parseDirectives(!0),i=this.parseEnumValuesDefinition();return{kind:c.Kind.ENUM_TYPE_DEFINITION,description:t,name:n,directives:r,values:i,loc:this.loc(e)}},t.parseEnumValuesDefinition=function(){return this.optionalMany(g.TokenKind.BRACE_L,this.parseEnumValueDefinition,g.TokenKind.BRACE_R)},t.parseEnumValueDefinition=function(){var e=this._lexer.token,t=this.parseDescription(),n=this.parseName(),r=this.parseDirectives(!0);return{kind:c.Kind.ENUM_VALUE_DEFINITION,description:t,name:n,directives:r,loc:this.loc(e)}},t.parseInputObjectTypeDefinition=function(){var e=this._lexer.token,t=this.parseDescription();this.expectKeyword("input");var n=this.parseName(),r=this.parseDirectives(!0),i=this.parseInputFieldsDefinition();return{kind:c.Kind.INPUT_OBJECT_TYPE_DEFINITION,description:t,name:n,directives:r,fields:i,loc:this.loc(e)}},t.parseInputFieldsDefinition=function(){return this.optionalMany(g.TokenKind.BRACE_L,this.parseInputValueDef,g.TokenKind.BRACE_R)},t.parseTypeSystemExtension=function(){var e=this._lexer.lookahead();if(e.kind===g.TokenKind.NAME)switch(e.value){case"schema":return this.parseSchemaExtension();case"scalar":return this.parseScalarTypeExtension();case"type":return this.parseObjectTypeExtension();case"interface":return this.parseInterfaceTypeExtension();case"union":return this.parseUnionTypeExtension();case"enum":return this.parseEnumTypeExtension();case"input":return this.parseInputObjectTypeExtension()}throw this.unexpected(e)},t.parseSchemaExtension=function(){var e=this._lexer.token;this.expectKeyword("extend"),this.expectKeyword("schema");var t=this.parseDirectives(!0),n=this.optionalMany(g.TokenKind.BRACE_L,this.parseOperationTypeDefinition,g.TokenKind.BRACE_R);if(0===t.length&&0===n.length)throw this.unexpected();return{kind:c.Kind.SCHEMA_EXTENSION,directives:t,operationTypes:n,loc:this.loc(e)}},t.parseScalarTypeExtension=function(){var e=this._lexer.token;this.expectKeyword("extend"),this.expectKeyword("scalar");var t=this.parseName(),n=this.parseDirectives(!0);if(0===n.length)throw this.unexpected();return{kind:c.Kind.SCALAR_TYPE_EXTENSION,name:t,directives:n,loc:this.loc(e)}},t.parseObjectTypeExtension=function(){var e=this._lexer.token;this.expectKeyword("extend"),this.expectKeyword("type");var t=this.parseName(),n=this.parseImplementsInterfaces(),r=this.parseDirectives(!0),i=this.parseFieldsDefinition();if(0===n.length&&0===r.length&&0===i.length)throw this.unexpected();return{kind:c.Kind.OBJECT_TYPE_EXTENSION,name:t,interfaces:n,directives:r,fields:i,loc:this.loc(e)}},t.parseInterfaceTypeExtension=function(){var e=this._lexer.token;this.expectKeyword("extend"),this.expectKeyword("interface");var t=this.parseName(),n=this.parseDirectives(!0),r=this.parseFieldsDefinition();if(0===n.length&&0===r.length)throw this.unexpected();return{kind:c.Kind.INTERFACE_TYPE_EXTENSION,name:t,directives:n,fields:r,loc:this.loc(e)}},t.parseUnionTypeExtension=function(){var e=this._lexer.token;this.expectKeyword("extend"),this.expectKeyword("union");var t=this.parseName(),n=this.parseDirectives(!0),r=this.parseUnionMemberTypes();if(0===n.length&&0===r.length)throw this.unexpected();return{kind:c.Kind.UNION_TYPE_EXTENSION,name:t,directives:n,types:r,loc:this.loc(e)}},t.parseEnumTypeExtension=function(){var e=this._lexer.token;this.expectKeyword("extend"),this.expectKeyword("enum");var t=this.parseName(),n=this.parseDirectives(!0),r=this.parseEnumValuesDefinition();if(0===n.length&&0===r.length)throw this.unexpected();return{kind:c.Kind.ENUM_TYPE_EXTENSION,name:t,directives:n,values:r,loc:this.loc(e)}},t.parseInputObjectTypeExtension=function(){var e=this._lexer.token;this.expectKeyword("extend"),this.expectKeyword("input");var t=this.parseName(),n=this.parseDirectives(!0),r=this.parseInputFieldsDefinition();if(0===n.length&&0===r.length)throw this.unexpected();return{kind:c.Kind.INPUT_OBJECT_TYPE_EXTENSION,name:t,directives:n,fields:r,loc:this.loc(e)}},t.parseDirectiveDefinition=function(){var e=this._lexer.token,t=this.parseDescription();this.expectKeyword("directive"),this.expectToken(g.TokenKind.AT);var n=this.parseName(),r=this.parseArgumentDefs(),i=this.expectOptionalKeyword("repeatable");this.expectKeyword("on");var o=this.parseDirectiveLocations();return{kind:c.Kind.DIRECTIVE_DEFINITION,description:t,name:n,arguments:r,repeatable:i,locations:o,loc:this.loc(e)}},t.parseDirectiveLocations=function(){this.expectOptionalToken(g.TokenKind.PIPE);var e=[];do{e.push(this.parseDirectiveLocation())}while(this.expectOptionalToken(g.TokenKind.PIPE));return e},t.parseDirectiveLocation=function(){var e=this._lexer.token,t=this.parseName();if(void 0!==u.DirectiveLocation[t.value])return t;throw this.unexpected(e)},t.loc=function(e){if(!this._options.noLocation)return new p(e,this._lexer.lastToken,this._lexer.source)},t.peek=function(e){return this._lexer.token.kind===e},t.expectToken=function(e){var t=this._lexer.token;if(t.kind===e)return this._lexer.advance(),t;throw(0,a.syntaxError)(this._lexer.source,t.start,"Expected ".concat(e,", found ").concat(b(t)))},t.expectOptionalToken=function(e){var t=this._lexer.token;if(t.kind===e)return this._lexer.advance(),t},t.expectKeyword=function(e){var t=this._lexer.token;if(t.kind!==g.TokenKind.NAME||t.value!==e)throw(0,a.syntaxError)(this._lexer.source,t.start,'Expected "'.concat(e,'", found ').concat(b(t)));this._lexer.advance()},t.expectOptionalKeyword=function(e){var t=this._lexer.token;return t.kind===g.TokenKind.NAME&&t.value===e&&(this._lexer.advance(),!0)},t.unexpected=function(e){var t=e||this._lexer.token;return(0,a.syntaxError)(this._lexer.source,t.start,"Unexpected ".concat(b(t)))},t.any=function(e,t,n){this.expectToken(e);for(var r=[];!this.expectOptionalToken(n);)r.push(t.call(this));return r},t.optionalMany=function(e,t,n){if(this.expectOptionalToken(e)){var r=[];do{r.push(t.call(this))}while(!this.expectOptionalToken(n));return r}return[]},t.many=function(e,t,n){this.expectToken(e);var r=[];do{r.push(t.call(this))}while(!this.expectOptionalToken(n));return r},e}();function p(e,t,n){this.start=e.start,this.end=t.end,this.startToken=e,this.endToken=t,this.source=n}function b(e){var t=e.value;return t?"".concat(e.kind,' "').concat(t,'"'):e.kind}(0,o.default)(p,(function(){return{start:this.start,end:this.end}}))},825:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.printLocation=function(e){return i(e.source,(0,r.getLocation)(e.source,e.start))},t.printSourceLocation=i;var r=n(9530);function i(e,t){var n=e.locationOffset.column-1,r=a(n)+e.body,i=t.line-1,c=e.locationOffset.line-1,l=t.line+c,s=1===t.line?n:0,u=t.column+s,g="".concat(e.name,":").concat(l,":").concat(u,"\n"),d=r.split(/\r\n|[\n\r]/g),I=d[i];if(I.length>120){for(var p=Math.floor(u/80),b=u%80,m=[],C=0;C<I.length;C+=80)m.push(I.slice(C,C+80));return g+o([["".concat(l),m[0]]].concat(m.slice(1,p+1).map((function(e){return["",e]})),[[" ",a(b-1)+"^"],["",m[p+1]]]))}return g+o([["".concat(l-1),d[i-1]],["".concat(l),I],["",a(u-1)+"^"],["".concat(l+1),d[i+1]]])}function o(e){var t=e.filter((function(e){return e[0],void 0!==e[1]})),n=Math.max.apply(Math,t.map((function(e){return e[0].length})));return t.map((function(e){var t,r=e[0],i=e[1];return a(n-(t=r).length)+t+(i?" | "+i:" |")})).join("\n")}function a(e){return Array(e+1).join(" ")}},585:(e,t,n)=>{"use strict";t.y=function(e){return(0,r.visit)(e,{leave:o})};var r=n(9111),i=n(9165),o={Name:function(e){return e.value},Variable:function(e){return"$"+e.name},Document:function(e){return c(e.definitions,"\n\n")+"\n"},OperationDefinition:function(e){var t=e.operation,n=e.name,r=s("(",c(e.variableDefinitions,", "),")"),i=c(e.directives," "),o=e.selectionSet;return n||i||r||"query"!==t?c([t,c([n,r]),i,o]," "):o},VariableDefinition:function(e){var t=e.variable,n=e.type,r=e.defaultValue,i=e.directives;return t+": "+n+s(" = ",r)+s(" ",c(i," "))},SelectionSet:function(e){return l(e.selections)},Field:function(e){var t=e.alias,n=e.name,r=e.arguments,i=e.directives,o=e.selectionSet;return c([s("",t,": ")+n+s("(",c(r,", "),")"),c(i," "),o]," ")},Argument:function(e){return e.name+": "+e.value},FragmentSpread:function(e){return"..."+e.name+s(" ",c(e.directives," "))},InlineFragment:function(e){var t=e.typeCondition,n=e.directives,r=e.selectionSet;return c(["...",s("on ",t),c(n," "),r]," ")},FragmentDefinition:function(e){var t=e.name,n=e.typeCondition,r=e.variableDefinitions,i=e.directives,o=e.selectionSet;return"fragment ".concat(t).concat(s("(",c(r,", "),")")," ")+"on ".concat(n," ").concat(s("",c(i," ")," "))+o},IntValue:function(e){return e.value},FloatValue:function(e){return e.value},StringValue:function(e,t){var n=e.value;return e.block?(0,i.printBlockString)(n,"description"===t?"":"  "):JSON.stringify(n)},BooleanValue:function(e){return e.value?"true":"false"},NullValue:function(){return"null"},EnumValue:function(e){return e.value},ListValue:function(e){return"["+c(e.values,", ")+"]"},ObjectValue:function(e){return"{"+c(e.fields,", ")+"}"},ObjectField:function(e){return e.name+": "+e.value},Directive:function(e){return"@"+e.name+s("(",c(e.arguments,", "),")")},NamedType:function(e){return e.name},ListType:function(e){return"["+e.type+"]"},NonNullType:function(e){return e.type+"!"},SchemaDefinition:function(e){var t=e.directives,n=e.operationTypes;return c(["schema",c(t," "),l(n)]," ")},OperationTypeDefinition:function(e){return e.operation+": "+e.type},ScalarTypeDefinition:a((function(e){return c(["scalar",e.name,c(e.directives," ")]," ")})),ObjectTypeDefinition:a((function(e){var t=e.name,n=e.interfaces,r=e.directives,i=e.fields;return c(["type",t,s("implements ",c(n," & ")),c(r," "),l(i)]," ")})),FieldDefinition:a((function(e){var t=e.name,n=e.arguments,r=e.type,i=e.directives;return t+(d(n)?s("(\n",u(c(n,"\n")),"\n)"):s("(",c(n,", "),")"))+": "+r+s(" ",c(i," "))})),InputValueDefinition:a((function(e){var t=e.name,n=e.type,r=e.defaultValue,i=e.directives;return c([t+": "+n,s("= ",r),c(i," ")]," ")})),InterfaceTypeDefinition:a((function(e){var t=e.name,n=e.directives,r=e.fields;return c(["interface",t,c(n," "),l(r)]," ")})),UnionTypeDefinition:a((function(e){var t=e.name,n=e.directives,r=e.types;return c(["union",t,c(n," "),r&&0!==r.length?"= "+c(r," | "):""]," ")})),EnumTypeDefinition:a((function(e){var t=e.name,n=e.directives,r=e.values;return c(["enum",t,c(n," "),l(r)]," ")})),EnumValueDefinition:a((function(e){return c([e.name,c(e.directives," ")]," ")})),InputObjectTypeDefinition:a((function(e){var t=e.name,n=e.directives,r=e.fields;return c(["input",t,c(n," "),l(r)]," ")})),DirectiveDefinition:a((function(e){var t=e.name,n=e.arguments,r=e.repeatable,i=e.locations;return"directive @"+t+(d(n)?s("(\n",u(c(n,"\n")),"\n)"):s("(",c(n,", "),")"))+(r?" repeatable":"")+" on "+c(i," | ")})),SchemaExtension:function(e){var t=e.directives,n=e.operationTypes;return c(["extend schema",c(t," "),l(n)]," ")},ScalarTypeExtension:function(e){return c(["extend scalar",e.name,c(e.directives," ")]," ")},ObjectTypeExtension:function(e){var t=e.name,n=e.interfaces,r=e.directives,i=e.fields;return c(["extend type",t,s("implements ",c(n," & ")),c(r," "),l(i)]," ")},InterfaceTypeExtension:function(e){var t=e.name,n=e.directives,r=e.fields;return c(["extend interface",t,c(n," "),l(r)]," ")},UnionTypeExtension:function(e){var t=e.name,n=e.directives,r=e.types;return c(["extend union",t,c(n," "),r&&0!==r.length?"= "+c(r," | "):""]," ")},EnumTypeExtension:function(e){var t=e.name,n=e.directives,r=e.values;return c(["extend enum",t,c(n," "),l(r)]," ")},InputObjectTypeExtension:function(e){var t=e.name,n=e.directives,r=e.fields;return c(["extend input",t,c(n," "),l(r)]," ")}};function a(e){return function(t){return c([t.description,e(t)],"\n")}}function c(e,t){return e?e.filter((function(e){return e})).join(t||""):""}function l(e){return e&&0!==e.length?"{\n"+u(c(e,"\n"))+"\n}":""}function s(e,t,n){return t?e+t+(n||""):""}function u(e){return e&&"  "+e.replace(/\n/g,"\n  ")}function g(e){return-1!==e.indexOf("\n")}function d(e){return e&&e.some(g)}},6876:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.Source=void 0;var r=o(n(3028)),i=o(n(6192));function o(e){return e&&e.__esModule?e:{default:e}}var a=function(e,t,n){this.body=e,this.name=t||"GraphQL request",this.locationOffset=n||{line:1,column:1},this.locationOffset.line>0||(0,r.default)(0,"line in locationOffset is 1-indexed and must be positive"),this.locationOffset.column>0||(0,r.default)(0,"column in locationOffset is 1-indexed and must be positive")};t.Source=a,(0,i.default)(a)},3038:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.TokenKind=void 0;var n=Object.freeze({SOF:"<SOF>",EOF:"<EOF>",BANG:"!",DOLLAR:"$",AMP:"&",PAREN_L:"(",PAREN_R:")",SPREAD:"...",COLON:":",EQUALS:"=",AT:"@",BRACKET_L:"[",BRACKET_R:"]",BRACE_L:"{",PIPE:"|",BRACE_R:"}",NAME:"Name",INT:"Int",FLOAT:"Float",STRING:"String",BLOCK_STRING:"BlockString",COMMENT:"Comment"});t.TokenKind=n},9111:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.visit=function(e,t){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:o,r=void 0,s=Array.isArray(e),u=[e],g=-1,d=[],I=void 0,p=void 0,b=void 0,m=[],C=[],h=e;do{var B=++g===u.length,A=B&&0!==d.length;if(B){if(p=0===C.length?void 0:m[m.length-1],I=b,b=C.pop(),A){if(s)I=I.slice();else{for(var y={},f=0,G=Object.keys(I);f<G.length;f++){var Q=G[f];y[Q]=I[Q]}I=y}for(var F=0,v=0;v<d.length;v++){var Z=d[v][0],E=d[v][1];s&&(Z-=F),s&&null===E?(I.splice(Z,1),F++):I[Z]=E}}g=r.index,u=r.keys,d=r.edits,s=r.inArray,r=r.prev}else{if(p=b?s?g:u[g]:void 0,null==(I=b?b[p]:h))continue;b&&m.push(p)}var S=void 0;if(!Array.isArray(I)){if(!c(I))throw new Error("Invalid AST Node: "+(0,i.default)(I));var X=l(t,I.kind,B);if(X){if((S=X.call(t,I,p,b,m,C))===a)break;if(!1===S){if(!B){m.pop();continue}}else if(void 0!==S&&(d.push([p,S]),!B)){if(!c(S)){m.pop();continue}I=S}}}void 0===S&&A&&d.push([p,I]),B?m.pop():(r={inArray:s,index:g,keys:u,edits:d,prev:r},u=(s=Array.isArray(I))?I:n[I.kind]||[],g=-1,d=[],b&&C.push(b),b=I)}while(void 0!==r);return 0!==d.length&&(h=d[d.length-1][1]),h},t.visitInParallel=function(e){var t=new Array(e.length);return{enter:function(n){for(var r=0;r<e.length;r++)if(!t[r]){var i=l(e[r],n.kind,!1);if(i){var o=i.apply(e[r],arguments);if(!1===o)t[r]=n;else if(o===a)t[r]=a;else if(void 0!==o)return o}}},leave:function(n){for(var r=0;r<e.length;r++)if(t[r])t[r]===n&&(t[r]=null);else{var i=l(e[r],n.kind,!0);if(i){var o=i.apply(e[r],arguments);if(o===a)t[r]=a;else if(void 0!==o&&!1!==o)return o}}}}},t.visitWithTypeInfo=function(e,t){return{enter:function(n){e.enter(n);var r=l(t,n.kind,!1);if(r){var i=r.apply(t,arguments);return void 0!==i&&(e.leave(n),c(i)&&e.enter(i)),i}},leave:function(n){var r,i=l(t,n.kind,!0);return i&&(r=i.apply(t,arguments)),e.leave(n),r}}},t.getVisitFn=l,t.BREAK=t.QueryDocumentKeys=void 0;var r,i=(r=n(9657))&&r.__esModule?r:{default:r},o={Name:[],Document:["definitions"],OperationDefinition:["name","variableDefinitions","directives","selectionSet"],VariableDefinition:["variable","type","defaultValue","directives"],Variable:["name"],SelectionSet:["selections"],Field:["alias","name","arguments","directives","selectionSet"],Argument:["name","value"],FragmentSpread:["name","directives"],InlineFragment:["typeCondition","directives","selectionSet"],FragmentDefinition:["name","variableDefinitions","typeCondition","directives","selectionSet"],IntValue:[],FloatValue:[],StringValue:[],BooleanValue:[],NullValue:[],EnumValue:[],ListValue:["values"],ObjectValue:["fields"],ObjectField:["name","value"],Directive:["name","arguments"],NamedType:["name"],ListType:["type"],NonNullType:["type"],SchemaDefinition:["directives","operationTypes"],OperationTypeDefinition:["type"],ScalarTypeDefinition:["description","name","directives"],ObjectTypeDefinition:["description","name","interfaces","directives","fields"],FieldDefinition:["description","name","arguments","type","directives"],InputValueDefinition:["description","name","type","defaultValue","directives"],InterfaceTypeDefinition:["description","name","directives","fields"],UnionTypeDefinition:["description","name","directives","types"],EnumTypeDefinition:["description","name","directives","values"],EnumValueDefinition:["description","name","directives"],InputObjectTypeDefinition:["description","name","directives","fields"],DirectiveDefinition:["description","name","arguments","locations"],SchemaExtension:["directives","operationTypes"],ScalarTypeExtension:["name","directives"],ObjectTypeExtension:["name","interfaces","directives","fields"],InterfaceTypeExtension:["name","directives","fields"],UnionTypeExtension:["name","directives","types"],EnumTypeExtension:["name","directives","values"],InputObjectTypeExtension:["name","directives","fields"]};t.QueryDocumentKeys=o;var a=Object.freeze({});function c(e){return Boolean(e&&"string"==typeof e.kind)}function l(e,t,n){var r=e[t];if(r){if(!n&&"function"==typeof r)return r;var i=n?r.leave:r.enter;if("function"==typeof i)return i}else{var o=n?e.leave:e.enter;if(o){if("function"==typeof o)return o;var a=o[t];if("function"==typeof a)return a}}}t.BREAK=a},24:e=>{"use strict";var t={foo:{}},n=Object;e.exports=function(){return{__proto__:t}.foo===t.foo&&!({__proto__:null}instanceof n)}},4039:(e,t,n)=>{"use strict";var r="undefined"!=typeof Symbol&&Symbol,i=n(1333);e.exports=function(){return"function"==typeof r&&"function"==typeof Symbol&&"symbol"==typeof r("foo")&&"symbol"==typeof Symbol("bar")&&i()}},1333:e=>{"use strict";e.exports=function(){if("function"!=typeof Symbol||"function"!=typeof Object.getOwnPropertySymbols)return!1;if("symbol"==typeof Symbol.iterator)return!0;var e={},t=Symbol("test"),n=Object(t);if("string"==typeof t)return!1;if("[object Symbol]"!==Object.prototype.toString.call(t))return!1;if("[object Symbol]"!==Object.prototype.toString.call(n))return!1;for(t in e[t]=42,e)return!1;if("function"==typeof Object.keys&&0!==Object.keys(e).length)return!1;if("function"==typeof Object.getOwnPropertyNames&&0!==Object.getOwnPropertyNames(e).length)return!1;var r=Object.getOwnPropertySymbols(e);if(1!==r.length||r[0]!==t)return!1;if(!Object.prototype.propertyIsEnumerable.call(e,t))return!1;if("function"==typeof Object.getOwnPropertyDescriptor){var i=Object.getOwnPropertyDescriptor(e,t);if(42!==i.value||!0!==i.enumerable)return!1}return!0}},9030:(e,t,n)=>{"use strict";var r=n(6743);e.exports=r.call(Function.call,Object.prototype.hasOwnProperty)},4146:(e,t,n)=>{"use strict";var r=n(3404),i={childContextTypes:!0,contextType:!0,contextTypes:!0,defaultProps:!0,displayName:!0,getDefaultProps:!0,getDerivedStateFromError:!0,getDerivedStateFromProps:!0,mixins:!0,propTypes:!0,type:!0},o={name:!0,length:!0,prototype:!0,caller:!0,callee:!0,arguments:!0,arity:!0},a={$$typeof:!0,compare:!0,defaultProps:!0,displayName:!0,propTypes:!0,type:!0},c={};function l(e){return r.isMemo(e)?a:c[e.$$typeof]||i}c[r.ForwardRef]={$$typeof:!0,render:!0,defaultProps:!0,displayName:!0,propTypes:!0},c[r.Memo]=a;var s=Object.defineProperty,u=Object.getOwnPropertyNames,g=Object.getOwnPropertySymbols,d=Object.getOwnPropertyDescriptor,I=Object.getPrototypeOf,p=Object.prototype;e.exports=function e(t,n,r){if("string"!=typeof n){if(p){var i=I(n);i&&i!==p&&e(t,i,r)}var a=u(n);g&&(a=a.concat(g(n)));for(var c=l(t),b=l(n),m=0;m<a.length;++m){var C=a[m];if(!(o[C]||r&&r[C]||b&&b[C]||c&&c[C])){var h=d(n,C);try{s(t,C,h)}catch(B){}}}}return t}},3072:(e,t)=>{"use strict";
/** @license React v16.13.1
 * react-is.production.min.js
 *
 * Copyright (c) Facebook, Inc. and its affiliates.
 *
 * This source code is licensed under the MIT license found in the
 * LICENSE file in the root directory of this source tree.
 */var n="function"==typeof Symbol&&Symbol.for,r=n?Symbol.for("react.element"):60103,i=n?Symbol.for("react.portal"):60106,o=n?Symbol.for("react.fragment"):60107,a=n?Symbol.for("react.strict_mode"):60108,c=n?Symbol.for("react.profiler"):60114,l=n?Symbol.for("react.provider"):60109,s=n?Symbol.for("react.context"):60110,u=n?Symbol.for("react.async_mode"):60111,g=n?Symbol.for("react.concurrent_mode"):60111,d=n?Symbol.for("react.forward_ref"):60112,I=n?Symbol.for("react.suspense"):60113,p=n?Symbol.for("react.suspense_list"):60120,b=n?Symbol.for("react.memo"):60115,m=n?Symbol.for("react.lazy"):60116,C=n?Symbol.for("react.block"):60121,h=n?Symbol.for("react.fundamental"):60117,B=n?Symbol.for("react.responder"):60118,A=n?Symbol.for("react.scope"):60119;function y(e){if("object"==typeof e&&null!==e){var t=e.$$typeof;switch(t){case r:switch(e=e.type){case u:case g:case o:case c:case a:case I:return e;default:switch(e=e&&e.$$typeof){case s:case d:case m:case b:case l:return e;default:return t}}case i:return t}}}function f(e){return y(e)===g}t.AsyncMode=u,t.ConcurrentMode=g,t.ContextConsumer=s,t.ContextProvider=l,t.Element=r,t.ForwardRef=d,t.Fragment=o,t.Lazy=m,t.Memo=b,t.Portal=i,t.Profiler=c,t.StrictMode=a,t.Suspense=I,t.isAsyncMode=function(e){return f(e)||y(e)===u},t.isConcurrentMode=f,t.isContextConsumer=function(e){return y(e)===s},t.isContextProvider=function(e){return y(e)===l},t.isElement=function(e){return"object"==typeof e&&null!==e&&e.$$typeof===r},t.isForwardRef=function(e){return y(e)===d},t.isFragment=function(e){return y(e)===o},t.isLazy=function(e){return y(e)===m},t.isMemo=function(e){return y(e)===b},t.isPortal=function(e){return y(e)===i},t.isProfiler=function(e){return y(e)===c},t.isStrictMode=function(e){return y(e)===a},t.isSuspense=function(e){return y(e)===I},t.isValidElementType=function(e){return"string"==typeof e||"function"==typeof e||e===o||e===g||e===c||e===a||e===I||e===p||"object"==typeof e&&null!==e&&(e.$$typeof===m||e.$$typeof===b||e.$$typeof===l||e.$$typeof===s||e.$$typeof===d||e.$$typeof===h||e.$$typeof===B||e.$$typeof===A||e.$$typeof===C)},t.typeOf=y},3404:(e,t,n)=>{"use strict";e.exports=n(3072)},1441:(e,t,n)=>{var r=n(8028),i=function(e){var t="",n=Object.keys(e);return n.forEach((function(i,o){var a=e[i];(function(e){return/[height|width]$/.test(e)})(i=r(i))&&"number"==typeof a&&(a+="px"),t+=!0===a?i:!1===a?"not "+i:"("+i+": "+a+")",o<n.length-1&&(t+=" and ")})),t};e.exports=function(e){var t="";return"string"==typeof e?e:e instanceof Array?(e.forEach((function(n,r){t+=i(n),r<e.length-1&&(t+=", ")})),t):i(e)}},181:(e,t,n)=>{var r=/^\s+|\s+$/g,i=/^[-+]0x[0-9a-f]+$/i,o=/^0b[01]+$/i,a=/^0o[0-7]+$/i,c=parseInt,l="object"==typeof n.g&&n.g&&n.g.Object===Object&&n.g,s="object"==typeof self&&self&&self.Object===Object&&self,u=l||s||Function("return this")(),g=Object.prototype.toString,d=Math.max,I=Math.min,p=function(){return u.Date.now()};function b(e){var t=typeof e;return!!e&&("object"==t||"function"==t)}function m(e){if("number"==typeof e)return e;if(function(e){return"symbol"==typeof e||function(e){return!!e&&"object"==typeof e}(e)&&"[object Symbol]"==g.call(e)}(e))return NaN;if(b(e)){var t="function"==typeof e.valueOf?e.valueOf():e;e=b(t)?t+"":t}if("string"!=typeof e)return 0===e?e:+e;e=e.replace(r,"");var n=o.test(e);return n||a.test(e)?c(e.slice(2),n?2:8):i.test(e)?NaN:+e}e.exports=function(e,t,n){var r,i,o,a,c,l,s=0,u=!1,g=!1,C=!0;if("function"!=typeof e)throw new TypeError("Expected a function");function h(t){var n=r,o=i;return r=i=void 0,s=t,a=e.apply(o,n)}function B(e){var n=e-l;return void 0===l||n>=t||n<0||g&&e-s>=o}function A(){var e=p();if(B(e))return y(e);c=setTimeout(A,function(e){var n=t-(e-l);return g?I(n,o-(e-s)):n}(e))}function y(e){return c=void 0,C&&r?h(e):(r=i=void 0,a)}function f(){var e=p(),n=B(e);if(r=arguments,i=this,l=e,n){if(void 0===c)return function(e){return s=e,c=setTimeout(A,t),u?h(e):a}(l);if(g)return c=setTimeout(A,t),h(l)}return void 0===c&&(c=setTimeout(A,t)),a}return t=m(t)||0,b(n)&&(u=!!n.leading,o=(g="maxWait"in n)?d(m(n.maxWait)||0,t):o,C="trailing"in n?!!n.trailing:C),f.cancel=function(){void 0!==c&&clearTimeout(c),s=0,r=l=i=c=void 0},f.flush=function(){return void 0===c?a:y(p())},f}},5163:function(e,t,n){var r,i;r=function(e){"use strict";var t,n,r,i,o={template:'{"timestamp": "%t", "level": "%l", "message": "%m"}',messageFormatter:function(e){return e},timestampFormatter:function(e){return e.toTimeString().replace(/.*(\d{2}:\d{2}:\d{2}).*/,"$1")},levelFormatter:function(e){return e.toUpperCase()},nameFormatter:function(e){return e||"root"}},a={apply:function(e,i){if(!e||!e.getLogger)throw new TypeError("Argument is not a root loglevel object");if(t&&r!==e.methodFactory)throw new Error("You can't reassign a plugin after appling another plugin");return t=e,i=function(e){for(var t,n=1,r=arguments.length;n<r;n++)for(t in arguments[n])Object.prototype.hasOwnProperty.call(arguments[n],t)&&(e[t]=arguments[n][t]);return e}({},o,i),n=n||e.methodFactory,r=function(e,t,r){var o=n(e,t,r),a=-1!==i.template.indexOf("%t"),c=-1!==i.template.indexOf("%l"),l=-1!==i.template.indexOf("%n"),s=-1!==i.template.indexOf("%m");return function(){for(var t=i.template,n=arguments.length,u=Array(n),g=0;g<n;g++)u[g]=arguments[g];a&&(t=t.replace(/%t/,i.timestampFormatter(new Date))),c&&(t=t.replace(/%l/,i.levelFormatter(e))),l&&(t=t.replace(/%n/,i.nameFormatter(r))),u.length&&"string"==typeof u[0]?(s&&(t=t.replace(/%m/,i.messageFormatter(u[0]))),u[0]=t):u.unshift(t),o.apply(void 0,u)}},e.methodFactory=r,e.setLevel(e.getLevel()),e},disable:function(){if(!t)throw new Error("You can't disable a not appled plugin");if(r!==t.methodFactory)throw new Error("You can't disable a plugin after appling another plugin");t.methodFactory=n,t.setLevel(t.getLevel()),n=void 0,t=void 0}};return e&&(i=e.format,a.noConflict=function(){return e.format===a&&(e.format=i),a}),a},void 0===(i=r.call(t,n,t,e))||(e.exports=i)},3065:function(e,t,n){var r,i;!function(){"use strict";r=function(){var e=function(){},t="undefined",n=typeof window!==t&&typeof window.navigator!==t&&/Trident\/|MSIE /.test(window.navigator.userAgent),r=["trace","debug","info","warn","error"];function i(e,t){var n=e[t];if("function"==typeof n.bind)return n.bind(e);try{return Function.prototype.bind.call(n,e)}catch(r){return function(){return Function.prototype.apply.apply(n,[e,arguments])}}}function o(){console.log&&(console.log.apply?console.log.apply(console,arguments):Function.prototype.apply.apply(console.log,[console,arguments])),console.trace&&console.trace()}function a(r){return"debug"===r&&(r="log"),typeof console!==t&&("trace"===r&&n?o:void 0!==console[r]?i(console,r):void 0!==console.log?i(console,"log"):e)}function c(t,n){for(var i=0;i<r.length;i++){var o=r[i];this[o]=i<t?e:this.methodFactory(o,t,n)}this.log=this.debug}function l(e,n,r){return function(){typeof console!==t&&(c.call(this,n,r),this[e].apply(this,arguments))}}function s(e,t,n){return a(e)||l.apply(this,arguments)}function u(e,n,i){var o,a=this;n=null==n?"WARN":n;var l="loglevel";function u(e){var n=(r[e]||"silent").toUpperCase();if(typeof window!==t&&l){try{return void(window.localStorage[l]=n)}catch(i){}try{window.document.cookie=encodeURIComponent(l)+"="+n+";"}catch(i){}}}function g(){var e;if(typeof window!==t&&l){try{e=window.localStorage[l]}catch(i){}if(typeof e===t)try{var n=window.document.cookie,r=n.indexOf(encodeURIComponent(l)+"=");-1!==r&&(e=/^([^;]+)/.exec(n.slice(r))[1])}catch(i){}return void 0===a.levels[e]&&(e=void 0),e}}"string"==typeof e?l+=":"+e:"symbol"==typeof e&&(l=void 0),a.name=e,a.levels={TRACE:0,DEBUG:1,INFO:2,WARN:3,ERROR:4,SILENT:5},a.methodFactory=i||s,a.getLevel=function(){return o},a.setLevel=function(n,r){if("string"==typeof n&&void 0!==a.levels[n.toUpperCase()]&&(n=a.levels[n.toUpperCase()]),!("number"==typeof n&&n>=0&&n<=a.levels.SILENT))throw"log.setLevel() called with invalid level: "+n;if(o=n,!1!==r&&u(n),c.call(a,n,e),typeof console===t&&n<a.levels.SILENT)return"No console available for logging"},a.setDefaultLevel=function(e){n=e,g()||a.setLevel(e,!1)},a.resetLevel=function(){a.setLevel(n,!1),function(){if(typeof window!==t&&l){try{return void window.localStorage.removeItem(l)}catch(e){}try{window.document.cookie=encodeURIComponent(l)+"=; expires=Thu, 01 Jan 1970 00:00:00 UTC"}catch(e){}}}()},a.enableAll=function(e){a.setLevel(a.levels.TRACE,e)},a.disableAll=function(e){a.setLevel(a.levels.SILENT,e)};var d=g();null==d&&(d=n),a.setLevel(d,!1)}var g=new u,d={};g.getLogger=function(e){if("symbol"!=typeof e&&"string"!=typeof e||""===e)throw new TypeError("You must supply a name when creating a logger.");var t=d[e];return t||(t=d[e]=new u(e,g.getLevel(),g.methodFactory)),t};var I=typeof window!==t?window.log:void 0;return g.noConflict=function(){return typeof window!==t&&window.log===g&&(window.log=I),g},g.getLoggers=function(){return d},g.default=g,g},void 0===(i=r.call(t,n,t,e))||(e.exports=i)}()},8859:(e,t,n)=>{var r="function"==typeof Map&&Map.prototype,i=Object.getOwnPropertyDescriptor&&r?Object.getOwnPropertyDescriptor(Map.prototype,"size"):null,o=r&&i&&"function"==typeof i.get?i.get:null,a=r&&Map.prototype.forEach,c="function"==typeof Set&&Set.prototype,l=Object.getOwnPropertyDescriptor&&c?Object.getOwnPropertyDescriptor(Set.prototype,"size"):null,s=c&&l&&"function"==typeof l.get?l.get:null,u=c&&Set.prototype.forEach,g="function"==typeof WeakMap&&WeakMap.prototype?WeakMap.prototype.has:null,d="function"==typeof WeakSet&&WeakSet.prototype?WeakSet.prototype.has:null,I="function"==typeof WeakRef&&WeakRef.prototype?WeakRef.prototype.deref:null,p=Boolean.prototype.valueOf,b=Object.prototype.toString,m=Function.prototype.toString,C=String.prototype.match,h=String.prototype.slice,B=String.prototype.replace,A=String.prototype.toUpperCase,y=String.prototype.toLowerCase,f=RegExp.prototype.test,G=Array.prototype.concat,Q=Array.prototype.join,F=Array.prototype.slice,v=Math.floor,Z="function"==typeof BigInt?BigInt.prototype.valueOf:null,E=Object.getOwnPropertySymbols,S="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?Symbol.prototype.toString:null,X="function"==typeof Symbol&&"object"==typeof Symbol.iterator,T="function"==typeof Symbol&&Symbol.toStringTag&&(Symbol.toStringTag,1)?Symbol.toStringTag:null,x=Object.prototype.propertyIsEnumerable,U=("function"==typeof Reflect?Reflect.getPrototypeOf:Object.getPrototypeOf)||([].__proto__===Array.prototype?function(e){return e.__proto__}:null);function N(e,t){if(e===1/0||e===-1/0||e!=e||e&&e>-1e3&&e<1e3||f.call(/e/,t))return t;var n=/[0-9](?=(?:[0-9]{3})+(?![0-9]))/g;if("number"==typeof e){var r=e<0?-v(-e):v(e);if(r!==e){var i=String(r),o=h.call(t,i.length+1);return B.call(i,n,"$&_")+"."+B.call(B.call(o,/([0-9]{3})/g,"$&_"),/_$/,"")}}return B.call(t,n,"$&_")}var R=n(2634),O=R.custom,V=Y(O)?O:null;function W(e,t,n){var r="double"===(n.quoteStyle||t)?'"':"'";return r+e+r}function _(e){return B.call(String(e),/"/g,"&quot;")}function w(e){return!("[object Array]"!==L(e)||T&&"object"==typeof e&&T in e)}function H(e){return!("[object RegExp]"!==L(e)||T&&"object"==typeof e&&T in e)}function Y(e){if(X)return e&&"object"==typeof e&&e instanceof Symbol;if("symbol"==typeof e)return!0;if(!e||"object"!=typeof e||!S)return!1;try{return S.call(e),!0}catch(t){}return!1}e.exports=function e(t,n,r,i){var c=n||{};if(D(c,"quoteStyle")&&"single"!==c.quoteStyle&&"double"!==c.quoteStyle)throw new TypeError('option "quoteStyle" must be "single" or "double"');if(D(c,"maxStringLength")&&("number"==typeof c.maxStringLength?c.maxStringLength<0&&c.maxStringLength!==1/0:null!==c.maxStringLength))throw new TypeError('option "maxStringLength", if provided, must be a positive integer, Infinity, or `null`');var l=!D(c,"customInspect")||c.customInspect;if("boolean"!=typeof l&&"symbol"!==l)throw new TypeError("option \"customInspect\", if provided, must be `true`, `false`, or `'symbol'`");if(D(c,"indent")&&null!==c.indent&&"\t"!==c.indent&&!(parseInt(c.indent,10)===c.indent&&c.indent>0))throw new TypeError('option "indent" must be "\\t", an integer > 0, or `null`');if(D(c,"numericSeparator")&&"boolean"!=typeof c.numericSeparator)throw new TypeError('option "numericSeparator", if provided, must be `true` or `false`');var b=c.numericSeparator;if(void 0===t)return"undefined";if(null===t)return"null";if("boolean"==typeof t)return t?"true":"false";if("string"==typeof t)return J(t,c);if("number"==typeof t){if(0===t)return 1/0/t>0?"0":"-0";var A=String(t);return b?N(t,A):A}if("bigint"==typeof t){var f=String(t)+"n";return b?N(t,f):f}var v=void 0===c.depth?5:c.depth;if(void 0===r&&(r=0),r>=v&&v>0&&"object"==typeof t)return w(t)?"[Array]":"[Object]";var E=function(e,t){var n;if("\t"===e.indent)n="\t";else{if(!("number"==typeof e.indent&&e.indent>0))return null;n=Q.call(Array(e.indent+1)," ")}return{base:n,prev:Q.call(Array(t+1),n)}}(c,r);if(void 0===i)i=[];else if(P(i,t)>=0)return"[Circular]";function O(t,n,o){if(n&&(i=F.call(i)).push(n),o){var a={depth:c.depth};return D(c,"quoteStyle")&&(a.quoteStyle=c.quoteStyle),e(t,a,r+1,i)}return e(t,c,r+1,i)}if("function"==typeof t&&!H(t)){var k=function(e){if(e.name)return e.name;var t=C.call(m.call(e),/^function\s*([\w$]+)/);return t?t[1]:null}(t),M=$(t,O);return"[Function"+(k?": "+k:" (anonymous)")+"]"+(M.length>0?" { "+Q.call(M,", ")+" }":"")}if(Y(t)){var ee=X?B.call(String(t),/^(Symbol\(.*\))_[^)]*$/,"$1"):S.call(t);return"object"!=typeof t||X?ee:z(ee)}if(function(e){return!(!e||"object"!=typeof e)&&("undefined"!=typeof HTMLElement&&e instanceof HTMLElement||"string"==typeof e.nodeName&&"function"==typeof e.getAttribute)}(t)){for(var te="<"+y.call(String(t.nodeName)),ne=t.attributes||[],re=0;re<ne.length;re++)te+=" "+ne[re].name+"="+W(_(ne[re].value),"double",c);return te+=">",t.childNodes&&t.childNodes.length&&(te+="..."),te+"</"+y.call(String(t.nodeName))+">"}if(w(t)){if(0===t.length)return"[]";var ie=$(t,O);return E&&!function(e){for(var t=0;t<e.length;t++)if(P(e[t],"\n")>=0)return!1;return!0}(ie)?"["+q(ie,E)+"]":"[ "+Q.call(ie,", ")+" ]"}if(function(e){return!("[object Error]"!==L(e)||T&&"object"==typeof e&&T in e)}(t)){var oe=$(t,O);return"cause"in Error.prototype||!("cause"in t)||x.call(t,"cause")?0===oe.length?"["+String(t)+"]":"{ ["+String(t)+"] "+Q.call(oe,", ")+" }":"{ ["+String(t)+"] "+Q.call(G.call("[cause]: "+O(t.cause),oe),", ")+" }"}if("object"==typeof t&&l){if(V&&"function"==typeof t[V]&&R)return R(t,{depth:v-r});if("symbol"!==l&&"function"==typeof t.inspect)return t.inspect()}if(function(e){if(!o||!e||"object"!=typeof e)return!1;try{o.call(e);try{s.call(e)}catch(te){return!0}return e instanceof Map}catch(t){}return!1}(t)){var ae=[];return a&&a.call(t,(function(e,n){ae.push(O(n,t,!0)+" => "+O(e,t))})),K("Map",o.call(t),ae,E)}if(function(e){if(!s||!e||"object"!=typeof e)return!1;try{s.call(e);try{o.call(e)}catch(t){return!0}return e instanceof Set}catch(n){}return!1}(t)){var ce=[];return u&&u.call(t,(function(e){ce.push(O(e,t))})),K("Set",s.call(t),ce,E)}if(function(e){if(!g||!e||"object"!=typeof e)return!1;try{g.call(e,g);try{d.call(e,d)}catch(te){return!0}return e instanceof WeakMap}catch(t){}return!1}(t))return j("WeakMap");if(function(e){if(!d||!e||"object"!=typeof e)return!1;try{d.call(e,d);try{g.call(e,g)}catch(te){return!0}return e instanceof WeakSet}catch(t){}return!1}(t))return j("WeakSet");if(function(e){if(!I||!e||"object"!=typeof e)return!1;try{return I.call(e),!0}catch(t){}return!1}(t))return j("WeakRef");if(function(e){return!("[object Number]"!==L(e)||T&&"object"==typeof e&&T in e)}(t))return z(O(Number(t)));if(function(e){if(!e||"object"!=typeof e||!Z)return!1;try{return Z.call(e),!0}catch(t){}return!1}(t))return z(O(Z.call(t)));if(function(e){return!("[object Boolean]"!==L(e)||T&&"object"==typeof e&&T in e)}(t))return z(p.call(t));if(function(e){return!("[object String]"!==L(e)||T&&"object"==typeof e&&T in e)}(t))return z(O(String(t)));if(!function(e){return!("[object Date]"!==L(e)||T&&"object"==typeof e&&T in e)}(t)&&!H(t)){var le=$(t,O),se=U?U(t)===Object.prototype:t instanceof Object||t.constructor===Object,ue=t instanceof Object?"":"null prototype",ge=!se&&T&&Object(t)===t&&T in t?h.call(L(t),8,-1):ue?"Object":"",de=(se||"function"!=typeof t.constructor?"":t.constructor.name?t.constructor.name+" ":"")+(ge||ue?"["+Q.call(G.call([],ge||[],ue||[]),": ")+"] ":"");return 0===le.length?de+"{}":E?de+"{"+q(le,E)+"}":de+"{ "+Q.call(le,", ")+" }"}return String(t)};var k=Object.prototype.hasOwnProperty||function(e){return e in this};function D(e,t){return k.call(e,t)}function L(e){return b.call(e)}function P(e,t){if(e.indexOf)return e.indexOf(t);for(var n=0,r=e.length;n<r;n++)if(e[n]===t)return n;return-1}function J(e,t){if(e.length>t.maxStringLength){var n=e.length-t.maxStringLength,r="... "+n+" more character"+(n>1?"s":"");return J(h.call(e,0,t.maxStringLength),t)+r}return W(B.call(B.call(e,/(['\\])/g,"\\$1"),/[\x00-\x1f]/g,M),"single",t)}function M(e){var t=e.charCodeAt(0),n={8:"b",9:"t",10:"n",12:"f",13:"r"}[t];return n?"\\"+n:"\\x"+(t<16?"0":"")+A.call(t.toString(16))}function z(e){return"Object("+e+")"}function j(e){return e+" { ? }"}function K(e,t,n,r){return e+" ("+t+") {"+(r?q(n,r):Q.call(n,", "))+"}"}function q(e,t){if(0===e.length)return"";var n="\n"+t.prev+t.base;return n+Q.call(e,","+n)+"\n"+t.prev}function $(e,t){var n=w(e),r=[];if(n){r.length=e.length;for(var i=0;i<e.length;i++)r[i]=D(e,i)?t(e[i],e):""}var o,a="function"==typeof E?E(e):[];if(X){o={};for(var c=0;c<a.length;c++)o["$"+a[c]]=a[c]}for(var l in e)D(e,l)&&(n&&String(Number(l))===l&&l<e.length||X&&o["$"+l]instanceof Symbol||(f.call(/[^\w$]/,l)?r.push(t(l,e)+": "+t(e[l],e)):r.push(l+": "+t(e[l],e))));if("function"==typeof E)for(var s=0;s<a.length;s++)x.call(e,a[s])&&r.push("["+t(a[s])+"]: "+t(e[a[s]],e));return r}},1794:function(e,t){var n,r,i;!function(o,a){"use strict";"object"==typeof e.exports?e.exports=a():(r=[],void 0===(i="function"==typeof(n=a)?n.apply(t,r):n)||(e.exports=i))}(0,(function(){"use strict";var e=Object.prototype.toString;function t(e,t){return null!=e&&Object.prototype.hasOwnProperty.call(e,t)}function n(e){if(!e)return!0;if(i(e)&&0===e.length)return!0;if("string"!=typeof e){for(var n in e)if(t(e,n))return!1;return!0}return!1}function r(t){return e.call(t)}var i=Array.isArray||function(t){return"[object Array]"===e.call(t)};function o(e){var t=parseInt(e);return t.toString()===e?t:e}function a(e){var a,c,l=function(e){return Object.keys(l).reduce((function(t,n){return"create"===n||"function"==typeof l[n]&&(t[n]=l[n].bind(l,e)),t}),{})};function s(e,t){if(a(e,t))return e[t]}function u(e,t,n,r){if("number"==typeof t&&(t=[t]),!t||0===t.length)return e;if("string"==typeof t)return u(e,t.split(".").map(o),n,r);var i=t[0],a=c(e,i);return 1===t.length?(void 0!==a&&r||(e[i]=n),a):(void 0===a&&("number"==typeof t[1]?e[i]=[]:e[i]={}),u(e[i],t.slice(1),n,r))}return a=(e=e||{}).includeInheritedProps?function(){return!0}:function(e,n){return"number"==typeof n&&Array.isArray(e)||t(e,n)},c=e.includeInheritedProps?function(e,t){"string"!=typeof t&&"number"!=typeof t&&(t=String(t));var n=s(e,t);if("__proto__"===t||"prototype"===t||"constructor"===t&&"function"==typeof n)throw new Error("For security reasons, object's magic properties cannot be set");return n}:function(e,t){return s(e,t)},l.has=function(n,r){if("number"==typeof r?r=[r]:"string"==typeof r&&(r=r.split(".")),!r||0===r.length)return!!n;for(var a=0;a<r.length;a++){var c=o(r[a]);if(!("number"==typeof c&&i(n)&&c<n.length||(e.includeInheritedProps?c in Object(n):t(n,c))))return!1;n=n[c]}return!0},l.ensureExists=function(e,t,n){return u(e,t,n,!0)},l.set=function(e,t,n,r){return u(e,t,n,r)},l.insert=function(e,t,n,r){var o=l.get(e,t);r=~~r,i(o)||(o=[],l.set(e,t,o)),o.splice(r,0,n)},l.empty=function(e,t){var o,c;if(!n(t)&&null!=e&&(o=l.get(e,t))){if("string"==typeof o)return l.set(e,t,"");if(function(e){return"boolean"==typeof e||"[object Boolean]"===r(e)}(o))return l.set(e,t,!1);if("number"==typeof o)return l.set(e,t,0);if(i(o))o.length=0;else{if(!function(e){return"object"==typeof e&&"[object Object]"===r(e)}(o))return l.set(e,t,null);for(c in o)a(o,c)&&delete o[c]}}},l.push=function(e,t){var n=l.get(e,t);i(n)||(n=[],l.set(e,t,n)),n.push.apply(n,Array.prototype.slice.call(arguments,2))},l.coalesce=function(e,t,n){for(var r,i=0,o=t.length;i<o;i++)if(void 0!==(r=l.get(e,t[i])))return r;return n},l.get=function(e,t,n){if("number"==typeof t&&(t=[t]),!t||0===t.length)return e;if(null==e)return n;if("string"==typeof t)return l.get(e,t.split("."),n);var r=o(t[0]),i=c(e,r);return void 0===i?n:1===t.length?i:l.get(e[r],t.slice(1),n)},l.del=function(e,t){if("number"==typeof t&&(t=[t]),null==e)return e;if(n(t))return e;if("string"==typeof t)return l.del(e,t.split("."));var r=o(t[0]);return c(e,r),a(e,r)?1!==t.length?l.del(e[r],t.slice(1)):(i(e)?e.splice(r,1):delete e[r],e):e},l}var c=a();return c.create=a,c.withInheritedProps=a({includeInheritedProps:!0}),c}))},5534:(e,t,n)=>{"use strict";function r(){return r=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},r.apply(this,arguments)}function i(e,t){return i=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(e,t){return e.__proto__=t,e},i(e,t)}function o(e){return o=Object.setPrototypeOf?Object.getPrototypeOf.bind():function(e){return e.__proto__||Object.getPrototypeOf(e)},o(e)}function a(e,t,n){return a=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(e){return!1}}()?Reflect.construct.bind():function(e,t,n){var r=[null];r.push.apply(r,t);var o=new(Function.bind.apply(e,r));return n&&i(o,n.prototype),o},a.apply(null,arguments)}function c(e){var t="function"==typeof Map?new Map:void 0;return c=function(e){if(null===e||(n=e,-1===Function.toString.call(n).indexOf("[native code]")))return e;var n;if("function"!=typeof e)throw new TypeError("Super expression must either be null or a function");if(void 0!==t){if(t.has(e))return t.get(e);t.set(e,r)}function r(){return a(e,arguments,o(this).constructor)}return r.prototype=Object.create(e.prototype,{constructor:{value:r,enumerable:!1,writable:!0,configurable:!0}}),i(r,e)},c(e)}n.d(t,{e$:()=>T});var l=function(e){var t,n;function r(t){return function(e){if(void 0===e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e}(e.call(this,"An error occurred. See https://github.com/styled-components/polished/blob/main/src/internalHelpers/errors.md#"+t+" for more information.")||this)}return n=e,(t=r).prototype=Object.create(n.prototype),t.prototype.constructor=t,i(t,n),r}(c(Error));function s(e){return Math.round(255*e)}function u(e,t,n){return s(e)+","+s(t)+","+s(n)}function g(e,t,n,r){if(void 0===r&&(r=u),0===t)return r(n,n,n);var i=(e%360+360)%360/60,o=(1-Math.abs(2*n-1))*t,a=o*(1-Math.abs(i%2-1)),c=0,l=0,s=0;i>=0&&i<1?(c=o,l=a):i>=1&&i<2?(c=a,l=o):i>=2&&i<3?(l=o,s=a):i>=3&&i<4?(l=a,s=o):i>=4&&i<5?(c=a,s=o):i>=5&&i<6&&(c=o,s=a);var g=n-o/2;return r(c+g,l+g,s+g)}var d={aliceblue:"f0f8ff",antiquewhite:"faebd7",aqua:"00ffff",aquamarine:"7fffd4",azure:"f0ffff",beige:"f5f5dc",bisque:"ffe4c4",black:"000",blanchedalmond:"ffebcd",blue:"0000ff",blueviolet:"8a2be2",brown:"a52a2a",burlywood:"deb887",cadetblue:"5f9ea0",chartreuse:"7fff00",chocolate:"d2691e",coral:"ff7f50",cornflowerblue:"6495ed",cornsilk:"fff8dc",crimson:"dc143c",cyan:"00ffff",darkblue:"00008b",darkcyan:"008b8b",darkgoldenrod:"b8860b",darkgray:"a9a9a9",darkgreen:"006400",darkgrey:"a9a9a9",darkkhaki:"bdb76b",darkmagenta:"8b008b",darkolivegreen:"556b2f",darkorange:"ff8c00",darkorchid:"9932cc",darkred:"8b0000",darksalmon:"e9967a",darkseagreen:"8fbc8f",darkslateblue:"483d8b",darkslategray:"2f4f4f",darkslategrey:"2f4f4f",darkturquoise:"00ced1",darkviolet:"9400d3",deeppink:"ff1493",deepskyblue:"00bfff",dimgray:"696969",dimgrey:"696969",dodgerblue:"1e90ff",firebrick:"b22222",floralwhite:"fffaf0",forestgreen:"228b22",fuchsia:"ff00ff",gainsboro:"dcdcdc",ghostwhite:"f8f8ff",gold:"ffd700",goldenrod:"daa520",gray:"808080",green:"008000",greenyellow:"adff2f",grey:"808080",honeydew:"f0fff0",hotpink:"ff69b4",indianred:"cd5c5c",indigo:"4b0082",ivory:"fffff0",khaki:"f0e68c",lavender:"e6e6fa",lavenderblush:"fff0f5",lawngreen:"7cfc00",lemonchiffon:"fffacd",lightblue:"add8e6",lightcoral:"f08080",lightcyan:"e0ffff",lightgoldenrodyellow:"fafad2",lightgray:"d3d3d3",lightgreen:"90ee90",lightgrey:"d3d3d3",lightpink:"ffb6c1",lightsalmon:"ffa07a",lightseagreen:"20b2aa",lightskyblue:"87cefa",lightslategray:"789",lightslategrey:"789",lightsteelblue:"b0c4de",lightyellow:"ffffe0",lime:"0f0",limegreen:"32cd32",linen:"faf0e6",magenta:"f0f",maroon:"800000",mediumaquamarine:"66cdaa",mediumblue:"0000cd",mediumorchid:"ba55d3",mediumpurple:"9370db",mediumseagreen:"3cb371",mediumslateblue:"7b68ee",mediumspringgreen:"00fa9a",mediumturquoise:"48d1cc",mediumvioletred:"c71585",midnightblue:"191970",mintcream:"f5fffa",mistyrose:"ffe4e1",moccasin:"ffe4b5",navajowhite:"ffdead",navy:"000080",oldlace:"fdf5e6",olive:"808000",olivedrab:"6b8e23",orange:"ffa500",orangered:"ff4500",orchid:"da70d6",palegoldenrod:"eee8aa",palegreen:"98fb98",paleturquoise:"afeeee",palevioletred:"db7093",papayawhip:"ffefd5",peachpuff:"ffdab9",peru:"cd853f",pink:"ffc0cb",plum:"dda0dd",powderblue:"b0e0e6",purple:"800080",rebeccapurple:"639",red:"f00",rosybrown:"bc8f8f",royalblue:"4169e1",saddlebrown:"8b4513",salmon:"fa8072",sandybrown:"f4a460",seagreen:"2e8b57",seashell:"fff5ee",sienna:"a0522d",silver:"c0c0c0",skyblue:"87ceeb",slateblue:"6a5acd",slategray:"708090",slategrey:"708090",snow:"fffafa",springgreen:"00ff7f",steelblue:"4682b4",tan:"d2b48c",teal:"008080",thistle:"d8bfd8",tomato:"ff6347",turquoise:"40e0d0",violet:"ee82ee",wheat:"f5deb3",white:"fff",whitesmoke:"f5f5f5",yellow:"ff0",yellowgreen:"9acd32"},I=/^#[a-fA-F0-9]{6}$/,p=/^#[a-fA-F0-9]{8}$/,b=/^#[a-fA-F0-9]{3}$/,m=/^#[a-fA-F0-9]{4}$/,C=/^rgb\(\s*(\d{1,3})\s*(?:,)?\s*(\d{1,3})\s*(?:,)?\s*(\d{1,3})\s*\)$/i,h=/^rgb(?:a)?\(\s*(\d{1,3})\s*(?:,)?\s*(\d{1,3})\s*(?:,)?\s*(\d{1,3})\s*(?:,|\/)\s*([-+]?\d*[.]?\d+[%]?)\s*\)$/i,B=/^hsl\(\s*(\d{0,3}[.]?[0-9]+(?:deg)?)\s*(?:,)?\s*(\d{1,3}[.]?[0-9]?)%\s*(?:,)?\s*(\d{1,3}[.]?[0-9]?)%\s*\)$/i,A=/^hsl(?:a)?\(\s*(\d{0,3}[.]?[0-9]+(?:deg)?)\s*(?:,)?\s*(\d{1,3}[.]?[0-9]?)%\s*(?:,)?\s*(\d{1,3}[.]?[0-9]?)%\s*(?:,|\/)\s*([-+]?\d*[.]?\d+[%]?)\s*\)$/i;function y(e){if("string"!=typeof e)throw new l(3);var t=function(e){if("string"!=typeof e)return e;var t=e.toLowerCase();return d[t]?"#"+d[t]:e}(e);if(t.match(I))return{red:parseInt(""+t[1]+t[2],16),green:parseInt(""+t[3]+t[4],16),blue:parseInt(""+t[5]+t[6],16)};if(t.match(p)){var n=parseFloat((parseInt(""+t[7]+t[8],16)/255).toFixed(2));return{red:parseInt(""+t[1]+t[2],16),green:parseInt(""+t[3]+t[4],16),blue:parseInt(""+t[5]+t[6],16),alpha:n}}if(t.match(b))return{red:parseInt(""+t[1]+t[1],16),green:parseInt(""+t[2]+t[2],16),blue:parseInt(""+t[3]+t[3],16)};if(t.match(m)){var r=parseFloat((parseInt(""+t[4]+t[4],16)/255).toFixed(2));return{red:parseInt(""+t[1]+t[1],16),green:parseInt(""+t[2]+t[2],16),blue:parseInt(""+t[3]+t[3],16),alpha:r}}var i=C.exec(t);if(i)return{red:parseInt(""+i[1],10),green:parseInt(""+i[2],10),blue:parseInt(""+i[3],10)};var o=h.exec(t.substring(0,50));if(o)return{red:parseInt(""+o[1],10),green:parseInt(""+o[2],10),blue:parseInt(""+o[3],10),alpha:parseFloat(""+o[4])>1?parseFloat(""+o[4])/100:parseFloat(""+o[4])};var a=B.exec(t);if(a){var c="rgb("+g(parseInt(""+a[1],10),parseInt(""+a[2],10)/100,parseInt(""+a[3],10)/100)+")",s=C.exec(c);if(!s)throw new l(4,t,c);return{red:parseInt(""+s[1],10),green:parseInt(""+s[2],10),blue:parseInt(""+s[3],10)}}var u=A.exec(t.substring(0,50));if(u){var y="rgb("+g(parseInt(""+u[1],10),parseInt(""+u[2],10)/100,parseInt(""+u[3],10)/100)+")",f=C.exec(y);if(!f)throw new l(4,t,y);return{red:parseInt(""+f[1],10),green:parseInt(""+f[2],10),blue:parseInt(""+f[3],10),alpha:parseFloat(""+u[4])>1?parseFloat(""+u[4])/100:parseFloat(""+u[4])}}throw new l(5)}var f=function(e){return 7===e.length&&e[1]===e[2]&&e[3]===e[4]&&e[5]===e[6]?"#"+e[1]+e[3]+e[5]:e};function G(e){var t=e.toString(16);return 1===t.length?"0"+t:t}function Q(e){return G(Math.round(255*e))}function F(e,t,n){return f("#"+Q(e)+Q(t)+Q(n))}function v(e,t,n){return g(e,t,n,F)}function Z(e,t,n){if("number"==typeof e&&"number"==typeof t&&"number"==typeof n)return f("#"+G(e)+G(t)+G(n));if("object"==typeof e&&void 0===t&&void 0===n)return f("#"+G(e.red)+G(e.green)+G(e.blue));throw new l(6)}function E(e){if("object"!=typeof e)throw new l(8);if(function(e){return"number"==typeof e.red&&"number"==typeof e.green&&"number"==typeof e.blue&&"number"==typeof e.alpha}(e))return function(e,t,n,r){if("string"==typeof e&&"number"==typeof t){var i=y(e);return"rgba("+i.red+","+i.green+","+i.blue+","+t+")"}if("number"==typeof e&&"number"==typeof t&&"number"==typeof n&&"number"==typeof r)return r>=1?Z(e,t,n):"rgba("+e+","+t+","+n+","+r+")";if("object"==typeof e&&void 0===t&&void 0===n&&void 0===r)return e.alpha>=1?Z(e.red,e.green,e.blue):"rgba("+e.red+","+e.green+","+e.blue+","+e.alpha+")";throw new l(7)}(e);if(function(e){return"number"==typeof e.red&&"number"==typeof e.green&&"number"==typeof e.blue&&("number"!=typeof e.alpha||void 0===e.alpha)}(e))return Z(e);if(function(e){return"number"==typeof e.hue&&"number"==typeof e.saturation&&"number"==typeof e.lightness&&"number"==typeof e.alpha}(e))return function(e,t,n,r){if("number"==typeof e&&"number"==typeof t&&"number"==typeof n&&"number"==typeof r)return r>=1?v(e,t,n):"rgba("+g(e,t,n)+","+r+")";if("object"==typeof e&&void 0===t&&void 0===n&&void 0===r)return e.alpha>=1?v(e.hue,e.saturation,e.lightness):"rgba("+g(e.hue,e.saturation,e.lightness)+","+e.alpha+")";throw new l(2)}(e);if(function(e){return"number"==typeof e.hue&&"number"==typeof e.saturation&&"number"==typeof e.lightness&&("number"!=typeof e.alpha||void 0===e.alpha)}(e))return function(e,t,n){if("number"==typeof e&&"number"==typeof t&&"number"==typeof n)return v(e,t,n);if("object"==typeof e&&void 0===t&&void 0===n)return v(e.hue,e.saturation,e.lightness);throw new l(1)}(e);throw new l(8)}function S(e,t,n){return function(){var r=n.concat(Array.prototype.slice.call(arguments));return r.length>=t?e.apply(this,r):S(e,t,r)}}function X(e,t,n){return Math.max(e,Math.min(t,n))}var T=function(e){return S(e,e.length,[])}((function(e,t){if("transparent"===t)return t;var n=function(e){return function(e){var t,n=e.red/255,r=e.green/255,i=e.blue/255,o=Math.max(n,r,i),a=Math.min(n,r,i),c=(o+a)/2;if(o===a)return void 0!==e.alpha?{hue:0,saturation:0,lightness:c,alpha:e.alpha}:{hue:0,saturation:0,lightness:c};var l=o-a,s=c>.5?l/(2-o-a):l/(o+a);switch(o){case n:t=(r-i)/l+(r<i?6:0);break;case r:t=(i-n)/l+2;break;default:t=(n-r)/l+4}return t*=60,void 0!==e.alpha?{hue:t,saturation:s,lightness:c,alpha:e.alpha}:{hue:t,saturation:s,lightness:c}}(y(e))}(t);return E(r({},n,{lightness:X(0,1,n.lightness-parseFloat(e))}))}))},2694:(e,t,n)=>{"use strict";var r=n(6925);function i(){}function o(){}o.resetWarningCache=i,e.exports=function(){function e(e,t,n,i,o,a){if(a!==r){var c=new Error("Calling PropTypes validators directly is not supported by the `prop-types` package. Use PropTypes.checkPropTypes() to call them. Read more at http://fb.me/use-check-prop-types");throw c.name="Invariant Violation",c}}function t(){return e}e.isRequired=e;var n={array:e,bigint:e,bool:e,func:e,number:e,object:e,string:e,symbol:e,any:e,arrayOf:t,element:e,elementType:e,instanceOf:t,node:e,objectOf:t,oneOf:t,oneOfType:t,shape:t,exact:t,checkPropTypes:o,resetWarningCache:i};return n.PropTypes=n,n}},5556:(e,t,n)=>{e.exports=n(2694)()},6925:e=>{"use strict";e.exports="SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED"},7290:(e,t,n)=>{"use strict";n.d(t,{Ay:()=>v});var r,i=n(5927),o=n.n(i),a=Object.defineProperty,c=Object.getOwnPropertySymbols,l=Object.prototype.hasOwnProperty,s=Object.prototype.propertyIsEnumerable,u=(e,t,n)=>t in e?a(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,g=(e,t)=>{for(var n in t||(t={}))l.call(t,n)&&u(e,n,t[n]);if(c)for(var n of c(t))s.call(t,n)&&u(e,n,t[n]);return e},d=(e,t)=>{var n={};for(var r in e)l.call(e,r)&&t.indexOf(r)<0&&(n[r]=e[r]);if(null!=e&&c)for(var r of c(e))t.indexOf(r)<0&&s.call(e,r)&&(n[r]=e[r]);return n};(e=>{const t=class{constructor(e,n,r,i){if(this.version=e,this.errorCorrectionLevel=n,this.modules=[],this.isFunction=[],e<t.MIN_VERSION||e>t.MAX_VERSION)throw new RangeError("Version value out of range");if(i<-1||i>7)throw new RangeError("Mask value out of range");this.size=4*e+17;let a=[];for(let t=0;t<this.size;t++)a.push(!1);for(let t=0;t<this.size;t++)this.modules.push(a.slice()),this.isFunction.push(a.slice());this.drawFunctionPatterns();const c=this.addEccAndInterleave(r);if(this.drawCodewords(c),-1==i){let e=1e9;for(let t=0;t<8;t++){this.applyMask(t),this.drawFormatBits(t);const n=this.getPenaltyScore();n<e&&(i=t,e=n),this.applyMask(t)}}o(0<=i&&i<=7),this.mask=i,this.applyMask(i),this.drawFormatBits(i),this.isFunction=[]}static encodeText(n,r){const i=e.QrSegment.makeSegments(n);return t.encodeSegments(i,r)}static encodeBinary(n,r){const i=e.QrSegment.makeBytes(n);return t.encodeSegments([i],r)}static encodeSegments(e,n,i=1,a=40,l=-1,s=!0){if(!(t.MIN_VERSION<=i&&i<=a&&a<=t.MAX_VERSION)||l<-1||l>7)throw new RangeError("Invalid value");let u,g;for(u=i;;u++){const r=8*t.getNumDataCodewords(u,n),i=c.getTotalBits(e,u);if(i<=r){g=i;break}if(u>=a)throw new RangeError("Data too long")}for(const r of[t.Ecc.MEDIUM,t.Ecc.QUARTILE,t.Ecc.HIGH])s&&g<=8*t.getNumDataCodewords(u,r)&&(n=r);let d=[];for(const t of e){r(t.mode.modeBits,4,d),r(t.numChars,t.mode.numCharCountBits(u),d);for(const e of t.getData())d.push(e)}o(d.length==g);const I=8*t.getNumDataCodewords(u,n);o(d.length<=I),r(0,Math.min(4,I-d.length),d),r(0,(8-d.length%8)%8,d),o(d.length%8==0);for(let t=236;d.length<I;t^=253)r(t,8,d);let p=[];for(;8*p.length<d.length;)p.push(0);return d.forEach(((e,t)=>p[t>>>3]|=e<<7-(7&t))),new t(u,n,p,l)}getModule(e,t){return 0<=e&&e<this.size&&0<=t&&t<this.size&&this.modules[t][e]}getModules(){return this.modules}drawFunctionPatterns(){for(let n=0;n<this.size;n++)this.setFunctionModule(6,n,n%2==0),this.setFunctionModule(n,6,n%2==0);this.drawFinderPattern(3,3),this.drawFinderPattern(this.size-4,3),this.drawFinderPattern(3,this.size-4);const e=this.getAlignmentPatternPositions(),t=e.length;for(let n=0;n<t;n++)for(let r=0;r<t;r++)0==n&&0==r||0==n&&r==t-1||n==t-1&&0==r||this.drawAlignmentPattern(e[n],e[r]);this.drawFormatBits(0),this.drawVersion()}drawFormatBits(e){const t=this.errorCorrectionLevel.formatBits<<3|e;let n=t;for(let i=0;i<10;i++)n=n<<1^1335*(n>>>9);const r=21522^(t<<10|n);o(r>>>15==0);for(let o=0;o<=5;o++)this.setFunctionModule(8,o,i(r,o));this.setFunctionModule(8,7,i(r,6)),this.setFunctionModule(8,8,i(r,7)),this.setFunctionModule(7,8,i(r,8));for(let o=9;o<15;o++)this.setFunctionModule(14-o,8,i(r,o));for(let o=0;o<8;o++)this.setFunctionModule(this.size-1-o,8,i(r,o));for(let o=8;o<15;o++)this.setFunctionModule(8,this.size-15+o,i(r,o));this.setFunctionModule(8,this.size-8,!0)}drawVersion(){if(this.version<7)return;let e=this.version;for(let n=0;n<12;n++)e=e<<1^7973*(e>>>11);const t=this.version<<12|e;o(t>>>18==0);for(let n=0;n<18;n++){const e=i(t,n),r=this.size-11+n%3,o=Math.floor(n/3);this.setFunctionModule(r,o,e),this.setFunctionModule(o,r,e)}}drawFinderPattern(e,t){for(let n=-4;n<=4;n++)for(let r=-4;r<=4;r++){const i=Math.max(Math.abs(r),Math.abs(n)),o=e+r,a=t+n;0<=o&&o<this.size&&0<=a&&a<this.size&&this.setFunctionModule(o,a,2!=i&&4!=i)}}drawAlignmentPattern(e,t){for(let n=-2;n<=2;n++)for(let r=-2;r<=2;r++)this.setFunctionModule(e+r,t+n,1!=Math.max(Math.abs(r),Math.abs(n)))}setFunctionModule(e,t,n){this.modules[t][e]=n,this.isFunction[t][e]=!0}addEccAndInterleave(e){const n=this.version,r=this.errorCorrectionLevel;if(e.length!=t.getNumDataCodewords(n,r))throw new RangeError("Invalid argument");const i=t.NUM_ERROR_CORRECTION_BLOCKS[r.ordinal][n],a=t.ECC_CODEWORDS_PER_BLOCK[r.ordinal][n],c=Math.floor(t.getNumRawDataModules(n)/8),l=i-c%i,s=Math.floor(c/i);let u=[];const g=t.reedSolomonComputeDivisor(a);for(let o=0,I=0;o<i;o++){let n=e.slice(I,I+s-a+(o<l?0:1));I+=n.length;const r=t.reedSolomonComputeRemainder(n,g);o<l&&n.push(0),u.push(n.concat(r))}let d=[];for(let t=0;t<u[0].length;t++)u.forEach(((e,n)=>{(t!=s-a||n>=l)&&d.push(e[t])}));return o(d.length==c),d}drawCodewords(e){if(e.length!=Math.floor(t.getNumRawDataModules(this.version)/8))throw new RangeError("Invalid argument");let n=0;for(let t=this.size-1;t>=1;t-=2){6==t&&(t=5);for(let r=0;r<this.size;r++)for(let o=0;o<2;o++){const a=t-o,c=t+1&2?r:this.size-1-r;!this.isFunction[c][a]&&n<8*e.length&&(this.modules[c][a]=i(e[n>>>3],7-(7&n)),n++)}}o(n==8*e.length)}applyMask(e){if(e<0||e>7)throw new RangeError("Mask value out of range");for(let t=0;t<this.size;t++)for(let n=0;n<this.size;n++){let r;switch(e){case 0:r=(n+t)%2==0;break;case 1:r=t%2==0;break;case 2:r=n%3==0;break;case 3:r=(n+t)%3==0;break;case 4:r=(Math.floor(n/3)+Math.floor(t/2))%2==0;break;case 5:r=n*t%2+n*t%3==0;break;case 6:r=(n*t%2+n*t%3)%2==0;break;case 7:r=((n+t)%2+n*t%3)%2==0;break;default:throw new Error("Unreachable")}!this.isFunction[t][n]&&r&&(this.modules[t][n]=!this.modules[t][n])}}getPenaltyScore(){let e=0;for(let o=0;o<this.size;o++){let n=!1,r=0,i=[0,0,0,0,0,0,0];for(let a=0;a<this.size;a++)this.modules[o][a]==n?(r++,5==r?e+=t.PENALTY_N1:r>5&&e++):(this.finderPenaltyAddHistory(r,i),n||(e+=this.finderPenaltyCountPatterns(i)*t.PENALTY_N3),n=this.modules[o][a],r=1);e+=this.finderPenaltyTerminateAndCount(n,r,i)*t.PENALTY_N3}for(let o=0;o<this.size;o++){let n=!1,r=0,i=[0,0,0,0,0,0,0];for(let a=0;a<this.size;a++)this.modules[a][o]==n?(r++,5==r?e+=t.PENALTY_N1:r>5&&e++):(this.finderPenaltyAddHistory(r,i),n||(e+=this.finderPenaltyCountPatterns(i)*t.PENALTY_N3),n=this.modules[a][o],r=1);e+=this.finderPenaltyTerminateAndCount(n,r,i)*t.PENALTY_N3}for(let o=0;o<this.size-1;o++)for(let n=0;n<this.size-1;n++){const r=this.modules[o][n];r==this.modules[o][n+1]&&r==this.modules[o+1][n]&&r==this.modules[o+1][n+1]&&(e+=t.PENALTY_N2)}let n=0;for(const t of this.modules)n=t.reduce(((e,t)=>e+(t?1:0)),n);const r=this.size*this.size,i=Math.ceil(Math.abs(20*n-10*r)/r)-1;return o(0<=i&&i<=9),e+=i*t.PENALTY_N4,o(0<=e&&e<=2568888),e}getAlignmentPatternPositions(){if(1==this.version)return[];{const e=Math.floor(this.version/7)+2,t=32==this.version?26:2*Math.ceil((4*this.version+4)/(2*e-2));let n=[6];for(let r=this.size-7;n.length<e;r-=t)n.splice(1,0,r);return n}}static getNumRawDataModules(e){if(e<t.MIN_VERSION||e>t.MAX_VERSION)throw new RangeError("Version number out of range");let n=(16*e+128)*e+64;if(e>=2){const t=Math.floor(e/7)+2;n-=(25*t-10)*t-55,e>=7&&(n-=36)}return o(208<=n&&n<=29648),n}static getNumDataCodewords(e,n){return Math.floor(t.getNumRawDataModules(e)/8)-t.ECC_CODEWORDS_PER_BLOCK[n.ordinal][e]*t.NUM_ERROR_CORRECTION_BLOCKS[n.ordinal][e]}static reedSolomonComputeDivisor(e){if(e<1||e>255)throw new RangeError("Degree out of range");let n=[];for(let t=0;t<e-1;t++)n.push(0);n.push(1);let r=1;for(let i=0;i<e;i++){for(let e=0;e<n.length;e++)n[e]=t.reedSolomonMultiply(n[e],r),e+1<n.length&&(n[e]^=n[e+1]);r=t.reedSolomonMultiply(r,2)}return n}static reedSolomonComputeRemainder(e,n){let r=n.map((e=>0));for(const i of e){const e=i^r.shift();r.push(0),n.forEach(((n,i)=>r[i]^=t.reedSolomonMultiply(n,e)))}return r}static reedSolomonMultiply(e,t){if(e>>>8!=0||t>>>8!=0)throw new RangeError("Byte out of range");let n=0;for(let r=7;r>=0;r--)n=n<<1^285*(n>>>7),n^=(t>>>r&1)*e;return o(n>>>8==0),n}finderPenaltyCountPatterns(e){const t=e[1];o(t<=3*this.size);const n=t>0&&e[2]==t&&e[3]==3*t&&e[4]==t&&e[5]==t;return(n&&e[0]>=4*t&&e[6]>=t?1:0)+(n&&e[6]>=4*t&&e[0]>=t?1:0)}finderPenaltyTerminateAndCount(e,t,n){return e&&(this.finderPenaltyAddHistory(t,n),t=0),t+=this.size,this.finderPenaltyAddHistory(t,n),this.finderPenaltyCountPatterns(n)}finderPenaltyAddHistory(e,t){0==t[0]&&(e+=this.size),t.pop(),t.unshift(e)}};let n=t;function r(e,t,n){if(t<0||t>31||e>>>t!=0)throw new RangeError("Value out of range");for(let r=t-1;r>=0;r--)n.push(e>>>r&1)}function i(e,t){return!!(e>>>t&1)}function o(e){if(!e)throw new Error("Assertion error")}n.MIN_VERSION=1,n.MAX_VERSION=40,n.PENALTY_N1=3,n.PENALTY_N2=3,n.PENALTY_N3=40,n.PENALTY_N4=10,n.ECC_CODEWORDS_PER_BLOCK=[[-1,7,10,15,20,26,18,20,24,30,18,20,24,26,30,22,24,28,30,28,28,28,28,30,30,26,28,30,30,30,30,30,30,30,30,30,30,30,30,30,30],[-1,10,16,26,18,24,16,18,22,22,26,30,22,22,24,24,28,28,26,26,26,26,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28],[-1,13,22,18,26,18,24,18,22,20,24,28,26,24,20,30,24,28,28,26,30,28,30,30,30,30,28,30,30,30,30,30,30,30,30,30,30,30,30,30,30],[-1,17,28,22,16,22,28,26,26,24,28,24,28,22,24,24,30,28,28,26,28,30,24,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30]],n.NUM_ERROR_CORRECTION_BLOCKS=[[-1,1,1,1,1,1,2,2,2,2,4,4,4,4,4,6,6,6,6,7,8,8,9,9,10,12,12,12,13,14,15,16,17,18,19,19,20,21,22,24,25],[-1,1,1,1,2,2,4,4,4,5,5,5,8,9,9,10,10,11,13,14,16,17,17,18,20,21,23,25,26,28,29,31,33,35,37,38,40,43,45,47,49],[-1,1,1,2,2,4,4,6,6,8,8,8,10,12,16,12,17,16,18,21,20,23,23,25,27,29,34,34,35,38,40,43,45,48,51,53,56,59,62,65,68],[-1,1,1,2,4,4,4,5,6,8,8,11,11,16,16,18,16,19,21,25,25,25,34,30,32,35,37,40,42,45,48,51,54,57,60,63,66,70,74,77,81]],e.QrCode=n;const a=class{constructor(e,t,n){if(this.mode=e,this.numChars=t,this.bitData=n,t<0)throw new RangeError("Invalid argument");this.bitData=n.slice()}static makeBytes(e){let t=[];for(const n of e)r(n,8,t);return new a(a.Mode.BYTE,e.length,t)}static makeNumeric(e){if(!a.isNumeric(e))throw new RangeError("String contains non-numeric characters");let t=[];for(let n=0;n<e.length;){const i=Math.min(e.length-n,3);r(parseInt(e.substr(n,i),10),3*i+1,t),n+=i}return new a(a.Mode.NUMERIC,e.length,t)}static makeAlphanumeric(e){if(!a.isAlphanumeric(e))throw new RangeError("String contains unencodable characters in alphanumeric mode");let t,n=[];for(t=0;t+2<=e.length;t+=2){let i=45*a.ALPHANUMERIC_CHARSET.indexOf(e.charAt(t));i+=a.ALPHANUMERIC_CHARSET.indexOf(e.charAt(t+1)),r(i,11,n)}return t<e.length&&r(a.ALPHANUMERIC_CHARSET.indexOf(e.charAt(t)),6,n),new a(a.Mode.ALPHANUMERIC,e.length,n)}static makeSegments(e){return""==e?[]:a.isNumeric(e)?[a.makeNumeric(e)]:a.isAlphanumeric(e)?[a.makeAlphanumeric(e)]:[a.makeBytes(a.toUtf8ByteArray(e))]}static makeEci(e){let t=[];if(e<0)throw new RangeError("ECI assignment value out of range");if(e<128)r(e,8,t);else if(e<16384)r(2,2,t),r(e,14,t);else{if(!(e<1e6))throw new RangeError("ECI assignment value out of range");r(6,3,t),r(e,21,t)}return new a(a.Mode.ECI,0,t)}static isNumeric(e){return a.NUMERIC_REGEX.test(e)}static isAlphanumeric(e){return a.ALPHANUMERIC_REGEX.test(e)}getData(){return this.bitData.slice()}static getTotalBits(e,t){let n=0;for(const r of e){const e=r.mode.numCharCountBits(t);if(r.numChars>=1<<e)return 1/0;n+=4+e+r.bitData.length}return n}static toUtf8ByteArray(e){e=encodeURI(e);let t=[];for(let n=0;n<e.length;n++)"%"!=e.charAt(n)?t.push(e.charCodeAt(n)):(t.push(parseInt(e.substr(n+1,2),16)),n+=2);return t}};let c=a;c.NUMERIC_REGEX=/^[0-9]*$/,c.ALPHANUMERIC_REGEX=/^[A-Z0-9 $%*+.\/:-]*$/,c.ALPHANUMERIC_CHARSET="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ $%*+-./:",e.QrSegment=c})(r||(r={})),(e=>{let t;(e=>{const t=class{constructor(e,t){this.ordinal=e,this.formatBits=t}};let n=t;n.LOW=new t(0,1),n.MEDIUM=new t(1,0),n.QUARTILE=new t(2,3),n.HIGH=new t(3,2),e.Ecc=n})(t=e.QrCode||(e.QrCode={}))})(r||(r={})),(e=>{let t;(e=>{const t=class{constructor(e,t){this.modeBits=e,this.numBitsCharCount=t}numCharCountBits(e){return this.numBitsCharCount[Math.floor((e+7)/17)]}};let n=t;n.NUMERIC=new t(1,[10,12,14]),n.ALPHANUMERIC=new t(2,[9,11,13]),n.BYTE=new t(4,[8,16,16]),n.KANJI=new t(8,[8,10,12]),n.ECI=new t(7,[0,0,0]),e.Mode=n})(t=e.QrSegment||(e.QrSegment={}))})(r||(r={}));var I=r,p={L:I.QrCode.Ecc.LOW,M:I.QrCode.Ecc.MEDIUM,Q:I.QrCode.Ecc.QUARTILE,H:I.QrCode.Ecc.HIGH},b=128,m="L",C="#FFFFFF",h="#000000",B=!1;
/**
 * @license qrcode.react
 * Copyright (c) Paul O'Shannessy
 * SPDX-License-Identifier: ISC
 */function A(e,t=0){const n=[];return e.forEach((function(e,r){let i=null;e.forEach((function(o,a){if(!o&&null!==i)return n.push(`M${i+t} ${r+t}h${a-i}v1H${i+t}z`),void(i=null);if(a!==e.length-1)o&&null===i&&(i=a);else{if(!o)return;null===i?n.push(`M${a+t},${r+t} h1v1H${a+t}z`):n.push(`M${i+t},${r+t} h${a+1-i}v1H${i+t}z`)}}))})),n.join("")}function y(e,t){return e.slice().map(((e,n)=>n<t.y||n>=t.y+t.h?e:e.map(((e,n)=>(n<t.x||n>=t.x+t.w)&&e))))}function f(e,t,n,r){if(null==r)return null;const i=n?4:0,o=e.length+2*i,a=Math.floor(.1*t),c=o/t,l=(r.width||a)*c,s=(r.height||a)*c,u=null==r.x?e.length/2-l/2:r.x*c,g=null==r.y?e.length/2-s/2:r.y*c;let d=null;if(r.excavate){let e=Math.floor(u),t=Math.floor(g);d={x:e,y:t,w:Math.ceil(l+u-e),h:Math.ceil(s+g-t)}}return{x:u,y:g,h:s,w:l,excavation:d}}var G=function(){try{(new Path2D).addPath(new Path2D)}catch(e){return!1}return!0}();function Q(e){const t=e,{value:n,size:r=b,level:a=m,bgColor:c=C,fgColor:l=h,includeMargin:s=B,style:u,imageSettings:Q}=t,F=d(t,["value","size","level","bgColor","fgColor","includeMargin","style","imageSettings"]),v=null==Q?void 0:Q.src,Z=(0,i.useRef)(null),E=(0,i.useRef)(null),[S,X]=(0,i.useState)(!1);(0,i.useEffect)((()=>{if(null!=Z.current){const e=Z.current,t=e.getContext("2d");if(!t)return;let i=I.QrCode.encodeText(n,p[a]).getModules();const o=s?4:0,u=i.length+2*o,g=f(i,r,s,Q),d=E.current,b=null!=g&&null!==d&&d.complete&&0!==d.naturalHeight&&0!==d.naturalWidth;b&&null!=g.excavation&&(i=y(i,g.excavation));const m=window.devicePixelRatio||1;e.height=e.width=r*m;const C=r/u*m;t.scale(C,C),t.fillStyle=c,t.fillRect(0,0,u,u),t.fillStyle=l,G?t.fill(new Path2D(A(i,o))):i.forEach((function(e,n){e.forEach((function(e,r){e&&t.fillRect(r+o,n+o,1,1)}))})),b&&t.drawImage(d,g.x+o,g.y+o,g.w,g.h)}})),(0,i.useEffect)((()=>{X(!1)}),[v]);const T=g({height:r,width:r},u);let x=null;return null!=v&&(x=o().createElement("img",{src:v,key:v,style:{display:"none"},onLoad:()=>{X(!0)},ref:E})),o().createElement(o().Fragment,null,o().createElement("canvas",g({style:T,height:r,width:r,ref:Z},F)),x)}function F(e){const t=e,{value:n,size:r=b,level:i=m,bgColor:a=C,fgColor:c=h,includeMargin:l=B,imageSettings:s}=t,u=d(t,["value","size","level","bgColor","fgColor","includeMargin","imageSettings"]);let G=I.QrCode.encodeText(n,p[i]).getModules();const Q=l?4:0,F=G.length+2*Q,v=f(G,r,l,s);let Z=null;null!=s&&null!=v&&(null!=v.excavation&&(G=y(G,v.excavation)),Z=o().createElement("image",{xlinkHref:s.src,height:v.h,width:v.w,x:v.x+Q,y:v.y+Q,preserveAspectRatio:"none"}));const E=A(G,Q);return o().createElement("svg",g({height:r,width:r,viewBox:`0 0 ${F} ${F}`},u),o().createElement("path",{fill:a,d:`M0,0 h${F}v${F}H0z`,shapeRendering:"crispEdges"}),o().createElement("path",{fill:c,d:E,shapeRendering:"crispEdges"}),Z)}var v=e=>{const t=e,{renderAs:n}=t,r=d(t,["renderAs"]);return"svg"===n?o().createElement(F,g({},r)):o().createElement(Q,g({},r))}},4765:e=>{"use strict";var t=String.prototype.replace,n=/%20/g,r="RFC3986";e.exports={default:r,formatters:{RFC1738:function(e){return t.call(e,n,"+")},RFC3986:function(e){return String(e)}},RFC1738:"RFC1738",RFC3986:r}},5373:(e,t,n)=>{"use strict";var r=n(8636),i=n(2642),o=n(4765);e.exports={formats:o,parse:i,stringify:r}},2642:(e,t,n)=>{"use strict";var r=n(7720),i=Object.prototype.hasOwnProperty,o=Array.isArray,a={allowDots:!1,allowPrototypes:!1,allowSparse:!1,arrayLimit:20,charset:"utf-8",charsetSentinel:!1,comma:!1,decoder:r.decode,delimiter:"&",depth:5,ignoreQueryPrefix:!1,interpretNumericEntities:!1,parameterLimit:1e3,parseArrays:!0,plainObjects:!1,strictNullHandling:!1},c=function(e){return e.replace(/&#(\d+);/g,(function(e,t){return String.fromCharCode(parseInt(t,10))}))},l=function(e,t){return e&&"string"==typeof e&&t.comma&&e.indexOf(",")>-1?e.split(","):e},s=function(e,t,n,r){if(e){var o=n.allowDots?e.replace(/\.([^.[]+)/g,"[$1]"):e,a=/(\[[^[\]]*])/g,c=n.depth>0&&/(\[[^[\]]*])/.exec(o),s=c?o.slice(0,c.index):o,u=[];if(s){if(!n.plainObjects&&i.call(Object.prototype,s)&&!n.allowPrototypes)return;u.push(s)}for(var g=0;n.depth>0&&null!==(c=a.exec(o))&&g<n.depth;){if(g+=1,!n.plainObjects&&i.call(Object.prototype,c[1].slice(1,-1))&&!n.allowPrototypes)return;u.push(c[1])}return c&&u.push("["+o.slice(c.index)+"]"),function(e,t,n,r){for(var i=r?t:l(t,n),o=e.length-1;o>=0;--o){var a,c=e[o];if("[]"===c&&n.parseArrays)a=[].concat(i);else{a=n.plainObjects?Object.create(null):{};var s="["===c.charAt(0)&&"]"===c.charAt(c.length-1)?c.slice(1,-1):c,u=parseInt(s,10);n.parseArrays||""!==s?!isNaN(u)&&c!==s&&String(u)===s&&u>=0&&n.parseArrays&&u<=n.arrayLimit?(a=[])[u]=i:"__proto__"!==s&&(a[s]=i):a={0:i}}i=a}return i}(u,t,n,r)}};e.exports=function(e,t){var n=function(e){if(!e)return a;if(null!==e.decoder&&void 0!==e.decoder&&"function"!=typeof e.decoder)throw new TypeError("Decoder has to be a function.");if(void 0!==e.charset&&"utf-8"!==e.charset&&"iso-8859-1"!==e.charset)throw new TypeError("The charset option must be either utf-8, iso-8859-1, or undefined");var t=void 0===e.charset?a.charset:e.charset;return{allowDots:void 0===e.allowDots?a.allowDots:!!e.allowDots,allowPrototypes:"boolean"==typeof e.allowPrototypes?e.allowPrototypes:a.allowPrototypes,allowSparse:"boolean"==typeof e.allowSparse?e.allowSparse:a.allowSparse,arrayLimit:"number"==typeof e.arrayLimit?e.arrayLimit:a.arrayLimit,charset:t,charsetSentinel:"boolean"==typeof e.charsetSentinel?e.charsetSentinel:a.charsetSentinel,comma:"boolean"==typeof e.comma?e.comma:a.comma,decoder:"function"==typeof e.decoder?e.decoder:a.decoder,delimiter:"string"==typeof e.delimiter||r.isRegExp(e.delimiter)?e.delimiter:a.delimiter,depth:"number"==typeof e.depth||!1===e.depth?+e.depth:a.depth,ignoreQueryPrefix:!0===e.ignoreQueryPrefix,interpretNumericEntities:"boolean"==typeof e.interpretNumericEntities?e.interpretNumericEntities:a.interpretNumericEntities,parameterLimit:"number"==typeof e.parameterLimit?e.parameterLimit:a.parameterLimit,parseArrays:!1!==e.parseArrays,plainObjects:"boolean"==typeof e.plainObjects?e.plainObjects:a.plainObjects,strictNullHandling:"boolean"==typeof e.strictNullHandling?e.strictNullHandling:a.strictNullHandling}}(t);if(""===e||null==e)return n.plainObjects?Object.create(null):{};for(var u="string"==typeof e?function(e,t){var n,s={__proto__:null},u=t.ignoreQueryPrefix?e.replace(/^\?/,""):e,g=t.parameterLimit===1/0?void 0:t.parameterLimit,d=u.split(t.delimiter,g),I=-1,p=t.charset;if(t.charsetSentinel)for(n=0;n<d.length;++n)0===d[n].indexOf("utf8=")&&("utf8=%E2%9C%93"===d[n]?p="utf-8":"utf8=%26%2310003%3B"===d[n]&&(p="iso-8859-1"),I=n,n=d.length);for(n=0;n<d.length;++n)if(n!==I){var b,m,C=d[n],h=C.indexOf("]="),B=-1===h?C.indexOf("="):h+1;-1===B?(b=t.decoder(C,a.decoder,p,"key"),m=t.strictNullHandling?null:""):(b=t.decoder(C.slice(0,B),a.decoder,p,"key"),m=r.maybeMap(l(C.slice(B+1),t),(function(e){return t.decoder(e,a.decoder,p,"value")}))),m&&t.interpretNumericEntities&&"iso-8859-1"===p&&(m=c(m)),C.indexOf("[]=")>-1&&(m=o(m)?[m]:m),i.call(s,b)?s[b]=r.combine(s[b],m):s[b]=m}return s}(e,n):e,g=n.plainObjects?Object.create(null):{},d=Object.keys(u),I=0;I<d.length;++I){var p=d[I],b=s(p,u[p],n,"string"==typeof e);g=r.merge(g,b,n)}return!0===n.allowSparse?g:r.compact(g)}},8636:(e,t,n)=>{"use strict";var r=n(920),i=n(7720),o=n(4765),a=Object.prototype.hasOwnProperty,c={brackets:function(e){return e+"[]"},comma:"comma",indices:function(e,t){return e+"["+t+"]"},repeat:function(e){return e}},l=Array.isArray,s=Array.prototype.push,u=function(e,t){s.apply(e,l(t)?t:[t])},g=Date.prototype.toISOString,d=o.default,I={addQueryPrefix:!1,allowDots:!1,charset:"utf-8",charsetSentinel:!1,delimiter:"&",encode:!0,encoder:i.encode,encodeValuesOnly:!1,format:d,formatter:o.formatters[d],indices:!1,serializeDate:function(e){return g.call(e)},skipNulls:!1,strictNullHandling:!1},p={},b=function e(t,n,o,a,c,s,g,d,b,m,C,h,B,A,y,f){for(var G,Q=t,F=f,v=0,Z=!1;void 0!==(F=F.get(p))&&!Z;){var E=F.get(t);if(v+=1,void 0!==E){if(E===v)throw new RangeError("Cyclic object value");Z=!0}void 0===F.get(p)&&(v=0)}if("function"==typeof d?Q=d(n,Q):Q instanceof Date?Q=C(Q):"comma"===o&&l(Q)&&(Q=i.maybeMap(Q,(function(e){return e instanceof Date?C(e):e}))),null===Q){if(c)return g&&!A?g(n,I.encoder,y,"key",h):n;Q=""}if("string"==typeof(G=Q)||"number"==typeof G||"boolean"==typeof G||"symbol"==typeof G||"bigint"==typeof G||i.isBuffer(Q))return g?[B(A?n:g(n,I.encoder,y,"key",h))+"="+B(g(Q,I.encoder,y,"value",h))]:[B(n)+"="+B(String(Q))];var S,X=[];if(void 0===Q)return X;if("comma"===o&&l(Q))A&&g&&(Q=i.maybeMap(Q,g)),S=[{value:Q.length>0?Q.join(",")||null:void 0}];else if(l(d))S=d;else{var T=Object.keys(Q);S=b?T.sort(b):T}for(var x=a&&l(Q)&&1===Q.length?n+"[]":n,U=0;U<S.length;++U){var N=S[U],R="object"==typeof N&&void 0!==N.value?N.value:Q[N];if(!s||null!==R){var O=l(Q)?"function"==typeof o?o(x,N):x:x+(m?"."+N:"["+N+"]");f.set(t,v);var V=r();V.set(p,f),u(X,e(R,O,o,a,c,s,"comma"===o&&A&&l(Q)?null:g,d,b,m,C,h,B,A,y,V))}}return X};e.exports=function(e,t){var n,i=e,s=function(e){if(!e)return I;if(null!==e.encoder&&void 0!==e.encoder&&"function"!=typeof e.encoder)throw new TypeError("Encoder has to be a function.");var t=e.charset||I.charset;if(void 0!==e.charset&&"utf-8"!==e.charset&&"iso-8859-1"!==e.charset)throw new TypeError("The charset option must be either utf-8, iso-8859-1, or undefined");var n=o.default;if(void 0!==e.format){if(!a.call(o.formatters,e.format))throw new TypeError("Unknown format option provided.");n=e.format}var r=o.formatters[n],i=I.filter;return("function"==typeof e.filter||l(e.filter))&&(i=e.filter),{addQueryPrefix:"boolean"==typeof e.addQueryPrefix?e.addQueryPrefix:I.addQueryPrefix,allowDots:void 0===e.allowDots?I.allowDots:!!e.allowDots,charset:t,charsetSentinel:"boolean"==typeof e.charsetSentinel?e.charsetSentinel:I.charsetSentinel,delimiter:void 0===e.delimiter?I.delimiter:e.delimiter,encode:"boolean"==typeof e.encode?e.encode:I.encode,encoder:"function"==typeof e.encoder?e.encoder:I.encoder,encodeValuesOnly:"boolean"==typeof e.encodeValuesOnly?e.encodeValuesOnly:I.encodeValuesOnly,filter:i,format:n,formatter:r,serializeDate:"function"==typeof e.serializeDate?e.serializeDate:I.serializeDate,skipNulls:"boolean"==typeof e.skipNulls?e.skipNulls:I.skipNulls,sort:"function"==typeof e.sort?e.sort:null,strictNullHandling:"boolean"==typeof e.strictNullHandling?e.strictNullHandling:I.strictNullHandling}}(t);"function"==typeof s.filter?i=(0,s.filter)("",i):l(s.filter)&&(n=s.filter);var g,d=[];if("object"!=typeof i||null===i)return"";g=t&&t.arrayFormat in c?t.arrayFormat:t&&"indices"in t?t.indices?"indices":"repeat":"indices";var p=c[g];if(t&&"commaRoundTrip"in t&&"boolean"!=typeof t.commaRoundTrip)throw new TypeError("`commaRoundTrip` must be a boolean, or absent");var m="comma"===p&&t&&t.commaRoundTrip;n||(n=Object.keys(i)),s.sort&&n.sort(s.sort);for(var C=r(),h=0;h<n.length;++h){var B=n[h];s.skipNulls&&null===i[B]||u(d,b(i[B],B,p,m,s.strictNullHandling,s.skipNulls,s.encode?s.encoder:null,s.filter,s.sort,s.allowDots,s.serializeDate,s.format,s.formatter,s.encodeValuesOnly,s.charset,C))}var A=d.join(s.delimiter),y=!0===s.addQueryPrefix?"?":"";return s.charsetSentinel&&("iso-8859-1"===s.charset?y+="utf8=%26%2310003%3B&":y+="utf8=%E2%9C%93&"),A.length>0?y+A:""}},7720:(e,t,n)=>{"use strict";var r=n(4765),i=Object.prototype.hasOwnProperty,o=Array.isArray,a=function(){for(var e=[],t=0;t<256;++t)e.push("%"+((t<16?"0":"")+t.toString(16)).toUpperCase());return e}(),c=function(e,t){for(var n=t&&t.plainObjects?Object.create(null):{},r=0;r<e.length;++r)void 0!==e[r]&&(n[r]=e[r]);return n};e.exports={arrayToObject:c,assign:function(e,t){return Object.keys(t).reduce((function(e,n){return e[n]=t[n],e}),e)},combine:function(e,t){return[].concat(e,t)},compact:function(e){for(var t=[{obj:{o:e},prop:"o"}],n=[],r=0;r<t.length;++r)for(var i=t[r],a=i.obj[i.prop],c=Object.keys(a),l=0;l<c.length;++l){var s=c[l],u=a[s];"object"==typeof u&&null!==u&&-1===n.indexOf(u)&&(t.push({obj:a,prop:s}),n.push(u))}return function(e){for(;e.length>1;){var t=e.pop(),n=t.obj[t.prop];if(o(n)){for(var r=[],i=0;i<n.length;++i)void 0!==n[i]&&r.push(n[i]);t.obj[t.prop]=r}}}(t),e},decode:function(e,t,n){var r=e.replace(/\+/g," ");if("iso-8859-1"===n)return r.replace(/%[0-9a-f]{2}/gi,unescape);try{return decodeURIComponent(r)}catch(i){return r}},encode:function(e,t,n,i,o){if(0===e.length)return e;var c=e;if("symbol"==typeof e?c=Symbol.prototype.toString.call(e):"string"!=typeof e&&(c=String(e)),"iso-8859-1"===n)return escape(c).replace(/%u[0-9a-f]{4}/gi,(function(e){return"%26%23"+parseInt(e.slice(2),16)+"%3B"}));for(var l="",s=0;s<c.length;++s){var u=c.charCodeAt(s);45===u||46===u||95===u||126===u||u>=48&&u<=57||u>=65&&u<=90||u>=97&&u<=122||o===r.RFC1738&&(40===u||41===u)?l+=c.charAt(s):u<128?l+=a[u]:u<2048?l+=a[192|u>>6]+a[128|63&u]:u<55296||u>=57344?l+=a[224|u>>12]+a[128|u>>6&63]+a[128|63&u]:(s+=1,u=65536+((1023&u)<<10|1023&c.charCodeAt(s)),l+=a[240|u>>18]+a[128|u>>12&63]+a[128|u>>6&63]+a[128|63&u])}return l},isBuffer:function(e){return!(!e||"object"!=typeof e||!(e.constructor&&e.constructor.isBuffer&&e.constructor.isBuffer(e)))},isRegExp:function(e){return"[object RegExp]"===Object.prototype.toString.call(e)},maybeMap:function(e,t){if(o(e)){for(var n=[],r=0;r<e.length;r+=1)n.push(t(e[r]));return n}return t(e)},merge:function e(t,n,r){if(!n)return t;if("object"!=typeof n){if(o(t))t.push(n);else{if(!t||"object"!=typeof t)return[t,n];(r&&(r.plainObjects||r.allowPrototypes)||!i.call(Object.prototype,n))&&(t[n]=!0)}return t}if(!t||"object"!=typeof t)return[t].concat(n);var a=t;return o(t)&&!o(n)&&(a=c(t,r)),o(t)&&o(n)?(n.forEach((function(n,o){if(i.call(t,o)){var a=t[o];a&&"object"==typeof a&&n&&"object"==typeof n?t[o]=e(a,n,r):t.push(n)}else t[o]=n})),t):Object.keys(n).reduce((function(t,o){var a=n[o];return i.call(t,o)?t[o]=e(t[o],a,r):t[o]=a,t}),a)}}},9123:(e,t,n)=>{"use strict";n.d(t,{NF:()=>L});var r,i=n(5927),o=n.n(i),a=function(){return a=Object.assign||function(e){for(var t,n=1,r=arguments.length;n<r;n++)for(var i in t=arguments[n])Object.prototype.hasOwnProperty.call(t,i)&&(e[i]=t[i]);return e},a.apply(this,arguments)};!function(e){e.SCRIPT_NOT_AVAILABLE="Recaptcha script is not available"}(r||(r={}));var c=(0,i.createContext)({executeRecaptcha:function(){throw Error("GoogleReCaptcha Context has not yet been implemented, if you are using useGoogleReCaptcha hook, make sure the hook is called inside component wrapped by GoogleRecaptchaProvider")}}).Consumer;function l(e,t){return e(t={exports:{}},t.exports),t.exports
/** @license React v16.13.1
 * react-is.production.min.js
 *
 * Copyright (c) Facebook, Inc. and its affiliates.
 *
 * This source code is licensed under the MIT license found in the
 * LICENSE file in the root directory of this source tree.
 */}var s="function"==typeof Symbol&&Symbol.for,u=s?Symbol.for("react.element"):60103,g=s?Symbol.for("react.portal"):60106,d=s?Symbol.for("react.fragment"):60107,I=s?Symbol.for("react.strict_mode"):60108,p=s?Symbol.for("react.profiler"):60114,b=s?Symbol.for("react.provider"):60109,m=s?Symbol.for("react.context"):60110,C=s?Symbol.for("react.async_mode"):60111,h=s?Symbol.for("react.concurrent_mode"):60111,B=s?Symbol.for("react.forward_ref"):60112,A=s?Symbol.for("react.suspense"):60113,y=s?Symbol.for("react.suspense_list"):60120,f=s?Symbol.for("react.memo"):60115,G=s?Symbol.for("react.lazy"):60116,Q=s?Symbol.for("react.block"):60121,F=s?Symbol.for("react.fundamental"):60117,v=s?Symbol.for("react.responder"):60118,Z=s?Symbol.for("react.scope"):60119;function E(e){if("object"==typeof e&&null!==e){var t=e.$$typeof;switch(t){case u:switch(e=e.type){case C:case h:case d:case p:case I:case A:return e;default:switch(e=e&&e.$$typeof){case m:case B:case G:case f:case b:return e;default:return t}}case g:return t}}}function S(e){return E(e)===h}var X={AsyncMode:C,ConcurrentMode:h,ContextConsumer:m,ContextProvider:b,Element:u,ForwardRef:B,Fragment:d,Lazy:G,Memo:f,Portal:g,Profiler:p,StrictMode:I,Suspense:A,isAsyncMode:function(e){return S(e)||E(e)===C},isConcurrentMode:S,isContextConsumer:function(e){return E(e)===m},isContextProvider:function(e){return E(e)===b},isElement:function(e){return"object"==typeof e&&null!==e&&e.$$typeof===u},isForwardRef:function(e){return E(e)===B},isFragment:function(e){return E(e)===d},isLazy:function(e){return E(e)===G},isMemo:function(e){return E(e)===f},isPortal:function(e){return E(e)===g},isProfiler:function(e){return E(e)===p},isStrictMode:function(e){return E(e)===I},isSuspense:function(e){return E(e)===A},isValidElementType:function(e){return"string"==typeof e||"function"==typeof e||e===d||e===h||e===p||e===I||e===A||e===y||"object"==typeof e&&null!==e&&(e.$$typeof===G||e.$$typeof===f||e.$$typeof===b||e.$$typeof===m||e.$$typeof===B||e.$$typeof===F||e.$$typeof===v||e.$$typeof===Z||e.$$typeof===Q)},typeOf:E},T=l((function(e,t){})),x=(T.AsyncMode,T.ConcurrentMode,T.ContextConsumer,T.ContextProvider,T.Element,T.ForwardRef,T.Fragment,T.Lazy,T.Memo,T.Portal,T.Profiler,T.StrictMode,T.Suspense,T.isAsyncMode,T.isConcurrentMode,T.isContextConsumer,T.isContextProvider,T.isElement,T.isForwardRef,T.isFragment,T.isLazy,T.isMemo,T.isPortal,T.isProfiler,T.isStrictMode,T.isSuspense,T.isValidElementType,T.typeOf,l((function(e){e.exports=X}))),U={childContextTypes:!0,contextType:!0,contextTypes:!0,defaultProps:!0,displayName:!0,getDefaultProps:!0,getDerivedStateFromError:!0,getDerivedStateFromProps:!0,mixins:!0,propTypes:!0,type:!0},N={name:!0,length:!0,prototype:!0,caller:!0,callee:!0,arguments:!0,arity:!0},R={$$typeof:!0,compare:!0,defaultProps:!0,displayName:!0,propTypes:!0,type:!0},O={};function V(e){return x.isMemo(e)?R:O[e.$$typeof]||U}O[x.ForwardRef]={$$typeof:!0,render:!0,defaultProps:!0,displayName:!0,propTypes:!0},O[x.Memo]=R;var W=Object.defineProperty,_=Object.getOwnPropertyNames,w=Object.getOwnPropertySymbols,H=Object.getOwnPropertyDescriptor,Y=Object.getPrototypeOf,k=Object.prototype,D=function e(t,n,r){if("string"!=typeof n){if(k){var i=Y(n);i&&i!==k&&e(t,i,r)}var o=_(n);w&&(o=o.concat(w(n)));for(var a=V(t),c=V(n),l=0;l<o.length;++l){var s=o[l];if(!(N[s]||r&&r[s]||c&&c[s]||a&&a[s])){var u=H(n,s);try{W(t,s,u)}catch(e){}}}}return t},L=function(e){var t=function(t){return o().createElement(c,null,(function(n){return o().createElement(e,a({},t,{googleReCaptchaProps:n}))}))};return t.displayName="withGoogleReCaptcha("+(e.displayName||e.name||"Component")+")",D(t,e),t}},3203:(e,t,n)=>{"use strict";n.d(t,{HT:()=>f,oA:()=>B,xS:()=>b,Lw:()=>h,t:()=>A});var r,i,o,a=n(5927),c=n.n(a);class l extends c().Component{static rerenderAll(){l.instances.forEach((e=>e.forceUpdate()))}componentDidMount(){l.instances.push(this)}componentWillUnmount(){l.instances.splice(l.instances.indexOf(this),1)}}r=l,o=[],(i=function(e){var t=function(e){if("object"!=typeof e||null===e)return e;var t=e[Symbol.toPrimitive];if(void 0!==t){var n=t.call(e,"string");if("object"!=typeof n)return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(e);return"symbol"==typeof t?t:String(t)}(i="instances"))in r?Object.defineProperty(r,i,{value:o,enumerable:!0,configurable:!0,writable:!0}):r[i]=o;var s=n(5556),u=n.n(s);const g=(e,t)=>{if("string"==typeof e){let n=e;return Object.keys(t).forEach((e=>{n=n.split(`%{${e}}`).join(t[e]??"")})),n}if(c().isValidElement(e))return e;if("object"==typeof e){const n={};return Object.keys(e).forEach((r=>{n[r]=g(e[r],t)})),n}return null},d=function(e,t){let n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:null;const r=t.indexOf(".");if(void 0===e)throw new Error("not found");if(r>-1)return d(e[t.substring(0,r)],t.substr(r+1),n);if(null!==n){if(e[`${t}_${n}`])return e[`${t}_${n}`];if(1!==n&&e[`${t}_plural`])return e[`${t}_plural`]}if(null!=e[t])return e[t];throw new Error("not found")},I={availableLocales:{},localeKey:"en",translationsObject:{},getTranslations:null,getLocale:null,handleMissingTranslation:e=>e.split(".").pop(),handleFailedLocalization:()=>null},p=()=>I.getLocale?I.getLocale():I.localeKey,b=function(e){let t=!(arguments.length>1&&void 0!==arguments[1])||arguments[1];I.localeKey=e,I.getLocale=null,t&&l.rerenderAll()},m=function(){return I.handleFailedLocalization(...arguments)},C=()=>I.getTranslations?I.getTranslations():I.translationsObject,h=function(e){let t=!(arguments.length>1&&void 0!==arguments[1])||arguments[1];I.translationsObject=e,I.getTranslations=null,t&&l.rerenderAll()},B=e=>{if("function"!=typeof e)throw new Error("Handle missing translation must be a function");I.handleMissingTranslation=e},A=function(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};const r=n.locale||p();let i="";try{const n=C()[r]?r:r.split("-")[0];i=d(C(),`${n}.${e}`,t.count)}catch(o){return n.returnNullOnError?null:n.returnKeyOnError?e:function(){return I.handleMissingTranslation(...arguments)}(e,t,n,o)}return g(i,t)};class y extends l{render(){const{value:e,locale:t,...n}=this.props;return A(e,n,{locale:t})}}y.propTypes={value:u().string.isRequired,locale:u().string};const f=y;function G(e,t){return e instanceof Date?new e.constructor(t):new Date(t)}let Q={};function F(){return Q}const v={lessThanXSeconds:{one:"less than a second",other:"less than {{count}} seconds"},xSeconds:{one:"1 second",other:"{{count}} seconds"},halfAMinute:"half a minute",lessThanXMinutes:{one:"less than a minute",other:"less than {{count}} minutes"},xMinutes:{one:"1 minute",other:"{{count}} minutes"},aboutXHours:{one:"about 1 hour",other:"about {{count}} hours"},xHours:{one:"1 hour",other:"{{count}} hours"},xDays:{one:"1 day",other:"{{count}} days"},aboutXWeeks:{one:"about 1 week",other:"about {{count}} weeks"},xWeeks:{one:"1 week",other:"{{count}} weeks"},aboutXMonths:{one:"about 1 month",other:"about {{count}} months"},xMonths:{one:"1 month",other:"{{count}} months"},aboutXYears:{one:"about 1 year",other:"about {{count}} years"},xYears:{one:"1 year",other:"{{count}} years"},overXYears:{one:"over 1 year",other:"over {{count}} years"},almostXYears:{one:"almost 1 year",other:"almost {{count}} years"}};function Z(e){return(t={})=>{const n=t.width?String(t.width):e.defaultWidth;return e.formats[n]||e.formats[e.defaultWidth]}}const E={date:Z({formats:{full:"EEEE, MMMM do, y",long:"MMMM do, y",medium:"MMM d, y",short:"MM/dd/yyyy"},defaultWidth:"full"}),time:Z({formats:{full:"h:mm:ss a zzzz",long:"h:mm:ss a z",medium:"h:mm:ss a",short:"h:mm a"},defaultWidth:"full"}),dateTime:Z({formats:{full:"{{date}} 'at' {{time}}",long:"{{date}} 'at' {{time}}",medium:"{{date}}, {{time}}",short:"{{date}}, {{time}}"},defaultWidth:"full"})},S={lastWeek:"'last' eeee 'at' p",yesterday:"'yesterday at' p",today:"'today at' p",tomorrow:"'tomorrow at' p",nextWeek:"eeee 'at' p",other:"P"};function X(e){return(t,n)=>{let r;if("formatting"===(n?.context?String(n.context):"standalone")&&e.formattingValues){const t=e.defaultFormattingWidth||e.defaultWidth,i=n?.width?String(n.width):t;r=e.formattingValues[i]||e.formattingValues[t]}else{const t=e.defaultWidth,i=n?.width?String(n.width):e.defaultWidth;r=e.values[i]||e.values[t]}return r[e.argumentCallback?e.argumentCallback(t):t]}}const T={ordinalNumber:(e,t)=>{const n=Number(e),r=n%100;if(r>20||r<10)switch(r%10){case 1:return n+"st";case 2:return n+"nd";case 3:return n+"rd"}return n+"th"},era:X({values:{narrow:["B","A"],abbreviated:["BC","AD"],wide:["Before Christ","Anno Domini"]},defaultWidth:"wide"}),quarter:X({values:{narrow:["1","2","3","4"],abbreviated:["Q1","Q2","Q3","Q4"],wide:["1st quarter","2nd quarter","3rd quarter","4th quarter"]},defaultWidth:"wide",argumentCallback:e=>e-1}),month:X({values:{narrow:["J","F","M","A","M","J","J","A","S","O","N","D"],abbreviated:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],wide:["January","February","March","April","May","June","July","August","September","October","November","December"]},defaultWidth:"wide"}),day:X({values:{narrow:["S","M","T","W","T","F","S"],short:["Su","Mo","Tu","We","Th","Fr","Sa"],abbreviated:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],wide:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"]},defaultWidth:"wide"}),dayPeriod:X({values:{narrow:{am:"a",pm:"p",midnight:"mi",noon:"n",morning:"morning",afternoon:"afternoon",evening:"evening",night:"night"},abbreviated:{am:"AM",pm:"PM",midnight:"midnight",noon:"noon",morning:"morning",afternoon:"afternoon",evening:"evening",night:"night"},wide:{am:"a.m.",pm:"p.m.",midnight:"midnight",noon:"noon",morning:"morning",afternoon:"afternoon",evening:"evening",night:"night"}},defaultWidth:"wide",formattingValues:{narrow:{am:"a",pm:"p",midnight:"mi",noon:"n",morning:"in the morning",afternoon:"in the afternoon",evening:"in the evening",night:"at night"},abbreviated:{am:"AM",pm:"PM",midnight:"midnight",noon:"noon",morning:"in the morning",afternoon:"in the afternoon",evening:"in the evening",night:"at night"},wide:{am:"a.m.",pm:"p.m.",midnight:"midnight",noon:"noon",morning:"in the morning",afternoon:"in the afternoon",evening:"in the evening",night:"at night"}},defaultFormattingWidth:"wide"})};function x(e){return(t,n={})=>{const r=n.width,i=r&&e.matchPatterns[r]||e.matchPatterns[e.defaultMatchWidth],o=t.match(i);if(!o)return null;const a=o[0],c=r&&e.parsePatterns[r]||e.parsePatterns[e.defaultParseWidth],l=Array.isArray(c)?function(e,t){for(let n=0;n<e.length;n++)if(t(e[n]))return n}(c,(e=>e.test(a))):function(e,t){for(const n in e)if(Object.prototype.hasOwnProperty.call(e,n)&&t(e[n]))return n}(c,(e=>e.test(a)));let s;return s=e.valueCallback?e.valueCallback(l):l,s=n.valueCallback?n.valueCallback(s):s,{value:s,rest:t.slice(a.length)}}}const U={ordinalNumber:(N={matchPattern:/^(\d+)(th|st|nd|rd)?/i,parsePattern:/\d+/i,valueCallback:e=>parseInt(e,10)},(e,t={})=>{const n=e.match(N.matchPattern);if(!n)return null;const r=n[0],i=e.match(N.parsePattern);if(!i)return null;let o=N.valueCallback?N.valueCallback(i[0]):i[0];return o=t.valueCallback?t.valueCallback(o):o,{value:o,rest:e.slice(r.length)}}),era:x({matchPatterns:{narrow:/^(b|a)/i,abbreviated:/^(b\.?\s?c\.?|b\.?\s?c\.?\s?e\.?|a\.?\s?d\.?|c\.?\s?e\.?)/i,wide:/^(before christ|before common era|anno domini|common era)/i},defaultMatchWidth:"wide",parsePatterns:{any:[/^b/i,/^(a|c)/i]},defaultParseWidth:"any"}),quarter:x({matchPatterns:{narrow:/^[1234]/i,abbreviated:/^q[1234]/i,wide:/^[1234](th|st|nd|rd)? quarter/i},defaultMatchWidth:"wide",parsePatterns:{any:[/1/i,/2/i,/3/i,/4/i]},defaultParseWidth:"any",valueCallback:e=>e+1}),month:x({matchPatterns:{narrow:/^[jfmasond]/i,abbreviated:/^(jan|feb|mar|apr|may|jun|jul|aug|sep|oct|nov|dec)/i,wide:/^(january|february|march|april|may|june|july|august|september|october|november|december)/i},defaultMatchWidth:"wide",parsePatterns:{narrow:[/^j/i,/^f/i,/^m/i,/^a/i,/^m/i,/^j/i,/^j/i,/^a/i,/^s/i,/^o/i,/^n/i,/^d/i],any:[/^ja/i,/^f/i,/^mar/i,/^ap/i,/^may/i,/^jun/i,/^jul/i,/^au/i,/^s/i,/^o/i,/^n/i,/^d/i]},defaultParseWidth:"any"}),day:x({matchPatterns:{narrow:/^[smtwf]/i,short:/^(su|mo|tu|we|th|fr|sa)/i,abbreviated:/^(sun|mon|tue|wed|thu|fri|sat)/i,wide:/^(sunday|monday|tuesday|wednesday|thursday|friday|saturday)/i},defaultMatchWidth:"wide",parsePatterns:{narrow:[/^s/i,/^m/i,/^t/i,/^w/i,/^t/i,/^f/i,/^s/i],any:[/^su/i,/^m/i,/^tu/i,/^w/i,/^th/i,/^f/i,/^sa/i]},defaultParseWidth:"any"}),dayPeriod:x({matchPatterns:{narrow:/^(a|p|mi|n|(in the|at) (morning|afternoon|evening|night))/i,any:/^([ap]\.?\s?m\.?|midnight|noon|(in the|at) (morning|afternoon|evening|night))/i},defaultMatchWidth:"any",parsePatterns:{any:{am:/^a/i,pm:/^p/i,midnight:/^mi/i,noon:/^no/i,morning:/morning/i,afternoon:/afternoon/i,evening:/evening/i,night:/night/i}},defaultParseWidth:"any"})};var N;const R={code:"en-US",formatDistance:(e,t,n)=>{let r;const i=v[e];return r="string"==typeof i?i:1===t?i.one:i.other.replace("{{count}}",t.toString()),n?.addSuffix?n.comparison&&n.comparison>0?"in "+r:r+" ago":r},formatLong:E,formatRelative:(e,t,n,r)=>S[e],localize:T,match:U,options:{weekStartsOn:0,firstWeekContainsDate:1}};function O(e){const t=Object.prototype.toString.call(e);return e instanceof Date||"object"==typeof e&&"[object Date]"===t?new e.constructor(+e):"number"==typeof e||"[object Number]"===t||"string"==typeof e||"[object String]"===t?new Date(e):new Date(NaN)}const V=(e,t)=>{switch(e){case"P":return t.date({width:"short"});case"PP":return t.date({width:"medium"});case"PPP":return t.date({width:"long"});default:return t.date({width:"full"})}},W=(e,t)=>{switch(e){case"p":return t.time({width:"short"});case"pp":return t.time({width:"medium"});case"ppp":return t.time({width:"long"});default:return t.time({width:"full"})}},_={p:W,P:(e,t)=>{const n=e.match(/(P+)(p+)?/)||[],r=n[1],i=n[2];if(!i)return V(e,t);let o;switch(r){case"P":o=t.dateTime({width:"short"});break;case"PP":o=t.dateTime({width:"medium"});break;case"PPP":o=t.dateTime({width:"long"});break;default:o=t.dateTime({width:"full"})}return o.replace("{{date}}",V(r,t)).replace("{{time}}",W(i,t))}},w=/^D+$/,H=/^Y+$/,Y=["D","DD","YY","YYYY"];function k(e){return w.test(e)}function D(e){return H.test(e)}function L(e,t,n){const r=function(e,t,n){const r="Y"===e[0]?"years":"days of the month";return`Use \`${e.toLowerCase()}\` instead of \`${e}\` (in \`${t}\`) for formatting ${r} to the input \`${n}\`; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md`}(e,t,n);if(console.warn(r),Y.includes(e))throw new RangeError(r)}class P{subPriority=0;validate(e,t){return!0}}class J extends P{constructor(e,t,n,r,i){super(),this.value=e,this.validateValue=t,this.setValue=n,this.priority=r,i&&(this.subPriority=i)}validate(e,t){return this.validateValue(e,this.value,t)}set(e,t,n){return this.setValue(e,t,this.value,n)}}class M extends P{priority=10;subPriority=-1;set(e,t){return t.timestampIsSet?e:G(e,function(e,t){const n=t instanceof Date?G(t,0):new t(0);return n.setFullYear(e.getFullYear(),e.getMonth(),e.getDate()),n.setHours(e.getHours(),e.getMinutes(),e.getSeconds(),e.getMilliseconds()),n}(e,Date))}}class z{run(e,t,n,r){const i=this.parse(e,t,n,r);return i?{setter:new J(i.value,this.validate,this.set,this.priority,this.subPriority),rest:i.rest}:null}validate(e,t,n){return!0}}Math.pow(10,8);const j=6048e5,K=6e4,q=525600,$=/^(1[0-2]|0?\d)/,ee=/^(3[0-1]|[0-2]?\d)/,te=/^(36[0-6]|3[0-5]\d|[0-2]?\d?\d)/,ne=/^(5[0-3]|[0-4]?\d)/,re=/^(2[0-3]|[0-1]?\d)/,ie=/^(2[0-4]|[0-1]?\d)/,oe=/^(1[0-1]|0?\d)/,ae=/^(1[0-2]|0?\d)/,ce=/^[0-5]?\d/,le=/^[0-5]?\d/,se=/^\d/,ue=/^\d{1,2}/,ge=/^\d{1,3}/,de=/^\d{1,4}/,Ie=/^-?\d+/,pe=/^-?\d/,be=/^-?\d{1,2}/,me=/^-?\d{1,3}/,Ce=/^-?\d{1,4}/,he=/^([+-])(\d{2})(\d{2})?|Z/,Be=/^([+-])(\d{2})(\d{2})|Z/,Ae=/^([+-])(\d{2})(\d{2})((\d{2}))?|Z/,ye=/^([+-])(\d{2}):(\d{2})|Z/,fe=/^([+-])(\d{2}):(\d{2})(:(\d{2}))?|Z/;function Ge(e,t){return e?{value:t(e.value),rest:e.rest}:e}function Qe(e,t){const n=t.match(e);return n?{value:parseInt(n[0],10),rest:t.slice(n[0].length)}:null}function Fe(e,t){const n=t.match(e);if(!n)return null;if("Z"===n[0])return{value:0,rest:t.slice(1)};const r="+"===n[1]?1:-1,i=n[2]?parseInt(n[2],10):0,o=n[3]?parseInt(n[3],10):0,a=n[5]?parseInt(n[5],10):0;return{value:r*(36e5*i+o*K+1e3*a),rest:t.slice(n[0].length)}}function ve(e){return Qe(Ie,e)}function Ze(e,t){switch(e){case 1:return Qe(se,t);case 2:return Qe(ue,t);case 3:return Qe(ge,t);case 4:return Qe(de,t);default:return Qe(new RegExp("^\\d{1,"+e+"}"),t)}}function Ee(e,t){switch(e){case 1:return Qe(pe,t);case 2:return Qe(be,t);case 3:return Qe(me,t);case 4:return Qe(Ce,t);default:return Qe(new RegExp("^-?\\d{1,"+e+"}"),t)}}function Se(e){switch(e){case"morning":return 4;case"evening":return 17;case"pm":case"noon":case"afternoon":return 12;default:return 0}}function Xe(e,t){const n=t>0,r=n?t:1-t;let i;if(r<=50)i=e||100;else{const t=r+50;i=e+100*Math.trunc(t/100)-(e>=t%100?100:0)}return n?i:1-i}function Te(e){return e%400==0||e%4==0&&e%100!=0}function xe(e,t){const n=F(),r=t?.weekStartsOn??t?.locale?.options?.weekStartsOn??n.weekStartsOn??n.locale?.options?.weekStartsOn??0,i=O(e),o=i.getDay(),a=(o<r?7:0)+o-r;return i.setDate(i.getDate()-a),i.setHours(0,0,0,0),i}function Ue(e,t){const n=O(e),r=n.getFullYear(),i=F(),o=t?.firstWeekContainsDate??t?.locale?.options?.firstWeekContainsDate??i.firstWeekContainsDate??i.locale?.options?.firstWeekContainsDate??1,a=G(e,0);a.setFullYear(r+1,0,o),a.setHours(0,0,0,0);const c=xe(a,t),l=G(e,0);l.setFullYear(r,0,o),l.setHours(0,0,0,0);const s=xe(l,t);return n.getTime()>=c.getTime()?r+1:n.getTime()>=s.getTime()?r:r-1}function Ne(e){return xe(e,{weekStartsOn:1})}function Re(e,t){const n=O(e),r=+xe(n,t)-+function(e,t){const n=F(),r=t?.firstWeekContainsDate??t?.locale?.options?.firstWeekContainsDate??n.firstWeekContainsDate??n.locale?.options?.firstWeekContainsDate??1,i=Ue(e,t),o=G(e,0);return o.setFullYear(i,0,r),o.setHours(0,0,0,0),xe(o,t)}(n,t);return Math.round(r/j)+1}function Oe(e){const t=O(e),n=t.getFullYear(),r=G(e,0);r.setFullYear(n+1,0,4),r.setHours(0,0,0,0);const i=Ne(r),o=G(e,0);o.setFullYear(n,0,4),o.setHours(0,0,0,0);const a=Ne(o);return t.getTime()>=i.getTime()?n+1:t.getTime()>=a.getTime()?n:n-1}function Ve(e){const t=O(e),n=+Ne(t)-+function(e){const t=Oe(e),n=G(e,0);return n.setFullYear(t,0,4),n.setHours(0,0,0,0),Ne(n)}(t);return Math.round(n/j)+1}const We=[31,28,31,30,31,30,31,31,30,31,30,31],_e=[31,29,31,30,31,30,31,31,30,31,30,31];function we(e,t){const n=O(e);return isNaN(t)?G(e,NaN):t?(n.setDate(n.getDate()+t),n):n}function He(e,t,n){const r=F(),i=n?.weekStartsOn??n?.locale?.options?.weekStartsOn??r.weekStartsOn??r.locale?.options?.weekStartsOn??0,o=O(e),a=o.getDay(),c=7-i;return we(o,t<0||t>6?t-(a+c)%7:((t%7+7)%7+c)%7-(a+c)%7)}function Ye(e,t){const n=O(e);return we(n,t-function(e){let t=O(e).getDay();return 0===t&&(t=7),t}(n))}function ke(e){const t=O(e),n=new Date(Date.UTC(t.getFullYear(),t.getMonth(),t.getDate(),t.getHours(),t.getMinutes(),t.getSeconds(),t.getMilliseconds()));return n.setUTCFullYear(t.getFullYear()),+e-+n}const De={G:new class extends z{priority=140;parse(e,t,n){switch(t){case"G":case"GG":case"GGG":return n.era(e,{width:"abbreviated"})||n.era(e,{width:"narrow"});case"GGGGG":return n.era(e,{width:"narrow"});default:return n.era(e,{width:"wide"})||n.era(e,{width:"abbreviated"})||n.era(e,{width:"narrow"})}}set(e,t,n){return t.era=n,e.setFullYear(n,0,1),e.setHours(0,0,0,0),e}incompatibleTokens=["R","u","t","T"]},y:new class extends z{priority=130;incompatibleTokens=["Y","R","u","w","I","i","e","c","t","T"];parse(e,t,n){const r=e=>({year:e,isTwoDigitYear:"yy"===t});switch(t){case"y":return Ge(Ze(4,e),r);case"yo":return Ge(n.ordinalNumber(e,{unit:"year"}),r);default:return Ge(Ze(t.length,e),r)}}validate(e,t){return t.isTwoDigitYear||t.year>0}set(e,t,n){const r=e.getFullYear();if(n.isTwoDigitYear){const t=Xe(n.year,r);return e.setFullYear(t,0,1),e.setHours(0,0,0,0),e}const i="era"in t&&1!==t.era?1-n.year:n.year;return e.setFullYear(i,0,1),e.setHours(0,0,0,0),e}},Y:new class extends z{priority=130;parse(e,t,n){const r=e=>({year:e,isTwoDigitYear:"YY"===t});switch(t){case"Y":return Ge(Ze(4,e),r);case"Yo":return Ge(n.ordinalNumber(e,{unit:"year"}),r);default:return Ge(Ze(t.length,e),r)}}validate(e,t){return t.isTwoDigitYear||t.year>0}set(e,t,n,r){const i=Ue(e,r);if(n.isTwoDigitYear){const t=Xe(n.year,i);return e.setFullYear(t,0,r.firstWeekContainsDate),e.setHours(0,0,0,0),xe(e,r)}const o="era"in t&&1!==t.era?1-n.year:n.year;return e.setFullYear(o,0,r.firstWeekContainsDate),e.setHours(0,0,0,0),xe(e,r)}incompatibleTokens=["y","R","u","Q","q","M","L","I","d","D","i","t","T"]},R:new class extends z{priority=130;parse(e,t){return Ee("R"===t?4:t.length,e)}set(e,t,n){const r=G(e,0);return r.setFullYear(n,0,4),r.setHours(0,0,0,0),Ne(r)}incompatibleTokens=["G","y","Y","u","Q","q","M","L","w","d","D","e","c","t","T"]},u:new class extends z{priority=130;parse(e,t){return Ee("u"===t?4:t.length,e)}set(e,t,n){return e.setFullYear(n,0,1),e.setHours(0,0,0,0),e}incompatibleTokens=["G","y","Y","R","w","I","i","e","c","t","T"]},Q:new class extends z{priority=120;parse(e,t,n){switch(t){case"Q":case"QQ":return Ze(t.length,e);case"Qo":return n.ordinalNumber(e,{unit:"quarter"});case"QQQ":return n.quarter(e,{width:"abbreviated",context:"formatting"})||n.quarter(e,{width:"narrow",context:"formatting"});case"QQQQQ":return n.quarter(e,{width:"narrow",context:"formatting"});default:return n.quarter(e,{width:"wide",context:"formatting"})||n.quarter(e,{width:"abbreviated",context:"formatting"})||n.quarter(e,{width:"narrow",context:"formatting"})}}validate(e,t){return t>=1&&t<=4}set(e,t,n){return e.setMonth(3*(n-1),1),e.setHours(0,0,0,0),e}incompatibleTokens=["Y","R","q","M","L","w","I","d","D","i","e","c","t","T"]},q:new class extends z{priority=120;parse(e,t,n){switch(t){case"q":case"qq":return Ze(t.length,e);case"qo":return n.ordinalNumber(e,{unit:"quarter"});case"qqq":return n.quarter(e,{width:"abbreviated",context:"standalone"})||n.quarter(e,{width:"narrow",context:"standalone"});case"qqqqq":return n.quarter(e,{width:"narrow",context:"standalone"});default:return n.quarter(e,{width:"wide",context:"standalone"})||n.quarter(e,{width:"abbreviated",context:"standalone"})||n.quarter(e,{width:"narrow",context:"standalone"})}}validate(e,t){return t>=1&&t<=4}set(e,t,n){return e.setMonth(3*(n-1),1),e.setHours(0,0,0,0),e}incompatibleTokens=["Y","R","Q","M","L","w","I","d","D","i","e","c","t","T"]},M:new class extends z{incompatibleTokens=["Y","R","q","Q","L","w","I","D","i","e","c","t","T"];priority=110;parse(e,t,n){const r=e=>e-1;switch(t){case"M":return Ge(Qe($,e),r);case"MM":return Ge(Ze(2,e),r);case"Mo":return Ge(n.ordinalNumber(e,{unit:"month"}),r);case"MMM":return n.month(e,{width:"abbreviated",context:"formatting"})||n.month(e,{width:"narrow",context:"formatting"});case"MMMMM":return n.month(e,{width:"narrow",context:"formatting"});default:return n.month(e,{width:"wide",context:"formatting"})||n.month(e,{width:"abbreviated",context:"formatting"})||n.month(e,{width:"narrow",context:"formatting"})}}validate(e,t){return t>=0&&t<=11}set(e,t,n){return e.setMonth(n,1),e.setHours(0,0,0,0),e}},L:new class extends z{priority=110;parse(e,t,n){const r=e=>e-1;switch(t){case"L":return Ge(Qe($,e),r);case"LL":return Ge(Ze(2,e),r);case"Lo":return Ge(n.ordinalNumber(e,{unit:"month"}),r);case"LLL":return n.month(e,{width:"abbreviated",context:"standalone"})||n.month(e,{width:"narrow",context:"standalone"});case"LLLLL":return n.month(e,{width:"narrow",context:"standalone"});default:return n.month(e,{width:"wide",context:"standalone"})||n.month(e,{width:"abbreviated",context:"standalone"})||n.month(e,{width:"narrow",context:"standalone"})}}validate(e,t){return t>=0&&t<=11}set(e,t,n){return e.setMonth(n,1),e.setHours(0,0,0,0),e}incompatibleTokens=["Y","R","q","Q","M","w","I","D","i","e","c","t","T"]},w:new class extends z{priority=100;parse(e,t,n){switch(t){case"w":return Qe(ne,e);case"wo":return n.ordinalNumber(e,{unit:"week"});default:return Ze(t.length,e)}}validate(e,t){return t>=1&&t<=53}set(e,t,n,r){return xe(function(e,t,n){const r=O(e),i=Re(r,n)-t;return r.setDate(r.getDate()-7*i),r}(e,n,r),r)}incompatibleTokens=["y","R","u","q","Q","M","L","I","d","D","i","t","T"]},I:new class extends z{priority=100;parse(e,t,n){switch(t){case"I":return Qe(ne,e);case"Io":return n.ordinalNumber(e,{unit:"week"});default:return Ze(t.length,e)}}validate(e,t){return t>=1&&t<=53}set(e,t,n){return Ne(function(e,t){const n=O(e),r=Ve(n)-t;return n.setDate(n.getDate()-7*r),n}(e,n))}incompatibleTokens=["y","Y","u","q","Q","M","L","w","d","D","e","c","t","T"]},d:new class extends z{priority=90;subPriority=1;parse(e,t,n){switch(t){case"d":return Qe(ee,e);case"do":return n.ordinalNumber(e,{unit:"date"});default:return Ze(t.length,e)}}validate(e,t){const n=Te(e.getFullYear()),r=e.getMonth();return n?t>=1&&t<=_e[r]:t>=1&&t<=We[r]}set(e,t,n){return e.setDate(n),e.setHours(0,0,0,0),e}incompatibleTokens=["Y","R","q","Q","w","I","D","i","e","c","t","T"]},D:new class extends z{priority=90;subpriority=1;parse(e,t,n){switch(t){case"D":case"DD":return Qe(te,e);case"Do":return n.ordinalNumber(e,{unit:"date"});default:return Ze(t.length,e)}}validate(e,t){return Te(e.getFullYear())?t>=1&&t<=366:t>=1&&t<=365}set(e,t,n){return e.setMonth(0,n),e.setHours(0,0,0,0),e}incompatibleTokens=["Y","R","q","Q","M","L","w","I","d","E","i","e","c","t","T"]},E:new class extends z{priority=90;parse(e,t,n){switch(t){case"E":case"EE":case"EEE":return n.day(e,{width:"abbreviated",context:"formatting"})||n.day(e,{width:"short",context:"formatting"})||n.day(e,{width:"narrow",context:"formatting"});case"EEEEE":return n.day(e,{width:"narrow",context:"formatting"});case"EEEEEE":return n.day(e,{width:"short",context:"formatting"})||n.day(e,{width:"narrow",context:"formatting"});default:return n.day(e,{width:"wide",context:"formatting"})||n.day(e,{width:"abbreviated",context:"formatting"})||n.day(e,{width:"short",context:"formatting"})||n.day(e,{width:"narrow",context:"formatting"})}}validate(e,t){return t>=0&&t<=6}set(e,t,n,r){return(e=He(e,n,r)).setHours(0,0,0,0),e}incompatibleTokens=["D","i","e","c","t","T"]},e:new class extends z{priority=90;parse(e,t,n,r){const i=e=>{const t=7*Math.floor((e-1)/7);return(e+r.weekStartsOn+6)%7+t};switch(t){case"e":case"ee":return Ge(Ze(t.length,e),i);case"eo":return Ge(n.ordinalNumber(e,{unit:"day"}),i);case"eee":return n.day(e,{width:"abbreviated",context:"formatting"})||n.day(e,{width:"short",context:"formatting"})||n.day(e,{width:"narrow",context:"formatting"});case"eeeee":return n.day(e,{width:"narrow",context:"formatting"});case"eeeeee":return n.day(e,{width:"short",context:"formatting"})||n.day(e,{width:"narrow",context:"formatting"});default:return n.day(e,{width:"wide",context:"formatting"})||n.day(e,{width:"abbreviated",context:"formatting"})||n.day(e,{width:"short",context:"formatting"})||n.day(e,{width:"narrow",context:"formatting"})}}validate(e,t){return t>=0&&t<=6}set(e,t,n,r){return(e=He(e,n,r)).setHours(0,0,0,0),e}incompatibleTokens=["y","R","u","q","Q","M","L","I","d","D","E","i","c","t","T"]},c:new class extends z{priority=90;parse(e,t,n,r){const i=e=>{const t=7*Math.floor((e-1)/7);return(e+r.weekStartsOn+6)%7+t};switch(t){case"c":case"cc":return Ge(Ze(t.length,e),i);case"co":return Ge(n.ordinalNumber(e,{unit:"day"}),i);case"ccc":return n.day(e,{width:"abbreviated",context:"standalone"})||n.day(e,{width:"short",context:"standalone"})||n.day(e,{width:"narrow",context:"standalone"});case"ccccc":return n.day(e,{width:"narrow",context:"standalone"});case"cccccc":return n.day(e,{width:"short",context:"standalone"})||n.day(e,{width:"narrow",context:"standalone"});default:return n.day(e,{width:"wide",context:"standalone"})||n.day(e,{width:"abbreviated",context:"standalone"})||n.day(e,{width:"short",context:"standalone"})||n.day(e,{width:"narrow",context:"standalone"})}}validate(e,t){return t>=0&&t<=6}set(e,t,n,r){return(e=He(e,n,r)).setHours(0,0,0,0),e}incompatibleTokens=["y","R","u","q","Q","M","L","I","d","D","E","i","e","t","T"]},i:new class extends z{priority=90;parse(e,t,n){const r=e=>0===e?7:e;switch(t){case"i":case"ii":return Ze(t.length,e);case"io":return n.ordinalNumber(e,{unit:"day"});case"iii":return Ge(n.day(e,{width:"abbreviated",context:"formatting"})||n.day(e,{width:"short",context:"formatting"})||n.day(e,{width:"narrow",context:"formatting"}),r);case"iiiii":return Ge(n.day(e,{width:"narrow",context:"formatting"}),r);case"iiiiii":return Ge(n.day(e,{width:"short",context:"formatting"})||n.day(e,{width:"narrow",context:"formatting"}),r);default:return Ge(n.day(e,{width:"wide",context:"formatting"})||n.day(e,{width:"abbreviated",context:"formatting"})||n.day(e,{width:"short",context:"formatting"})||n.day(e,{width:"narrow",context:"formatting"}),r)}}validate(e,t){return t>=1&&t<=7}set(e,t,n){return(e=Ye(e,n)).setHours(0,0,0,0),e}incompatibleTokens=["y","Y","u","q","Q","M","L","w","d","D","E","e","c","t","T"]},a:new class extends z{priority=80;parse(e,t,n){switch(t){case"a":case"aa":case"aaa":return n.dayPeriod(e,{width:"abbreviated",context:"formatting"})||n.dayPeriod(e,{width:"narrow",context:"formatting"});case"aaaaa":return n.dayPeriod(e,{width:"narrow",context:"formatting"});default:return n.dayPeriod(e,{width:"wide",context:"formatting"})||n.dayPeriod(e,{width:"abbreviated",context:"formatting"})||n.dayPeriod(e,{width:"narrow",context:"formatting"})}}set(e,t,n){return e.setHours(Se(n),0,0,0),e}incompatibleTokens=["b","B","H","k","t","T"]},b:new class extends z{priority=80;parse(e,t,n){switch(t){case"b":case"bb":case"bbb":return n.dayPeriod(e,{width:"abbreviated",context:"formatting"})||n.dayPeriod(e,{width:"narrow",context:"formatting"});case"bbbbb":return n.dayPeriod(e,{width:"narrow",context:"formatting"});default:return n.dayPeriod(e,{width:"wide",context:"formatting"})||n.dayPeriod(e,{width:"abbreviated",context:"formatting"})||n.dayPeriod(e,{width:"narrow",context:"formatting"})}}set(e,t,n){return e.setHours(Se(n),0,0,0),e}incompatibleTokens=["a","B","H","k","t","T"]},B:new class extends z{priority=80;parse(e,t,n){switch(t){case"B":case"BB":case"BBB":return n.dayPeriod(e,{width:"abbreviated",context:"formatting"})||n.dayPeriod(e,{width:"narrow",context:"formatting"});case"BBBBB":return n.dayPeriod(e,{width:"narrow",context:"formatting"});default:return n.dayPeriod(e,{width:"wide",context:"formatting"})||n.dayPeriod(e,{width:"abbreviated",context:"formatting"})||n.dayPeriod(e,{width:"narrow",context:"formatting"})}}set(e,t,n){return e.setHours(Se(n),0,0,0),e}incompatibleTokens=["a","b","t","T"]},h:new class extends z{priority=70;parse(e,t,n){switch(t){case"h":return Qe(ae,e);case"ho":return n.ordinalNumber(e,{unit:"hour"});default:return Ze(t.length,e)}}validate(e,t){return t>=1&&t<=12}set(e,t,n){const r=e.getHours()>=12;return r&&n<12?e.setHours(n+12,0,0,0):r||12!==n?e.setHours(n,0,0,0):e.setHours(0,0,0,0),e}incompatibleTokens=["H","K","k","t","T"]},H:new class extends z{priority=70;parse(e,t,n){switch(t){case"H":return Qe(re,e);case"Ho":return n.ordinalNumber(e,{unit:"hour"});default:return Ze(t.length,e)}}validate(e,t){return t>=0&&t<=23}set(e,t,n){return e.setHours(n,0,0,0),e}incompatibleTokens=["a","b","h","K","k","t","T"]},K:new class extends z{priority=70;parse(e,t,n){switch(t){case"K":return Qe(oe,e);case"Ko":return n.ordinalNumber(e,{unit:"hour"});default:return Ze(t.length,e)}}validate(e,t){return t>=0&&t<=11}set(e,t,n){return e.getHours()>=12&&n<12?e.setHours(n+12,0,0,0):e.setHours(n,0,0,0),e}incompatibleTokens=["h","H","k","t","T"]},k:new class extends z{priority=70;parse(e,t,n){switch(t){case"k":return Qe(ie,e);case"ko":return n.ordinalNumber(e,{unit:"hour"});default:return Ze(t.length,e)}}validate(e,t){return t>=1&&t<=24}set(e,t,n){const r=n<=24?n%24:n;return e.setHours(r,0,0,0),e}incompatibleTokens=["a","b","h","H","K","t","T"]},m:new class extends z{priority=60;parse(e,t,n){switch(t){case"m":return Qe(ce,e);case"mo":return n.ordinalNumber(e,{unit:"minute"});default:return Ze(t.length,e)}}validate(e,t){return t>=0&&t<=59}set(e,t,n){return e.setMinutes(n,0,0),e}incompatibleTokens=["t","T"]},s:new class extends z{priority=50;parse(e,t,n){switch(t){case"s":return Qe(le,e);case"so":return n.ordinalNumber(e,{unit:"second"});default:return Ze(t.length,e)}}validate(e,t){return t>=0&&t<=59}set(e,t,n){return e.setSeconds(n,0),e}incompatibleTokens=["t","T"]},S:new class extends z{priority=30;parse(e,t){return Ge(Ze(t.length,e),(e=>Math.trunc(e*Math.pow(10,3-t.length))))}set(e,t,n){return e.setMilliseconds(n),e}incompatibleTokens=["t","T"]},X:new class extends z{priority=10;parse(e,t){switch(t){case"X":return Fe(he,e);case"XX":return Fe(Be,e);case"XXXX":return Fe(Ae,e);case"XXXXX":return Fe(fe,e);default:return Fe(ye,e)}}set(e,t,n){return t.timestampIsSet?e:G(e,e.getTime()-ke(e)-n)}incompatibleTokens=["t","T","x"]},x:new class extends z{priority=10;parse(e,t){switch(t){case"x":return Fe(he,e);case"xx":return Fe(Be,e);case"xxxx":return Fe(Ae,e);case"xxxxx":return Fe(fe,e);default:return Fe(ye,e)}}set(e,t,n){return t.timestampIsSet?e:G(e,e.getTime()-ke(e)-n)}incompatibleTokens=["t","T","X"]},t:new class extends z{priority=40;parse(e){return ve(e)}set(e,t,n){return[G(e,1e3*n),{timestampIsSet:!0}]}incompatibleTokens="*"},T:new class extends z{priority=20;parse(e){return ve(e)}set(e,t,n){return[G(e,n),{timestampIsSet:!0}]}incompatibleTokens="*"}},Le=/[yYQqMLwIdDecihHKkms]o|(\w)\1*|''|'(''|[^'])+('|$)|./g,Pe=/P+p+|P+|p+|''|'(''|[^'])+('|$)|./g,Je=/^'([^]*?)'?$/,Me=/''/g,ze=/\S/,je=/[a-zA-Z]/;function Ke(e,t,n,r){const i=Object.assign({},F()),o=r?.locale??i.locale??R,a=r?.firstWeekContainsDate??r?.locale?.options?.firstWeekContainsDate??i.firstWeekContainsDate??i.locale?.options?.firstWeekContainsDate??1,c=r?.weekStartsOn??r?.locale?.options?.weekStartsOn??i.weekStartsOn??i.locale?.options?.weekStartsOn??0;if(""===t)return""===e?O(n):G(n,NaN);const l={firstWeekContainsDate:a,weekStartsOn:c,locale:o},s=[new M],u=t.match(Pe).map((e=>{const t=e[0];return t in _?(0,_[t])(e,o.formatLong):e})).join("").match(Le),g=[];for(let b of u){!r?.useAdditionalWeekYearTokens&&D(b)&&L(b,t,e),!r?.useAdditionalDayOfYearTokens&&k(b)&&L(b,t,e);const i=b[0],a=De[i];if(a){const{incompatibleTokens:t}=a;if(Array.isArray(t)){const e=g.find((e=>t.includes(e.token)||e.token===i));if(e)throw new RangeError(`The format string mustn't contain \`${e.fullToken}\` and \`${b}\` at the same time`)}else if("*"===a.incompatibleTokens&&g.length>0)throw new RangeError(`The format string mustn't contain \`${b}\` and any other token at the same time`);g.push({token:i,fullToken:b});const r=a.run(e,b,o.match,l);if(!r)return G(n,NaN);s.push(r.setter),e=r.rest}else{if(i.match(je))throw new RangeError("Format string contains an unescaped latin alphabet character `"+i+"`");if("''"===b?b="'":"'"===i&&(b=b.match(Je)[1].replace(Me,"'")),0!==e.indexOf(b))return G(n,NaN);e=e.slice(b.length)}}if(e.length>0&&ze.test(e))return G(n,NaN);const d=s.map((e=>e.priority)).sort(((e,t)=>t-e)).filter(((e,t,n)=>n.indexOf(e)===t)).map((e=>s.filter((t=>t.priority===e)).sort(((e,t)=>t.subPriority-e.subPriority)))).map((e=>e[0]));let I=O(n);if(isNaN(I.getTime()))return G(n,NaN);const p={};for(const b of d){if(!b.validate(I,l))return G(n,NaN);const e=b.set(I,p,l);Array.isArray(e)?(I=e[0],Object.assign(p,e[1])):I=e}return G(n,I)}function qe(e,t,n){const r=F(),i=n?.locale??r.locale??R,o=function(e,t){const n=O(e),r=O(t),i=n.getTime()-r.getTime();return i<0?-1:i>0?1:i}(e,t);if(isNaN(o))throw new RangeError("Invalid time value");const a=Object.assign({},n,{addSuffix:n?.addSuffix,comparison:o});let c,l;o>0?(c=O(t),l=O(e)):(c=O(e),l=O(t));const s=(u=n?.roundingMethod??"round",e=>{const t=(u?Math[u]:Math.trunc)(e);return 0===t?0:t});var u;const g=l.getTime()-c.getTime(),d=g/K,I=(g-(ke(l)-ke(c)))/K,p=n?.unit;let b;if(b=p||(d<1?"second":d<60?"minute":d<1440?"hour":I<43200?"day":I<q?"month":"year"),"second"===b){const e=s(g/1e3);return i.formatDistance("xSeconds",e,a)}if("minute"===b){const e=s(d);return i.formatDistance("xMinutes",e,a)}if("hour"===b){const e=s(d/60);return i.formatDistance("xHours",e,a)}if("day"===b){const e=s(I/1440);return i.formatDistance("xDays",e,a)}if("month"===b){const e=s(I/43200);return 12===e&&"month"!==p?i.formatDistance("xYears",1,a):i.formatDistance("xMonths",e,a)}{const e=s(I/q);return i.formatDistance("xYears",e,a)}}function $e(e,t){return qe(e,function(e){return G(e,Date.now())}(e),t)}function et(e){const t=O(e);return t.setHours(0,0,0,0),t}function tt(e){const t=O(e);return function(e,t){const n=et(e),r=et(t),i=+n-ke(n),o=+r-ke(r);return Math.round((i-o)/864e5)}(t,function(e){const t=O(e),n=G(e,0);return n.setFullYear(t.getFullYear(),0,1),n.setHours(0,0,0,0),n}(t))+1}function nt(e,t){return(e<0?"-":"")+Math.abs(e).toString().padStart(t,"0")}const rt={y(e,t){const n=e.getFullYear(),r=n>0?n:1-n;return nt("yy"===t?r%100:r,t.length)},M(e,t){const n=e.getMonth();return"M"===t?String(n+1):nt(n+1,2)},d:(e,t)=>nt(e.getDate(),t.length),a(e,t){const n=e.getHours()/12>=1?"pm":"am";switch(t){case"a":case"aa":return n.toUpperCase();case"aaa":return n;case"aaaaa":return n[0];default:return"am"===n?"a.m.":"p.m."}},h:(e,t)=>nt(e.getHours()%12||12,t.length),H:(e,t)=>nt(e.getHours(),t.length),m:(e,t)=>nt(e.getMinutes(),t.length),s:(e,t)=>nt(e.getSeconds(),t.length),S(e,t){const n=t.length,r=e.getMilliseconds();return nt(Math.trunc(r*Math.pow(10,n-3)),t.length)}},it={G:function(e,t,n){const r=e.getFullYear()>0?1:0;switch(t){case"G":case"GG":case"GGG":return n.era(r,{width:"abbreviated"});case"GGGGG":return n.era(r,{width:"narrow"});default:return n.era(r,{width:"wide"})}},y:function(e,t,n){if("yo"===t){const t=e.getFullYear(),r=t>0?t:1-t;return n.ordinalNumber(r,{unit:"year"})}return rt.y(e,t)},Y:function(e,t,n,r){const i=Ue(e,r),o=i>0?i:1-i;return"YY"===t?nt(o%100,2):"Yo"===t?n.ordinalNumber(o,{unit:"year"}):nt(o,t.length)},R:function(e,t){return nt(Oe(e),t.length)},u:function(e,t){return nt(e.getFullYear(),t.length)},Q:function(e,t,n){const r=Math.ceil((e.getMonth()+1)/3);switch(t){case"Q":return String(r);case"QQ":return nt(r,2);case"Qo":return n.ordinalNumber(r,{unit:"quarter"});case"QQQ":return n.quarter(r,{width:"abbreviated",context:"formatting"});case"QQQQQ":return n.quarter(r,{width:"narrow",context:"formatting"});default:return n.quarter(r,{width:"wide",context:"formatting"})}},q:function(e,t,n){const r=Math.ceil((e.getMonth()+1)/3);switch(t){case"q":return String(r);case"qq":return nt(r,2);case"qo":return n.ordinalNumber(r,{unit:"quarter"});case"qqq":return n.quarter(r,{width:"abbreviated",context:"standalone"});case"qqqqq":return n.quarter(r,{width:"narrow",context:"standalone"});default:return n.quarter(r,{width:"wide",context:"standalone"})}},M:function(e,t,n){const r=e.getMonth();switch(t){case"M":case"MM":return rt.M(e,t);case"Mo":return n.ordinalNumber(r+1,{unit:"month"});case"MMM":return n.month(r,{width:"abbreviated",context:"formatting"});case"MMMMM":return n.month(r,{width:"narrow",context:"formatting"});default:return n.month(r,{width:"wide",context:"formatting"})}},L:function(e,t,n){const r=e.getMonth();switch(t){case"L":return String(r+1);case"LL":return nt(r+1,2);case"Lo":return n.ordinalNumber(r+1,{unit:"month"});case"LLL":return n.month(r,{width:"abbreviated",context:"standalone"});case"LLLLL":return n.month(r,{width:"narrow",context:"standalone"});default:return n.month(r,{width:"wide",context:"standalone"})}},w:function(e,t,n,r){const i=Re(e,r);return"wo"===t?n.ordinalNumber(i,{unit:"week"}):nt(i,t.length)},I:function(e,t,n){const r=Ve(e);return"Io"===t?n.ordinalNumber(r,{unit:"week"}):nt(r,t.length)},d:function(e,t,n){return"do"===t?n.ordinalNumber(e.getDate(),{unit:"date"}):rt.d(e,t)},D:function(e,t,n){const r=tt(e);return"Do"===t?n.ordinalNumber(r,{unit:"dayOfYear"}):nt(r,t.length)},E:function(e,t,n){const r=e.getDay();switch(t){case"E":case"EE":case"EEE":return n.day(r,{width:"abbreviated",context:"formatting"});case"EEEEE":return n.day(r,{width:"narrow",context:"formatting"});case"EEEEEE":return n.day(r,{width:"short",context:"formatting"});default:return n.day(r,{width:"wide",context:"formatting"})}},e:function(e,t,n,r){const i=e.getDay(),o=(i-r.weekStartsOn+8)%7||7;switch(t){case"e":return String(o);case"ee":return nt(o,2);case"eo":return n.ordinalNumber(o,{unit:"day"});case"eee":return n.day(i,{width:"abbreviated",context:"formatting"});case"eeeee":return n.day(i,{width:"narrow",context:"formatting"});case"eeeeee":return n.day(i,{width:"short",context:"formatting"});default:return n.day(i,{width:"wide",context:"formatting"})}},c:function(e,t,n,r){const i=e.getDay(),o=(i-r.weekStartsOn+8)%7||7;switch(t){case"c":return String(o);case"cc":return nt(o,t.length);case"co":return n.ordinalNumber(o,{unit:"day"});case"ccc":return n.day(i,{width:"abbreviated",context:"standalone"});case"ccccc":return n.day(i,{width:"narrow",context:"standalone"});case"cccccc":return n.day(i,{width:"short",context:"standalone"});default:return n.day(i,{width:"wide",context:"standalone"})}},i:function(e,t,n){const r=e.getDay(),i=0===r?7:r;switch(t){case"i":return String(i);case"ii":return nt(i,t.length);case"io":return n.ordinalNumber(i,{unit:"day"});case"iii":return n.day(r,{width:"abbreviated",context:"formatting"});case"iiiii":return n.day(r,{width:"narrow",context:"formatting"});case"iiiiii":return n.day(r,{width:"short",context:"formatting"});default:return n.day(r,{width:"wide",context:"formatting"})}},a:function(e,t,n){const r=e.getHours()/12>=1?"pm":"am";switch(t){case"a":case"aa":return n.dayPeriod(r,{width:"abbreviated",context:"formatting"});case"aaa":return n.dayPeriod(r,{width:"abbreviated",context:"formatting"}).toLowerCase();case"aaaaa":return n.dayPeriod(r,{width:"narrow",context:"formatting"});default:return n.dayPeriod(r,{width:"wide",context:"formatting"})}},b:function(e,t,n){const r=e.getHours();let i;switch(i=12===r?"noon":0===r?"midnight":r/12>=1?"pm":"am",t){case"b":case"bb":return n.dayPeriod(i,{width:"abbreviated",context:"formatting"});case"bbb":return n.dayPeriod(i,{width:"abbreviated",context:"formatting"}).toLowerCase();case"bbbbb":return n.dayPeriod(i,{width:"narrow",context:"formatting"});default:return n.dayPeriod(i,{width:"wide",context:"formatting"})}},B:function(e,t,n){const r=e.getHours();let i;switch(i=r>=17?"evening":r>=12?"afternoon":r>=4?"morning":"night",t){case"B":case"BB":case"BBB":return n.dayPeriod(i,{width:"abbreviated",context:"formatting"});case"BBBBB":return n.dayPeriod(i,{width:"narrow",context:"formatting"});default:return n.dayPeriod(i,{width:"wide",context:"formatting"})}},h:function(e,t,n){if("ho"===t){let t=e.getHours()%12;return 0===t&&(t=12),n.ordinalNumber(t,{unit:"hour"})}return rt.h(e,t)},H:function(e,t,n){return"Ho"===t?n.ordinalNumber(e.getHours(),{unit:"hour"}):rt.H(e,t)},K:function(e,t,n){const r=e.getHours()%12;return"Ko"===t?n.ordinalNumber(r,{unit:"hour"}):nt(r,t.length)},k:function(e,t,n){let r=e.getHours();return 0===r&&(r=24),"ko"===t?n.ordinalNumber(r,{unit:"hour"}):nt(r,t.length)},m:function(e,t,n){return"mo"===t?n.ordinalNumber(e.getMinutes(),{unit:"minute"}):rt.m(e,t)},s:function(e,t,n){return"so"===t?n.ordinalNumber(e.getSeconds(),{unit:"second"}):rt.s(e,t)},S:function(e,t){return rt.S(e,t)},X:function(e,t,n){const r=e.getTimezoneOffset();if(0===r)return"Z";switch(t){case"X":return at(r);case"XXXX":case"XX":return ct(r);default:return ct(r,":")}},x:function(e,t,n){const r=e.getTimezoneOffset();switch(t){case"x":return at(r);case"xxxx":case"xx":return ct(r);default:return ct(r,":")}},O:function(e,t,n){const r=e.getTimezoneOffset();switch(t){case"O":case"OO":case"OOO":return"GMT"+ot(r,":");default:return"GMT"+ct(r,":")}},z:function(e,t,n){const r=e.getTimezoneOffset();switch(t){case"z":case"zz":case"zzz":return"GMT"+ot(r,":");default:return"GMT"+ct(r,":")}},t:function(e,t,n){return nt(Math.trunc(e.getTime()/1e3),t.length)},T:function(e,t,n){return nt(e.getTime(),t.length)}};function ot(e,t=""){const n=e>0?"-":"+",r=Math.abs(e),i=Math.trunc(r/60),o=r%60;return 0===o?n+String(i):n+String(i)+t+nt(o,2)}function at(e,t){return e%60==0?(e>0?"-":"+")+nt(Math.abs(e)/60,2):ct(e,t)}function ct(e,t=""){const n=e>0?"-":"+",r=Math.abs(e);return n+nt(Math.trunc(r/60),2)+t+nt(r%60,2)}function lt(e){if(!function(e){return e instanceof Date||"object"==typeof e&&"[object Date]"===Object.prototype.toString.call(e)}(e)&&"number"!=typeof e)return!1;const t=O(e);return!isNaN(Number(t))}const st=/[yYQqMLwIdDecihHKkms]o|(\w)\1*|''|'(''|[^'])+('|$)|./g,ut=/P+p+|P+|p+|''|'(''|[^'])+('|$)|./g,gt=/^'([^]*?)'?$/,dt=/''/g,It=/[a-zA-Z]/;function pt(e){const t=e.match(gt);return t?t[1].replace(dt,"'"):e}const bt=function(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};const n=t.locale||p();if(t.dateFormat)try{const r=(e=>{const t=e||I.locale;return I.availableLocales[t]||I.availableLocales[t.split("-")[0]]})(n);if(!r)throw new Error(`Locale ${n} not added`);const i=t.parseFormat?Ke(e,A(t.parseFormat,{},{locale:n,returnKeyOnError:!0}),new Date,{locale:r}):new Date(e);return"distance-to-now"===t.dateFormat?$e(i,{addSuffix:!0,locale:r}):"distance-to-now-hours"===t.dateFormat?$e(i,{addSuffix:!0,unit:"hour",locale:r}):"distance-to-now-days"===t.dateFormat?$e(i,{addSuffix:!0,unit:"day",locale:r}):function(e,t,n){const r=F(),i=n?.locale??r.locale??R,o=n?.firstWeekContainsDate??n?.locale?.options?.firstWeekContainsDate??r.firstWeekContainsDate??r.locale?.options?.firstWeekContainsDate??1,a=n?.weekStartsOn??n?.locale?.options?.weekStartsOn??r.weekStartsOn??r.locale?.options?.weekStartsOn??0,c=O(e);if(!lt(c))throw new RangeError("Invalid time value");let l=t.match(ut).map((e=>{const t=e[0];return"p"===t||"P"===t?(0,_[t])(e,i.formatLong):e})).join("").match(st).map((e=>{if("''"===e)return{isToken:!1,value:"'"};const t=e[0];if("'"===t)return{isToken:!1,value:pt(e)};if(it[t])return{isToken:!0,value:e};if(t.match(It))throw new RangeError("Format string contains an unescaped latin alphabet character `"+t+"`");return{isToken:!1,value:e}}));i.localize.preprocessor&&(l=i.localize.preprocessor(c,l));const s={firstWeekContainsDate:o,weekStartsOn:a,locale:i};return l.map((r=>{if(!r.isToken)return r.value;const o=r.value;return(!n?.useAdditionalWeekYearTokens&&D(o)||!n?.useAdditionalDayOfYearTokens&&k(o))&&L(o,t,String(e)),(0,it[o[0]])(c,o,i.localize,s)})).join("")}(i,A(t.dateFormat,{},{locale:n,returnKeyOnError:!0}),{locale:r})}catch(r){return m(e,t,r)}if("number"==typeof e)try{return new Intl.NumberFormat(n,t).format(e)}catch(r){return m(e,t,r)}return e};(class extends l{render(){const{value:e,dateFormat:t,parseFormat:n,options:r={}}=this.props;return bt(e,{...r,dateFormat:t,parseFormat:n})}}).propTypes={value:u().oneOfType([u().string,u().number,u().object]).isRequired,dateFormat:u().string,parseFormat:u().string,options:u().object};(class extends l{constructor(){super(...arguments),function(e,t,n){(t=function(e){var t=function(e){if("object"!=typeof e||null===e)return e;var t=e[Symbol.toPrimitive];if(void 0!==t){var n=t.call(e,"string");if("object"!=typeof n)return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(e);return"symbol"==typeof t?t:String(t)}(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n}(this,"render",(()=>this.props.render()))}}).propTypes={render:u().func.isRequired}},9132:(e,t,n)=>{"use strict";var r=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},i=function(){function e(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}return function(t,n,r){return n&&e(t.prototype,n),r&&e(t,r),t}}(),o=n(5927),a=l(o),c=l(n(5556));function l(e){return e&&e.__esModule?e:{default:e}}var s={position:"absolute",top:0,left:0,visibility:"hidden",height:0,overflow:"scroll",whiteSpace:"pre"},u=["extraWidth","injectStyles","inputClassName","inputRef","inputStyle","minWidth","onAutosize","placeholderIsMinWidth"],g=function(e,t){t.style.fontSize=e.fontSize,t.style.fontFamily=e.fontFamily,t.style.fontWeight=e.fontWeight,t.style.fontStyle=e.fontStyle,t.style.letterSpacing=e.letterSpacing,t.style.textTransform=e.textTransform},d=!("undefined"==typeof window||!window.navigator)&&/MSIE |Trident\/|Edge\//.test(window.navigator.userAgent),I=function(){return d?"_"+Math.random().toString(36).substr(2,12):void 0},p=function(e){function t(e){!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,t);var n=function(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}(this,(t.__proto__||Object.getPrototypeOf(t)).call(this,e));return n.inputRef=function(e){n.input=e,"function"==typeof n.props.inputRef&&n.props.inputRef(e)},n.placeHolderSizerRef=function(e){n.placeHolderSizer=e},n.sizerRef=function(e){n.sizer=e},n.state={inputWidth:e.minWidth,inputId:e.id||I()},n}return function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}(t,e),i(t,[{key:"componentDidMount",value:function(){this.mounted=!0,this.copyInputStyles(),this.updateInputWidth()}},{key:"UNSAFE_componentWillReceiveProps",value:function(e){var t=e.id;t!==this.props.id&&this.setState({inputId:t||I()})}},{key:"componentDidUpdate",value:function(e,t){t.inputWidth!==this.state.inputWidth&&"function"==typeof this.props.onAutosize&&this.props.onAutosize(this.state.inputWidth),this.updateInputWidth()}},{key:"componentWillUnmount",value:function(){this.mounted=!1}},{key:"copyInputStyles",value:function(){if(this.mounted&&window.getComputedStyle){var e=this.input&&window.getComputedStyle(this.input);e&&(g(e,this.sizer),this.placeHolderSizer&&g(e,this.placeHolderSizer))}}},{key:"updateInputWidth",value:function(){if(this.mounted&&this.sizer&&void 0!==this.sizer.scrollWidth){var e=void 0;e=this.props.placeholder&&(!this.props.value||this.props.value&&this.props.placeholderIsMinWidth)?Math.max(this.sizer.scrollWidth,this.placeHolderSizer.scrollWidth)+2:this.sizer.scrollWidth+2,(e+="number"===this.props.type&&void 0===this.props.extraWidth?16:parseInt(this.props.extraWidth)||0)<this.props.minWidth&&(e=this.props.minWidth),e!==this.state.inputWidth&&this.setState({inputWidth:e})}}},{key:"getInput",value:function(){return this.input}},{key:"focus",value:function(){this.input.focus()}},{key:"blur",value:function(){this.input.blur()}},{key:"select",value:function(){this.input.select()}},{key:"renderStyles",value:function(){var e=this.props.injectStyles;return d&&e?a.default.createElement("style",{dangerouslySetInnerHTML:{__html:"input#"+this.state.inputId+"::-ms-clear {display: none;}"}}):null}},{key:"render",value:function(){var e=[this.props.defaultValue,this.props.value,""].reduce((function(e,t){return null!=e?e:t})),t=r({},this.props.style);t.display||(t.display="inline-block");var n=r({boxSizing:"content-box",width:this.state.inputWidth+"px"},this.props.inputStyle),i=function(e,t){var n={};for(var r in e)t.indexOf(r)>=0||Object.prototype.hasOwnProperty.call(e,r)&&(n[r]=e[r]);return n}(this.props,[]);return function(e){u.forEach((function(t){return delete e[t]}))}(i),i.className=this.props.inputClassName,i.id=this.state.inputId,i.style=n,a.default.createElement("div",{className:this.props.className,style:t},this.renderStyles(),a.default.createElement("input",r({},i,{ref:this.inputRef})),a.default.createElement("div",{ref:this.sizerRef,style:s},e),this.props.placeholder?a.default.createElement("div",{ref:this.placeHolderSizerRef,style:s},this.props.placeholder):null)}}]),t}(o.Component);p.propTypes={className:c.default.string,defaultValue:c.default.any,extraWidth:c.default.oneOfType([c.default.number,c.default.string]),id:c.default.string,injectStyles:c.default.bool,inputClassName:c.default.string,inputRef:c.default.func,inputStyle:c.default.object,minWidth:c.default.oneOfType([c.default.number,c.default.string]),onAutosize:c.default.func,onChange:c.default.func,placeholder:c.default.string,placeholderIsMinWidth:c.default.bool,style:c.default.object,value:c.default.any},p.defaultProps={minWidth:1,injectStyles:!0},t.A=p},1742:(e,t,n)=>{"use strict";n.d(t,{pL:()=>I});var r=n(5927);function i(){return i=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},i.apply(this,arguments)}function o(e,t){return o=Object.setPrototypeOf||function(e,t){return e.__proto__=t,e},o(e,t)}var a=new Map,c=new WeakMap,l=0;function s(e){return Object.keys(e).sort().filter((function(t){return void 0!==e[t]})).map((function(t){return t+"_"+("root"===t?(n=e.root)?(c.has(n)||(l+=1,c.set(n,l.toString())),c.get(n)):"0":e[t]);var n})).toString()}function u(e,t,n,r){if(void 0===n&&(n={}),void 0===r&&(r=undefined),void 0===window.IntersectionObserver&&void 0!==r){var i=e.getBoundingClientRect();return t(r,{isIntersecting:r,target:e,intersectionRatio:"number"==typeof n.threshold?n.threshold:0,time:0,boundingClientRect:i,intersectionRect:i,rootBounds:i}),function(){}}var o=function(e){var t=s(e),n=a.get(t);if(!n){var r,i=new Map,o=new IntersectionObserver((function(t){t.forEach((function(t){var n,o=t.isIntersecting&&r.some((function(e){return t.intersectionRatio>=e}));e.trackVisibility&&void 0===t.isVisible&&(t.isVisible=o),null==(n=i.get(t.target))||n.forEach((function(e){e(o,t)}))}))}),e);r=o.thresholds||(Array.isArray(e.threshold)?e.threshold:[e.threshold||0]),n={id:t,observer:o,elements:i},a.set(t,n)}return n}(n),c=o.id,l=o.observer,u=o.elements,g=u.get(e)||[];return u.has(e)||u.set(e,g),g.push(t),l.observe(e),function(){g.splice(g.indexOf(t),1),0===g.length&&(u.delete(e),l.unobserve(e)),0===u.size&&(l.disconnect(),a.delete(c))}}var g=["children","as","triggerOnce","threshold","root","rootMargin","onChange","skip","trackVisibility","delay","initialInView","fallbackInView"];function d(e){return"function"!=typeof e.children}var I=function(e){var t,n;function a(t){var n;return(n=e.call(this,t)||this).node=null,n._unobserveCb=null,n.handleNode=function(e){n.node&&(n.unobserve(),e||n.props.triggerOnce||n.props.skip||n.setState({inView:!!n.props.initialInView,entry:void 0})),n.node=e||null,n.observeNode()},n.handleChange=function(e,t){e&&n.props.triggerOnce&&n.unobserve(),d(n.props)||n.setState({inView:e,entry:t}),n.props.onChange&&n.props.onChange(e,t)},n.state={inView:!!t.initialInView,entry:void 0},n}n=e,(t=a).prototype=Object.create(n.prototype),t.prototype.constructor=t,o(t,n);var c=a.prototype;return c.componentDidUpdate=function(e){e.rootMargin===this.props.rootMargin&&e.root===this.props.root&&e.threshold===this.props.threshold&&e.skip===this.props.skip&&e.trackVisibility===this.props.trackVisibility&&e.delay===this.props.delay||(this.unobserve(),this.observeNode())},c.componentWillUnmount=function(){this.unobserve(),this.node=null},c.observeNode=function(){if(this.node&&!this.props.skip){var e=this.props,t=e.threshold,n=e.root,r=e.rootMargin,i=e.trackVisibility,o=e.delay,a=e.fallbackInView;this._unobserveCb=u(this.node,this.handleChange,{threshold:t,root:n,rootMargin:r,trackVisibility:i,delay:o},a)}},c.unobserve=function(){this._unobserveCb&&(this._unobserveCb(),this._unobserveCb=null)},c.render=function(){if(!d(this.props)){var e=this.state,t=e.inView,n=e.entry;return this.props.children({inView:t,entry:n,ref:this.handleNode})}var o=this.props,a=o.children,c=o.as,l=function(e,t){if(null==e)return{};var n,r,i={},o=Object.keys(e);for(r=0;r<o.length;r++)n=o[r],t.indexOf(n)>=0||(i[n]=e[n]);return i}(o,g);return r.createElement(c||"div",i({ref:this.handleNode},l),a)},a}(r.Component);I.displayName="InView",I.defaultProps={threshold:0,triggerOnce:!1,initialInView:!1}},2799:(e,t)=>{"use strict";var n,r=Symbol.for("react.element"),i=Symbol.for("react.portal"),o=Symbol.for("react.fragment"),a=Symbol.for("react.strict_mode"),c=Symbol.for("react.profiler"),l=Symbol.for("react.provider"),s=Symbol.for("react.context"),u=Symbol.for("react.server_context"),g=Symbol.for("react.forward_ref"),d=Symbol.for("react.suspense"),I=Symbol.for("react.suspense_list"),p=Symbol.for("react.memo"),b=Symbol.for("react.lazy"),m=Symbol.for("react.offscreen");
/**
 * @license React
 * react-is.production.min.js
 *
 * Copyright (c) Facebook, Inc. and its affiliates.
 *
 * This source code is licensed under the MIT license found in the
 * LICENSE file in the root directory of this source tree.
 */n=Symbol.for("react.module.reference"),t.isValidElementType=function(e){return"string"==typeof e||"function"==typeof e||e===o||e===c||e===a||e===d||e===I||e===m||"object"==typeof e&&null!==e&&(e.$$typeof===b||e.$$typeof===p||e.$$typeof===l||e.$$typeof===s||e.$$typeof===g||e.$$typeof===n||void 0!==e.getModuleId)},t.typeOf=function(e){if("object"==typeof e&&null!==e){var t=e.$$typeof;switch(t){case r:switch(e=e.type){case o:case c:case a:case d:case I:return e;default:switch(e=e&&e.$$typeof){case u:case s:case g:case b:case p:case l:return e;default:return t}}case i:return t}}}},4363:(e,t,n)=>{"use strict";e.exports=n(2799)},2016:(e,t,n)=>{"use strict";n.d(t,{Ay:()=>J});var r=n(9132),i=n(6942),o=n.n(i),a=n(5556),c=n.n(a),l=n(5927),s=n.n(l),u=n(8709),g=function(e){var t=e.onMouseDown;return s().createElement("span",{className:"Select-arrow",onMouseDown:t})};g.propTypes={onMouseDown:c().func};var d=[{base:"A",letters:/[\u0041\u24B6\uFF21\u00C0\u00C1\u00C2\u1EA6\u1EA4\u1EAA\u1EA8\u00C3\u0100\u0102\u1EB0\u1EAE\u1EB4\u1EB2\u0226\u01E0\u00C4\u01DE\u1EA2\u00C5\u01FA\u01CD\u0200\u0202\u1EA0\u1EAC\u1EB6\u1E00\u0104\u023A\u2C6F]/g},{base:"AA",letters:/[\uA732]/g},{base:"AE",letters:/[\u00C6\u01FC\u01E2]/g},{base:"AO",letters:/[\uA734]/g},{base:"AU",letters:/[\uA736]/g},{base:"AV",letters:/[\uA738\uA73A]/g},{base:"AY",letters:/[\uA73C]/g},{base:"B",letters:/[\u0042\u24B7\uFF22\u1E02\u1E04\u1E06\u0243\u0182\u0181]/g},{base:"C",letters:/[\u0043\u24B8\uFF23\u0106\u0108\u010A\u010C\u00C7\u1E08\u0187\u023B\uA73E]/g},{base:"D",letters:/[\u0044\u24B9\uFF24\u1E0A\u010E\u1E0C\u1E10\u1E12\u1E0E\u0110\u018B\u018A\u0189\uA779]/g},{base:"DZ",letters:/[\u01F1\u01C4]/g},{base:"Dz",letters:/[\u01F2\u01C5]/g},{base:"E",letters:/[\u0045\u24BA\uFF25\u00C8\u00C9\u00CA\u1EC0\u1EBE\u1EC4\u1EC2\u1EBC\u0112\u1E14\u1E16\u0114\u0116\u00CB\u1EBA\u011A\u0204\u0206\u1EB8\u1EC6\u0228\u1E1C\u0118\u1E18\u1E1A\u0190\u018E]/g},{base:"F",letters:/[\u0046\u24BB\uFF26\u1E1E\u0191\uA77B]/g},{base:"G",letters:/[\u0047\u24BC\uFF27\u01F4\u011C\u1E20\u011E\u0120\u01E6\u0122\u01E4\u0193\uA7A0\uA77D\uA77E]/g},{base:"H",letters:/[\u0048\u24BD\uFF28\u0124\u1E22\u1E26\u021E\u1E24\u1E28\u1E2A\u0126\u2C67\u2C75\uA78D]/g},{base:"I",letters:/[\u0049\u24BE\uFF29\u00CC\u00CD\u00CE\u0128\u012A\u012C\u0130\u00CF\u1E2E\u1EC8\u01CF\u0208\u020A\u1ECA\u012E\u1E2C\u0197]/g},{base:"J",letters:/[\u004A\u24BF\uFF2A\u0134\u0248]/g},{base:"K",letters:/[\u004B\u24C0\uFF2B\u1E30\u01E8\u1E32\u0136\u1E34\u0198\u2C69\uA740\uA742\uA744\uA7A2]/g},{base:"L",letters:/[\u004C\u24C1\uFF2C\u013F\u0139\u013D\u1E36\u1E38\u013B\u1E3C\u1E3A\u0141\u023D\u2C62\u2C60\uA748\uA746\uA780]/g},{base:"LJ",letters:/[\u01C7]/g},{base:"Lj",letters:/[\u01C8]/g},{base:"M",letters:/[\u004D\u24C2\uFF2D\u1E3E\u1E40\u1E42\u2C6E\u019C]/g},{base:"N",letters:/[\u004E\u24C3\uFF2E\u01F8\u0143\u00D1\u1E44\u0147\u1E46\u0145\u1E4A\u1E48\u0220\u019D\uA790\uA7A4]/g},{base:"NJ",letters:/[\u01CA]/g},{base:"Nj",letters:/[\u01CB]/g},{base:"O",letters:/[\u004F\u24C4\uFF2F\u00D2\u00D3\u00D4\u1ED2\u1ED0\u1ED6\u1ED4\u00D5\u1E4C\u022C\u1E4E\u014C\u1E50\u1E52\u014E\u022E\u0230\u00D6\u022A\u1ECE\u0150\u01D1\u020C\u020E\u01A0\u1EDC\u1EDA\u1EE0\u1EDE\u1EE2\u1ECC\u1ED8\u01EA\u01EC\u00D8\u01FE\u0186\u019F\uA74A\uA74C]/g},{base:"OI",letters:/[\u01A2]/g},{base:"OO",letters:/[\uA74E]/g},{base:"OU",letters:/[\u0222]/g},{base:"P",letters:/[\u0050\u24C5\uFF30\u1E54\u1E56\u01A4\u2C63\uA750\uA752\uA754]/g},{base:"Q",letters:/[\u0051\u24C6\uFF31\uA756\uA758\u024A]/g},{base:"R",letters:/[\u0052\u24C7\uFF32\u0154\u1E58\u0158\u0210\u0212\u1E5A\u1E5C\u0156\u1E5E\u024C\u2C64\uA75A\uA7A6\uA782]/g},{base:"S",letters:/[\u0053\u24C8\uFF33\u1E9E\u015A\u1E64\u015C\u1E60\u0160\u1E66\u1E62\u1E68\u0218\u015E\u2C7E\uA7A8\uA784]/g},{base:"T",letters:/[\u0054\u24C9\uFF34\u1E6A\u0164\u1E6C\u021A\u0162\u1E70\u1E6E\u0166\u01AC\u01AE\u023E\uA786]/g},{base:"TZ",letters:/[\uA728]/g},{base:"U",letters:/[\u0055\u24CA\uFF35\u00D9\u00DA\u00DB\u0168\u1E78\u016A\u1E7A\u016C\u00DC\u01DB\u01D7\u01D5\u01D9\u1EE6\u016E\u0170\u01D3\u0214\u0216\u01AF\u1EEA\u1EE8\u1EEE\u1EEC\u1EF0\u1EE4\u1E72\u0172\u1E76\u1E74\u0244]/g},{base:"V",letters:/[\u0056\u24CB\uFF36\u1E7C\u1E7E\u01B2\uA75E\u0245]/g},{base:"VY",letters:/[\uA760]/g},{base:"W",letters:/[\u0057\u24CC\uFF37\u1E80\u1E82\u0174\u1E86\u1E84\u1E88\u2C72]/g},{base:"X",letters:/[\u0058\u24CD\uFF38\u1E8A\u1E8C]/g},{base:"Y",letters:/[\u0059\u24CE\uFF39\u1EF2\u00DD\u0176\u1EF8\u0232\u1E8E\u0178\u1EF6\u1EF4\u01B3\u024E\u1EFE]/g},{base:"Z",letters:/[\u005A\u24CF\uFF3A\u0179\u1E90\u017B\u017D\u1E92\u1E94\u01B5\u0224\u2C7F\u2C6B\uA762]/g},{base:"a",letters:/[\u0061\u24D0\uFF41\u1E9A\u00E0\u00E1\u00E2\u1EA7\u1EA5\u1EAB\u1EA9\u00E3\u0101\u0103\u1EB1\u1EAF\u1EB5\u1EB3\u0227\u01E1\u00E4\u01DF\u1EA3\u00E5\u01FB\u01CE\u0201\u0203\u1EA1\u1EAD\u1EB7\u1E01\u0105\u2C65\u0250]/g},{base:"aa",letters:/[\uA733]/g},{base:"ae",letters:/[\u00E6\u01FD\u01E3]/g},{base:"ao",letters:/[\uA735]/g},{base:"au",letters:/[\uA737]/g},{base:"av",letters:/[\uA739\uA73B]/g},{base:"ay",letters:/[\uA73D]/g},{base:"b",letters:/[\u0062\u24D1\uFF42\u1E03\u1E05\u1E07\u0180\u0183\u0253]/g},{base:"c",letters:/[\u0063\u24D2\uFF43\u0107\u0109\u010B\u010D\u00E7\u1E09\u0188\u023C\uA73F\u2184]/g},{base:"d",letters:/[\u0064\u24D3\uFF44\u1E0B\u010F\u1E0D\u1E11\u1E13\u1E0F\u0111\u018C\u0256\u0257\uA77A]/g},{base:"dz",letters:/[\u01F3\u01C6]/g},{base:"e",letters:/[\u0065\u24D4\uFF45\u00E8\u00E9\u00EA\u1EC1\u1EBF\u1EC5\u1EC3\u1EBD\u0113\u1E15\u1E17\u0115\u0117\u00EB\u1EBB\u011B\u0205\u0207\u1EB9\u1EC7\u0229\u1E1D\u0119\u1E19\u1E1B\u0247\u025B\u01DD]/g},{base:"f",letters:/[\u0066\u24D5\uFF46\u1E1F\u0192\uA77C]/g},{base:"g",letters:/[\u0067\u24D6\uFF47\u01F5\u011D\u1E21\u011F\u0121\u01E7\u0123\u01E5\u0260\uA7A1\u1D79\uA77F]/g},{base:"h",letters:/[\u0068\u24D7\uFF48\u0125\u1E23\u1E27\u021F\u1E25\u1E29\u1E2B\u1E96\u0127\u2C68\u2C76\u0265]/g},{base:"hv",letters:/[\u0195]/g},{base:"i",letters:/[\u0069\u24D8\uFF49\u00EC\u00ED\u00EE\u0129\u012B\u012D\u00EF\u1E2F\u1EC9\u01D0\u0209\u020B\u1ECB\u012F\u1E2D\u0268\u0131]/g},{base:"j",letters:/[\u006A\u24D9\uFF4A\u0135\u01F0\u0249]/g},{base:"k",letters:/[\u006B\u24DA\uFF4B\u1E31\u01E9\u1E33\u0137\u1E35\u0199\u2C6A\uA741\uA743\uA745\uA7A3]/g},{base:"l",letters:/[\u006C\u24DB\uFF4C\u0140\u013A\u013E\u1E37\u1E39\u013C\u1E3D\u1E3B\u017F\u0142\u019A\u026B\u2C61\uA749\uA781\uA747]/g},{base:"lj",letters:/[\u01C9]/g},{base:"m",letters:/[\u006D\u24DC\uFF4D\u1E3F\u1E41\u1E43\u0271\u026F]/g},{base:"n",letters:/[\u006E\u24DD\uFF4E\u01F9\u0144\u00F1\u1E45\u0148\u1E47\u0146\u1E4B\u1E49\u019E\u0272\u0149\uA791\uA7A5]/g},{base:"nj",letters:/[\u01CC]/g},{base:"o",letters:/[\u006F\u24DE\uFF4F\u00F2\u00F3\u00F4\u1ED3\u1ED1\u1ED7\u1ED5\u00F5\u1E4D\u022D\u1E4F\u014D\u1E51\u1E53\u014F\u022F\u0231\u00F6\u022B\u1ECF\u0151\u01D2\u020D\u020F\u01A1\u1EDD\u1EDB\u1EE1\u1EDF\u1EE3\u1ECD\u1ED9\u01EB\u01ED\u00F8\u01FF\u0254\uA74B\uA74D\u0275]/g},{base:"oi",letters:/[\u01A3]/g},{base:"ou",letters:/[\u0223]/g},{base:"oo",letters:/[\uA74F]/g},{base:"p",letters:/[\u0070\u24DF\uFF50\u1E55\u1E57\u01A5\u1D7D\uA751\uA753\uA755]/g},{base:"q",letters:/[\u0071\u24E0\uFF51\u024B\uA757\uA759]/g},{base:"r",letters:/[\u0072\u24E1\uFF52\u0155\u1E59\u0159\u0211\u0213\u1E5B\u1E5D\u0157\u1E5F\u024D\u027D\uA75B\uA7A7\uA783]/g},{base:"s",letters:/[\u0073\u24E2\uFF53\u00DF\u015B\u1E65\u015D\u1E61\u0161\u1E67\u1E63\u1E69\u0219\u015F\u023F\uA7A9\uA785\u1E9B]/g},{base:"t",letters:/[\u0074\u24E3\uFF54\u1E6B\u1E97\u0165\u1E6D\u021B\u0163\u1E71\u1E6F\u0167\u01AD\u0288\u2C66\uA787]/g},{base:"tz",letters:/[\uA729]/g},{base:"u",letters:/[\u0075\u24E4\uFF55\u00F9\u00FA\u00FB\u0169\u1E79\u016B\u1E7B\u016D\u00FC\u01DC\u01D8\u01D6\u01DA\u1EE7\u016F\u0171\u01D4\u0215\u0217\u01B0\u1EEB\u1EE9\u1EEF\u1EED\u1EF1\u1EE5\u1E73\u0173\u1E77\u1E75\u0289]/g},{base:"v",letters:/[\u0076\u24E5\uFF56\u1E7D\u1E7F\u028B\uA75F\u028C]/g},{base:"vy",letters:/[\uA761]/g},{base:"w",letters:/[\u0077\u24E6\uFF57\u1E81\u1E83\u0175\u1E87\u1E85\u1E98\u1E89\u2C73]/g},{base:"x",letters:/[\u0078\u24E7\uFF58\u1E8B\u1E8D]/g},{base:"y",letters:/[\u0079\u24E8\uFF59\u1EF3\u00FD\u0177\u1EF9\u0233\u1E8F\u00FF\u1EF7\u1E99\u1EF5\u01B4\u024F\u1EFF]/g},{base:"z",letters:/[\u007A\u24E9\uFF5A\u017A\u1E91\u017C\u017E\u1E93\u1E95\u01B6\u0225\u0240\u2C6C\uA763]/g}],I=function(e){for(var t=0;t<d.length;t++)e=e.replace(d[t].letters,d[t].base);return e},p=function(e){return null!=e&&""!==e},b=function(e,t,n,r){return r.ignoreAccents&&(t=I(t)),r.ignoreCase&&(t=t.toLowerCase()),r.trimFilter&&(t=t.replace(/^\s+|\s+$/g,"")),n&&(n=n.map((function(e){return e[r.valueKey]}))),e.filter((function(e){if(n&&n.indexOf(e[r.valueKey])>-1)return!1;if(r.filterOption)return r.filterOption.call(void 0,e,t);if(!t)return!0;var i=e[r.valueKey],o=e[r.labelKey],a=p(i),c=p(o);if(!a&&!c)return!1;var l=a?String(i):null,s=c?String(o):null;return r.ignoreAccents&&(l&&"label"!==r.matchProp&&(l=I(l)),s&&"value"!==r.matchProp&&(s=I(s))),r.ignoreCase&&(l&&"label"!==r.matchProp&&(l=l.toLowerCase()),s&&"value"!==r.matchProp&&(s=s.toLowerCase())),"start"===r.matchPos?l&&"label"!==r.matchProp&&l.substr(0,t.length)===t||s&&"value"!==r.matchProp&&s.substr(0,t.length)===t:l&&"label"!==r.matchProp&&l.indexOf(t)>=0||s&&"value"!==r.matchProp&&s.indexOf(t)>=0}))},m=function(e){var t=e.focusedOption,n=e.focusOption,r=e.inputValue,i=e.instancePrefix,a=e.onFocus,c=e.onOptionRef,l=e.onSelect,u=e.optionClassName,g=e.optionComponent,d=e.optionRenderer,I=e.options,p=e.removeValue,b=e.selectValue,m=e.valueArray,C=e.valueKey,h=g;return I.map((function(e,g){var I=m&&m.some((function(t){return t[C]===e[C]})),B=e===t,A=o()(u,{"Select-option":!0,"is-selected":I,"is-focused":B,"is-disabled":e.disabled});return s().createElement(h,{className:A,focusOption:n,inputValue:r,instancePrefix:i,isDisabled:e.disabled,isFocused:B,isSelected:I,key:"option-"+g+"-"+e[C],onFocus:a,onSelect:l,option:e,optionIndex:g,ref:function(e){c(e,B)},removeValue:p,selectValue:b},d(e,g,r))}))};m.propTypes={focusOption:c().func,focusedOption:c().object,inputValue:c().string,instancePrefix:c().string,onFocus:c().func,onOptionRef:c().func,onSelect:c().func,optionClassName:c().string,optionComponent:c().func,optionRenderer:c().func,options:c().array,removeValue:c().func,selectValue:c().func,valueArray:c().array,valueKey:c().string};var C=function(e){e.preventDefault(),e.stopPropagation(),"A"===e.target.tagName&&"href"in e.target&&(e.target.target?window.open(e.target.href,e.target.target):window.location.href=e.target.href)},h="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},B=(function(){function e(e){this.value=e}function t(t){var n,r;function i(n,r){try{var a=t[n](r),c=a.value;c instanceof e?Promise.resolve(c.value).then((function(e){i("next",e)}),(function(e){i("throw",e)})):o(a.done?"return":"normal",a.value)}catch(l){o("throw",l)}}function o(e,t){switch(e){case"return":n.resolve({value:t,done:!0});break;case"throw":n.reject(t);break;default:n.resolve({value:t,done:!1})}(n=n.next)?i(n.key,n.arg):r=null}this._invoke=function(e,t){return new Promise((function(o,a){var c={key:e,arg:t,resolve:o,reject:a,next:null};r?r=r.next=c:(n=r=c,i(e,t))}))},"function"!=typeof t.return&&(this.return=void 0)}"function"==typeof Symbol&&Symbol.asyncIterator&&(t.prototype[Symbol.asyncIterator]=function(){return this}),t.prototype.next=function(e){return this._invoke("next",e)},t.prototype.throw=function(e){return this._invoke("throw",e)},t.prototype.return=function(e){return this._invoke("return",e)}}(),function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}),A=function(){function e(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}return function(t,n,r){return n&&e(t.prototype,n),r&&e(t,r),t}}(),y=function(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e},f=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},G=function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)},Q=function(e,t){var n={};for(var r in e)t.indexOf(r)>=0||Object.prototype.hasOwnProperty.call(e,r)&&(n[r]=e[r]);return n},F=function(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t},v=function(e){function t(e){B(this,t);var n=F(this,(t.__proto__||Object.getPrototypeOf(t)).call(this,e));return n.handleMouseDown=n.handleMouseDown.bind(n),n.handleMouseEnter=n.handleMouseEnter.bind(n),n.handleMouseMove=n.handleMouseMove.bind(n),n.handleTouchStart=n.handleTouchStart.bind(n),n.handleTouchEnd=n.handleTouchEnd.bind(n),n.handleTouchMove=n.handleTouchMove.bind(n),n.onFocus=n.onFocus.bind(n),n}return G(t,e),A(t,[{key:"handleMouseDown",value:function(e){e.preventDefault(),e.stopPropagation(),this.props.onSelect(this.props.option,e)}},{key:"handleMouseEnter",value:function(e){this.onFocus(e)}},{key:"handleMouseMove",value:function(e){this.onFocus(e)}},{key:"handleTouchEnd",value:function(e){this.dragging||this.handleMouseDown(e)}},{key:"handleTouchMove",value:function(){this.dragging=!0}},{key:"handleTouchStart",value:function(){this.dragging=!1}},{key:"onFocus",value:function(e){this.props.isFocused||this.props.onFocus(this.props.option,e)}},{key:"render",value:function(){var e=this.props,t=e.option,n=e.instancePrefix,r=e.optionIndex,i=o()(this.props.className,t.className);return t.disabled?s().createElement("div",{className:i,onMouseDown:C,onClick:C},this.props.children):s().createElement("div",{className:i,style:t.style,role:"option","aria-label":t.label,onMouseDown:this.handleMouseDown,onMouseEnter:this.handleMouseEnter,onMouseMove:this.handleMouseMove,onTouchStart:this.handleTouchStart,onTouchMove:this.handleTouchMove,onTouchEnd:this.handleTouchEnd,id:n+"-option-"+r,title:t.title},this.props.children)}}]),t}(s().Component);v.propTypes={children:c().node,className:c().string,instancePrefix:c().string.isRequired,isDisabled:c().bool,isFocused:c().bool,isSelected:c().bool,onFocus:c().func,onSelect:c().func,onUnfocus:c().func,option:c().object.isRequired,optionIndex:c().number};var Z=function(e){function t(e){B(this,t);var n=F(this,(t.__proto__||Object.getPrototypeOf(t)).call(this,e));return n.handleMouseDown=n.handleMouseDown.bind(n),n.onRemove=n.onRemove.bind(n),n.handleTouchEndRemove=n.handleTouchEndRemove.bind(n),n.handleTouchMove=n.handleTouchMove.bind(n),n.handleTouchStart=n.handleTouchStart.bind(n),n}return G(t,e),A(t,[{key:"handleMouseDown",value:function(e){if("mousedown"!==e.type||0===e.button)return this.props.onClick?(e.stopPropagation(),void this.props.onClick(this.props.value,e)):void(this.props.value.href&&e.stopPropagation())}},{key:"onRemove",value:function(e){e.preventDefault(),e.stopPropagation(),this.props.onRemove(this.props.value)}},{key:"handleTouchEndRemove",value:function(e){this.dragging||this.onRemove(e)}},{key:"handleTouchMove",value:function(){this.dragging=!0}},{key:"handleTouchStart",value:function(){this.dragging=!1}},{key:"renderRemoveIcon",value:function(){if(!this.props.disabled&&this.props.onRemove)return s().createElement("span",{className:"Select-value-icon","aria-hidden":"true",onMouseDown:this.onRemove,onTouchEnd:this.handleTouchEndRemove,onTouchStart:this.handleTouchStart,onTouchMove:this.handleTouchMove},"×")}},{key:"renderLabel",value:function(){var e="Select-value-label";return this.props.onClick||this.props.value.href?s().createElement("a",{className:e,href:this.props.value.href,target:this.props.value.target,onMouseDown:this.handleMouseDown,onTouchEnd:this.handleMouseDown},this.props.children):s().createElement("span",{className:e,role:"option","aria-selected":"true",id:this.props.id},this.props.children)}},{key:"render",value:function(){return s().createElement("div",{className:o()("Select-value",this.props.value.className),style:this.props.value.style,title:this.props.value.title},this.renderRemoveIcon(),this.renderLabel())}}]),t}(s().Component);Z.propTypes={children:c().node,disabled:c().bool,id:c().string,onClick:c().func,onRemove:c().func,value:c().object.isRequired};
/*!
  Copyright (c) 2018 Jed Watson.
  Licensed under the MIT License (MIT), see
  http://jedwatson.github.io/react-select
*/
var E=function(e){return"string"==typeof e?e:null!==e&&JSON.stringify(e)||""},S=c().oneOfType([c().string,c().node]),X=c().oneOfType([c().string,c().number]),T=1,x=function(e,t){var n=void 0===e?"undefined":h(e);if("string"!==n&&"number"!==n&&"boolean"!==n)return e;var r=t.options,i=t.valueKey;if(r)for(var o=0;o<r.length;o++)if(String(r[o][i])===String(e))return r[o]},U=function(e,t){return!e||(t?0===e.length:0===Object.keys(e).length)},N=function(e){function t(e){B(this,t);var n=F(this,(t.__proto__||Object.getPrototypeOf(t)).call(this,e));return["clearValue","focusOption","getOptionLabel","handleInputBlur","handleInputChange","handleInputFocus","handleInputValueChange","handleKeyDown","handleMenuScroll","handleMouseDown","handleMouseDownOnArrow","handleMouseDownOnMenu","handleTouchEnd","handleTouchEndClearValue","handleTouchMove","handleTouchOutside","handleTouchStart","handleValueClick","onOptionRef","removeValue","selectValue"].forEach((function(e){return n[e]=n[e].bind(n)})),n.state={inputValue:"",isFocused:!1,isOpen:!1,isPseudoFocused:!1,required:!1},n}return G(t,e),A(t,[{key:"componentWillMount",value:function(){this._instancePrefix="react-select-"+(this.props.instanceId||++T)+"-";var e=this.getValueArray(this.props.value);this.props.required&&this.setState({required:U(e[0],this.props.multi)})}},{key:"componentDidMount",value:function(){void 0!==this.props.autofocus&&"undefined"!=typeof console&&console.warn("Warning: The autofocus prop has changed to autoFocus, support will be removed after react-select@1.0"),(this.props.autoFocus||this.props.autofocus)&&this.focus()}},{key:"componentWillReceiveProps",value:function(e){var t=this.getValueArray(e.value,e);e.required?this.setState({required:U(t[0],e.multi)}):this.props.required&&this.setState({required:!1}),this.state.inputValue&&this.props.value!==e.value&&e.onSelectResetsInput&&this.setState({inputValue:this.handleInputValueChange("")})}},{key:"componentDidUpdate",value:function(e,t){if(this.menu&&this.focused&&this.state.isOpen&&!this.hasScrolledToOption){var n=(0,u.findDOMNode)(this.focused),r=(0,u.findDOMNode)(this.menu),i=r.scrollTop,o=i+r.offsetHeight,a=n.offsetTop,c=a+n.offsetHeight;(i>a||o<c)&&(r.scrollTop=n.offsetTop),this.hasScrolledToOption=!0}else this.state.isOpen||(this.hasScrolledToOption=!1);if(this._scrollToFocusedOptionOnUpdate&&this.focused&&this.menu){this._scrollToFocusedOptionOnUpdate=!1;var l=(0,u.findDOMNode)(this.focused),s=(0,u.findDOMNode)(this.menu),g=l.getBoundingClientRect(),d=s.getBoundingClientRect();g.bottom>d.bottom?s.scrollTop=l.offsetTop+l.clientHeight-s.offsetHeight:g.top<d.top&&(s.scrollTop=l.offsetTop)}if(this.props.scrollMenuIntoView&&this.menuContainer){var I=this.menuContainer.getBoundingClientRect();window.innerHeight<I.bottom+this.props.menuBuffer&&window.scrollBy(0,I.bottom+this.props.menuBuffer-window.innerHeight)}if(e.disabled!==this.props.disabled&&(this.setState({isFocused:!1}),this.closeMenu()),t.isOpen!==this.state.isOpen){this.toggleTouchOutsideEvent(this.state.isOpen);var p=this.state.isOpen?this.props.onOpen:this.props.onClose;p&&p()}}},{key:"componentWillUnmount",value:function(){this.toggleTouchOutsideEvent(!1)}},{key:"toggleTouchOutsideEvent",value:function(e){e?!document.addEventListener&&document.attachEvent?document.attachEvent("ontouchstart",this.handleTouchOutside):document.addEventListener("touchstart",this.handleTouchOutside):!document.removeEventListener&&document.detachEvent?document.detachEvent("ontouchstart",this.handleTouchOutside):document.removeEventListener("touchstart",this.handleTouchOutside)}},{key:"handleTouchOutside",value:function(e){this.wrapper&&!this.wrapper.contains(e.target)&&this.closeMenu()}},{key:"focus",value:function(){this.input&&this.input.focus()}},{key:"blurInput",value:function(){this.input&&this.input.blur()}},{key:"handleTouchMove",value:function(){this.dragging=!0}},{key:"handleTouchStart",value:function(){this.dragging=!1}},{key:"handleTouchEnd",value:function(e){this.dragging||this.handleMouseDown(e)}},{key:"handleTouchEndClearValue",value:function(e){this.dragging||this.clearValue(e)}},{key:"handleMouseDown",value:function(e){if(!(this.props.disabled||"mousedown"===e.type&&0!==e.button))if("INPUT"!==e.target.tagName){if(e.preventDefault(),!this.props.searchable)return this.focus(),this.setState({isOpen:!this.state.isOpen});if(this.state.isFocused){this.focus();var t=this.input,n=!0;"function"==typeof t.getInput&&(t=t.getInput()),t.value="",this._focusAfterClear&&(n=!1,this._focusAfterClear=!1),this.setState({isOpen:n,isPseudoFocused:!1,focusedOption:null})}else this._openAfterFocus=this.props.openOnClick,this.focus(),this.setState({focusedOption:null})}else this.state.isFocused?this.state.isOpen||this.setState({isOpen:!0,isPseudoFocused:!1}):(this._openAfterFocus=this.props.openOnClick,this.focus())}},{key:"handleMouseDownOnArrow",value:function(e){this.props.disabled||"mousedown"===e.type&&0!==e.button||(this.state.isOpen?(e.stopPropagation(),e.preventDefault(),this.closeMenu()):this.setState({isOpen:!0}))}},{key:"handleMouseDownOnMenu",value:function(e){this.props.disabled||"mousedown"===e.type&&0!==e.button||(e.stopPropagation(),e.preventDefault(),this._openAfterFocus=!0,this.focus())}},{key:"closeMenu",value:function(){this.props.onCloseResetsInput?this.setState({inputValue:this.handleInputValueChange(""),isOpen:!1,isPseudoFocused:this.state.isFocused&&!this.props.multi}):this.setState({isOpen:!1,isPseudoFocused:this.state.isFocused&&!this.props.multi}),this.hasScrolledToOption=!1}},{key:"handleInputFocus",value:function(e){if(!this.props.disabled){var t=this.state.isOpen||this._openAfterFocus||this.props.openOnFocus;t=!this._focusAfterClear&&t,this.props.onFocus&&this.props.onFocus(e),this.setState({isFocused:!0,isOpen:!!t}),this._focusAfterClear=!1,this._openAfterFocus=!1}}},{key:"handleInputBlur",value:function(e){if(!this.menu||this.menu!==document.activeElement&&!this.menu.contains(document.activeElement)){this.props.onBlur&&this.props.onBlur(e);var t={isFocused:!1,isOpen:!1,isPseudoFocused:!1};this.props.onBlurResetsInput&&(t.inputValue=this.handleInputValueChange("")),this.setState(t)}else this.focus()}},{key:"handleInputChange",value:function(e){var t=e.target.value;this.state.inputValue!==e.target.value&&(t=this.handleInputValueChange(t)),this.setState({inputValue:t,isOpen:!0,isPseudoFocused:!1})}},{key:"setInputValue",value:function(e){if(this.props.onInputChange){var t=this.props.onInputChange(e);null!=t&&"object"!==(void 0===t?"undefined":h(t))&&(e=""+t)}this.setState({inputValue:e})}},{key:"handleInputValueChange",value:function(e){if(this.props.onInputChange){var t=this.props.onInputChange(e);null!=t&&"object"!==(void 0===t?"undefined":h(t))&&(e=""+t)}return e}},{key:"handleKeyDown",value:function(e){if(!(this.props.disabled||"function"==typeof this.props.onInputKeyDown&&(this.props.onInputKeyDown(e),e.defaultPrevented)))switch(e.keyCode){case 8:!this.state.inputValue&&this.props.backspaceRemoves&&(e.preventDefault(),this.popValue());break;case 9:if(e.shiftKey||!this.state.isOpen||!this.props.tabSelectsValue)break;e.preventDefault(),this.selectFocusedOption();break;case 13:e.preventDefault(),e.stopPropagation(),this.state.isOpen?this.selectFocusedOption():this.focusNextOption();break;case 27:e.preventDefault(),this.state.isOpen?(this.closeMenu(),e.stopPropagation()):this.props.clearable&&this.props.escapeClearsValue&&(this.clearValue(e),e.stopPropagation());break;case 32:if(this.props.searchable)break;if(e.preventDefault(),!this.state.isOpen){this.focusNextOption();break}e.stopPropagation(),this.selectFocusedOption();break;case 38:e.preventDefault(),this.focusPreviousOption();break;case 40:e.preventDefault(),this.focusNextOption();break;case 33:e.preventDefault(),this.focusPageUpOption();break;case 34:e.preventDefault(),this.focusPageDownOption();break;case 35:if(e.shiftKey)break;e.preventDefault(),this.focusEndOption();break;case 36:if(e.shiftKey)break;e.preventDefault(),this.focusStartOption();break;case 46:!this.state.inputValue&&this.props.deleteRemoves&&(e.preventDefault(),this.popValue())}}},{key:"handleValueClick",value:function(e,t){this.props.onValueClick&&this.props.onValueClick(e,t)}},{key:"handleMenuScroll",value:function(e){if(this.props.onMenuScrollToBottom){var t=e.target;t.scrollHeight>t.offsetHeight&&t.scrollHeight-t.offsetHeight-t.scrollTop<=0&&this.props.onMenuScrollToBottom()}}},{key:"getOptionLabel",value:function(e){return e[this.props.labelKey]}},{key:"getValueArray",value:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:void 0,n="object"===(void 0===t?"undefined":h(t))?t:this.props;if(n.multi){if("string"==typeof e&&(e=e.split(n.delimiter)),!Array.isArray(e)){if(null==e)return[];e=[e]}return e.map((function(e){return x(e,n)})).filter((function(e){return e}))}var r=x(e,n);return r?[r]:[]}},{key:"setValue",value:function(e){var t=this;if(this.props.autoBlur&&this.blurInput(),this.props.required){var n=U(e,this.props.multi);this.setState({required:n})}this.props.simpleValue&&e&&(e=this.props.multi?e.map((function(e){return e[t.props.valueKey]})).join(this.props.delimiter):e[this.props.valueKey]),this.props.onChange&&this.props.onChange(e)}},{key:"selectValue",value:function(e){var t=this;this.props.closeOnSelect&&(this.hasScrolledToOption=!1);var n=this.props.onSelectResetsInput?"":this.state.inputValue;this.props.multi?this.setState({focusedIndex:null,inputValue:this.handleInputValueChange(n),isOpen:!this.props.closeOnSelect},(function(){t.getValueArray(t.props.value).some((function(n){return n[t.props.valueKey]===e[t.props.valueKey]}))?t.removeValue(e):t.addValue(e)})):this.setState({inputValue:this.handleInputValueChange(n),isOpen:!this.props.closeOnSelect,isPseudoFocused:this.state.isFocused},(function(){t.setValue(e)}))}},{key:"addValue",value:function(e){var t=this.getValueArray(this.props.value),n=this._visibleOptions.filter((function(e){return!e.disabled})),r=n.indexOf(e);this.setValue(t.concat(e)),n.length-1===r?this.focusOption(n[r-1]):n.length>r&&this.focusOption(n[r+1])}},{key:"popValue",value:function(){var e=this.getValueArray(this.props.value);e.length&&!1!==e[e.length-1].clearableValue&&this.setValue(this.props.multi?e.slice(0,e.length-1):null)}},{key:"removeValue",value:function(e){var t=this,n=this.getValueArray(this.props.value);this.setValue(n.filter((function(n){return n[t.props.valueKey]!==e[t.props.valueKey]}))),this.focus()}},{key:"clearValue",value:function(e){e&&"mousedown"===e.type&&0!==e.button||(e.preventDefault(),this.setValue(this.getResetValue()),this.setState({inputValue:this.handleInputValueChange(""),isOpen:!1},this.focus),this._focusAfterClear=!0)}},{key:"getResetValue",value:function(){return void 0!==this.props.resetValue?this.props.resetValue:this.props.multi?[]:null}},{key:"focusOption",value:function(e){this.setState({focusedOption:e})}},{key:"focusNextOption",value:function(){this.focusAdjacentOption("next")}},{key:"focusPreviousOption",value:function(){this.focusAdjacentOption("previous")}},{key:"focusPageUpOption",value:function(){this.focusAdjacentOption("page_up")}},{key:"focusPageDownOption",value:function(){this.focusAdjacentOption("page_down")}},{key:"focusStartOption",value:function(){this.focusAdjacentOption("start")}},{key:"focusEndOption",value:function(){this.focusAdjacentOption("end")}},{key:"focusAdjacentOption",value:function(e){var t=this._visibleOptions.map((function(e,t){return{option:e,index:t}})).filter((function(e){return!e.option.disabled}));if(this._scrollToFocusedOptionOnUpdate=!0,!this.state.isOpen){var n={focusedOption:this._focusedOption||(t.length?t["next"===e?0:t.length-1].option:null),isOpen:!0};return this.props.onSelectResetsInput&&(n.inputValue=""),void this.setState(n)}if(t.length){for(var r=-1,i=0;i<t.length;i++)if(this._focusedOption===t[i].option){r=i;break}if("next"===e&&-1!==r)r=(r+1)%t.length;else if("previous"===e)r>0?r-=1:r=t.length-1;else if("start"===e)r=0;else if("end"===e)r=t.length-1;else if("page_up"===e){var o=r-this.props.pageSize;r=o<0?0:o}else if("page_down"===e){var a=r+this.props.pageSize;r=a>t.length-1?t.length-1:a}-1===r&&(r=0),this.setState({focusedIndex:t[r].index,focusedOption:t[r].option})}}},{key:"getFocusedOption",value:function(){return this._focusedOption}},{key:"selectFocusedOption",value:function(){if(this._focusedOption)return this.selectValue(this._focusedOption)}},{key:"renderLoading",value:function(){if(this.props.isLoading)return s().createElement("span",{className:"Select-loading-zone","aria-hidden":"true"},s().createElement("span",{className:"Select-loading"}))}},{key:"renderValue",value:function(e,t){var n=this,r=this.props.valueRenderer||this.getOptionLabel,i=this.props.valueComponent;if(!e.length){var o=function(e,t,n){var r=e.inputValue,i=e.isPseudoFocused,o=e.isFocused,a=t.onSelectResetsInput;return!r||!a&&!n&&!i&&!o}(this.state,this.props,t);return o?s().createElement("div",{className:"Select-placeholder"},this.props.placeholder):null}var a,c,l,u,g,d,I=this.props.onValueClick?this.handleValueClick:null;return this.props.multi?e.map((function(e,t){return s().createElement(i,{disabled:n.props.disabled||!1===e.clearableValue,id:n._instancePrefix+"-value-"+t,instancePrefix:n._instancePrefix,key:"value-"+t+"-"+e[n.props.valueKey],onClick:I,onRemove:n.removeValue,placeholder:n.props.placeholder,value:e},r(e,t),s().createElement("span",{className:"Select-aria-only"}," "))})):(a=this.state,c=this.props,l=a.inputValue,u=a.isPseudoFocused,g=a.isFocused,d=c.onSelectResetsInput,l&&(d||!g&&u||g&&!u)?void 0:(t&&(I=null),s().createElement(i,{disabled:this.props.disabled,id:this._instancePrefix+"-value-item",instancePrefix:this._instancePrefix,onClick:I,placeholder:this.props.placeholder,value:e[0]},r(e[0]))))}},{key:"renderInput",value:function(e,t){var n,i=this,a=o()("Select-input",this.props.inputProps.className),c=this.state.isOpen,l=o()((y(n={},this._instancePrefix+"-list",c),y(n,this._instancePrefix+"-backspace-remove-message",this.props.multi&&!this.props.disabled&&this.state.isFocused&&!this.state.inputValue),n)),u=this.state.inputValue;!u||this.props.onSelectResetsInput||this.state.isFocused||(u="");var g=f({},this.props.inputProps,{"aria-activedescendant":c?this._instancePrefix+"-option-"+t:this._instancePrefix+"-value","aria-describedby":this.props["aria-describedby"],"aria-expanded":""+c,"aria-haspopup":""+c,"aria-label":this.props["aria-label"],"aria-labelledby":this.props["aria-labelledby"],"aria-owns":l,className:a,onBlur:this.handleInputBlur,onChange:this.handleInputChange,onFocus:this.handleInputFocus,ref:function(e){return i.input=e},role:"combobox",required:this.state.required,tabIndex:this.props.tabIndex,value:u});if(this.props.inputRenderer)return this.props.inputRenderer(g);if(this.props.disabled||!this.props.searchable){var d=Q(this.props.inputProps,[]),I=o()(y({},this._instancePrefix+"-list",c));return s().createElement("div",f({},d,{"aria-expanded":c,"aria-owns":I,"aria-activedescendant":c?this._instancePrefix+"-option-"+t:this._instancePrefix+"-value","aria-disabled":""+this.props.disabled,"aria-label":this.props["aria-label"],"aria-labelledby":this.props["aria-labelledby"],className:a,onBlur:this.handleInputBlur,onFocus:this.handleInputFocus,ref:function(e){return i.input=e},role:"combobox",style:{border:0,width:1,display:"inline-block"},tabIndex:this.props.tabIndex||0}))}return this.props.autosize?s().createElement(r.A,f({id:this.props.id},g,{minWidth:"5"})):s().createElement("div",{className:a,key:"input-wrap",style:{display:"inline-block"}},s().createElement("input",f({id:this.props.id},g)))}},{key:"renderClear",value:function(){var e=this.getValueArray(this.props.value);if(this.props.clearable&&e.length&&!this.props.disabled&&!this.props.isLoading){var t=this.props.multi?this.props.clearAllText:this.props.clearValueText,n=this.props.clearRenderer();return s().createElement("span",{"aria-label":t,className:"Select-clear-zone",onMouseDown:this.clearValue,onTouchEnd:this.handleTouchEndClearValue,onTouchMove:this.handleTouchMove,onTouchStart:this.handleTouchStart,title:t},n)}}},{key:"renderArrow",value:function(){if(this.props.arrowRenderer){var e=this.handleMouseDownOnArrow,t=this.state.isOpen,n=this.props.arrowRenderer({onMouseDown:e,isOpen:t});return n?s().createElement("span",{className:"Select-arrow-zone",onMouseDown:e},n):null}}},{key:"filterOptions",value:function(e){var t=this.state.inputValue,n=this.props.options||[];return this.props.filterOptions?("function"==typeof this.props.filterOptions?this.props.filterOptions:b)(n,t,e,{filterOption:this.props.filterOption,ignoreAccents:this.props.ignoreAccents,ignoreCase:this.props.ignoreCase,labelKey:this.props.labelKey,matchPos:this.props.matchPos,matchProp:this.props.matchProp,trimFilter:this.props.trimFilter,valueKey:this.props.valueKey}):n}},{key:"onOptionRef",value:function(e,t){t&&(this.focused=e)}},{key:"renderMenu",value:function(e,t,n){return e&&e.length?this.props.menuRenderer({focusedOption:n,focusOption:this.focusOption,inputValue:this.state.inputValue,instancePrefix:this._instancePrefix,labelKey:this.props.labelKey,onFocus:this.focusOption,onOptionRef:this.onOptionRef,onSelect:this.selectValue,optionClassName:this.props.optionClassName,optionComponent:this.props.optionComponent,optionRenderer:this.props.optionRenderer||this.getOptionLabel,options:e,removeValue:this.removeValue,selectValue:this.selectValue,valueArray:t,valueKey:this.props.valueKey}):this.props.noResultsText?s().createElement("div",{className:"Select-noresults"},this.props.noResultsText):null}},{key:"renderHiddenField",value:function(e){var t=this;if(this.props.name){if(this.props.joinValues){var n=e.map((function(e){return E(e[t.props.valueKey])})).join(this.props.delimiter);return s().createElement("input",{disabled:this.props.disabled,name:this.props.name,ref:function(e){return t.value=e},type:"hidden",value:n})}return e.map((function(e,n){return s().createElement("input",{disabled:t.props.disabled,key:"hidden."+n,name:t.props.name,ref:"value"+n,type:"hidden",value:E(e[t.props.valueKey])})}))}}},{key:"getFocusableOptionIndex",value:function(e){var t=this._visibleOptions;if(!t.length)return null;var n=this.props.valueKey,r=this.state.focusedOption||e;if(r&&!r.disabled){var i=-1;if(t.some((function(e,t){var o=e[n]===r[n];return o&&(i=t),o})),-1!==i)return i}for(var o=0;o<t.length;o++)if(!t[o].disabled)return o;return null}},{key:"renderOuter",value:function(e,t,n){var r=this,i=this.renderMenu(e,t,n);return i?s().createElement("div",{ref:function(e){return r.menuContainer=e},className:"Select-menu-outer",style:this.props.menuContainerStyle},s().createElement("div",{className:"Select-menu",id:this._instancePrefix+"-list",onMouseDown:this.handleMouseDownOnMenu,onScroll:this.handleMenuScroll,ref:function(e){return r.menu=e},role:"listbox",style:this.props.menuStyle,tabIndex:-1},i)):null}},{key:"render",value:function(){var e=this,t=this.getValueArray(this.props.value),n=this._visibleOptions=this.filterOptions(this.props.multi&&this.props.removeSelected?t:null),r=this.state.isOpen;this.props.multi&&!n.length&&t.length&&!this.state.inputValue&&(r=!1);var i,a=this.getFocusableOptionIndex(t[0]);i=this._focusedOption=null!==a?n[a]:null;var c=o()("Select",this.props.className,{"has-value":t.length,"is-clearable":this.props.clearable,"is-disabled":this.props.disabled,"is-focused":this.state.isFocused,"is-loading":this.props.isLoading,"is-open":r,"is-pseudo-focused":this.state.isPseudoFocused,"is-searchable":this.props.searchable,"Select--multi":this.props.multi,"Select--rtl":this.props.rtl,"Select--single":!this.props.multi}),l=null;return this.props.multi&&!this.props.disabled&&t.length&&!this.state.inputValue&&this.state.isFocused&&this.props.backspaceRemoves&&(l=s().createElement("span",{id:this._instancePrefix+"-backspace-remove-message",className:"Select-aria-only","aria-live":"assertive"},this.props.backspaceToRemoveMessage.replace("{label}",t[t.length-1][this.props.labelKey]))),s().createElement("div",{ref:function(t){return e.wrapper=t},className:c,style:this.props.wrapperStyle},this.renderHiddenField(t),s().createElement("div",{ref:function(t){return e.control=t},className:"Select-control",onKeyDown:this.handleKeyDown,onMouseDown:this.handleMouseDown,onTouchEnd:this.handleTouchEnd,onTouchMove:this.handleTouchMove,onTouchStart:this.handleTouchStart,style:this.props.style},s().createElement("span",{className:"Select-multi-value-wrapper",id:this._instancePrefix+"-value"},this.renderValue(t,r),this.renderInput(t,a)),l,this.renderLoading(),this.renderClear(),this.renderArrow()),r?this.renderOuter(n,t,i):null)}}]),t}(s().Component);N.propTypes={"aria-describedby":c().string,"aria-label":c().string,"aria-labelledby":c().string,arrowRenderer:c().func,autoBlur:c().bool,autoFocus:c().bool,autofocus:c().bool,autosize:c().bool,backspaceRemoves:c().bool,backspaceToRemoveMessage:c().string,className:c().string,clearAllText:S,clearRenderer:c().func,clearValueText:S,clearable:c().bool,closeOnSelect:c().bool,deleteRemoves:c().bool,delimiter:c().string,disabled:c().bool,escapeClearsValue:c().bool,filterOption:c().func,filterOptions:c().any,id:c().string,ignoreAccents:c().bool,ignoreCase:c().bool,inputProps:c().object,inputRenderer:c().func,instanceId:c().string,isLoading:c().bool,joinValues:c().bool,labelKey:c().string,matchPos:c().string,matchProp:c().string,menuBuffer:c().number,menuContainerStyle:c().object,menuRenderer:c().func,menuStyle:c().object,multi:c().bool,name:c().string,noResultsText:S,onBlur:c().func,onBlurResetsInput:c().bool,onChange:c().func,onClose:c().func,onCloseResetsInput:c().bool,onFocus:c().func,onInputChange:c().func,onInputKeyDown:c().func,onMenuScrollToBottom:c().func,onOpen:c().func,onSelectResetsInput:c().bool,onValueClick:c().func,openOnClick:c().bool,openOnFocus:c().bool,optionClassName:c().string,optionComponent:c().func,optionRenderer:c().func,options:c().array,pageSize:c().number,placeholder:S,removeSelected:c().bool,required:c().bool,resetValue:c().any,rtl:c().bool,scrollMenuIntoView:c().bool,searchable:c().bool,simpleValue:c().bool,style:c().object,tabIndex:X,tabSelectsValue:c().bool,trimFilter:c().bool,value:c().any,valueComponent:c().func,valueKey:c().string,valueRenderer:c().func,wrapperStyle:c().object},N.defaultProps={arrowRenderer:g,autosize:!0,backspaceRemoves:!0,backspaceToRemoveMessage:"Press backspace to remove {label}",clearable:!0,clearAllText:"Clear all",clearRenderer:function(){return s().createElement("span",{className:"Select-clear",dangerouslySetInnerHTML:{__html:"&times;"}})},clearValueText:"Clear value",closeOnSelect:!0,deleteRemoves:!0,delimiter:",",disabled:!1,escapeClearsValue:!0,filterOptions:b,ignoreAccents:!0,ignoreCase:!0,inputProps:{},isLoading:!1,joinValues:!1,labelKey:"label",matchPos:"any",matchProp:"any",menuBuffer:0,menuRenderer:m,multi:!1,noResultsText:"No results found",onBlurResetsInput:!0,onCloseResetsInput:!0,onSelectResetsInput:!0,openOnClick:!0,optionComponent:v,pageSize:5,placeholder:"Select...",removeSelected:!0,required:!1,rtl:!1,scrollMenuIntoView:!0,searchable:!0,simpleValue:!1,tabSelectsValue:!0,trimFilter:!0,valueComponent:Z,valueKey:"value"};var R={autoload:c().bool.isRequired,cache:c().any,children:c().func.isRequired,ignoreAccents:c().bool,ignoreCase:c().bool,loadOptions:c().func.isRequired,loadingPlaceholder:c().oneOfType([c().string,c().node]),multi:c().bool,noResultsText:c().oneOfType([c().string,c().node]),onChange:c().func,onInputChange:c().func,options:c().array.isRequired,placeholder:c().oneOfType([c().string,c().node]),searchPromptText:c().oneOfType([c().string,c().node]),value:c().any},O={},V={autoload:!0,cache:O,children:function(e){return s().createElement(N,e)},ignoreAccents:!0,ignoreCase:!0,loadingPlaceholder:"Loading...",options:[],searchPromptText:"Type to search"},W=function(e){function t(e,n){B(this,t);var r=F(this,(t.__proto__||Object.getPrototypeOf(t)).call(this,e,n));return r._cache=e.cache===O?{}:e.cache,r.state={inputValue:"",isLoading:!1,options:e.options},r.onInputChange=r.onInputChange.bind(r),r}return G(t,e),A(t,[{key:"componentDidMount",value:function(){this.props.autoload&&this.loadOptions("")}},{key:"componentWillReceiveProps",value:function(e){e.options!==this.props.options&&this.setState({options:e.options})}},{key:"componentWillUnmount",value:function(){this._callback=null}},{key:"loadOptions",value:function(e){var t=this,n=this.props.loadOptions,r=this._cache;if(r&&Object.prototype.hasOwnProperty.call(r,e))return this._callback=null,void this.setState({isLoading:!1,options:r[e]});var i=function n(i,o){var a=o&&o.options||[];r&&(r[e]=a),n===t._callback&&(t._callback=null,t.setState({isLoading:!1,options:a}))};this._callback=i;var o=n(e,i);o&&o.then((function(e){return i(0,e)}),(function(e){return i()})),this._callback&&!this.state.isLoading&&this.setState({isLoading:!0})}},{key:"onInputChange",value:function(e){var t=this.props,n=t.ignoreAccents,r=t.ignoreCase,i=t.onInputChange,o=e;if(i){var a=i(o);null!=a&&"object"!==(void 0===a?"undefined":h(a))&&(o=""+a)}var c=o;return n&&(c=I(c)),r&&(c=c.toLowerCase()),this.setState({inputValue:o}),this.loadOptions(c),o}},{key:"noResultsText",value:function(){var e=this.props,t=e.loadingPlaceholder,n=e.noResultsText,r=e.searchPromptText,i=this.state,o=i.inputValue;return i.isLoading?t:o&&n?n:r}},{key:"focus",value:function(){this.select.focus()}},{key:"render",value:function(){var e=this,t=this.props,n=t.children,r=t.loadingPlaceholder,i=t.placeholder,o=this.state,a=o.isLoading,c=o.options,l={noResultsText:this.noResultsText(),placeholder:a?r:i,options:a&&r?[]:c,ref:function(t){return e.select=t}};return n(f({},this.props,l,{isLoading:a,onInputChange:this.onInputChange}))}}]),t}(l.Component);W.propTypes=R,W.defaultProps=V;var _=function(e){function t(e,n){B(this,t);var r=F(this,(t.__proto__||Object.getPrototypeOf(t)).call(this,e,n));return r.filterOptions=r.filterOptions.bind(r),r.menuRenderer=r.menuRenderer.bind(r),r.onInputKeyDown=r.onInputKeyDown.bind(r),r.onInputChange=r.onInputChange.bind(r),r.onOptionSelect=r.onOptionSelect.bind(r),r}return G(t,e),A(t,[{key:"createNewOption",value:function(){var e=this.props,t=e.isValidNewOption,n=e.newOptionCreator,r=e.onNewOptionClick,i=e.options,o=void 0===i?[]:i;if(t({label:this.inputValue})){var a=n({label:this.inputValue,labelKey:this.labelKey,valueKey:this.valueKey});this.isOptionUnique({option:a,options:o})&&(r?r(a):(o.unshift(a),this.select.selectValue(a)))}}},{key:"filterOptions",value:function(){var e=this.props,t=e.filterOptions,n=e.isValidNewOption,r=e.promptTextCreator,i=(arguments.length<=2?void 0:arguments[2])||[],o=t.apply(void 0,arguments)||[];if(n({label:this.inputValue})){var a=this.props.newOptionCreator,c=a({label:this.inputValue,labelKey:this.labelKey,valueKey:this.valueKey});if(this.isOptionUnique({option:c,options:i.concat(o)})){var l=r(this.inputValue);this._createPlaceholderOption=a({label:l,labelKey:this.labelKey,valueKey:this.valueKey}),o.unshift(this._createPlaceholderOption)}}return o}},{key:"isOptionUnique",value:function(e){var t=e.option,n=e.options,r=this.props.isOptionUnique;return n=n||this.props.options,r({labelKey:this.labelKey,option:t,options:n,valueKey:this.valueKey})}},{key:"menuRenderer",value:function(e){return(0,this.props.menuRenderer)(f({},e,{onSelect:this.onOptionSelect,selectValue:this.onOptionSelect}))}},{key:"onInputChange",value:function(e){var t=this.props.onInputChange;return this.inputValue=e,t&&(this.inputValue=t(e)),this.inputValue}},{key:"onInputKeyDown",value:function(e){var t=this.props,n=t.shouldKeyDownEventCreateNewOption,r=t.onInputKeyDown,i=this.select.getFocusedOption();i&&i===this._createPlaceholderOption&&n({keyCode:e.keyCode})?(this.createNewOption(),e.preventDefault()):r&&r(e)}},{key:"onOptionSelect",value:function(e){e===this._createPlaceholderOption?this.createNewOption():this.select.selectValue(e)}},{key:"focus",value:function(){this.select.focus()}},{key:"render",value:function(){var e=this,t=this.props,n=t.ref,r=Q(t,["ref"]),i=this.props.children;return i||(i=w),i(f({},r,{allowCreate:!0,filterOptions:this.filterOptions,menuRenderer:this.menuRenderer,onInputChange:this.onInputChange,onInputKeyDown:this.onInputKeyDown,ref:function(t){e.select=t,t&&(e.labelKey=t.props.labelKey,e.valueKey=t.props.valueKey),n&&n(t)}}))}}]),t}(s().Component),w=function(e){return s().createElement(N,e)},H=function(e){var t=e.option,n=e.options,r=e.labelKey,i=e.valueKey;return!n||!n.length||0===n.filter((function(e){return e[r]===t[r]||e[i]===t[i]})).length},Y=function(e){return!!e.label},k=function(e){var t=e.label,n=e.labelKey,r={};return r[e.valueKey]=t,r[n]=t,r.className="Select-create-option-placeholder",r},D=function(e){return'Create option "'+e+'"'},L=function(e){switch(e.keyCode){case 9:case 13:case 188:return!0;default:return!1}};_.isOptionUnique=H,_.isValidNewOption=Y,_.newOptionCreator=k,_.promptTextCreator=D,_.shouldKeyDownEventCreateNewOption=L,_.defaultProps={filterOptions:b,isOptionUnique:H,isValidNewOption:Y,menuRenderer:m,newOptionCreator:k,promptTextCreator:D,shouldKeyDownEventCreateNewOption:L},_.propTypes={children:c().func,filterOptions:c().any,isOptionUnique:c().func,isValidNewOption:c().func,menuRenderer:c().any,newOptionCreator:c().func,onInputChange:c().func,onInputKeyDown:c().func,onNewOptionClick:c().func,options:c().array,promptTextCreator:c().func,ref:c().func,shouldKeyDownEventCreateNewOption:c().func};var P=function(e){function t(){return B(this,t),F(this,(t.__proto__||Object.getPrototypeOf(t)).apply(this,arguments))}return G(t,e),A(t,[{key:"focus",value:function(){this.select.focus()}},{key:"render",value:function(){var e=this;return s().createElement(W,this.props,(function(t){var n=t.ref,r=Q(t,["ref"]),i=n;return s().createElement(_,r,(function(t){var n=t.ref,r=Q(t,["ref"]),o=n;return e.props.children(f({},r,{ref:function(t){o(t),i(t),e.select=t}}))}))}))}}]),t}(s().Component);P.propTypes={children:c().func.isRequired},P.defaultProps={children:function(e){return s().createElement(N,e)}},N.Async=W,N.AsyncCreatable=P,N.Creatable=_,N.Value=Z,N.Option=v;const J=N},9223:(e,t,n)=>{"use strict";function r(e){return r="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},r(e)}Object.defineProperty(t,"__esModule",{value:!0}),t.PrevArrow=t.NextArrow=void 0;var i=c(n(5927)),o=c(n(6942)),a=n(9445);function c(e){return e&&e.__esModule?e:{default:e}}function l(){return l=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},l.apply(this,arguments)}function s(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function u(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?s(Object(n),!0).forEach((function(t){g(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):s(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function g(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function d(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function I(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}function p(e,t,n){return t&&I(e.prototype,t),n&&I(e,n),Object.defineProperty(e,"prototype",{writable:!1}),e}function b(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function");e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,writable:!0,configurable:!0}}),Object.defineProperty(e,"prototype",{writable:!1}),t&&m(e,t)}function m(e,t){return m=Object.setPrototypeOf||function(e,t){return e.__proto__=t,e},m(e,t)}function C(e){var t=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(e){return!1}}();return function(){var n,i=h(e);if(t){var o=h(this).constructor;n=Reflect.construct(i,arguments,o)}else n=i.apply(this,arguments);return function(e,t){if(t&&("object"===r(t)||"function"==typeof t))return t;if(void 0!==t)throw new TypeError("Derived constructors may only return object or undefined");return function(e){if(void 0===e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e}(e)}(this,n)}}function h(e){return h=Object.setPrototypeOf?Object.getPrototypeOf:function(e){return e.__proto__||Object.getPrototypeOf(e)},h(e)}var B=function(e){b(n,e);var t=C(n);function n(){return d(this,n),t.apply(this,arguments)}return p(n,[{key:"clickHandler",value:function(e,t){t&&t.preventDefault(),this.props.clickHandler(e,t)}},{key:"render",value:function(){var e={"slick-arrow":!0,"slick-prev":!0},t=this.clickHandler.bind(this,{message:"previous"});!this.props.infinite&&(0===this.props.currentSlide||this.props.slideCount<=this.props.slidesToShow)&&(e["slick-disabled"]=!0,t=null);var n={key:"0","data-role":"none",className:(0,o.default)(e),style:{display:"block"},onClick:t},r={currentSlide:this.props.currentSlide,slideCount:this.props.slideCount};return this.props.prevArrow?i.default.cloneElement(this.props.prevArrow,u(u({},n),r)):i.default.createElement("button",l({key:"0",type:"button"},n)," ","Previous")}}]),n}(i.default.PureComponent);t.PrevArrow=B;var A=function(e){b(n,e);var t=C(n);function n(){return d(this,n),t.apply(this,arguments)}return p(n,[{key:"clickHandler",value:function(e,t){t&&t.preventDefault(),this.props.clickHandler(e,t)}},{key:"render",value:function(){var e={"slick-arrow":!0,"slick-next":!0},t=this.clickHandler.bind(this,{message:"next"});(0,a.canGoNext)(this.props)||(e["slick-disabled"]=!0,t=null);var n={key:"1","data-role":"none",className:(0,o.default)(e),style:{display:"block"},onClick:t},r={currentSlide:this.props.currentSlide,slideCount:this.props.slideCount};return this.props.nextArrow?i.default.cloneElement(this.props.nextArrow,u(u({},n),r)):i.default.createElement("button",l({key:"1",type:"button"},n)," ","Next")}}]),n}(i.default.PureComponent);t.NextArrow=A},1327:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var r,i=(r=n(5927))&&r.__esModule?r:{default:r},o={accessibility:!0,adaptiveHeight:!1,afterChange:null,appendDots:function(e){return i.default.createElement("ul",{style:{display:"block"}},e)},arrows:!0,autoplay:!1,autoplaySpeed:3e3,beforeChange:null,centerMode:!1,centerPadding:"50px",className:"",cssEase:"ease",customPaging:function(e){return i.default.createElement("button",null,e+1)},dots:!1,dotsClass:"slick-dots",draggable:!0,easing:"linear",edgeFriction:.35,fade:!1,focusOnSelect:!1,infinite:!0,initialSlide:0,lazyLoad:null,nextArrow:null,onEdge:null,onInit:null,onLazyLoadError:null,onReInit:null,pauseOnDotsHover:!1,pauseOnFocus:!1,pauseOnHover:!0,prevArrow:null,responsive:null,rows:1,rtl:!1,slide:"div",slidesPerRow:1,slidesToScroll:1,slidesToShow:1,speed:500,swipe:!0,swipeEvent:null,swipeToSlide:!1,touchMove:!0,touchThreshold:5,useCSS:!0,useTransform:!0,variableWidth:!1,vertical:!1,waitForAnimate:!0};t.default=o},773:(e,t,n)=>{"use strict";function r(e){return r="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},r(e)}Object.defineProperty(t,"__esModule",{value:!0}),t.Dots=void 0;var i=c(n(5927)),o=c(n(6942)),a=n(9445);function c(e){return e&&e.__esModule?e:{default:e}}function l(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function s(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function u(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}function g(e,t){return g=Object.setPrototypeOf||function(e,t){return e.__proto__=t,e},g(e,t)}function d(e){var t=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(e){return!1}}();return function(){var n,i=I(e);if(t){var o=I(this).constructor;n=Reflect.construct(i,arguments,o)}else n=i.apply(this,arguments);return function(e,t){if(t&&("object"===r(t)||"function"==typeof t))return t;if(void 0!==t)throw new TypeError("Derived constructors may only return object or undefined");return function(e){if(void 0===e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e}(e)}(this,n)}}function I(e){return I=Object.setPrototypeOf?Object.getPrototypeOf:function(e){return e.__proto__||Object.getPrototypeOf(e)},I(e)}var p=function(e){!function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function");e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,writable:!0,configurable:!0}}),Object.defineProperty(e,"prototype",{writable:!1}),t&&g(e,t)}(c,e);var t,n,r=d(c);function c(){return function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,c),r.apply(this,arguments)}return t=c,n=[{key:"clickHandler",value:function(e,t){t.preventDefault(),this.props.clickHandler(e)}},{key:"render",value:function(){for(var e,t=this.props,n=t.onMouseEnter,r=t.onMouseOver,c=t.onMouseLeave,u=t.infinite,g=t.slidesToScroll,d=t.slidesToShow,I=t.slideCount,p=t.currentSlide,b=(e={slideCount:I,slidesToScroll:g,slidesToShow:d,infinite:u}).infinite?Math.ceil(e.slideCount/e.slidesToScroll):Math.ceil((e.slideCount-e.slidesToShow)/e.slidesToScroll)+1,m={onMouseEnter:n,onMouseOver:r,onMouseLeave:c},C=[],h=0;h<b;h++){var B=(h+1)*g-1,A=u?B:(0,a.clamp)(B,0,I-1),y=A-(g-1),f=u?y:(0,a.clamp)(y,0,I-1),G=(0,o.default)({"slick-active":u?p>=f&&p<=A:p===f}),Q={message:"dots",index:h,slidesToScroll:g,currentSlide:p},F=this.clickHandler.bind(this,Q);C=C.concat(i.default.createElement("li",{key:h,className:G},i.default.cloneElement(this.props.customPaging(h),{onClick:F})))}return i.default.cloneElement(this.props.appendDots(C),function(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?l(Object(n),!0).forEach((function(t){s(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):l(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}({className:this.props.dotsClass},m))}}],n&&u(t.prototype,n),Object.defineProperty(t,"prototype",{writable:!1}),c}(i.default.PureComponent);t.Dots=p},4589:(e,t,n)=>{"use strict";var r;t.A=void 0;var i=((r=n(8120))&&r.__esModule?r:{default:r}).default;t.A=i},8841:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;t.default={animating:!1,autoplaying:null,currentDirection:0,currentLeft:null,currentSlide:0,direction:1,dragging:!1,edgeDragged:!1,initialized:!1,lazyLoadedList:[],listHeight:null,listWidth:null,scrolling:!1,slideCount:null,slideHeight:null,slideWidth:null,swipeLeft:null,swiped:!1,swiping:!1,touchObject:{startX:0,startY:0,curX:0,curY:0},trackStyle:{},trackWidth:0,targetSlide:0}},4999:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.InnerSlider=void 0;var r=d(n(5927)),i=d(n(8841)),o=d(n(181)),a=d(n(6942)),c=n(9445),l=n(5942),s=n(773),u=n(9223),g=d(n(3591));function d(e){return e&&e.__esModule?e:{default:e}}function I(e){return I="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},I(e)}function p(){return p=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},p.apply(this,arguments)}function b(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function m(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?b(Object(n),!0).forEach((function(t){f(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):b(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function C(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}function h(e,t){return h=Object.setPrototypeOf||function(e,t){return e.__proto__=t,e},h(e,t)}function B(e){var t=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(e){return!1}}();return function(){var n,r=y(e);if(t){var i=y(this).constructor;n=Reflect.construct(r,arguments,i)}else n=r.apply(this,arguments);return function(e,t){if(t&&("object"===I(t)||"function"==typeof t))return t;if(void 0!==t)throw new TypeError("Derived constructors may only return object or undefined");return A(e)}(this,n)}}function A(e){if(void 0===e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e}function y(e){return y=Object.setPrototypeOf?Object.getPrototypeOf:function(e){return e.__proto__||Object.getPrototypeOf(e)},y(e)}function f(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}var G=function(e){!function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function");e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,writable:!0,configurable:!0}}),Object.defineProperty(e,"prototype",{writable:!1}),t&&h(e,t)}(b,e);var t,n,d=B(b);function b(e){var t;!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,b),f(A(t=d.call(this,e)),"listRefHandler",(function(e){return t.list=e})),f(A(t),"trackRefHandler",(function(e){return t.track=e})),f(A(t),"adaptHeight",(function(){if(t.props.adaptiveHeight&&t.list){var e=t.list.querySelector('[data-index="'.concat(t.state.currentSlide,'"]'));t.list.style.height=(0,c.getHeight)(e)+"px"}})),f(A(t),"componentDidMount",(function(){if(t.props.onInit&&t.props.onInit(),t.props.lazyLoad){var e=(0,c.getOnDemandLazySlides)(m(m({},t.props),t.state));e.length>0&&(t.setState((function(t){return{lazyLoadedList:t.lazyLoadedList.concat(e)}})),t.props.onLazyLoad&&t.props.onLazyLoad(e))}var n=m({listRef:t.list,trackRef:t.track},t.props);t.updateState(n,!0,(function(){t.adaptHeight(),t.props.autoplay&&t.autoPlay("update")})),"progressive"===t.props.lazyLoad&&(t.lazyLoadTimer=setInterval(t.progressiveLazyLoad,1e3)),t.ro=new g.default((function(){t.state.animating?(t.onWindowResized(!1),t.callbackTimers.push(setTimeout((function(){return t.onWindowResized()}),t.props.speed))):t.onWindowResized()})),t.ro.observe(t.list),document.querySelectorAll&&Array.prototype.forEach.call(document.querySelectorAll(".slick-slide"),(function(e){e.onfocus=t.props.pauseOnFocus?t.onSlideFocus:null,e.onblur=t.props.pauseOnFocus?t.onSlideBlur:null})),window.addEventListener?window.addEventListener("resize",t.onWindowResized):window.attachEvent("onresize",t.onWindowResized)})),f(A(t),"componentWillUnmount",(function(){t.animationEndCallback&&clearTimeout(t.animationEndCallback),t.lazyLoadTimer&&clearInterval(t.lazyLoadTimer),t.callbackTimers.length&&(t.callbackTimers.forEach((function(e){return clearTimeout(e)})),t.callbackTimers=[]),window.addEventListener?window.removeEventListener("resize",t.onWindowResized):window.detachEvent("onresize",t.onWindowResized),t.autoplayTimer&&clearInterval(t.autoplayTimer),t.ro.disconnect()})),f(A(t),"componentDidUpdate",(function(e){if(t.checkImagesLoad(),t.props.onReInit&&t.props.onReInit(),t.props.lazyLoad){var n=(0,c.getOnDemandLazySlides)(m(m({},t.props),t.state));n.length>0&&(t.setState((function(e){return{lazyLoadedList:e.lazyLoadedList.concat(n)}})),t.props.onLazyLoad&&t.props.onLazyLoad(n))}t.adaptHeight();var i=m(m({listRef:t.list,trackRef:t.track},t.props),t.state),o=t.didPropsChange(e);o&&t.updateState(i,o,(function(){t.state.currentSlide>=r.default.Children.count(t.props.children)&&t.changeSlide({message:"index",index:r.default.Children.count(t.props.children)-t.props.slidesToShow,currentSlide:t.state.currentSlide}),t.props.autoplay?t.autoPlay("update"):t.pause("paused")}))})),f(A(t),"onWindowResized",(function(e){t.debouncedResize&&t.debouncedResize.cancel(),t.debouncedResize=(0,o.default)((function(){return t.resizeWindow(e)}),50),t.debouncedResize()})),f(A(t),"resizeWindow",(function(){var e=!(arguments.length>0&&void 0!==arguments[0])||arguments[0];if(Boolean(t.track&&t.track.node)){var n=m(m({listRef:t.list,trackRef:t.track},t.props),t.state);t.updateState(n,e,(function(){t.props.autoplay?t.autoPlay("update"):t.pause("paused")})),t.setState({animating:!1}),clearTimeout(t.animationEndCallback),delete t.animationEndCallback}})),f(A(t),"updateState",(function(e,n,i){var o=(0,c.initializedState)(e);e=m(m(m({},e),o),{},{slideIndex:o.currentSlide});var a=(0,c.getTrackLeft)(e);e=m(m({},e),{},{left:a});var l=(0,c.getTrackCSS)(e);(n||r.default.Children.count(t.props.children)!==r.default.Children.count(e.children))&&(o.trackStyle=l),t.setState(o,i)})),f(A(t),"ssrInit",(function(){if(t.props.variableWidth){var e=0,n=0,i=[],o=(0,c.getPreClones)(m(m(m({},t.props),t.state),{},{slideCount:t.props.children.length})),a=(0,c.getPostClones)(m(m(m({},t.props),t.state),{},{slideCount:t.props.children.length}));t.props.children.forEach((function(t){i.push(t.props.style.width),e+=t.props.style.width}));for(var l=0;l<o;l++)n+=i[i.length-1-l],e+=i[i.length-1-l];for(var s=0;s<a;s++)e+=i[s];for(var u=0;u<t.state.currentSlide;u++)n+=i[u];var g={width:e+"px",left:-n+"px"};if(t.props.centerMode){var d="".concat(i[t.state.currentSlide],"px");g.left="calc(".concat(g.left," + (100% - ").concat(d,") / 2 ) ")}return{trackStyle:g}}var I=r.default.Children.count(t.props.children),p=m(m(m({},t.props),t.state),{},{slideCount:I}),b=(0,c.getPreClones)(p)+(0,c.getPostClones)(p)+I,C=100/t.props.slidesToShow*b,h=100/b,B=-h*((0,c.getPreClones)(p)+t.state.currentSlide)*C/100;return t.props.centerMode&&(B+=(100-h*C/100)/2),{slideWidth:h+"%",trackStyle:{width:C+"%",left:B+"%"}}})),f(A(t),"checkImagesLoad",(function(){var e=t.list&&t.list.querySelectorAll&&t.list.querySelectorAll(".slick-slide img")||[],n=e.length,r=0;Array.prototype.forEach.call(e,(function(e){var i=function(){return++r&&r>=n&&t.onWindowResized()};if(e.onclick){var o=e.onclick;e.onclick=function(){o(),e.parentNode.focus()}}else e.onclick=function(){return e.parentNode.focus()};e.onload||(t.props.lazyLoad?e.onload=function(){t.adaptHeight(),t.callbackTimers.push(setTimeout(t.onWindowResized,t.props.speed))}:(e.onload=i,e.onerror=function(){i(),t.props.onLazyLoadError&&t.props.onLazyLoadError()}))}))})),f(A(t),"progressiveLazyLoad",(function(){for(var e=[],n=m(m({},t.props),t.state),r=t.state.currentSlide;r<t.state.slideCount+(0,c.getPostClones)(n);r++)if(t.state.lazyLoadedList.indexOf(r)<0){e.push(r);break}for(var i=t.state.currentSlide-1;i>=-(0,c.getPreClones)(n);i--)if(t.state.lazyLoadedList.indexOf(i)<0){e.push(i);break}e.length>0?(t.setState((function(t){return{lazyLoadedList:t.lazyLoadedList.concat(e)}})),t.props.onLazyLoad&&t.props.onLazyLoad(e)):t.lazyLoadTimer&&(clearInterval(t.lazyLoadTimer),delete t.lazyLoadTimer)})),f(A(t),"slideHandler",(function(e){var n=arguments.length>1&&void 0!==arguments[1]&&arguments[1],r=t.props,i=r.asNavFor,o=r.beforeChange,a=r.onLazyLoad,l=r.speed,s=r.afterChange,u=t.state.currentSlide,g=(0,c.slideHandler)(m(m(m({index:e},t.props),t.state),{},{trackRef:t.track,useCSS:t.props.useCSS&&!n})),d=g.state,I=g.nextState;if(d){o&&o(u,d.currentSlide);var p=d.lazyLoadedList.filter((function(e){return t.state.lazyLoadedList.indexOf(e)<0}));a&&p.length>0&&a(p),!t.props.waitForAnimate&&t.animationEndCallback&&(clearTimeout(t.animationEndCallback),s&&s(u),delete t.animationEndCallback),t.setState(d,(function(){i&&t.asNavForIndex!==e&&(t.asNavForIndex=e,i.innerSlider.slideHandler(e)),I&&(t.animationEndCallback=setTimeout((function(){var e=I.animating,n=function(e,t){if(null==e)return{};var n,r,i=function(e,t){if(null==e)return{};var n,r,i={},o=Object.keys(e);for(r=0;r<o.length;r++)n=o[r],t.indexOf(n)>=0||(i[n]=e[n]);return i}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(r=0;r<o.length;r++)n=o[r],t.indexOf(n)>=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(i[n]=e[n])}return i}(I,["animating"]);t.setState(n,(function(){t.callbackTimers.push(setTimeout((function(){return t.setState({animating:e})}),10)),s&&s(d.currentSlide),delete t.animationEndCallback}))}),l))}))}})),f(A(t),"changeSlide",(function(e){var n=arguments.length>1&&void 0!==arguments[1]&&arguments[1],r=m(m({},t.props),t.state),i=(0,c.changeSlide)(r,e);if((0===i||i)&&(!0===n?t.slideHandler(i,n):t.slideHandler(i),t.props.autoplay&&t.autoPlay("update"),t.props.focusOnSelect)){var o=t.list.querySelectorAll(".slick-current");o[0]&&o[0].focus()}})),f(A(t),"clickHandler",(function(e){!1===t.clickable&&(e.stopPropagation(),e.preventDefault()),t.clickable=!0})),f(A(t),"keyHandler",(function(e){var n=(0,c.keyHandler)(e,t.props.accessibility,t.props.rtl);""!==n&&t.changeSlide({message:n})})),f(A(t),"selectHandler",(function(e){t.changeSlide(e)})),f(A(t),"disableBodyScroll",(function(){window.ontouchmove=function(e){(e=e||window.event).preventDefault&&e.preventDefault(),e.returnValue=!1}})),f(A(t),"enableBodyScroll",(function(){window.ontouchmove=null})),f(A(t),"swipeStart",(function(e){t.props.verticalSwiping&&t.disableBodyScroll();var n=(0,c.swipeStart)(e,t.props.swipe,t.props.draggable);""!==n&&t.setState(n)})),f(A(t),"swipeMove",(function(e){var n=(0,c.swipeMove)(e,m(m(m({},t.props),t.state),{},{trackRef:t.track,listRef:t.list,slideIndex:t.state.currentSlide}));n&&(n.swiping&&(t.clickable=!1),t.setState(n))})),f(A(t),"swipeEnd",(function(e){var n=(0,c.swipeEnd)(e,m(m(m({},t.props),t.state),{},{trackRef:t.track,listRef:t.list,slideIndex:t.state.currentSlide}));if(n){var r=n.triggerSlideHandler;delete n.triggerSlideHandler,t.setState(n),void 0!==r&&(t.slideHandler(r),t.props.verticalSwiping&&t.enableBodyScroll())}})),f(A(t),"touchEnd",(function(e){t.swipeEnd(e),t.clickable=!0})),f(A(t),"slickPrev",(function(){t.callbackTimers.push(setTimeout((function(){return t.changeSlide({message:"previous"})}),0))})),f(A(t),"slickNext",(function(){t.callbackTimers.push(setTimeout((function(){return t.changeSlide({message:"next"})}),0))})),f(A(t),"slickGoTo",(function(e){var n=arguments.length>1&&void 0!==arguments[1]&&arguments[1];if(e=Number(e),isNaN(e))return"";t.callbackTimers.push(setTimeout((function(){return t.changeSlide({message:"index",index:e,currentSlide:t.state.currentSlide},n)}),0))})),f(A(t),"play",(function(){var e;if(t.props.rtl)e=t.state.currentSlide-t.props.slidesToScroll;else{if(!(0,c.canGoNext)(m(m({},t.props),t.state)))return!1;e=t.state.currentSlide+t.props.slidesToScroll}t.slideHandler(e)})),f(A(t),"autoPlay",(function(e){t.autoplayTimer&&clearInterval(t.autoplayTimer);var n=t.state.autoplaying;if("update"===e){if("hovered"===n||"focused"===n||"paused"===n)return}else if("leave"===e){if("paused"===n||"focused"===n)return}else if("blur"===e&&("paused"===n||"hovered"===n))return;t.autoplayTimer=setInterval(t.play,t.props.autoplaySpeed+50),t.setState({autoplaying:"playing"})})),f(A(t),"pause",(function(e){t.autoplayTimer&&(clearInterval(t.autoplayTimer),t.autoplayTimer=null);var n=t.state.autoplaying;"paused"===e?t.setState({autoplaying:"paused"}):"focused"===e?"hovered"!==n&&"playing"!==n||t.setState({autoplaying:"focused"}):"playing"===n&&t.setState({autoplaying:"hovered"})})),f(A(t),"onDotsOver",(function(){return t.props.autoplay&&t.pause("hovered")})),f(A(t),"onDotsLeave",(function(){return t.props.autoplay&&"hovered"===t.state.autoplaying&&t.autoPlay("leave")})),f(A(t),"onTrackOver",(function(){return t.props.autoplay&&t.pause("hovered")})),f(A(t),"onTrackLeave",(function(){return t.props.autoplay&&"hovered"===t.state.autoplaying&&t.autoPlay("leave")})),f(A(t),"onSlideFocus",(function(){return t.props.autoplay&&t.pause("focused")})),f(A(t),"onSlideBlur",(function(){return t.props.autoplay&&"focused"===t.state.autoplaying&&t.autoPlay("blur")})),f(A(t),"render",(function(){var e,n,i,o=(0,a.default)("slick-slider",t.props.className,{"slick-vertical":t.props.vertical,"slick-initialized":!0}),g=m(m({},t.props),t.state),d=(0,c.extractObject)(g,["fade","cssEase","speed","infinite","centerMode","focusOnSelect","currentSlide","lazyLoad","lazyLoadedList","rtl","slideWidth","slideHeight","listHeight","vertical","slidesToShow","slidesToScroll","slideCount","trackStyle","variableWidth","unslick","centerPadding","targetSlide","useCSS"]),I=t.props.pauseOnHover;if(d=m(m({},d),{},{onMouseEnter:I?t.onTrackOver:null,onMouseLeave:I?t.onTrackLeave:null,onMouseOver:I?t.onTrackOver:null,focusOnSelect:t.props.focusOnSelect&&t.clickable?t.selectHandler:null}),!0===t.props.dots&&t.state.slideCount>=t.props.slidesToShow){var b=(0,c.extractObject)(g,["dotsClass","slideCount","slidesToShow","currentSlide","slidesToScroll","clickHandler","children","customPaging","infinite","appendDots"]),C=t.props.pauseOnDotsHover;b=m(m({},b),{},{clickHandler:t.changeSlide,onMouseEnter:C?t.onDotsLeave:null,onMouseOver:C?t.onDotsOver:null,onMouseLeave:C?t.onDotsLeave:null}),e=r.default.createElement(s.Dots,b)}var h=(0,c.extractObject)(g,["infinite","centerMode","currentSlide","slideCount","slidesToShow","prevArrow","nextArrow"]);h.clickHandler=t.changeSlide,t.props.arrows&&(n=r.default.createElement(u.PrevArrow,h),i=r.default.createElement(u.NextArrow,h));var B=null;t.props.vertical&&(B={height:t.state.listHeight});var A=null;!1===t.props.vertical?!0===t.props.centerMode&&(A={padding:"0px "+t.props.centerPadding}):!0===t.props.centerMode&&(A={padding:t.props.centerPadding+" 0px"});var y=m(m({},B),A),f=t.props.touchMove,G={className:"slick-list",style:y,onClick:t.clickHandler,onMouseDown:f?t.swipeStart:null,onMouseMove:t.state.dragging&&f?t.swipeMove:null,onMouseUp:f?t.swipeEnd:null,onMouseLeave:t.state.dragging&&f?t.swipeEnd:null,onTouchStart:f?t.swipeStart:null,onTouchMove:t.state.dragging&&f?t.swipeMove:null,onTouchEnd:f?t.touchEnd:null,onTouchCancel:t.state.dragging&&f?t.swipeEnd:null,onKeyDown:t.props.accessibility?t.keyHandler:null},Q={className:o,dir:"ltr",style:t.props.style};return t.props.unslick&&(G={className:"slick-list"},Q={className:o}),r.default.createElement("div",Q,t.props.unslick?"":n,r.default.createElement("div",p({ref:t.listRefHandler},G),r.default.createElement(l.Track,p({ref:t.trackRefHandler},d),t.props.children)),t.props.unslick?"":i,t.props.unslick?"":e)})),t.list=null,t.track=null,t.state=m(m({},i.default),{},{currentSlide:t.props.initialSlide,slideCount:r.default.Children.count(t.props.children)}),t.callbackTimers=[],t.clickable=!0,t.debouncedResize=null;var n=t.ssrInit();return t.state=m(m({},t.state),n),t}return t=b,(n=[{key:"didPropsChange",value:function(e){for(var t=!1,n=0,i=Object.keys(this.props);n<i.length;n++){var o=i[n];if(!e.hasOwnProperty(o)){t=!0;break}if("object"!==I(e[o])&&"function"!=typeof e[o]&&e[o]!==this.props[o]){t=!0;break}}return t||r.default.Children.count(this.props.children)!==r.default.Children.count(e.children)}}])&&C(t.prototype,n),Object.defineProperty(t,"prototype",{writable:!1}),b}(r.default.Component);t.InnerSlider=G},8120:(e,t,n)=>{"use strict";function r(e){return r="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},r(e)}Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var i=s(n(5927)),o=n(4999),a=s(n(1441)),c=s(n(1327)),l=n(9445);function s(e){return e&&e.__esModule?e:{default:e}}function u(){return u=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},u.apply(this,arguments)}function g(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function d(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?g(Object(n),!0).forEach((function(t){h(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):g(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function I(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}function p(e,t){return p=Object.setPrototypeOf||function(e,t){return e.__proto__=t,e},p(e,t)}function b(e){var t=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(e){return!1}}();return function(){var n,i=C(e);if(t){var o=C(this).constructor;n=Reflect.construct(i,arguments,o)}else n=i.apply(this,arguments);return function(e,t){if(t&&("object"===r(t)||"function"==typeof t))return t;if(void 0!==t)throw new TypeError("Derived constructors may only return object or undefined");return m(e)}(this,n)}}function m(e){if(void 0===e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e}function C(e){return C=Object.setPrototypeOf?Object.getPrototypeOf:function(e){return e.__proto__||Object.getPrototypeOf(e)},C(e)}function h(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}var B=(0,l.canUseDOM)()&&n(2386),A=function(e){!function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function");e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,writable:!0,configurable:!0}}),Object.defineProperty(e,"prototype",{writable:!1}),t&&p(e,t)}(s,e);var t,n,r=b(s);function s(e){var t;return function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,s),h(m(t=r.call(this,e)),"innerSliderRefHandler",(function(e){return t.innerSlider=e})),h(m(t),"slickPrev",(function(){return t.innerSlider.slickPrev()})),h(m(t),"slickNext",(function(){return t.innerSlider.slickNext()})),h(m(t),"slickGoTo",(function(e){var n=arguments.length>1&&void 0!==arguments[1]&&arguments[1];return t.innerSlider.slickGoTo(e,n)})),h(m(t),"slickPause",(function(){return t.innerSlider.pause("paused")})),h(m(t),"slickPlay",(function(){return t.innerSlider.autoPlay("play")})),t.state={breakpoint:null},t._responsiveMediaHandlers=[],t}return t=s,(n=[{key:"media",value:function(e,t){B.register(e,t),this._responsiveMediaHandlers.push({query:e,handler:t})}},{key:"componentDidMount",value:function(){var e=this;if(this.props.responsive){var t=this.props.responsive.map((function(e){return e.breakpoint}));t.sort((function(e,t){return e-t})),t.forEach((function(n,r){var i;i=0===r?(0,a.default)({minWidth:0,maxWidth:n}):(0,a.default)({minWidth:t[r-1]+1,maxWidth:n}),(0,l.canUseDOM)()&&e.media(i,(function(){e.setState({breakpoint:n})}))}));var n=(0,a.default)({minWidth:t.slice(-1)[0]});(0,l.canUseDOM)()&&this.media(n,(function(){e.setState({breakpoint:null})}))}}},{key:"componentWillUnmount",value:function(){this._responsiveMediaHandlers.forEach((function(e){B.unregister(e.query,e.handler)}))}},{key:"render",value:function(){var e,t,n=this;(e=this.state.breakpoint?"unslick"===(t=this.props.responsive.filter((function(e){return e.breakpoint===n.state.breakpoint})))[0].settings?"unslick":d(d(d({},c.default),this.props),t[0].settings):d(d({},c.default),this.props)).centerMode&&(e.slidesToScroll,e.slidesToScroll=1),e.fade&&(e.slidesToShow,e.slidesToScroll,e.slidesToShow=1,e.slidesToScroll=1);var r=i.default.Children.toArray(this.props.children);r=r.filter((function(e){return"string"==typeof e?!!e.trim():!!e})),e.variableWidth&&(e.rows>1||e.slidesPerRow>1)&&(console.warn("variableWidth is not supported in case of rows > 1 or slidesPerRow > 1"),e.variableWidth=!1);for(var a=[],l=null,s=0;s<r.length;s+=e.rows*e.slidesPerRow){for(var g=[],I=s;I<s+e.rows*e.slidesPerRow;I+=e.slidesPerRow){for(var p=[],b=I;b<I+e.slidesPerRow&&(e.variableWidth&&r[b].props.style&&(l=r[b].props.style.width),!(b>=r.length));b+=1)p.push(i.default.cloneElement(r[b],{key:100*s+10*I+b,tabIndex:-1,style:{width:"".concat(100/e.slidesPerRow,"%"),display:"inline-block"}}));g.push(i.default.createElement("div",{key:10*s+I},p))}e.variableWidth?a.push(i.default.createElement("div",{key:s,style:{width:l}},g)):a.push(i.default.createElement("div",{key:s},g))}if("unslick"===e){var m="regular slider "+(this.props.className||"");return i.default.createElement("div",{className:m},r)}return a.length<=e.slidesToShow&&(e.unslick=!0),i.default.createElement(o.InnerSlider,u({style:this.props.style,ref:this.innerSliderRefHandler},e),a)}}])&&I(t.prototype,n),Object.defineProperty(t,"prototype",{writable:!1}),s}(i.default.Component);t.default=A},5942:(e,t,n)=>{"use strict";function r(e){return r="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},r(e)}Object.defineProperty(t,"__esModule",{value:!0}),t.Track=void 0;var i=c(n(5927)),o=c(n(6942)),a=n(9445);function c(e){return e&&e.__esModule?e:{default:e}}function l(){return l=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},l.apply(this,arguments)}function s(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}function u(e,t){return u=Object.setPrototypeOf||function(e,t){return e.__proto__=t,e},u(e,t)}function g(e){var t=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(e){return!1}}();return function(){var n,i=I(e);if(t){var o=I(this).constructor;n=Reflect.construct(i,arguments,o)}else n=i.apply(this,arguments);return function(e,t){if(t&&("object"===r(t)||"function"==typeof t))return t;if(void 0!==t)throw new TypeError("Derived constructors may only return object or undefined");return d(e)}(this,n)}}function d(e){if(void 0===e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e}function I(e){return I=Object.setPrototypeOf?Object.getPrototypeOf:function(e){return e.__proto__||Object.getPrototypeOf(e)},I(e)}function p(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function b(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?p(Object(n),!0).forEach((function(t){m(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):p(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function m(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}var C=function(e){var t,n,r,i,o;return r=(o=e.rtl?e.slideCount-1-e.index:e.index)<0||o>=e.slideCount,e.centerMode?(i=Math.floor(e.slidesToShow/2),n=(o-e.currentSlide)%e.slideCount==0,o>e.currentSlide-i-1&&o<=e.currentSlide+i&&(t=!0)):t=e.currentSlide<=o&&o<e.currentSlide+e.slidesToShow,{"slick-slide":!0,"slick-active":t,"slick-center":n,"slick-cloned":r,"slick-current":o===(e.targetSlide<0?e.targetSlide+e.slideCount:e.targetSlide>=e.slideCount?e.targetSlide-e.slideCount:e.targetSlide)}},h=function(e,t){return e.key||t},B=function(e){var t,n=[],r=[],c=[],l=i.default.Children.count(e.children),s=(0,a.lazyStartIndex)(e),u=(0,a.lazyEndIndex)(e);return i.default.Children.forEach(e.children,(function(g,d){var I,p={message:"children",index:d,slidesToScroll:e.slidesToScroll,currentSlide:e.currentSlide};I=!e.lazyLoad||e.lazyLoad&&e.lazyLoadedList.indexOf(d)>=0?g:i.default.createElement("div",null);var m=function(e){var t={};return void 0!==e.variableWidth&&!1!==e.variableWidth||(t.width=e.slideWidth),e.fade&&(t.position="relative",e.vertical?t.top=-e.index*parseInt(e.slideHeight):t.left=-e.index*parseInt(e.slideWidth),t.opacity=e.currentSlide===e.index?1:0,e.useCSS&&(t.transition="opacity "+e.speed+"ms "+e.cssEase+", visibility "+e.speed+"ms "+e.cssEase)),t}(b(b({},e),{},{index:d})),B=I.props.className||"",A=C(b(b({},e),{},{index:d}));if(n.push(i.default.cloneElement(I,{key:"original"+h(I,d),"data-index":d,className:(0,o.default)(A,B),tabIndex:"-1","aria-hidden":!A["slick-active"],style:b(b({outline:"none"},I.props.style||{}),m),onClick:function(t){I.props&&I.props.onClick&&I.props.onClick(t),e.focusOnSelect&&e.focusOnSelect(p)}})),e.infinite&&!1===e.fade){var y=l-d;y<=(0,a.getPreClones)(e)&&l!==e.slidesToShow&&((t=-y)>=s&&(I=g),A=C(b(b({},e),{},{index:t})),r.push(i.default.cloneElement(I,{key:"precloned"+h(I,t),"data-index":t,tabIndex:"-1",className:(0,o.default)(A,B),"aria-hidden":!A["slick-active"],style:b(b({},I.props.style||{}),m),onClick:function(t){I.props&&I.props.onClick&&I.props.onClick(t),e.focusOnSelect&&e.focusOnSelect(p)}}))),l!==e.slidesToShow&&((t=l+d)<u&&(I=g),A=C(b(b({},e),{},{index:t})),c.push(i.default.cloneElement(I,{key:"postcloned"+h(I,t),"data-index":t,tabIndex:"-1",className:(0,o.default)(A,B),"aria-hidden":!A["slick-active"],style:b(b({},I.props.style||{}),m),onClick:function(t){I.props&&I.props.onClick&&I.props.onClick(t),e.focusOnSelect&&e.focusOnSelect(p)}})))}})),e.rtl?r.concat(n,c).reverse():r.concat(n,c)},A=function(e){!function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function");e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,writable:!0,configurable:!0}}),Object.defineProperty(e,"prototype",{writable:!1}),t&&u(e,t)}(o,e);var t,n,r=g(o);function o(){var e;!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,o);for(var t=arguments.length,n=new Array(t),i=0;i<t;i++)n[i]=arguments[i];return m(d(e=r.call.apply(r,[this].concat(n))),"node",null),m(d(e),"handleRef",(function(t){e.node=t})),e}return t=o,(n=[{key:"render",value:function(){var e=B(this.props),t=this.props,n={onMouseEnter:t.onMouseEnter,onMouseOver:t.onMouseOver,onMouseLeave:t.onMouseLeave};return i.default.createElement("div",l({ref:this.handleRef,className:"slick-track",style:this.props.trackStyle},n),e)}}])&&s(t.prototype,n),Object.defineProperty(t,"prototype",{writable:!1}),o}(i.default.PureComponent);t.Track=A},9445:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.checkSpecKeys=t.checkNavigable=t.changeSlide=t.canUseDOM=t.canGoNext=void 0,t.clamp=l,t.swipeStart=t.swipeMove=t.swipeEnd=t.slidesOnRight=t.slidesOnLeft=t.slideHandler=t.siblingDirection=t.safePreventDefault=t.lazyStartIndex=t.lazySlidesOnRight=t.lazySlidesOnLeft=t.lazyEndIndex=t.keyHandler=t.initializedState=t.getWidth=t.getTrackLeft=t.getTrackCSS=t.getTrackAnimateCSS=t.getTotalSlides=t.getSwipeDirection=t.getSlideCount=t.getRequiredLazySlides=t.getPreClones=t.getPostClones=t.getOnDemandLazySlides=t.getNavigableIndexes=t.getHeight=t.extractObject=void 0;var r,i=(r=n(5927))&&r.__esModule?r:{default:r};function o(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function a(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?o(Object(n),!0).forEach((function(t){c(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):o(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function c(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function l(e,t,n){return Math.max(t,Math.min(e,n))}var s=function(e){["onTouchStart","onTouchMove","onWheel"].includes(e._reactName)||e.preventDefault()};t.safePreventDefault=s;var u=function(e){for(var t=[],n=g(e),r=d(e),i=n;i<r;i++)e.lazyLoadedList.indexOf(i)<0&&t.push(i);return t};t.getOnDemandLazySlides=u,t.getRequiredLazySlides=function(e){for(var t=[],n=g(e),r=d(e),i=n;i<r;i++)t.push(i);return t};var g=function(e){return e.currentSlide-I(e)};t.lazyStartIndex=g;var d=function(e){return e.currentSlide+p(e)};t.lazyEndIndex=d;var I=function(e){return e.centerMode?Math.floor(e.slidesToShow/2)+(parseInt(e.centerPadding)>0?1:0):0};t.lazySlidesOnLeft=I;var p=function(e){return e.centerMode?Math.floor((e.slidesToShow-1)/2)+1+(parseInt(e.centerPadding)>0?1:0):e.slidesToShow};t.lazySlidesOnRight=p;var b=function(e){return e&&e.offsetWidth||0};t.getWidth=b;var m=function(e){return e&&e.offsetHeight||0};t.getHeight=m;var C=function(e){var t,n,r,i,o=arguments.length>1&&void 0!==arguments[1]&&arguments[1];return t=e.startX-e.curX,n=e.startY-e.curY,r=Math.atan2(n,t),(i=Math.round(180*r/Math.PI))<0&&(i=360-Math.abs(i)),i<=45&&i>=0||i<=360&&i>=315?"left":i>=135&&i<=225?"right":!0===o?i>=35&&i<=135?"up":"down":"vertical"};t.getSwipeDirection=C;var h=function(e){var t=!0;return e.infinite||(e.centerMode&&e.currentSlide>=e.slideCount-1||e.slideCount<=e.slidesToShow||e.currentSlide>=e.slideCount-e.slidesToShow)&&(t=!1),t};t.canGoNext=h,t.extractObject=function(e,t){var n={};return t.forEach((function(t){return n[t]=e[t]})),n},t.initializedState=function(e){var t,n=i.default.Children.count(e.children),r=e.listRef,o=Math.ceil(b(r)),c=e.trackRef&&e.trackRef.node,l=Math.ceil(b(c));if(e.vertical)t=o;else{var s=e.centerMode&&2*parseInt(e.centerPadding);"string"==typeof e.centerPadding&&"%"===e.centerPadding.slice(-1)&&(s*=o/100),t=Math.ceil((o-s)/e.slidesToShow)}var g=r&&m(r.querySelector('[data-index="0"]')),d=g*e.slidesToShow,I=void 0===e.currentSlide?e.initialSlide:e.currentSlide;e.rtl&&void 0===e.currentSlide&&(I=n-1-e.initialSlide);var p=e.lazyLoadedList||[],C=u(a(a({},e),{},{currentSlide:I,lazyLoadedList:p})),h={slideCount:n,slideWidth:t,listWidth:o,trackWidth:l,currentSlide:I,slideHeight:g,listHeight:d,lazyLoadedList:p=p.concat(C)};return null===e.autoplaying&&e.autoplay&&(h.autoplaying="playing"),h},t.slideHandler=function(e){var t=e.waitForAnimate,n=e.animating,r=e.fade,i=e.infinite,o=e.index,c=e.slideCount,s=e.lazyLoad,g=e.currentSlide,d=e.centerMode,I=e.slidesToScroll,p=e.slidesToShow,b=e.useCSS,m=e.lazyLoadedList;if(t&&n)return{};var C,B,A,y=o,f={},v={},Z=i?o:l(o,0,c-1);if(r){if(!i&&(o<0||o>=c))return{};o<0?y=o+c:o>=c&&(y=o-c),s&&m.indexOf(y)<0&&(m=m.concat(y)),f={animating:!0,currentSlide:y,lazyLoadedList:m,targetSlide:y},v={animating:!1,targetSlide:y}}else C=y,y<0?(C=y+c,i?c%I!=0&&(C=c-c%I):C=0):!h(e)&&y>g?y=C=g:d&&y>=c?(y=i?c:c-1,C=i?0:c-1):y>=c&&(C=y-c,i?c%I!=0&&(C=0):C=c-p),!i&&y+p>=c&&(C=c-p),B=F(a(a({},e),{},{slideIndex:y})),A=F(a(a({},e),{},{slideIndex:C})),i||(B===A&&(y=C),B=A),s&&(m=m.concat(u(a(a({},e),{},{currentSlide:y})))),b?(f={animating:!0,currentSlide:C,trackStyle:Q(a(a({},e),{},{left:B})),lazyLoadedList:m,targetSlide:Z},v={animating:!1,currentSlide:C,trackStyle:G(a(a({},e),{},{left:A})),swipeLeft:null,targetSlide:Z}):f={currentSlide:C,trackStyle:G(a(a({},e),{},{left:A})),lazyLoadedList:m,targetSlide:Z};return{state:f,nextState:v}},t.changeSlide=function(e,t){var n,r,i,o,c=e.slidesToScroll,l=e.slidesToShow,s=e.slideCount,u=e.currentSlide,g=e.targetSlide,d=e.lazyLoad,I=e.infinite;if(n=s%c!=0?0:(s-u)%c,"previous"===t.message)o=u-(i=0===n?c:l-n),d&&!I&&(o=-1==(r=u-i)?s-1:r),I||(o=g-c);else if("next"===t.message)o=u+(i=0===n?c:n),d&&!I&&(o=(u+c)%s+n),I||(o=g+c);else if("dots"===t.message)o=t.index*t.slidesToScroll;else if("children"===t.message){if(o=t.index,I){var p=S(a(a({},e),{},{targetSlide:o}));o>t.currentSlide&&"left"===p?o-=s:o<t.currentSlide&&"right"===p&&(o+=s)}}else"index"===t.message&&(o=Number(t.index));return o},t.keyHandler=function(e,t,n){return e.target.tagName.match("TEXTAREA|INPUT|SELECT")||!t?"":37===e.keyCode?n?"next":"previous":39===e.keyCode?n?"previous":"next":""},t.swipeStart=function(e,t,n){return"IMG"===e.target.tagName&&s(e),!t||!n&&-1!==e.type.indexOf("mouse")?"":{dragging:!0,touchObject:{startX:e.touches?e.touches[0].pageX:e.clientX,startY:e.touches?e.touches[0].pageY:e.clientY,curX:e.touches?e.touches[0].pageX:e.clientX,curY:e.touches?e.touches[0].pageY:e.clientY}}},t.swipeMove=function(e,t){var n=t.scrolling,r=t.animating,i=t.vertical,o=t.swipeToSlide,c=t.verticalSwiping,l=t.rtl,u=t.currentSlide,g=t.edgeFriction,d=t.edgeDragged,I=t.onEdge,p=t.swiped,b=t.swiping,m=t.slideCount,B=t.slidesToScroll,A=t.infinite,y=t.touchObject,f=t.swipeEvent,Q=t.listHeight,v=t.listWidth;if(!n){if(r)return s(e);i&&o&&c&&s(e);var Z,E={},S=F(t);y.curX=e.touches?e.touches[0].pageX:e.clientX,y.curY=e.touches?e.touches[0].pageY:e.clientY,y.swipeLength=Math.round(Math.sqrt(Math.pow(y.curX-y.startX,2)));var X=Math.round(Math.sqrt(Math.pow(y.curY-y.startY,2)));if(!c&&!b&&X>10)return{scrolling:!0};c&&(y.swipeLength=X);var T=(l?-1:1)*(y.curX>y.startX?1:-1);c&&(T=y.curY>y.startY?1:-1);var x=Math.ceil(m/B),U=C(t.touchObject,c),N=y.swipeLength;return A||(0===u&&("right"===U||"down"===U)||u+1>=x&&("left"===U||"up"===U)||!h(t)&&("left"===U||"up"===U))&&(N=y.swipeLength*g,!1===d&&I&&(I(U),E.edgeDragged=!0)),!p&&f&&(f(U),E.swiped=!0),Z=i?S+N*(Q/v)*T:l?S-N*T:S+N*T,c&&(Z=S+N*T),E=a(a({},E),{},{touchObject:y,swipeLeft:Z,trackStyle:G(a(a({},t),{},{left:Z}))}),Math.abs(y.curX-y.startX)<.8*Math.abs(y.curY-y.startY)||y.swipeLength>10&&(E.swiping=!0,s(e)),E}},t.swipeEnd=function(e,t){var n=t.dragging,r=t.swipe,i=t.touchObject,o=t.listWidth,c=t.touchThreshold,l=t.verticalSwiping,u=t.listHeight,g=t.swipeToSlide,d=t.scrolling,I=t.onSwipe,p=t.targetSlide,b=t.currentSlide,m=t.infinite;if(!n)return r&&s(e),{};var h=l?u/c:o/c,B=C(i,l),f={dragging:!1,edgeDragged:!1,scrolling:!1,swiping:!1,swiped:!1,swipeLeft:null,touchObject:{}};if(d)return f;if(!i.swipeLength)return f;if(i.swipeLength>h){var G,v;s(e),I&&I(B);var Z=m?b:p;switch(B){case"left":case"up":v=Z+y(t),G=g?A(t,v):v,f.currentDirection=0;break;case"right":case"down":v=Z-y(t),G=g?A(t,v):v,f.currentDirection=1;break;default:G=Z}f.triggerSlideHandler=G}else{var E=F(t);f.trackStyle=Q(a(a({},t),{},{left:E}))}return f};var B=function(e){for(var t=e.infinite?2*e.slideCount:e.slideCount,n=e.infinite?-1*e.slidesToShow:0,r=e.infinite?-1*e.slidesToShow:0,i=[];n<t;)i.push(n),n=r+e.slidesToScroll,r+=Math.min(e.slidesToScroll,e.slidesToShow);return i};t.getNavigableIndexes=B;var A=function(e,t){var n=B(e),r=0;if(t>n[n.length-1])t=n[n.length-1];else for(var i in n){if(t<n[i]){t=r;break}r=n[i]}return t};t.checkNavigable=A;var y=function(e){var t=e.centerMode?e.slideWidth*Math.floor(e.slidesToShow/2):0;if(e.swipeToSlide){var n,r=e.listRef,i=r.querySelectorAll&&r.querySelectorAll(".slick-slide")||[];if(Array.from(i).every((function(r){if(e.vertical){if(r.offsetTop+m(r)/2>-1*e.swipeLeft)return n=r,!1}else if(r.offsetLeft-t+b(r)/2>-1*e.swipeLeft)return n=r,!1;return!0})),!n)return 0;var o=!0===e.rtl?e.slideCount-e.currentSlide:e.currentSlide;return Math.abs(n.dataset.index-o)||1}return e.slidesToScroll};t.getSlideCount=y;var f=function(e,t){return t.reduce((function(t,n){return t&&e.hasOwnProperty(n)}),!0)?null:console.error("Keys Missing:",e)};t.checkSpecKeys=f;var G=function(e){var t,n;f(e,["left","variableWidth","slideCount","slidesToShow","slideWidth"]);var r=e.slideCount+2*e.slidesToShow;e.vertical?n=r*e.slideHeight:t=E(e)*e.slideWidth;var i={opacity:1,transition:"",WebkitTransition:""};if(e.useTransform){var o=e.vertical?"translate3d(0px, "+e.left+"px, 0px)":"translate3d("+e.left+"px, 0px, 0px)",c=e.vertical?"translate3d(0px, "+e.left+"px, 0px)":"translate3d("+e.left+"px, 0px, 0px)",l=e.vertical?"translateY("+e.left+"px)":"translateX("+e.left+"px)";i=a(a({},i),{},{WebkitTransform:o,transform:c,msTransform:l})}else e.vertical?i.top=e.left:i.left=e.left;return e.fade&&(i={opacity:1}),t&&(i.width=t),n&&(i.height=n),window&&!window.addEventListener&&window.attachEvent&&(e.vertical?i.marginTop=e.left+"px":i.marginLeft=e.left+"px"),i};t.getTrackCSS=G;var Q=function(e){f(e,["left","variableWidth","slideCount","slidesToShow","slideWidth","speed","cssEase"]);var t=G(e);return e.useTransform?(t.WebkitTransition="-webkit-transform "+e.speed+"ms "+e.cssEase,t.transition="transform "+e.speed+"ms "+e.cssEase):e.vertical?t.transition="top "+e.speed+"ms "+e.cssEase:t.transition="left "+e.speed+"ms "+e.cssEase,t};t.getTrackAnimateCSS=Q;var F=function(e){if(e.unslick)return 0;f(e,["slideIndex","trackRef","infinite","centerMode","slideCount","slidesToShow","slidesToScroll","slideWidth","listWidth","variableWidth","slideHeight"]);var t,n,r=e.slideIndex,i=e.trackRef,o=e.infinite,a=e.centerMode,c=e.slideCount,l=e.slidesToShow,s=e.slidesToScroll,u=e.slideWidth,g=e.listWidth,d=e.variableWidth,I=e.slideHeight,p=e.fade,b=e.vertical;if(p||1===e.slideCount)return 0;var m=0;if(o?(m=-v(e),c%s!=0&&r+s>c&&(m=-(r>c?l-(r-c):c%s)),a&&(m+=parseInt(l/2))):(c%s!=0&&r+s>c&&(m=l-c%s),a&&(m=parseInt(l/2))),t=b?r*I*-1+m*I:r*u*-1+m*u,!0===d){var C,h=i&&i.node;if(C=r+v(e),t=(n=h&&h.childNodes[C])?-1*n.offsetLeft:0,!0===a){C=o?r+v(e):r,n=h&&h.children[C],t=0;for(var B=0;B<C;B++)t-=h&&h.children[B]&&h.children[B].offsetWidth;t-=parseInt(e.centerPadding),t+=n&&(g-n.offsetWidth)/2}}return t};t.getTrackLeft=F;var v=function(e){return e.unslick||!e.infinite?0:e.variableWidth?e.slideCount:e.slidesToShow+(e.centerMode?1:0)};t.getPreClones=v;var Z=function(e){return e.unslick||!e.infinite?0:e.slideCount};t.getPostClones=Z;var E=function(e){return 1===e.slideCount?1:v(e)+e.slideCount+Z(e)};t.getTotalSlides=E;var S=function(e){return e.targetSlide>e.currentSlide?e.targetSlide>e.currentSlide+X(e)?"left":"right":e.targetSlide<e.currentSlide-T(e)?"right":"left"};t.siblingDirection=S;var X=function(e){var t=e.slidesToShow,n=e.centerMode,r=e.rtl,i=e.centerPadding;if(n){var o=(t-1)/2+1;return parseInt(i)>0&&(o+=1),r&&t%2==0&&(o+=1),o}return r?0:t-1};t.slidesOnRight=X;var T=function(e){var t=e.slidesToShow,n=e.centerMode,r=e.rtl,i=e.centerPadding;if(n){var o=(t-1)/2+1;return parseInt(i)>0&&(o+=1),r||t%2!=0||(o+=1),o}return r?t-1:0};t.slidesOnLeft=T,t.canUseDOM=function(){return!("undefined"==typeof window||!window.document||!window.document.createElement)}},8971:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default={GLOBAL:{HIDE:"__react_tooltip_hide_event",REBUILD:"__react_tooltip_rebuild_event",SHOW:"__react_tooltip_show_event"}}},7715:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=function(e){e.prototype.isCustomEvent=function(e){return this.state.event||!!e.getAttribute("data-event")},e.prototype.customBindListener=function(e){var t=this,r=this.state,o=r.event,a=r.eventOff,c=e.getAttribute("data-event")||o,l=e.getAttribute("data-event-off")||a;c.split(" ").forEach((function(r){e.removeEventListener(r,i.get(e,r));var o=n.bind(t,l);i.set(e,r,o),e.addEventListener(r,o,!1)})),l&&l.split(" ").forEach((function(n){e.removeEventListener(n,t.hideTooltip),e.addEventListener(n,t.hideTooltip,!1)}))},e.prototype.customUnbindListener=function(e){var t=this.state,n=t.event,r=t.eventOff,o=n||e.getAttribute("data-event"),a=r||e.getAttribute("data-event-off");e.removeEventListener(o,i.get(e,n)),a&&e.removeEventListener(a,this.hideTooltip)}};var n=function(e,t){var n=this.state.show,i=this.props.id,o=t.currentTarget.getAttribute("data-iscapture"),a=o&&"true"===o||this.props.isCapture,c=t.currentTarget.getAttribute("currentItem");a||t.stopPropagation(),n&&"true"===c?e||this.hideTooltip(t):(t.currentTarget.setAttribute("currentItem","true"),r(t.currentTarget,this.getTargetArray(i)),this.showTooltip(t))},r=function(e,t){for(var n=0;n<t.length;n++)e!==t[n]?t[n].setAttribute("currentItem","false"):t[n].setAttribute("currentItem","true")},i={id:"9b69f92e-d3fe-498b-b1b4-c5e63a51b0cf",set:function(e,t,n){var r,i,o;this.id in e?e[this.id][t]=n:Object.defineProperty(e,this.id,{configurable:!0,value:(r={},i=t,o=n,i in r?Object.defineProperty(r,i,{value:o,enumerable:!0,configurable:!0,writable:!0}):r[i]=o,r)})},get:function(e,t){var n=e[this.id];if(void 0!==n)return n[t]}}},8319:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=function(e){e.prototype.getEffect=function(e){return e.getAttribute("data-effect")||this.props.effect||"float"}}},2536:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=function(e){e.prototype.isCapture=function(e){return e&&"true"===e.getAttribute("data-iscapture")||this.props.isCapture||!1}}},3690:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=function(e){e.hide=function(e){o(i.default.GLOBAL.HIDE,{target:e})},e.rebuild=function(){o(i.default.GLOBAL.REBUILD)},e.show=function(e){o(i.default.GLOBAL.SHOW,{target:e})},e.prototype.globalRebuild=function(){this.mount&&(this.unbindListener(),this.bindListener())},e.prototype.globalShow=function(e){if(this.mount){var t={currentTarget:e.detail.target};this.showTooltip(t,!0)}},e.prototype.globalHide=function(e){if(this.mount){var t=!!(e&&e.detail&&e.detail.target);this.hideTooltip({currentTarget:t&&e.detail.target},t)}}};var r,i=(r=n(8971))&&r.__esModule?r:{default:r},o=function(e,t){var n=void 0;"function"==typeof window.CustomEvent?n=new window.CustomEvent(e,{detail:t}):((n=document.createEvent("Event")).initEvent(e,!1,!0),n.detail=t),window.dispatchEvent(n)}},5593:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=function(e){e.prototype.bindRemovalTracker=function(){var e=this,t=n();if(null!=t){var r=new t((function(t){for(var n=0;n<t.length;n++)for(var r=t[n],i=0;i<r.removedNodes.length;i++)if(r.removedNodes[i]===e.state.currentTarget)return void e.hideTooltip()}));r.observe(window.document,{childList:!0,subtree:!0}),this.removalTracker=r}},e.prototype.unbindRemovalTracker=function(){this.removalTracker&&(this.removalTracker.disconnect(),this.removalTracker=null)}};var n=function(){return window.MutationObserver||window.WebKitMutationObserver||window.MozMutationObserver}},1556:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=function(e){e.prototype.bindWindowEvents=function(e){window.removeEventListener(i.default.GLOBAL.HIDE,this.globalHide),window.addEventListener(i.default.GLOBAL.HIDE,this.globalHide,!1),window.removeEventListener(i.default.GLOBAL.REBUILD,this.globalRebuild),window.addEventListener(i.default.GLOBAL.REBUILD,this.globalRebuild,!1),window.removeEventListener(i.default.GLOBAL.SHOW,this.globalShow),window.addEventListener(i.default.GLOBAL.SHOW,this.globalShow,!1),e&&(window.removeEventListener("resize",this.onWindowResize),window.addEventListener("resize",this.onWindowResize,!1))},e.prototype.unbindWindowEvents=function(){window.removeEventListener(i.default.GLOBAL.HIDE,this.globalHide),window.removeEventListener(i.default.GLOBAL.REBUILD,this.globalRebuild),window.removeEventListener(i.default.GLOBAL.SHOW,this.globalShow),window.removeEventListener("resize",this.onWindowResize)},e.prototype.onWindowResize=function(){this.mount&&this.hideTooltip()}};var r,i=(r=n(8971))&&r.__esModule?r:{default:r}},5963:(e,t,n)=>{"use strict";var r,i,o,a=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},c=function(){function e(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}return function(t,n,r){return n&&e(t.prototype,n),r&&e(t,r),t}}(),l=G(n(5927)),s=G(n(5556)),u=G(n(8709)),g=G(n(6942)),d=G(n(3690)),I=G(n(1556)),p=G(n(7715)),b=G(n(2536)),m=G(n(8319)),C=G(n(5593)),h=G(n(614)),B=G(n(3323)),A=n(5188),y=G(n(9975)),f=G(n(4798));function G(e){return e&&e.__esModule?e:{default:e}}var Q=(0,d.default)(r=(0,I.default)(r=(0,p.default)(r=(0,b.default)(r=(0,m.default)(r=(0,C.default)((o=i=function(e){function t(e){!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,t);var n=function(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}(this,(t.__proto__||Object.getPrototypeOf(t)).call(this,e));return n.state={place:"top",type:"dark",effect:"float",show:!1,border:!1,offset:{},extraClass:"",html:!1,delayHide:0,delayShow:0,event:e.event||null,eventOff:e.eventOff||null,currentEvent:null,currentTarget:null,ariaProps:(0,A.parseAria)(e),isEmptyTip:!1,disable:!1,originTooltip:null,isMultiline:!1},n.bind(["showTooltip","updateTooltip","hideTooltip","getTooltipContent","globalRebuild","globalShow","globalHide","onWindowResize","mouseOnToolTip"]),n.mount=!0,n.delayShowLoop=null,n.delayHideLoop=null,n.delayReshow=null,n.intervalUpdateContent=null,n}return function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}(t,e),c(t,[{key:"bind",value:function(e){var t=this;e.forEach((function(e){t[e]=t[e].bind(t)}))}},{key:"componentDidMount",value:function(){var e=this.props,t=e.insecure,n=e.resizeHide;t&&this.setStyleHeader(),this.bindListener(),this.bindWindowEvents(n)}},{key:"componentWillReceiveProps",value:function(e){var t=this.state.ariaProps,n=(0,A.parseAria)(e),r=Object.keys(n).some((function(e){return n[e]!==t[e]}));r&&this.setState({ariaProps:n})}},{key:"componentWillUnmount",value:function(){this.mount=!1,this.clearTimer(),this.unbindListener(),this.removeScrollListener(),this.unbindWindowEvents()}},{key:"mouseOnToolTip",value:function(){return!(!this.state.show||!this.tooltipRef)&&(this.tooltipRef.matches||(this.tooltipRef.matches=this.tooltipRef.msMatchesSelector),this.tooltipRef.matches(":hover"))}},{key:"getTargetArray",value:function(e){var t=void 0;if(e){var n=e.replace(/\\/g,"\\\\").replace(/"/g,'\\"');t=document.querySelectorAll('[data-tip][data-for="'+n+'"]')}else t=document.querySelectorAll("[data-tip]:not([data-for])");return(0,y.default)(t)}},{key:"bindListener",value:function(){var e=this,t=this.props,n=t.id,r=t.globalEventOff;this.getTargetArray(n).forEach((function(t){var n=e.isCapture(t),r=e.getEffect(t);null===t.getAttribute("currentItem")&&t.setAttribute("currentItem","false"),e.unbindBasicListener(t),e.isCustomEvent(t)?e.customBindListener(t):(t.addEventListener("mouseenter",e.showTooltip,n),"float"===r&&t.addEventListener("mousemove",e.updateTooltip,n),t.addEventListener("mouseleave",e.hideTooltip,n))})),r&&(window.removeEventListener(r,this.hideTooltip),window.addEventListener(r,this.hideTooltip,!1)),this.bindRemovalTracker()}},{key:"unbindListener",value:function(){var e=this,t=this.props,n=t.id,r=t.globalEventOff;this.getTargetArray(n).forEach((function(t){e.unbindBasicListener(t),e.isCustomEvent(t)&&e.customUnbindListener(t)})),r&&window.removeEventListener(r,this.hideTooltip),this.unbindRemovalTracker()}},{key:"unbindBasicListener",value:function(e){var t=this.isCapture(e);e.removeEventListener("mouseenter",this.showTooltip,t),e.removeEventListener("mousemove",this.updateTooltip,t),e.removeEventListener("mouseleave",this.hideTooltip,t)}},{key:"getTooltipContent",value:function(){var e=this.props,t=e.getContent,n=e.children,r=void 0;return t&&(r=Array.isArray(t)?t[0]&&t[0](this.state.originTooltip):t(this.state.originTooltip)),(0,B.default)(this.state.originTooltip,n,r,this.state.isMultiline)}},{key:"isEmptyTip",value:function(e){return"string"==typeof e&&""===e||null===e}},{key:"showTooltip",value:function(e,t){if(!t||this.getTargetArray(this.props.id).some((function(t){return t===e.currentTarget}))){var n=this.props,r=n.multiline,i=n.getContent,o=e.currentTarget.getAttribute("data-tip"),a=e.currentTarget.getAttribute("data-multiline")||r||!1,c=e instanceof window.FocusEvent||t,l=!0;e.currentTarget.getAttribute("data-scroll-hide")?l="true"===e.currentTarget.getAttribute("data-scroll-hide"):null!=this.props.scrollHide&&(l=this.props.scrollHide),this.clearTimer();var s=e.currentTarget,u=this.state.show?s.getAttribute("data-delay-update")||this.props.delayUpdate:0,g=this,d=function(){g.setState({originTooltip:o,isMultiline:a,desiredPlace:s.getAttribute("data-place")||g.props.place||"top",place:s.getAttribute("data-place")||g.props.place||"top",type:s.getAttribute("data-type")||g.props.type||"dark",effect:c?"solid":g.getEffect(s),offset:s.getAttribute("data-offset")||g.props.offset||{},html:s.getAttribute("data-html")?"true"===s.getAttribute("data-html"):g.props.html||!1,delayShow:s.getAttribute("data-delay-show")||g.props.delayShow||0,delayHide:s.getAttribute("data-delay-hide")||g.props.delayHide||0,delayUpdate:s.getAttribute("data-delay-update")||g.props.delayUpdate||0,border:s.getAttribute("data-border")?"true"===s.getAttribute("data-border"):g.props.border||!1,extraClass:s.getAttribute("data-class")||g.props.class||g.props.className||"",disable:s.getAttribute("data-tip-disable")?"true"===s.getAttribute("data-tip-disable"):g.props.disable||!1,currentTarget:s},(function(){l&&g.addScrollListener(g.state.currentTarget),g.updateTooltip(e),i&&Array.isArray(i)&&(g.intervalUpdateContent=setInterval((function(){if(g.mount){var e=g.props.getContent,t=(0,B.default)(o,"",e[0](),a),n=g.isEmptyTip(t);g.setState({isEmptyTip:n}),g.updatePosition()}}),i[1]))}))};u?this.delayReshow=setTimeout(d,u):d()}}},{key:"updateTooltip",value:function(e){var t=this,n=this.state,r=n.delayShow,i=n.disable,o=this.props.afterShow,a=this.getTooltipContent(),c=parseInt(r,10),l=e.currentTarget||e.target;if(!this.mouseOnToolTip()&&!this.isEmptyTip(a)&&!i){var s=function(){if(Array.isArray(a)&&a.length>0||a){var n=!t.state.show;t.setState({currentEvent:e,currentTarget:l,show:!0},(function(){t.updatePosition(),n&&o&&o()}))}};clearTimeout(this.delayShowLoop),r?this.delayShowLoop=setTimeout(s,c):s()}}},{key:"listenForTooltipExit",value:function(){this.state.show&&this.tooltipRef&&this.tooltipRef.addEventListener("mouseleave",this.hideTooltip)}},{key:"removeListenerForTooltipExit",value:function(){this.state.show&&this.tooltipRef&&this.tooltipRef.removeEventListener("mouseleave",this.hideTooltip)}},{key:"hideTooltip",value:function(e,t){var n=this,r=this.state,i=r.delayHide,o=r.disable,a=this.props.afterHide,c=this.getTooltipContent();if(this.mount&&!this.isEmptyTip(c)&&!o){if(t&&(!this.getTargetArray(this.props.id).some((function(t){return t===e.currentTarget}))||!this.state.show))return;var l=function(){var e=n.state.show;n.mouseOnToolTip()?n.listenForTooltipExit():(n.removeListenerForTooltipExit(),n.setState({show:!1},(function(){n.removeScrollListener(),e&&a&&a()})))};this.clearTimer(),i?this.delayHideLoop=setTimeout(l,parseInt(i,10)):l()}}},{key:"addScrollListener",value:function(e){var t=this.isCapture(e);window.addEventListener("scroll",this.hideTooltip,t)}},{key:"removeScrollListener",value:function(){window.removeEventListener("scroll",this.hideTooltip)}},{key:"updatePosition",value:function(){var e=this,t=this.state,n=t.currentEvent,r=t.currentTarget,i=t.place,o=t.desiredPlace,a=t.effect,c=t.offset,l=u.default.findDOMNode(this),s=(0,h.default)(n,r,l,i,o,a,c);if(s.isNewState)return this.setState(s.newState,(function(){e.updatePosition()}));l.style.left=s.position.left+"px",l.style.top=s.position.top+"px"}},{key:"setStyleHeader",value:function(){var e=document.getElementsByTagName("head")[0];if(!e.querySelector('style[id="react-tooltip"]')){var t=document.createElement("style");t.id="react-tooltip",t.innerHTML=f.default,e.insertBefore(t,e.firstChild)}}},{key:"clearTimer",value:function(){clearTimeout(this.delayShowLoop),clearTimeout(this.delayHideLoop),clearTimeout(this.delayReshow),clearInterval(this.intervalUpdateContent)}},{key:"render",value:function(){var e=this,n=this.state,r=n.extraClass,i=n.html,o=n.ariaProps,c=n.disable,s=this.getTooltipContent(),u=this.isEmptyTip(s),d=(0,g.default)("__react_component_tooltip",{show:this.state.show&&!c&&!u},{border:this.state.border},{"place-top":"top"===this.state.place},{"place-bottom":"bottom"===this.state.place},{"place-left":"left"===this.state.place},{"place-right":"right"===this.state.place},{"type-dark":"dark"===this.state.type},{"type-success":"success"===this.state.type},{"type-warning":"warning"===this.state.type},{"type-error":"error"===this.state.type},{"type-info":"info"===this.state.type},{"type-light":"light"===this.state.type},{allow_hover:this.props.delayUpdate}),I=this.props.wrapper;return t.supportedWrappers.indexOf(I)<0&&(I=t.defaultProps.wrapper),i?l.default.createElement(I,a({className:d+" "+r,id:this.props.id,ref:function(t){return e.tooltipRef=t}},o,{"data-id":"tooltip",dangerouslySetInnerHTML:{__html:s}})):l.default.createElement(I,a({className:d+" "+r,id:this.props.id},o,{ref:function(t){return e.tooltipRef=t},"data-id":"tooltip"}),s)}}]),t}(l.default.Component),i.propTypes={children:s.default.any,place:s.default.string,type:s.default.string,effect:s.default.string,offset:s.default.object,multiline:s.default.bool,border:s.default.bool,insecure:s.default.bool,class:s.default.string,className:s.default.string,id:s.default.string,html:s.default.bool,delayHide:s.default.number,delayUpdate:s.default.number,delayShow:s.default.number,event:s.default.string,eventOff:s.default.string,watchWindow:s.default.bool,isCapture:s.default.bool,globalEventOff:s.default.string,getContent:s.default.any,afterShow:s.default.func,afterHide:s.default.func,disable:s.default.bool,scrollHide:s.default.bool,resizeHide:s.default.bool,wrapper:s.default.string},i.defaultProps={insecure:!0,resizeHide:!0,wrapper:"div"},i.supportedWrappers=["div","span"],i.displayName="ReactTooltip",r=o))||r)||r)||r)||r)||r)||r;e.exports=Q},4798:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default='.__react_component_tooltip{border-radius:3px;display:inline-block;font-size:13px;left:-999em;opacity:0;padding:8px 21px;position:fixed;pointer-events:none;transition:opacity 0.3s ease-out;top:-999em;visibility:hidden;z-index:999}.__react_component_tooltip.allow_hover{pointer-events:auto}.__react_component_tooltip:before,.__react_component_tooltip:after{content:"";width:0;height:0;position:absolute}.__react_component_tooltip.show{opacity:0.9;margin-top:0px;margin-left:0px;visibility:visible}.__react_component_tooltip.type-dark{color:#fff;background-color:#222}.__react_component_tooltip.type-dark.place-top:after{border-top-color:#222;border-top-style:solid;border-top-width:6px}.__react_component_tooltip.type-dark.place-bottom:after{border-bottom-color:#222;border-bottom-style:solid;border-bottom-width:6px}.__react_component_tooltip.type-dark.place-left:after{border-left-color:#222;border-left-style:solid;border-left-width:6px}.__react_component_tooltip.type-dark.place-right:after{border-right-color:#222;border-right-style:solid;border-right-width:6px}.__react_component_tooltip.type-dark.border{border:1px solid #fff}.__react_component_tooltip.type-dark.border.place-top:before{border-top:8px solid #fff}.__react_component_tooltip.type-dark.border.place-bottom:before{border-bottom:8px solid #fff}.__react_component_tooltip.type-dark.border.place-left:before{border-left:8px solid #fff}.__react_component_tooltip.type-dark.border.place-right:before{border-right:8px solid #fff}.__react_component_tooltip.type-success{color:#fff;background-color:#8DC572}.__react_component_tooltip.type-success.place-top:after{border-top-color:#8DC572;border-top-style:solid;border-top-width:6px}.__react_component_tooltip.type-success.place-bottom:after{border-bottom-color:#8DC572;border-bottom-style:solid;border-bottom-width:6px}.__react_component_tooltip.type-success.place-left:after{border-left-color:#8DC572;border-left-style:solid;border-left-width:6px}.__react_component_tooltip.type-success.place-right:after{border-right-color:#8DC572;border-right-style:solid;border-right-width:6px}.__react_component_tooltip.type-success.border{border:1px solid #fff}.__react_component_tooltip.type-success.border.place-top:before{border-top:8px solid #fff}.__react_component_tooltip.type-success.border.place-bottom:before{border-bottom:8px solid #fff}.__react_component_tooltip.type-success.border.place-left:before{border-left:8px solid #fff}.__react_component_tooltip.type-success.border.place-right:before{border-right:8px solid #fff}.__react_component_tooltip.type-warning{color:#fff;background-color:#F0AD4E}.__react_component_tooltip.type-warning.place-top:after{border-top-color:#F0AD4E;border-top-style:solid;border-top-width:6px}.__react_component_tooltip.type-warning.place-bottom:after{border-bottom-color:#F0AD4E;border-bottom-style:solid;border-bottom-width:6px}.__react_component_tooltip.type-warning.place-left:after{border-left-color:#F0AD4E;border-left-style:solid;border-left-width:6px}.__react_component_tooltip.type-warning.place-right:after{border-right-color:#F0AD4E;border-right-style:solid;border-right-width:6px}.__react_component_tooltip.type-warning.border{border:1px solid #fff}.__react_component_tooltip.type-warning.border.place-top:before{border-top:8px solid #fff}.__react_component_tooltip.type-warning.border.place-bottom:before{border-bottom:8px solid #fff}.__react_component_tooltip.type-warning.border.place-left:before{border-left:8px solid #fff}.__react_component_tooltip.type-warning.border.place-right:before{border-right:8px solid #fff}.__react_component_tooltip.type-error{color:#fff;background-color:#BE6464}.__react_component_tooltip.type-error.place-top:after{border-top-color:#BE6464;border-top-style:solid;border-top-width:6px}.__react_component_tooltip.type-error.place-bottom:after{border-bottom-color:#BE6464;border-bottom-style:solid;border-bottom-width:6px}.__react_component_tooltip.type-error.place-left:after{border-left-color:#BE6464;border-left-style:solid;border-left-width:6px}.__react_component_tooltip.type-error.place-right:after{border-right-color:#BE6464;border-right-style:solid;border-right-width:6px}.__react_component_tooltip.type-error.border{border:1px solid #fff}.__react_component_tooltip.type-error.border.place-top:before{border-top:8px solid #fff}.__react_component_tooltip.type-error.border.place-bottom:before{border-bottom:8px solid #fff}.__react_component_tooltip.type-error.border.place-left:before{border-left:8px solid #fff}.__react_component_tooltip.type-error.border.place-right:before{border-right:8px solid #fff}.__react_component_tooltip.type-info{color:#fff;background-color:#337AB7}.__react_component_tooltip.type-info.place-top:after{border-top-color:#337AB7;border-top-style:solid;border-top-width:6px}.__react_component_tooltip.type-info.place-bottom:after{border-bottom-color:#337AB7;border-bottom-style:solid;border-bottom-width:6px}.__react_component_tooltip.type-info.place-left:after{border-left-color:#337AB7;border-left-style:solid;border-left-width:6px}.__react_component_tooltip.type-info.place-right:after{border-right-color:#337AB7;border-right-style:solid;border-right-width:6px}.__react_component_tooltip.type-info.border{border:1px solid #fff}.__react_component_tooltip.type-info.border.place-top:before{border-top:8px solid #fff}.__react_component_tooltip.type-info.border.place-bottom:before{border-bottom:8px solid #fff}.__react_component_tooltip.type-info.border.place-left:before{border-left:8px solid #fff}.__react_component_tooltip.type-info.border.place-right:before{border-right:8px solid #fff}.__react_component_tooltip.type-light{color:#222;background-color:#fff}.__react_component_tooltip.type-light.place-top:after{border-top-color:#fff;border-top-style:solid;border-top-width:6px}.__react_component_tooltip.type-light.place-bottom:after{border-bottom-color:#fff;border-bottom-style:solid;border-bottom-width:6px}.__react_component_tooltip.type-light.place-left:after{border-left-color:#fff;border-left-style:solid;border-left-width:6px}.__react_component_tooltip.type-light.place-right:after{border-right-color:#fff;border-right-style:solid;border-right-width:6px}.__react_component_tooltip.type-light.border{border:1px solid #222}.__react_component_tooltip.type-light.border.place-top:before{border-top:8px solid #222}.__react_component_tooltip.type-light.border.place-bottom:before{border-bottom:8px solid #222}.__react_component_tooltip.type-light.border.place-left:before{border-left:8px solid #222}.__react_component_tooltip.type-light.border.place-right:before{border-right:8px solid #222}.__react_component_tooltip.place-top{margin-top:-10px}.__react_component_tooltip.place-top:before{border-left:10px solid transparent;border-right:10px solid transparent;bottom:-8px;left:50%;margin-left:-10px}.__react_component_tooltip.place-top:after{border-left:8px solid transparent;border-right:8px solid transparent;bottom:-6px;left:50%;margin-left:-8px}.__react_component_tooltip.place-bottom{margin-top:10px}.__react_component_tooltip.place-bottom:before{border-left:10px solid transparent;border-right:10px solid transparent;top:-8px;left:50%;margin-left:-10px}.__react_component_tooltip.place-bottom:after{border-left:8px solid transparent;border-right:8px solid transparent;top:-6px;left:50%;margin-left:-8px}.__react_component_tooltip.place-left{margin-left:-10px}.__react_component_tooltip.place-left:before{border-top:6px solid transparent;border-bottom:6px solid transparent;right:-8px;top:50%;margin-top:-5px}.__react_component_tooltip.place-left:after{border-top:5px solid transparent;border-bottom:5px solid transparent;right:-6px;top:50%;margin-top:-4px}.__react_component_tooltip.place-right{margin-left:10px}.__react_component_tooltip.place-right:before{border-top:6px solid transparent;border-bottom:6px solid transparent;left:-8px;top:50%;margin-top:-5px}.__react_component_tooltip.place-right:after{border-top:5px solid transparent;border-bottom:5px solid transparent;left:-6px;top:50%;margin-top:-4px}.__react_component_tooltip .multi-line{display:block;padding:2px 0px;text-align:center}'},5188:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.parseAria=function(e){var t={};return Object.keys(e).filter((function(e){return/(^aria-\w+$|^role$)/.test(e)})).forEach((function(n){t[n]=e[n]})),t}},614:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=function(e,t,c,l,s,u,g){for(var d=n(c),I=d.width,p=d.height,b=n(t),m=b.width,C=b.height,h=r(e,t,u),B=h.mouseX,A=h.mouseY,y=i(u,m,C,I,p),f=o(g),G=f.extraOffset_X,Q=f.extraOffset_Y,F=window.innerWidth,v=window.innerHeight,Z=a(c),E=Z.parentTop,S=Z.parentLeft,X=function(e){var t=y[e].l;return B+t+G},T=function(e){var t=y[e].t;return A+t+Q},x=function(e){return function(e){return X(e)<0}(e)||function(e){return function(e){var t=y[e].r;return B+t+G}(e)>F}(e)||function(e){return T(e)<0}(e)||function(e){return function(e){var t=y[e].b;return A+t+Q}(e)>v}(e)},U=function(e){return!x(e)},N=["top","bottom","left","right"],R=[],O=0;O<4;O++){var V=N[O];U(V)&&R.push(V)}var W=!1,_=void 0;return U(s)&&s!==l?(W=!0,_=s):R.length>0&&x(s)&&x(l)&&(W=!0,_=R[0]),W?{isNewState:!0,newState:{place:_}}:{isNewState:!1,position:{left:parseInt(X(l)-S,10),top:parseInt(T(l)-E,10)}}};var n=function(e){var t=e.getBoundingClientRect(),n=t.height,r=t.width;return{height:parseInt(n,10),width:parseInt(r,10)}},r=function(e,t,r){var i=t.getBoundingClientRect(),o=i.top,a=i.left,c=n(t),l=c.width,s=c.height;return"float"===r?{mouseX:e.clientX,mouseY:e.clientY}:{mouseX:a+l/2,mouseY:o+s/2}},i=function(e,t,n,r,i){var o=void 0,a=void 0,c=void 0,l=void 0;return"float"===e?(o={l:-r/2,r:r/2,t:-(i+3+2),b:-3},c={l:-r/2,r:r/2,t:15,b:i+3+2+12},l={l:-(r+3+2),r:-3,t:-i/2,b:i/2},a={l:3,r:r+3+2,t:-i/2,b:i/2}):"solid"===e&&(o={l:-r/2,r:r/2,t:-(n/2+i+2),b:-n/2},c={l:-r/2,r:r/2,t:n/2,b:n/2+i+2},l={l:-(r+t/2+2),r:-t/2,t:-i/2,b:i/2},a={l:t/2,r:r+t/2+2,t:-i/2,b:i/2}),{top:o,bottom:c,left:l,right:a}},o=function(e){var t=0,n=0;for(var r in"[object String]"===Object.prototype.toString.apply(e)&&(e=JSON.parse(e.toString().replace(/\'/g,'"'))),e)"top"===r?n-=parseInt(e[r],10):"bottom"===r?n+=parseInt(e[r],10):"left"===r?t-=parseInt(e[r],10):"right"===r&&(t+=parseInt(e[r],10));return{extraOffset_X:t,extraOffset_Y:n}},a=function(e){for(var t=e;t&&"none"===window.getComputedStyle(t).getPropertyValue("transform");)t=t.parentElement;return{parentTop:t&&t.getBoundingClientRect().top||0,parentLeft:t&&t.getBoundingClientRect().left||0}}},3323:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=function(e,t,n,r){if(t)return t;if(null!=n)return n;if(null===n)return null;var o=/<br\s*\/?>/;return r&&"false"!==r&&o.test(e)?e.split(o).map((function(e,t){return i.default.createElement("span",{key:t,className:"multi-line"},e)})):e};var r,i=(r=n(5927))&&r.__esModule?r:{default:r}},9975:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=function(e){var t=e.length;return e.hasOwnProperty?Array.prototype.slice.call(e):new Array(t).fill().map((function(t){return e[t]}))}},7437:(e,t,n)=>{"use strict";n.d(t,{E:()=>s});var r=n(1460),i=n(4576),o=n(4490);function a(e){return e}var c=n(4601);function l(){for(var e=[],t=0;t<arguments.length;t++)e[t]=arguments[t];var n=Number.POSITIVE_INFINITY,l=null,s=e[e.length-1];return(0,i.m)(s)?(l=e.pop(),e.length>1&&"number"==typeof e[e.length-1]&&(n=e.pop())):"number"==typeof s&&(n=e.pop()),null===l&&1===e.length&&e[0]instanceof r.c?e[0]:function(e){return void 0===e&&(e=Number.POSITIVE_INFINITY),(0,o.ZZ)(a,e)}(n)((0,c.c)(e,l))}var s=function(){for(var e=arguments.length,t=Array(e),n=0;n<e;n++)t[n]=arguments[n];var r=function(){for(var e=arguments.length,n=Array(e),r=0;r<e;r++)n[r]=arguments[r];return l.apply(void 0,function(e){if(Array.isArray(e)){for(var t=0,n=Array(e.length);t<e.length;t++)n[t]=e[t];return n}return Array.from(e)}(t.map((function(e){var t=e.apply(void 0,n);if(!t)throw new TypeError('combineEpics: one of the provided Epics "'+(e.name||"<anonymous>")+"\" does not return a stream. Double check you're not missing a return statement!");return t}))))};try{Object.defineProperty(r,"name",{value:"combineEpics("+t.map((function(e){return e.name||"<anonymous>"})).join(", ")+")"})}catch(i){}return r}},1409:(e,t,n)=>{"use strict";n.d(t,{C:()=>k});var r=n(5215),i=n(6027),o=function(e){function t(t,n){var r=e.call(this,t,n)||this;return r.scheduler=t,r.work=n,r}return r.C6(t,e),t.prototype.schedule=function(t,n){return void 0===n&&(n=0),n>0?e.prototype.schedule.call(this,t,n):(this.delay=n,this.state=t,this.scheduler.flush(this),this)},t.prototype.execute=function(t,n){return n>0||this.closed?e.prototype.execute.call(this,t,n):this._execute(t,n)},t.prototype.requestAsyncId=function(t,n,r){return void 0===r&&(r=0),null!==r&&r>0||null===r&&this.delay>0?e.prototype.requestAsyncId.call(this,t,n,r):t.flush(this)},t}(i.R),a=n(7596),c=new(function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return r.C6(t,e),t}(a.q))(o),l=n(1460),s=n(2968),u=n(2812);function g(){return Error.call(this),this.message="object unsubscribed",this.name="ObjectUnsubscribedError",this}g.prototype=Object.create(Error.prototype);var d,I=g,p=function(e){function t(t,n){var r=e.call(this)||this;return r.subject=t,r.subscriber=n,r.closed=!1,r}return r.C6(t,e),t.prototype.unsubscribe=function(){if(!this.closed){this.closed=!0;var e=this.subject,t=e.observers;if(this.subject=null,t&&0!==t.length&&!e.isStopped&&!e.closed){var n=t.indexOf(this.subscriber);-1!==n&&t.splice(n,1)}}},t}(u.y),b=n(3089),m=function(e){function t(t){var n=e.call(this,t)||this;return n.destination=t,n}return r.C6(t,e),t}(s.v),C=function(e){function t(){var t=e.call(this)||this;return t.observers=[],t.closed=!1,t.isStopped=!1,t.hasError=!1,t.thrownError=null,t}return r.C6(t,e),t.prototype[b.D]=function(){return new m(this)},t.prototype.lift=function(e){var t=new h(this,this);return t.operator=e,t},t.prototype.next=function(e){if(this.closed)throw new I;if(!this.isStopped)for(var t=this.observers,n=t.length,r=t.slice(),i=0;i<n;i++)r[i].next(e)},t.prototype.error=function(e){if(this.closed)throw new I;this.hasError=!0,this.thrownError=e,this.isStopped=!0;for(var t=this.observers,n=t.length,r=t.slice(),i=0;i<n;i++)r[i].error(e);this.observers.length=0},t.prototype.complete=function(){if(this.closed)throw new I;this.isStopped=!0;for(var e=this.observers,t=e.length,n=e.slice(),r=0;r<t;r++)n[r].complete();this.observers.length=0},t.prototype.unsubscribe=function(){this.isStopped=!0,this.closed=!0,this.observers=null},t.prototype._trySubscribe=function(t){if(this.closed)throw new I;return e.prototype._trySubscribe.call(this,t)},t.prototype._subscribe=function(e){if(this.closed)throw new I;return this.hasError?(e.error(this.thrownError),u.y.EMPTY):this.isStopped?(e.complete(),u.y.EMPTY):(this.observers.push(e),new p(this,e))},t.prototype.asObservable=function(){var e=new l.c;return e.source=this,e},t.create=function(e,t){return new h(e,t)},t}(l.c),h=function(e){function t(t,n){var r=e.call(this)||this;return r.destination=t,r.source=n,r}return r.C6(t,e),t.prototype.next=function(e){var t=this.destination;t&&t.next&&t.next(e)},t.prototype.error=function(e){var t=this.destination;t&&t.error&&this.destination.error(e)},t.prototype.complete=function(){var e=this.destination;e&&e.complete&&this.destination.complete()},t.prototype._subscribe=function(e){return this.source?this.source.subscribe(e):u.y.EMPTY},t}(C),B=n(6959),A=n(4833),y=n(8927),f=n(7404);d||(d={});var G=function(){function e(e,t,n){this.kind=e,this.value=t,this.error=n,this.hasValue="N"===e}return e.prototype.observe=function(e){switch(this.kind){case"N":return e.next&&e.next(this.value);case"E":return e.error&&e.error(this.error);case"C":return e.complete&&e.complete()}},e.prototype.do=function(e,t,n){switch(this.kind){case"N":return e&&e(this.value);case"E":return t&&t(this.error);case"C":return n&&n()}},e.prototype.accept=function(e,t,n){return e&&"function"==typeof e.next?this.observe(e):this.do(e,t,n)},e.prototype.toObservable=function(){switch(this.kind){case"N":return(0,y.of)(this.value);case"E":return(0,f.$)(this.error);case"C":return(0,A.I)()}throw new Error("unexpected notification kind value")},e.createNext=function(t){return void 0!==t?new e("N",t):e.undefinedValueNotification},e.createError=function(t){return new e("E",void 0,t)},e.createComplete=function(){return e.completeNotification},e.completeNotification=new e("C"),e.undefinedValueNotification=new e("N",void 0),e}();function Q(e,t){return void 0===t&&(t=0),function(n){return n.lift(new F(e,t))}}var F=function(){function e(e,t){void 0===t&&(t=0),this.scheduler=e,this.delay=t}return e.prototype.call=function(e,t){return t.subscribe(new v(e,this.scheduler,this.delay))},e}(),v=function(e){function t(t,n,r){void 0===r&&(r=0);var i=e.call(this,t)||this;return i.scheduler=n,i.delay=r,i}return r.C6(t,e),t.dispatch=function(e){var t=e.notification,n=e.destination;t.observe(n),this.unsubscribe()},t.prototype.scheduleMessage=function(e){this.destination.add(this.scheduler.schedule(t.dispatch,this.delay,new Z(e,this.destination)))},t.prototype._next=function(e){this.scheduleMessage(G.createNext(e))},t.prototype._error=function(e){this.scheduleMessage(G.createError(e)),this.unsubscribe()},t.prototype._complete=function(){this.scheduleMessage(G.createComplete()),this.unsubscribe()},t}(s.v),Z=function(e,t){this.notification=e,this.destination=t},E=n(8100),S=n(4490),X=1,T={},x=function(e){function t(t,n){var r=e.call(this,t,n)||this;return r.scheduler=t,r.work=n,r}return r.C6(t,e),t.prototype.requestAsyncId=function(t,n,r){return void 0===r&&(r=0),null!==r&&r>0?e.prototype.requestAsyncId.call(this,t,n,r):(t.actions.push(this),t.scheduled||(t.scheduled=function(e){var t=X++;return T[t]=e,Promise.resolve().then((function(){return function(e){var t=T[e];t&&t()}(t)})),t}(t.flush.bind(t,null))))},t.prototype.recycleAsyncId=function(t,n,r){if(void 0===r&&(r=0),null!==r&&r>0||null===r&&this.delay>0)return e.prototype.recycleAsyncId.call(this,t,n,r);0===t.actions.length&&(function(e){delete T[e]}(n),t.scheduled=void 0)},t}(i.R),U=new(function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return r.C6(t,e),t.prototype.flush=function(e){this.active=!0,this.scheduled=void 0;var t,n=this.actions,r=-1,i=n.length;e=e||n.shift();do{if(t=e.execute(e.state,e.delay))break}while(++r<i&&(e=n.shift()));if(this.active=!1,t){for(;++r<i&&(e=n.shift());)e.unsubscribe();throw t}},t}(a.q))(x),N=n(252),R=function(e){function t(t,n,r){void 0===n&&(n=0),void 0===r&&(r=U);var i,o=e.call(this)||this;return o.source=t,o.delayTime=n,o.scheduler=r,i=n,((0,N.c)(i)||!(i-parseFloat(i)+1>=0)||n<0)&&(o.delayTime=0),r&&"function"==typeof r.schedule||(o.scheduler=U),o}return r.C6(t,e),t.create=function(e,n,r){return void 0===n&&(n=0),void 0===r&&(r=U),new t(e,n,r)},t.dispatch=function(e){var t=e.source,n=e.subscriber;return this.add(t.subscribe(n))},t.prototype._subscribe=function(e){var n=this.delayTime,r=this.source;return this.scheduler.schedule(t.dispatch,n,{source:r,subscriber:e})},t}(l.c),O=function(){function e(e,t){this.scheduler=e,this.delay=t}return e.prototype.call=function(e,t){return new R(t,this.delay,this.scheduler).subscribe(e)},e}(),V=n(9610),W=function(e,t){return e===t||"function"==typeof t&&e===t.toString()},_=function(){for(var e=arguments.length,t=Array(e),n=0;n<e;n++)t[n]=arguments[n];return function(e){return e.pipe((0,V.p)((function(e){var n=e.type,r=t.length;if(1===r)return W(n,t[0]);for(var i=0;i<r;i++)if(W(n,t[i]))return!0;return!1})))}},w=function(){function e(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}return function(t,n,r){return n&&e(t.prototype,n),r&&e(t,r),t}}(),H=function(e){function t(e){!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,t);var n=function(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}(this,(t.__proto__||Object.getPrototypeOf(t)).call(this));return n.source=e,n}return function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}(t,e),w(t,null,[{key:"of",value:function(){return new this(y.of.apply(void 0,arguments))}},{key:"from",value:function(e,t){return new this((0,B.H)(e,t))}}]),w(t,[{key:"lift",value:function(e){var n=new t(this);return n.operator=e,n}},{key:"ofType",value:function(){return _.apply(void 0,arguments)(this)}}]),t}(l.c),Y=function(e){function t(e,n){!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,t);var r=function(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}(this,(t.__proto__||Object.getPrototypeOf(t)).call(this,(function(e){var t=r.__notifier.subscribe(e);return t&&!t.closed&&e.next(r.value),t})));return r.value=n,r.__notifier=new C,r.__subscription=e.subscribe((function(e){e!==r.value&&(r.value=e,r.__notifier.next(e))})),r}return function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}(t,e),t}(l.c);function k(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=new(0,c.constructor)(c.SchedulerAction),n=new C,r=void 0,i=function(i){r=i;var o=(new C).pipe(Q(t)),a=(new C).pipe(Q(t)),c=new H(o),l=new Y(a,r.getState());return n.pipe((0,E.T)((function(t){var n="dependencies"in e?t(c,l,e.dependencies):t(c,l);if(!n)throw new TypeError('Your root Epic "'+(t.name||"<anonymous>")+"\" does not return a stream. Double check you're not missing a return statement!");return n})),(0,S.ZZ)((function(e){return(0,B.H)(e).pipe((n=t,void 0===r&&(r=0),function(e){return e.lift(new O(n,r))}),Q(t));var n,r}))).subscribe(r.dispatch),function(e){return function(t){var n=e(t);return a.next(r.getState()),o.next(t),n}}};return i.run=function(e){n.next(e)},i}},1265:(e,t,n)=>{"use strict";function r(e){return function(t){var n=t.dispatch,r=t.getState;return function(t){return function(i){return"function"==typeof i?i(n,r,e):t(i)}}}}n.d(t,{A:()=>o});var i=r();i.withExtraArgument=r;const o=i},1829:(e,t,n)=>{"use strict";function r(e){return r="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},r(e)}function i(e,t,n){return(t=function(e){var t=function(e){if("object"!==r(e)||null===e)return e;var t=e[Symbol.toPrimitive];if(void 0!==t){var n=t.call(e,"string");if("object"!==r(n))return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(e);return"symbol"===r(t)?t:String(t)}(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function o(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function a(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?o(Object(n),!0).forEach((function(t){i(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):o(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function c(e){return"Minified Redux error #"+e+"; visit https://redux.js.org/Errors?code="+e+" for the full message or use the non-minified dev environment for full errors. "}n.d(t,{Tw:()=>p,HY:()=>d,Zz:()=>I,y$:()=>g});var l="function"==typeof Symbol&&Symbol.observable||"@@observable",s=function(){return Math.random().toString(36).substring(7).split("").join(".")},u={INIT:"@@redux/INIT"+s(),REPLACE:"@@redux/REPLACE"+s(),PROBE_UNKNOWN_ACTION:function(){return"@@redux/PROBE_UNKNOWN_ACTION"+s()}};function g(e,t,n){var r;if("function"==typeof t&&"function"==typeof n||"function"==typeof n&&"function"==typeof arguments[3])throw new Error(c(0));if("function"==typeof t&&void 0===n&&(n=t,t=void 0),void 0!==n){if("function"!=typeof n)throw new Error(c(1));return n(g)(e,t)}if("function"!=typeof e)throw new Error(c(2));var i=e,o=t,a=[],s=a,d=!1;function I(){s===a&&(s=a.slice())}function p(){if(d)throw new Error(c(3));return o}function b(e){if("function"!=typeof e)throw new Error(c(4));if(d)throw new Error(c(5));var t=!0;return I(),s.push(e),function(){if(t){if(d)throw new Error(c(6));t=!1,I();var n=s.indexOf(e);s.splice(n,1),a=null}}}function m(e){if(!function(e){if("object"!=typeof e||null===e)return!1;for(var t=e;null!==Object.getPrototypeOf(t);)t=Object.getPrototypeOf(t);return Object.getPrototypeOf(e)===t}(e))throw new Error(c(7));if(void 0===e.type)throw new Error(c(8));if(d)throw new Error(c(9));try{d=!0,o=i(o,e)}finally{d=!1}for(var t=a=s,n=0;n<t.length;n++)(0,t[n])();return e}return m({type:u.INIT}),(r={dispatch:m,subscribe:b,getState:p,replaceReducer:function(e){if("function"!=typeof e)throw new Error(c(10));i=e,m({type:u.REPLACE})}})[l]=function(){var e,t=b;return(e={subscribe:function(e){if("object"!=typeof e||null===e)throw new Error(c(11));function n(){e.next&&e.next(p())}return n(),{unsubscribe:t(n)}}})[l]=function(){return this},e},r}function d(e){for(var t=Object.keys(e),n={},r=0;r<t.length;r++){var i=t[r];"function"==typeof e[i]&&(n[i]=e[i])}var o,l=Object.keys(n);try{!function(e){Object.keys(e).forEach((function(t){var n=e[t];if(void 0===n(void 0,{type:u.INIT}))throw new Error(c(12));if(void 0===n(void 0,{type:u.PROBE_UNKNOWN_ACTION()}))throw new Error(c(13))}))}(n)}catch(a){o=a}return function(e,t){if(void 0===e&&(e={}),o)throw o;for(var r=!1,i={},a=0;a<l.length;a++){var s=l[a],u=n[s],g=e[s],d=u(g,t);if(void 0===d)throw t&&t.type,new Error(c(14));i[s]=d,r=r||d!==g}return(r=r||l.length!==Object.keys(e).length)?i:e}}function I(){for(var e=arguments.length,t=new Array(e),n=0;n<e;n++)t[n]=arguments[n];return 0===t.length?function(e){return e}:1===t.length?t[0]:t.reduce((function(e,t){return function(){return e(t.apply(void 0,arguments))}}))}function p(){for(var e=arguments.length,t=new Array(e),n=0;n<e;n++)t[n]=arguments[n];return function(e){return function(){var n=e.apply(void 0,arguments),r=function(){throw new Error(c(15))},i={getState:n.getState,dispatch:function(){return r.apply(void 0,arguments)}},o=t.map((function(e){return e(i)}));return r=I.apply(void 0,o)(n.dispatch),a(a({},n),{},{dispatch:r})}}}},2325:(e,t,n)=>{"use strict";n.d(t,{Mz:()=>o});var r="NOT_FOUND",i=function(e,t){return e===t};var o=function(e){for(var t=arguments.length,n=new Array(t>1?t-1:0),r=1;r<t;r++)n[r-1]=arguments[r];return function(){for(var t=arguments.length,r=new Array(t),i=0;i<t;i++)r[i]=arguments[i];var o,a=0,c={memoizeOptions:void 0},l=r.pop();if("object"==typeof l&&(c=l,l=r.pop()),"function"!=typeof l)throw new Error("createSelector expects an output function after the inputs, but received: ["+typeof l+"]");var s=c.memoizeOptions,u=void 0===s?n:s,g=Array.isArray(u)?u:[u],d=function(e){var t=Array.isArray(e[0])?e[0]:e;if(!t.every((function(e){return"function"==typeof e}))){var n=t.map((function(e){return"function"==typeof e?"function "+(e.name||"unnamed")+"()":typeof e})).join(", ");throw new Error("createSelector expects all input-selectors to be functions, but received the following types: ["+n+"]")}return t}(r),I=e.apply(void 0,[function(){return a++,l.apply(null,arguments)}].concat(g)),p=e((function(){for(var e=[],t=d.length,n=0;n<t;n++)e.push(d[n].apply(null,arguments));return o=I.apply(null,e)}));return Object.assign(p,{resultFunc:l,memoizedResultFunc:I,dependencies:d,lastResult:function(){return o},recomputations:function(){return a},resetRecomputations:function(){return a=0}}),p}}((function(e,t){var n,o,a="object"==typeof t?t:{equalityCheck:t},c=a.equalityCheck,l=void 0===c?i:c,s=a.maxSize,u=void 0===s?1:s,g=a.resultEqualityCheck,d=function(e){return function(t,n){if(null===t||null===n||t.length!==n.length)return!1;for(var r=t.length,i=0;i<r;i++)if(!e(t[i],n[i]))return!1;return!0}}(l),I=1===u?(n=d,{get:function(e){return o&&n(o.key,e)?o.value:r},put:function(e,t){o={key:e,value:t}},getEntries:function(){return o?[o]:[]},clear:function(){o=void 0}}):function(e,t){var n=[];function i(e){var i=n.findIndex((function(n){return t(e,n.key)}));if(i>-1){var o=n[i];return i>0&&(n.splice(i,1),n.unshift(o)),o.value}return r}return{get:i,put:function(t,o){i(t)===r&&(n.unshift({key:t,value:o}),n.length>e&&n.pop())},getEntries:function(){return n},clear:function(){n=[]}}}(u,d);function p(){var t=I.get(arguments);if(t===r){if(t=e.apply(null,arguments),g){var n=I.getEntries().find((function(e){return g(e.value,t)}));n&&(t=n.value)}I.put(arguments,t)}return t}return p.clearCache=function(){return I.clear()},p}))},3591:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>G});var r=function(){if("undefined"!=typeof Map)return Map;function e(e,t){var n=-1;return e.some((function(e,r){return e[0]===t&&(n=r,!0)})),n}return function(){function t(){this.__entries__=[]}return Object.defineProperty(t.prototype,"size",{get:function(){return this.__entries__.length},enumerable:!0,configurable:!0}),t.prototype.get=function(t){var n=e(this.__entries__,t),r=this.__entries__[n];return r&&r[1]},t.prototype.set=function(t,n){var r=e(this.__entries__,t);~r?this.__entries__[r][1]=n:this.__entries__.push([t,n])},t.prototype.delete=function(t){var n=this.__entries__,r=e(n,t);~r&&n.splice(r,1)},t.prototype.has=function(t){return!!~e(this.__entries__,t)},t.prototype.clear=function(){this.__entries__.splice(0)},t.prototype.forEach=function(e,t){void 0===t&&(t=null);for(var n=0,r=this.__entries__;n<r.length;n++){var i=r[n];e.call(t,i[1],i[0])}},t}()}(),i="undefined"!=typeof window&&"undefined"!=typeof document&&window.document===document,o=void 0!==n.g&&n.g.Math===Math?n.g:"undefined"!=typeof self&&self.Math===Math?self:"undefined"!=typeof window&&window.Math===Math?window:Function("return this")(),a="function"==typeof requestAnimationFrame?requestAnimationFrame.bind(o):function(e){return setTimeout((function(){return e(Date.now())}),1e3/60)},c=["top","right","bottom","left","width","height","size","weight"],l="undefined"!=typeof MutationObserver,s=function(){function e(){this.connected_=!1,this.mutationEventsAdded_=!1,this.mutationsObserver_=null,this.observers_=[],this.onTransitionEnd_=this.onTransitionEnd_.bind(this),this.refresh=function(e){var t=!1,n=!1,r=0;function i(){t&&(t=!1,e()),n&&c()}function o(){a(i)}function c(){var e=Date.now();if(t){if(e-r<2)return;n=!0}else t=!0,n=!1,setTimeout(o,20);r=e}return c}(this.refresh.bind(this))}return e.prototype.addObserver=function(e){~this.observers_.indexOf(e)||this.observers_.push(e),this.connected_||this.connect_()},e.prototype.removeObserver=function(e){var t=this.observers_,n=t.indexOf(e);~n&&t.splice(n,1),!t.length&&this.connected_&&this.disconnect_()},e.prototype.refresh=function(){this.updateObservers_()&&this.refresh()},e.prototype.updateObservers_=function(){var e=this.observers_.filter((function(e){return e.gatherActive(),e.hasActive()}));return e.forEach((function(e){return e.broadcastActive()})),e.length>0},e.prototype.connect_=function(){i&&!this.connected_&&(document.addEventListener("transitionend",this.onTransitionEnd_),window.addEventListener("resize",this.refresh),l?(this.mutationsObserver_=new MutationObserver(this.refresh),this.mutationsObserver_.observe(document,{attributes:!0,childList:!0,characterData:!0,subtree:!0})):(document.addEventListener("DOMSubtreeModified",this.refresh),this.mutationEventsAdded_=!0),this.connected_=!0)},e.prototype.disconnect_=function(){i&&this.connected_&&(document.removeEventListener("transitionend",this.onTransitionEnd_),window.removeEventListener("resize",this.refresh),this.mutationsObserver_&&this.mutationsObserver_.disconnect(),this.mutationEventsAdded_&&document.removeEventListener("DOMSubtreeModified",this.refresh),this.mutationsObserver_=null,this.mutationEventsAdded_=!1,this.connected_=!1)},e.prototype.onTransitionEnd_=function(e){var t=e.propertyName,n=void 0===t?"":t;c.some((function(e){return!!~n.indexOf(e)}))&&this.refresh()},e.getInstance=function(){return this.instance_||(this.instance_=new e),this.instance_},e.instance_=null,e}(),u=function(e,t){for(var n=0,r=Object.keys(t);n<r.length;n++){var i=r[n];Object.defineProperty(e,i,{value:t[i],enumerable:!1,writable:!1,configurable:!0})}return e},g=function(e){return e&&e.ownerDocument&&e.ownerDocument.defaultView||o},d=C(0,0,0,0);function I(e){return parseFloat(e)||0}function p(e){for(var t=[],n=1;n<arguments.length;n++)t[n-1]=arguments[n];return t.reduce((function(t,n){return t+I(e["border-"+n+"-width"])}),0)}var b="undefined"!=typeof SVGGraphicsElement?function(e){return e instanceof g(e).SVGGraphicsElement}:function(e){return e instanceof g(e).SVGElement&&"function"==typeof e.getBBox};function m(e){return i?b(e)?function(e){var t=e.getBBox();return C(0,0,t.width,t.height)}(e):function(e){var t=e.clientWidth,n=e.clientHeight;if(!t&&!n)return d;var r=g(e).getComputedStyle(e),i=function(e){for(var t={},n=0,r=["top","right","bottom","left"];n<r.length;n++){var i=r[n],o=e["padding-"+i];t[i]=I(o)}return t}(r),o=i.left+i.right,a=i.top+i.bottom,c=I(r.width),l=I(r.height);if("border-box"===r.boxSizing&&(Math.round(c+o)!==t&&(c-=p(r,"left","right")+o),Math.round(l+a)!==n&&(l-=p(r,"top","bottom")+a)),!function(e){return e===g(e).document.documentElement}(e)){var s=Math.round(c+o)-t,u=Math.round(l+a)-n;1!==Math.abs(s)&&(c-=s),1!==Math.abs(u)&&(l-=u)}return C(i.left,i.top,c,l)}(e):d}function C(e,t,n,r){return{x:e,y:t,width:n,height:r}}var h=function(){function e(e){this.broadcastWidth=0,this.broadcastHeight=0,this.contentRect_=C(0,0,0,0),this.target=e}return e.prototype.isActive=function(){var e=m(this.target);return this.contentRect_=e,e.width!==this.broadcastWidth||e.height!==this.broadcastHeight},e.prototype.broadcastRect=function(){var e=this.contentRect_;return this.broadcastWidth=e.width,this.broadcastHeight=e.height,e},e}(),B=function(e,t){var n,r,i,o,a,c,l,s=(r=(n=t).x,i=n.y,o=n.width,a=n.height,c="undefined"!=typeof DOMRectReadOnly?DOMRectReadOnly:Object,l=Object.create(c.prototype),u(l,{x:r,y:i,width:o,height:a,top:i,right:r+o,bottom:a+i,left:r}),l);u(this,{target:e,contentRect:s})},A=function(){function e(e,t,n){if(this.activeObservations_=[],this.observations_=new r,"function"!=typeof e)throw new TypeError("The callback provided as parameter 1 is not a function.");this.callback_=e,this.controller_=t,this.callbackCtx_=n}return e.prototype.observe=function(e){if(!arguments.length)throw new TypeError("1 argument required, but only 0 present.");if("undefined"!=typeof Element&&Element instanceof Object){if(!(e instanceof g(e).Element))throw new TypeError('parameter 1 is not of type "Element".');var t=this.observations_;t.has(e)||(t.set(e,new h(e)),this.controller_.addObserver(this),this.controller_.refresh())}},e.prototype.unobserve=function(e){if(!arguments.length)throw new TypeError("1 argument required, but only 0 present.");if("undefined"!=typeof Element&&Element instanceof Object){if(!(e instanceof g(e).Element))throw new TypeError('parameter 1 is not of type "Element".');var t=this.observations_;t.has(e)&&(t.delete(e),t.size||this.controller_.removeObserver(this))}},e.prototype.disconnect=function(){this.clearActive(),this.observations_.clear(),this.controller_.removeObserver(this)},e.prototype.gatherActive=function(){var e=this;this.clearActive(),this.observations_.forEach((function(t){t.isActive()&&e.activeObservations_.push(t)}))},e.prototype.broadcastActive=function(){if(this.hasActive()){var e=this.callbackCtx_,t=this.activeObservations_.map((function(e){return new B(e.target,e.broadcastRect())}));this.callback_.call(e,t,e),this.clearActive()}},e.prototype.clearActive=function(){this.activeObservations_.splice(0)},e.prototype.hasActive=function(){return this.activeObservations_.length>0},e}(),y="undefined"!=typeof WeakMap?new WeakMap:new r,f=function e(t){if(!(this instanceof e))throw new TypeError("Cannot call a class as a function.");if(!arguments.length)throw new TypeError("1 argument required, but only 0 present.");var n=s.getInstance(),r=new A(t,n,this);y.set(this,r)};["observe","unobserve","disconnect"].forEach((function(e){f.prototype[e]=function(){var t;return(t=y.get(this))[e].apply(t,arguments)}}));const G=void 0!==o.ResizeObserver?o.ResizeObserver:f},138:(e,t,n)=>{"use strict";n.d(t,{R:()=>i});var r=n(5215),i=function(e){function t(t,n,r){var i=e.call(this)||this;return i.parent=t,i.outerValue=n,i.outerIndex=r,i.index=0,i}return r.C6(t,e),t.prototype._next=function(e){this.parent.notifyNext(this.outerValue,e,this.outerIndex,this.index++,this)},t.prototype._error=function(e){this.parent.notifyError(e,this),this.unsubscribe()},t.prototype._complete=function(){this.parent.notifyComplete(this),this.unsubscribe()},t}(n(2968).v)},1460:(e,t,n)=>{"use strict";n.d(t,{c:()=>s});var r=n(2968),i=n(3089),o=n(6708),a=n(3656);function c(){}var l=n(1732),s=function(){function e(e){this._isScalar=!1,e&&(this._subscribe=e)}return e.prototype.lift=function(t){var n=new e;return n.source=this,n.operator=t,n},e.prototype.subscribe=function(e,t,n){var a=this.operator,c=function(e,t,n){if(e){if(e instanceof r.v)return e;if(e[i.D])return e[i.D]()}return e||t||n?new r.v(e,t,n):new r.v(o.I)}(e,t,n);if(a?c.add(a.call(c,this.source)):c.add(this.source||l.$.useDeprecatedSynchronousErrorHandling&&!c.syncErrorThrowable?this._subscribe(c):this._trySubscribe(c)),l.$.useDeprecatedSynchronousErrorHandling&&c.syncErrorThrowable&&(c.syncErrorThrowable=!1,c.syncErrorThrown))throw c.syncErrorValue;return c},e.prototype._trySubscribe=function(e){try{return this._subscribe(e)}catch(t){l.$.useDeprecatedSynchronousErrorHandling&&(e.syncErrorThrown=!0,e.syncErrorValue=t),function(e){for(;e;){var t=e,n=t.closed,i=t.destination,o=t.isStopped;if(n||o)return!1;e=i&&i instanceof r.v?i:null}return!0}(e)?e.error(t):console.warn(t)}},e.prototype.forEach=function(e,t){var n=this;return new(t=u(t))((function(t,r){var i;i=n.subscribe((function(t){try{e(t)}catch(n){r(n),i&&i.unsubscribe()}}),r,t)}))},e.prototype._subscribe=function(e){var t=this.source;return t&&t.subscribe(e)},e.prototype[a.s]=function(){return this},e.prototype.pipe=function(){for(var e=[],t=0;t<arguments.length;t++)e[t]=arguments[t];return 0===e.length?this:function(e){return e?1===e.length?e[0]:function(t){return e.reduce((function(e,t){return t(e)}),t)}:c}(e)(this)},e.prototype.toPromise=function(e){var t=this;return new(e=u(e))((function(e,n){var r;t.subscribe((function(e){return r=e}),(function(e){return n(e)}),(function(){return e(r)}))}))},e.create=function(t){return new e(t)},e}();function u(e){if(e||(e=l.$.Promise||Promise),!e)throw new Error("no Promise impl found");return e}},6708:(e,t,n)=>{"use strict";n.d(t,{I:()=>o});var r=n(1732),i=n(9199),o={closed:!0,next:function(e){},error:function(e){if(r.$.useDeprecatedSynchronousErrorHandling)throw e;(0,i.T)(e)},complete:function(){}}},7069:(e,t,n)=>{"use strict";n.d(t,{E:()=>i});var r=n(5215),i=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return r.C6(t,e),t.prototype.notifyNext=function(e,t,n,r,i){this.destination.next(t)},t.prototype.notifyError=function(e,t){this.destination.error(e)},t.prototype.notifyComplete=function(e){this.destination.complete()},t}(n(2968).v)},2968:(e,t,n)=>{"use strict";n.d(t,{v:()=>u});var r=n(5215),i=n(9029),o=n(6708),a=n(2812),c=n(3089),l=n(1732),s=n(9199),u=function(e){function t(n,r,i){var a=e.call(this)||this;switch(a.syncErrorValue=null,a.syncErrorThrown=!1,a.syncErrorThrowable=!1,a.isStopped=!1,arguments.length){case 0:a.destination=o.I;break;case 1:if(!n){a.destination=o.I;break}if("object"==typeof n){n instanceof t?(a.syncErrorThrowable=n.syncErrorThrowable,a.destination=n,n.add(a)):(a.syncErrorThrowable=!0,a.destination=new g(a,n));break}default:a.syncErrorThrowable=!0,a.destination=new g(a,n,r,i)}return a}return r.C6(t,e),t.prototype[c.D]=function(){return this},t.create=function(e,n,r){var i=new t(e,n,r);return i.syncErrorThrowable=!1,i},t.prototype.next=function(e){this.isStopped||this._next(e)},t.prototype.error=function(e){this.isStopped||(this.isStopped=!0,this._error(e))},t.prototype.complete=function(){this.isStopped||(this.isStopped=!0,this._complete())},t.prototype.unsubscribe=function(){this.closed||(this.isStopped=!0,e.prototype.unsubscribe.call(this))},t.prototype._next=function(e){this.destination.next(e)},t.prototype._error=function(e){this.destination.error(e),this.unsubscribe()},t.prototype._complete=function(){this.destination.complete(),this.unsubscribe()},t.prototype._unsubscribeAndRecycle=function(){var e=this._parentOrParents;return this._parentOrParents=null,this.unsubscribe(),this.closed=!1,this.isStopped=!1,this._parentOrParents=e,this},t}(a.y),g=function(e){function t(t,n,r,a){var c,l=e.call(this)||this;l._parentSubscriber=t;var s=l;return(0,i.T)(n)?c=n:n&&(c=n.next,r=n.error,a=n.complete,n!==o.I&&(s=Object.create(n),(0,i.T)(s.unsubscribe)&&l.add(s.unsubscribe.bind(s)),s.unsubscribe=l.unsubscribe.bind(l))),l._context=s,l._next=c,l._error=r,l._complete=a,l}return r.C6(t,e),t.prototype.next=function(e){if(!this.isStopped&&this._next){var t=this._parentSubscriber;l.$.useDeprecatedSynchronousErrorHandling&&t.syncErrorThrowable?this.__tryOrSetError(t,this._next,e)&&this.unsubscribe():this.__tryOrUnsub(this._next,e)}},t.prototype.error=function(e){if(!this.isStopped){var t=this._parentSubscriber,n=l.$.useDeprecatedSynchronousErrorHandling;if(this._error)n&&t.syncErrorThrowable?(this.__tryOrSetError(t,this._error,e),this.unsubscribe()):(this.__tryOrUnsub(this._error,e),this.unsubscribe());else if(t.syncErrorThrowable)n?(t.syncErrorValue=e,t.syncErrorThrown=!0):(0,s.T)(e),this.unsubscribe();else{if(this.unsubscribe(),n)throw e;(0,s.T)(e)}}},t.prototype.complete=function(){var e=this;if(!this.isStopped){var t=this._parentSubscriber;if(this._complete){var n=function(){return e._complete.call(e._context)};l.$.useDeprecatedSynchronousErrorHandling&&t.syncErrorThrowable?(this.__tryOrSetError(t,n),this.unsubscribe()):(this.__tryOrUnsub(n),this.unsubscribe())}else this.unsubscribe()}},t.prototype.__tryOrUnsub=function(e,t){try{e.call(this._context,t)}catch(n){if(this.unsubscribe(),l.$.useDeprecatedSynchronousErrorHandling)throw n;(0,s.T)(n)}},t.prototype.__tryOrSetError=function(e,t,n){if(!l.$.useDeprecatedSynchronousErrorHandling)throw new Error("bad call");try{t.call(this._context,n)}catch(r){return l.$.useDeprecatedSynchronousErrorHandling?(e.syncErrorValue=r,e.syncErrorThrown=!0,!0):((0,s.T)(r),!0)}return!1},t.prototype._unsubscribe=function(){var e=this._parentSubscriber;this._context=null,this._parentSubscriber=null,e.unsubscribe()},t}(u)},2812:(e,t,n)=>{"use strict";n.d(t,{y:()=>l});var r=n(252),i=n(806),o=n(9029);function a(e){return Error.call(this),this.message=e?e.length+" errors occurred during unsubscription:\n"+e.map((function(e,t){return t+1+") "+e.toString()})).join("\n  "):"",this.name="UnsubscriptionError",this.errors=e,this}a.prototype=Object.create(Error.prototype);var c=a,l=function(){function e(e){this.closed=!1,this._parentOrParents=null,this._subscriptions=null,e&&(this._unsubscribe=e)}var t;return e.prototype.unsubscribe=function(){var t;if(!this.closed){var n=this,a=n._parentOrParents,l=n._unsubscribe,u=n._subscriptions;if(this.closed=!0,this._parentOrParents=null,this._subscriptions=null,a instanceof e)a.remove(this);else if(null!==a)for(var g=0;g<a.length;++g)a[g].remove(this);if((0,o.T)(l))try{l.call(this)}catch(p){t=p instanceof c?s(p.errors):[p]}if((0,r.c)(u)){g=-1;for(var d=u.length;++g<d;){var I=u[g];if((0,i.G)(I))try{I.unsubscribe()}catch(p){t=t||[],p instanceof c?t=t.concat(s(p.errors)):t.push(p)}}}if(t)throw new c(t)}},e.prototype.add=function(t){var n=t;if(!t)return e.EMPTY;switch(typeof t){case"function":n=new e(t);case"object":if(n===this||n.closed||"function"!=typeof n.unsubscribe)return n;if(this.closed)return n.unsubscribe(),n;if(!(n instanceof e)){var r=n;(n=new e)._subscriptions=[r]}break;default:throw new Error("unrecognized teardown "+t+" added to Subscription.")}var i=n._parentOrParents;if(null===i)n._parentOrParents=this;else if(i instanceof e){if(i===this)return n;n._parentOrParents=[i,this]}else{if(-1!==i.indexOf(this))return n;i.push(this)}var o=this._subscriptions;return null===o?this._subscriptions=[n]:o.push(n),n},e.prototype.remove=function(e){var t=this._subscriptions;if(t){var n=t.indexOf(e);-1!==n&&t.splice(n,1)}},e.EMPTY=((t=new e).closed=!0,t),e}();function s(e){return e.reduce((function(e,t){return e.concat(t instanceof c?t.errors:t)}),[])}},1732:(e,t,n)=>{"use strict";n.d(t,{$:()=>i});var r=!1,i={Promise:void 0,set useDeprecatedSynchronousErrorHandling(e){e&&(new Error).stack,r=e},get useDeprecatedSynchronousErrorHandling(){return r}}},4833:(e,t,n)=>{"use strict";n.d(t,{I:()=>o,w:()=>i});var r=n(1460),i=new r.c((function(e){return e.complete()}));function o(e){return e?function(e){return new r.c((function(t){return e.schedule((function(){return t.complete()}))}))}(e):i}},6959:(e,t,n)=>{"use strict";n.d(t,{H:()=>g});var r=n(1460),i=n(8777),o=n(2812),a=n(3656),c=n(5890),l=n(3991),s=n(1164),u=n(9923);function g(e,t){return t?function(e,t){if(null!=e){if(function(e){return e&&"function"==typeof e[a.s]}(e))return function(e,t){return new r.c((function(n){var r=new o.y;return r.add(t.schedule((function(){var i=e[a.s]();r.add(i.subscribe({next:function(e){r.add(t.schedule((function(){return n.next(e)})))},error:function(e){r.add(t.schedule((function(){return n.error(e)})))},complete:function(){r.add(t.schedule((function(){return n.complete()})))}}))}))),r}))}(e,t);if((0,s.y)(e))return function(e,t){return new r.c((function(n){var r=new o.y;return r.add(t.schedule((function(){return e.then((function(e){r.add(t.schedule((function(){n.next(e),r.add(t.schedule((function(){return n.complete()})))})))}),(function(e){r.add(t.schedule((function(){return n.error(e)})))}))}))),r}))}(e,t);if((0,u.X)(e))return(0,c.V)(e,t);if(function(e){return e&&"function"==typeof e[l.lJ]}(e)||"string"==typeof e)return function(e,t){if(!e)throw new Error("Iterable cannot be null");return new r.c((function(n){var r,i=new o.y;return i.add((function(){r&&"function"==typeof r.return&&r.return()})),i.add(t.schedule((function(){r=e[l.lJ](),i.add(t.schedule((function(){if(!n.closed){var e,t;try{var i=r.next();e=i.value,t=i.done}catch(o){return void n.error(o)}t?n.complete():(n.next(e),this.schedule())}})))}))),i}))}(e,t)}throw new TypeError((null!==e&&typeof e||e)+" is not observable")}(e,t):e instanceof r.c?e:new r.c((0,i.i)(e))}},4601:(e,t,n)=>{"use strict";n.d(t,{c:()=>a});var r=n(1460),i=n(6239),o=n(5890);function a(e,t){return t?(0,o.V)(e,t):new r.c((0,i.v)(e))}},8988:(e,t,n)=>{"use strict";n.d(t,{T:()=>a});var r=n(1460),i=n(6959),o=n(4833);function a(e,t,n){return void 0===t&&(t=o.w),void 0===n&&(n=o.w),a=function(){return e()?t:n},new r.c((function(e){var t;try{t=a()}catch(n){return void e.error(n)}return(t?(0,i.H)(t):(0,o.I)()).subscribe(e)}));var a}},8927:(e,t,n)=>{"use strict";n.d(t,{of:()=>a});var r=n(4576),i=n(4601),o=n(5890);function a(){for(var e=[],t=0;t<arguments.length;t++)e[t]=arguments[t];var n=e[e.length-1];return(0,r.m)(n)?(e.pop(),(0,o.V)(e,n)):(0,i.c)(e)}},7404:(e,t,n)=>{"use strict";n.d(t,{$:()=>i});var r=n(1460);function i(e,t){return t?new r.c((function(n){return t.schedule(o,0,{error:e,subscriber:n})})):new r.c((function(t){return t.error(e)}))}function o(e){var t=e.error;e.subscriber.error(t)}},8083:(e,t,n)=>{"use strict";n.d(t,{W:()=>c});var r=n(5215),i=n(7069),o=n(138),a=n(5693);function c(e){return function(t){var n=new l(e),r=t.lift(n);return n.caught=r}}var l=function(){function e(e){this.selector=e}return e.prototype.call=function(e,t){return t.subscribe(new s(e,this.selector,this.caught))},e}(),s=function(e){function t(t,n,r){var i=e.call(this,t)||this;return i.selector=n,i.caught=r,i}return r.C6(t,e),t.prototype.error=function(t){if(!this.isStopped){var n=void 0;try{n=this.selector(t,this.caught)}catch(i){return void e.prototype.error.call(this,i)}this._unsubscribeAndRecycle();var r=new o.R(this,void 0,void 0);this.add(r),(0,a.F)(this,n,void 0,void 0,r)}},t}(i.E)},9610:(e,t,n)=>{"use strict";n.d(t,{p:()=>o});var r=n(5215),i=n(2968);function o(e,t){return function(n){return n.lift(new a(e,t))}}var a=function(){function e(e,t){this.predicate=e,this.thisArg=t}return e.prototype.call=function(e,t){return t.subscribe(new c(e,this.predicate,this.thisArg))},e}(),c=function(e){function t(t,n,r){var i=e.call(this,t)||this;return i.predicate=n,i.thisArg=r,i.count=0,i}return r.C6(t,e),t.prototype._next=function(e){var t;try{t=this.predicate.call(this.thisArg,e,this.count++)}catch(n){return void this.destination.error(n)}t&&this.destination.next(e)},t}(i.v)},8100:(e,t,n)=>{"use strict";n.d(t,{T:()=>o});var r=n(5215),i=n(2968);function o(e,t){return function(n){if("function"!=typeof e)throw new TypeError("argument is not a function. Are you looking for `mapTo()`?");return n.lift(new a(e,t))}}var a=function(){function e(e,t){this.project=e,this.thisArg=t}return e.prototype.call=function(e,t){return t.subscribe(new c(e,this.project,this.thisArg))},e}(),c=function(e){function t(t,n,r){var i=e.call(this,t)||this;return i.project=n,i.count=0,i.thisArg=r||i,i}return r.C6(t,e),t.prototype._next=function(e){var t;try{t=this.project.call(this.thisArg,e,this.count++)}catch(n){return void this.destination.error(n)}this.destination.next(t)},t}(i.v)},4490:(e,t,n)=>{"use strict";n.d(t,{ZZ:()=>s});var r=n(5215),i=n(5693),o=n(7069),a=n(138),c=n(8100),l=n(6959);function s(e,t,n){return void 0===n&&(n=Number.POSITIVE_INFINITY),"function"==typeof t?function(r){return r.pipe(s((function(n,r){return(0,l.H)(e(n,r)).pipe((0,c.T)((function(e,i){return t(n,e,r,i)})))}),n))}:("number"==typeof t&&(n=t),function(t){return t.lift(new u(e,n))})}var u=function(){function e(e,t){void 0===t&&(t=Number.POSITIVE_INFINITY),this.project=e,this.concurrent=t}return e.prototype.call=function(e,t){return t.subscribe(new g(e,this.project,this.concurrent))},e}(),g=function(e){function t(t,n,r){void 0===r&&(r=Number.POSITIVE_INFINITY);var i=e.call(this,t)||this;return i.project=n,i.concurrent=r,i.hasCompleted=!1,i.buffer=[],i.active=0,i.index=0,i}return r.C6(t,e),t.prototype._next=function(e){this.active<this.concurrent?this._tryNext(e):this.buffer.push(e)},t.prototype._tryNext=function(e){var t,n=this.index++;try{t=this.project(e,n)}catch(r){return void this.destination.error(r)}this.active++,this._innerSub(t,e,n)},t.prototype._innerSub=function(e,t,n){var r=new a.R(this,void 0,void 0);this.destination.add(r),(0,i.F)(this,e,t,n,r)},t.prototype._complete=function(){this.hasCompleted=!0,0===this.active&&0===this.buffer.length&&this.destination.complete(),this.unsubscribe()},t.prototype.notifyNext=function(e,t,n,r,i){this.destination.next(t)},t.prototype.notifyComplete=function(e){var t=this.buffer;this.remove(e),this.active--,t.length>0?this._next(t.shift()):0===this.active&&this.hasCompleted&&this.destination.complete()},t}(o.E)},2596:(e,t,n)=>{"use strict";n.d(t,{n:()=>s});var r=n(5215),i=n(7069),o=n(138),a=n(5693),c=n(8100),l=n(6959);function s(e,t){return"function"==typeof t?function(n){return n.pipe(s((function(n,r){return(0,l.H)(e(n,r)).pipe((0,c.T)((function(e,i){return t(n,e,r,i)})))})))}:function(t){return t.lift(new u(e))}}var u=function(){function e(e){this.project=e}return e.prototype.call=function(e,t){return t.subscribe(new g(e,this.project))},e}(),g=function(e){function t(t,n){var r=e.call(this,t)||this;return r.project=n,r.index=0,r}return r.C6(t,e),t.prototype._next=function(e){var t,n=this.index++;try{t=this.project(e,n)}catch(r){return void this.destination.error(r)}this._innerSub(t,e,n)},t.prototype._innerSub=function(e,t,n){var r=this.innerSubscription;r&&r.unsubscribe();var i=new o.R(this,void 0,void 0);this.destination.add(i),this.innerSubscription=(0,a.F)(this,e,t,n,i)},t.prototype._complete=function(){var t=this.innerSubscription;t&&!t.closed||e.prototype._complete.call(this),this.unsubscribe()},t.prototype._unsubscribe=function(){this.innerSubscription=null},t.prototype.notifyComplete=function(t){this.destination.remove(t),this.innerSubscription=null,this.isStopped&&e.prototype._complete.call(this)},t.prototype.notifyNext=function(e,t,n,r,i){this.destination.next(t)},t}(i.E)},5937:(e,t,n)=>{"use strict";n.d(t,{c:()=>l});var r=n(5215),i=n(2968),o=n(6027),a=new(n(7596).q)(o.R),c={leading:!0,trailing:!1};function l(e,t,n){return void 0===t&&(t=a),void 0===n&&(n=c),function(r){return r.lift(new s(e,t,n.leading,n.trailing))}}var s=function(){function e(e,t,n,r){this.duration=e,this.scheduler=t,this.leading=n,this.trailing=r}return e.prototype.call=function(e,t){return t.subscribe(new u(e,this.duration,this.scheduler,this.leading,this.trailing))},e}(),u=function(e){function t(t,n,r,i,o){var a=e.call(this,t)||this;return a.duration=n,a.scheduler=r,a.leading=i,a.trailing=o,a._hasTrailingValue=!1,a._trailingValue=null,a}return r.C6(t,e),t.prototype._next=function(e){this.throttled?this.trailing&&(this._trailingValue=e,this._hasTrailingValue=!0):(this.add(this.throttled=this.scheduler.schedule(g,this.duration,{subscriber:this})),this.leading?this.destination.next(e):this.trailing&&(this._trailingValue=e,this._hasTrailingValue=!0))},t.prototype._complete=function(){this._hasTrailingValue?(this.destination.next(this._trailingValue),this.destination.complete()):this.destination.complete()},t.prototype.clearThrottle=function(){var e=this.throttled;e&&(this.trailing&&this._hasTrailingValue&&(this.destination.next(this._trailingValue),this._trailingValue=null,this._hasTrailingValue=!1),e.unsubscribe(),this.remove(e),this.throttled=null)},t}(i.v);function g(e){e.subscriber.clearThrottle()}},5890:(e,t,n)=>{"use strict";n.d(t,{V:()=>o});var r=n(1460),i=n(2812);function o(e,t){return new r.c((function(n){var r=new i.y,o=0;return r.add(t.schedule((function(){o!==e.length?(n.next(e[o++]),n.closed||r.add(this.schedule())):n.complete()}))),r}))}},6027:(e,t,n)=>{"use strict";n.d(t,{R:()=>i});var r=n(5215),i=function(e){function t(t,n){var r=e.call(this,t,n)||this;return r.scheduler=t,r.work=n,r.pending=!1,r}return r.C6(t,e),t.prototype.schedule=function(e,t){if(void 0===t&&(t=0),this.closed)return this;this.state=e;var n=this.id,r=this.scheduler;return null!=n&&(this.id=this.recycleAsyncId(r,n,t)),this.pending=!0,this.delay=t,this.id=this.id||this.requestAsyncId(r,this.id,t),this},t.prototype.requestAsyncId=function(e,t,n){return void 0===n&&(n=0),setInterval(e.flush.bind(e,this),n)},t.prototype.recycleAsyncId=function(e,t,n){if(void 0===n&&(n=0),null!==n&&this.delay===n&&!1===this.pending)return t;clearInterval(t)},t.prototype.execute=function(e,t){if(this.closed)return new Error("executing a cancelled action");this.pending=!1;var n=this._execute(e,t);if(n)return n;!1===this.pending&&null!=this.id&&(this.id=this.recycleAsyncId(this.scheduler,this.id,null))},t.prototype._execute=function(e,t){var n=!1,r=void 0;try{this.work(e)}catch(i){n=!0,r=!!i&&i||new Error(i)}if(n)return this.unsubscribe(),r},t.prototype._unsubscribe=function(){var e=this.id,t=this.scheduler,n=t.actions,r=n.indexOf(this);this.work=null,this.state=null,this.pending=!1,this.scheduler=null,-1!==r&&n.splice(r,1),null!=e&&(this.id=this.recycleAsyncId(t,e,null)),this.delay=null},t}(function(e){function t(t,n){return e.call(this)||this}return r.C6(t,e),t.prototype.schedule=function(e,t){return void 0===t&&(t=0),this},t}(n(2812).y))},7596:(e,t,n)=>{"use strict";n.d(t,{q:()=>o});var r=n(5215),i=function(){function e(t,n){void 0===n&&(n=e.now),this.SchedulerAction=t,this.now=n}return e.prototype.schedule=function(e,t,n){return void 0===t&&(t=0),new this.SchedulerAction(this,e).schedule(n,t)},e.now=function(){return Date.now()},e}(),o=function(e){function t(n,r){void 0===r&&(r=i.now);var o=e.call(this,n,(function(){return t.delegate&&t.delegate!==o?t.delegate.now():r()}))||this;return o.actions=[],o.active=!1,o.scheduled=void 0,o}return r.C6(t,e),t.prototype.schedule=function(n,r,i){return void 0===r&&(r=0),t.delegate&&t.delegate!==this?t.delegate.schedule(n,r,i):e.prototype.schedule.call(this,n,r,i)},t.prototype.flush=function(e){var t=this.actions;if(this.active)t.push(e);else{var n;this.active=!0;do{if(n=e.execute(e.state,e.delay))break}while(e=t.shift());if(this.active=!1,n){for(;e=t.shift();)e.unsubscribe();throw n}}},t}(i)},3991:(e,t,n)=>{"use strict";n.d(t,{lJ:()=>r});var r="function"==typeof Symbol&&Symbol.iterator?Symbol.iterator:"@@iterator"},3656:(e,t,n)=>{"use strict";n.d(t,{s:()=>r});var r="function"==typeof Symbol&&Symbol.observable||"@@observable"},3089:(e,t,n)=>{"use strict";n.d(t,{D:()=>r});var r="function"==typeof Symbol?Symbol("rxSubscriber"):"@@rxSubscriber_"+Math.random()},9199:(e,t,n)=>{"use strict";function r(e){setTimeout((function(){throw e}),0)}n.d(t,{T:()=>r})},252:(e,t,n)=>{"use strict";n.d(t,{c:()=>r});var r=Array.isArray||function(e){return e&&"number"==typeof e.length}},9923:(e,t,n)=>{"use strict";n.d(t,{X:()=>r});var r=function(e){return e&&"number"==typeof e.length&&"function"!=typeof e}},9029:(e,t,n)=>{"use strict";function r(e){return"function"==typeof e}n.d(t,{T:()=>r})},806:(e,t,n)=>{"use strict";function r(e){return null!==e&&"object"==typeof e}n.d(t,{G:()=>r})},1164:(e,t,n)=>{"use strict";function r(e){return!!e&&"function"!=typeof e.subscribe&&"function"==typeof e.then}n.d(t,{y:()=>r})},4576:(e,t,n)=>{"use strict";function r(e){return e&&"function"==typeof e.schedule}n.d(t,{m:()=>r})},8777:(e,t,n)=>{"use strict";n.d(t,{i:()=>u});var r=n(6239),i=n(9199),o=n(3991),a=n(3656),c=n(9923),l=n(1164),s=n(806),u=function(e){if(e&&"function"==typeof e[a.s])return u=e,function(e){var t=u[a.s]();if("function"!=typeof t.subscribe)throw new TypeError("Provided object does not correctly implement Symbol.observable");return t.subscribe(e)};if((0,c.X)(e))return(0,r.v)(e);if((0,l.y)(e))return n=e,function(e){return n.then((function(t){e.closed||(e.next(t),e.complete())}),(function(t){return e.error(t)})).then(null,i.T),e};if(e&&"function"==typeof e[o.lJ])return t=e,function(e){for(var n=t[o.lJ]();;){var r=n.next();if(r.done){e.complete();break}if(e.next(r.value),e.closed)break}return"function"==typeof n.return&&e.add((function(){n.return&&n.return()})),e};var t,n,u,g=(0,s.G)(e)?"an invalid object":"'"+e+"'";throw new TypeError("You provided "+g+" where a stream was expected. You can provide an Observable, Promise, Array, or Iterable.")}},6239:(e,t,n)=>{"use strict";n.d(t,{v:()=>r});var r=function(e){return function(t){for(var n=0,r=e.length;n<r&&!t.closed;n++)t.next(e[n]);t.complete()}}},5693:(e,t,n)=>{"use strict";n.d(t,{F:()=>a});var r=n(138),i=n(8777),o=n(1460);function a(e,t,n,a,c){if(void 0===c&&(c=new r.R(e,n,a)),!c.closed)return t instanceof o.c?t.subscribe(c):(0,i.i)(t)(c)}},2833:e=>{e.exports=function(e,t,n,r){var i=n?n.call(r,e,t):void 0;if(void 0!==i)return!!i;if(e===t)return!0;if("object"!=typeof e||!e||"object"!=typeof t||!t)return!1;var o=Object.keys(e),a=Object.keys(t);if(o.length!==a.length)return!1;for(var c=Object.prototype.hasOwnProperty.bind(t),l=0;l<o.length;l++){var s=o[l];if(!c(s))return!1;var u=e[s],g=t[s];if(!1===(i=n?n.call(r,u,g,s):void 0)||void 0===i&&u!==g)return!1}return!0}},920:(e,t,n)=>{"use strict";var r=n(453),i=n(8075),o=n(8859),a=r("%TypeError%"),c=r("%WeakMap%",!0),l=r("%Map%",!0),s=i("WeakMap.prototype.get",!0),u=i("WeakMap.prototype.set",!0),g=i("WeakMap.prototype.has",!0),d=i("Map.prototype.get",!0),I=i("Map.prototype.set",!0),p=i("Map.prototype.has",!0),b=function(e,t){for(var n,r=e;null!==(n=r.next);r=n)if(n.key===t)return r.next=n.next,n.next=e.next,e.next=n,n};e.exports=function(){var e,t,n,r={assert:function(e){if(!r.has(e))throw new a("Side channel does not contain "+o(e))},get:function(r){if(c&&r&&("object"==typeof r||"function"==typeof r)){if(e)return s(e,r)}else if(l){if(t)return d(t,r)}else if(n)return function(e,t){var n=b(e,t);return n&&n.value}(n,r)},has:function(r){if(c&&r&&("object"==typeof r||"function"==typeof r)){if(e)return g(e,r)}else if(l){if(t)return p(t,r)}else if(n)return function(e,t){return!!b(e,t)}(n,r);return!1},set:function(r,i){c&&r&&("object"==typeof r||"function"==typeof r)?(e||(e=new c),u(e,r,i)):l?(t||(t=new l),I(t,r,i)):(n||(n={key:{},next:null}),function(e,t,n){var r=b(e,t);r?r.value=n:e.next={key:t,next:e.next,value:n}}(n,r,i))}};return r}},8887:function(e,t,n){var r,i,o;!function(){"use strict";i=[n(343)],r=function(e){return{backtrace:function(t){var n=[],r=10;"object"==typeof t&&"number"==typeof t.maxStackSize&&(r=t.maxStackSize);for(var i=arguments.callee;i&&n.length<r&&i.arguments;){for(var o=new Array(i.arguments.length),a=0;a<o.length;++a)o[a]=i.arguments[a];/function(?:\s+([\w$]+))+\s*\(/.test(i.toString())?n.push(new e({functionName:RegExp.$1||void 0,args:o})):n.push(new e({args:o}));try{i=i.caller}catch(c){break}}return n}}},void 0===(o=r.apply(t,i))||(e.exports=o)}()},8627:(e,t,n)=>{var r=n(8139),i=function(){};i.prototype.start=function(e){if(!e.key&&!e.targetUrl&&!e.customReportingFunction)throw new Error("Cannot initialize: No API key, target url or custom reporting function provided.");if(!e.projectId&&!e.targetUrl&&!e.customReportingFunction)throw new Error("Cannot initialize: No project ID, target url or custom reporting function provided.");this.customReportingFunction=e.customReportingFunction,this.apiKey=e.key,this.projectId=e.projectId,this.targetUrl=e.targetUrl,this.context=e.context||{},this.serviceContext={service:e.service||"web"},e.version&&(this.serviceContext.version=e.version),this.reportUncaughtExceptions=!1!==e.reportUncaughtExceptions,this.reportUnhandledPromiseRejections=!1!==e.reportUnhandledPromiseRejections,this.disabled=!!e.disabled,function(e){var t=function(){};if(e.reportUncaughtExceptions){var n=window.onerror||t;window.onerror=function(r,i,o,a,c){return c&&e.report(c).catch(t),n(r,i,o,a,c),!0}}if(e.reportUnhandledPromiseRejections){var r=window.onunhandledrejection||t;window.onunhandledrejection=function(n){return n&&e.report(n.reason).catch(t),r(n.reason),!0}}}(this)},i.prototype.report=function(e,t){if(this.disabled)return Promise.resolve(null);if(!e)return Promise.reject(new Error("no error to report"));t=t||{};var n={};n.serviceContext=this.serviceContext,n.context=this.context,n.context.httpRequest={userAgent:window.navigator.userAgent,url:window.location.href};var i=0;if("string"==typeof e||e instanceof String){try{throw new Error(e)}catch(c){e=c}i=t.skipLocalFrames||1}var o=this.targetUrl||"https://clouderrorreporting.googleapis.com/v1beta1/projects/"+this.projectId+"/events:report?key="+this.apiKey,a=this.customReportingFunction;return function(e,t){return r.fromError(e).then((function(n){for(var r=[e.toString()],i=t;i<n.length;i++)r.push(["    at ",n[i].getFunctionName()||"<anonymous>"," (",n[i].getFileName(),":",n[i].getLineNumber(),":",n[i].getColumnNumber(),")"].join(""));return r.join("\n")}),(function(t){return["Error extracting stack trace: ",t,"\n",e.toString(),"\n","    (",e.file,":",e.line,":",e.column,")"].join("")}))}(e,i).then((function(e){return n.message=e,a?a(n):function(e,t){var n=new XMLHttpRequest;return n.open("POST",e,!0),n.setRequestHeader("Content-Type","application/json; charset=UTF-8"),new Promise((function(e,r){n.onreadystatechange=function(){if(4===n.readyState){var i=n.status;i>=200&&i<300?e({message:t.message}):r(429===i?{message:"quota or rate limiting error on stackdriver report",name:"Http429FakeError"}:new Error((i?i+" http response":"network error")+" on stackdriver report"))}},n.send(JSON.stringify(t))}))}(o,n)}))},i.prototype.setUser=function(e){this.context.user=e},e.exports=i},343:function(e,t){var n,r,i;!function(){"use strict";r=[],void 0===(i="function"==typeof(n=function(){function e(e){return!isNaN(parseFloat(e))&&isFinite(e)}function t(e){return e.charAt(0).toUpperCase()+e.substring(1)}function n(e){return function(){return this[e]}}var r=["isConstructor","isEval","isNative","isToplevel"],i=["columnNumber","lineNumber"],o=["fileName","functionName","source"],a=r.concat(i,o,["args"],["evalOrigin"]);function c(e){if(e)for(var n=0;n<a.length;n++)void 0!==e[a[n]]&&this["set"+t(a[n])](e[a[n]])}c.prototype={getArgs:function(){return this.args},setArgs:function(e){if("[object Array]"!==Object.prototype.toString.call(e))throw new TypeError("Args must be an Array");this.args=e},getEvalOrigin:function(){return this.evalOrigin},setEvalOrigin:function(e){if(e instanceof c)this.evalOrigin=e;else{if(!(e instanceof Object))throw new TypeError("Eval Origin must be an Object or StackFrame");this.evalOrigin=new c(e)}},toString:function(){var e=this.getFileName()||"",t=this.getLineNumber()||"",n=this.getColumnNumber()||"",r=this.getFunctionName()||"";return this.getIsEval()?e?"[eval] ("+e+":"+t+":"+n+")":"[eval]:"+t+":"+n:r?r+" ("+e+":"+t+":"+n+")":e+":"+t+":"+n}},c.fromString=function(e){var t=e.indexOf("("),n=e.lastIndexOf(")"),r=e.substring(0,t),i=e.substring(t+1,n).split(","),o=e.substring(n+1);if(0===o.indexOf("@"))var a=/@(.+?)(?::(\d+))?(?::(\d+))?$/.exec(o,""),l=a[1],s=a[2],u=a[3];return new c({functionName:r,args:i||void 0,fileName:l,lineNumber:s||void 0,columnNumber:u||void 0})};for(var l=0;l<r.length;l++)c.prototype["get"+t(r[l])]=n(r[l]),c.prototype["set"+t(r[l])]=function(e){return function(t){this[e]=Boolean(t)}}(r[l]);for(var s=0;s<i.length;s++)c.prototype["get"+t(i[s])]=n(i[s]),c.prototype["set"+t(i[s])]=function(t){return function(n){if(!e(n))throw new TypeError(t+" must be a Number");this[t]=Number(n)}}(i[s]);for(var u=0;u<o.length;u++)c.prototype["get"+t(o[u])]=n(o[u]),c.prototype["set"+t(o[u])]=function(e){return function(t){this[e]=String(t)}}(o[u]);return c})?n.apply(t,r):n)||(e.exports=i)}()},671:(e,t,n)=>{var r=n(3835),i=Object.prototype.hasOwnProperty;function o(){this._array=[],this._set=Object.create(null)}o.fromArray=function(e,t){for(var n=new o,r=0,i=e.length;r<i;r++)n.add(e[r],t);return n},o.prototype.size=function(){return Object.getOwnPropertyNames(this._set).length},o.prototype.add=function(e,t){var n=r.toSetString(e),o=i.call(this._set,n),a=this._array.length;o&&!t||this._array.push(e),o||(this._set[n]=a)},o.prototype.has=function(e){var t=r.toSetString(e);return i.call(this._set,t)},o.prototype.indexOf=function(e){var t=r.toSetString(e);if(i.call(this._set,t))return this._set[t];throw new Error('"'+e+'" is not in the set.')},o.prototype.at=function(e){if(e>=0&&e<this._array.length)return this._array[e];throw new Error("No element indexed by "+e)},o.prototype.toArray=function(){return this._array.slice()},t.C=o},1860:(e,t,n)=>{var r=n(9900);t.encode=function(e){var t,n="",i=function(e){return e<0?1+(-e<<1):0+(e<<1)}(e);do{t=31&i,(i>>>=5)>0&&(t|=32),n+=r.encode(t)}while(i>0);return n},t.decode=function(e,t,n){var i,o,a,c,l=e.length,s=0,u=0;do{if(t>=l)throw new Error("Expected more digits in base 64 VLQ value.");if(-1===(o=r.decode(e.charCodeAt(t++))))throw new Error("Invalid base64 digit: "+e.charAt(t-1));i=!!(32&o),s+=(o&=31)<<u,u+=5}while(i);n.value=(c=(a=s)>>1,1&~a?c:-c),n.rest=t}},9900:(e,t)=>{var n="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".split("");t.encode=function(e){if(0<=e&&e<n.length)return n[e];throw new TypeError("Must be between 0 and 63: "+e)},t.decode=function(e){return 65<=e&&e<=90?e-65:97<=e&&e<=122?e-97+26:48<=e&&e<=57?e-48+52:43==e?62:47==e?63:-1}},5035:(e,t)=>{function n(e,r,i,o,a,c){var l=Math.floor((r-e)/2)+e,s=a(i,o[l],!0);return 0===s?l:s>0?r-l>1?n(l,r,i,o,a,c):c==t.LEAST_UPPER_BOUND?r<o.length?r:-1:l:l-e>1?n(e,l,i,o,a,c):c==t.LEAST_UPPER_BOUND?l:e<0?-1:e}t.GREATEST_LOWER_BOUND=1,t.LEAST_UPPER_BOUND=2,t.search=function(e,r,i,o){if(0===r.length)return-1;var a=n(-1,r.length,e,r,i,o||t.GREATEST_LOWER_BOUND);if(a<0)return-1;for(;a-1>=0&&0===i(r[a],r[a-1],!0);)--a;return a}},7238:(e,t,n)=>{var r=n(3835);function i(){this._array=[],this._sorted=!0,this._last={generatedLine:-1,generatedColumn:0}}i.prototype.unsortedForEach=function(e,t){this._array.forEach(e,t)},i.prototype.add=function(e){var t,n,i,o,a,c;n=e,i=(t=this._last).generatedLine,o=n.generatedLine,a=t.generatedColumn,c=n.generatedColumn,o>i||o==i&&c>=a||r.compareByGeneratedPositionsInflated(t,n)<=0?(this._last=e,this._array.push(e)):(this._sorted=!1,this._array.push(e))},i.prototype.toArray=function(){return this._sorted||(this._array.sort(r.compareByGeneratedPositionsInflated),this._sorted=!0),this._array},t.P=i},1737:(e,t)=>{function n(e,t,n){var r=e[t];e[t]=e[n],e[n]=r}function r(e,t,i,o){if(i<o){var a=i-1;n(e,(u=i,g=o,Math.round(u+Math.random()*(g-u))),o);for(var c=e[o],l=i;l<o;l++)t(e[l],c)<=0&&n(e,a+=1,l);n(e,a+1,l);var s=a+1;r(e,t,i,s-1),r(e,t,s+1,o)}var u,g}t.g=function(e,t){r(e,t,0,e.length-1)}},1606:(e,t,n)=>{var r=n(3835),i=n(5035),o=n(671).C,a=n(1860),c=n(1737).g;function l(e){var t=e;return"string"==typeof e&&(t=JSON.parse(e.replace(/^\)\]\}'/,""))),null!=t.sections?new g(t):new s(t)}function s(e){var t=e;"string"==typeof e&&(t=JSON.parse(e.replace(/^\)\]\}'/,"")));var n=r.getArg(t,"version"),i=r.getArg(t,"sources"),a=r.getArg(t,"names",[]),c=r.getArg(t,"sourceRoot",null),l=r.getArg(t,"sourcesContent",null),s=r.getArg(t,"mappings"),u=r.getArg(t,"file",null);if(n!=this._version)throw new Error("Unsupported version: "+n);i=i.map(String).map(r.normalize).map((function(e){return c&&r.isAbsolute(c)&&r.isAbsolute(e)?r.relative(c,e):e})),this._names=o.fromArray(a.map(String),!0),this._sources=o.fromArray(i,!0),this.sourceRoot=c,this.sourcesContent=l,this._mappings=s,this.file=u}function u(){this.generatedLine=0,this.generatedColumn=0,this.source=null,this.originalLine=null,this.originalColumn=null,this.name=null}function g(e){var t=e;"string"==typeof e&&(t=JSON.parse(e.replace(/^\)\]\}'/,"")));var n=r.getArg(t,"version"),i=r.getArg(t,"sections");if(n!=this._version)throw new Error("Unsupported version: "+n);this._sources=new o,this._names=new o;var a={line:-1,column:0};this._sections=i.map((function(e){if(e.url)throw new Error("Support for url field in sections not implemented.");var t=r.getArg(e,"offset"),n=r.getArg(t,"line"),i=r.getArg(t,"column");if(n<a.line||n===a.line&&i<a.column)throw new Error("Section offsets must be ordered and non-overlapping.");return a=t,{generatedOffset:{generatedLine:n+1,generatedColumn:i+1},consumer:new l(r.getArg(e,"map"))}}))}l.fromSourceMap=function(e){return s.fromSourceMap(e)},l.prototype._version=3,l.prototype.__generatedMappings=null,Object.defineProperty(l.prototype,"_generatedMappings",{get:function(){return this.__generatedMappings||this._parseMappings(this._mappings,this.sourceRoot),this.__generatedMappings}}),l.prototype.__originalMappings=null,Object.defineProperty(l.prototype,"_originalMappings",{get:function(){return this.__originalMappings||this._parseMappings(this._mappings,this.sourceRoot),this.__originalMappings}}),l.prototype._charIsMappingSeparator=function(e,t){var n=e.charAt(t);return";"===n||","===n},l.prototype._parseMappings=function(e,t){throw new Error("Subclasses must implement _parseMappings")},l.GENERATED_ORDER=1,l.ORIGINAL_ORDER=2,l.GREATEST_LOWER_BOUND=1,l.LEAST_UPPER_BOUND=2,l.prototype.eachMapping=function(e,t,n){var i,o=t||null;switch(n||l.GENERATED_ORDER){case l.GENERATED_ORDER:i=this._generatedMappings;break;case l.ORIGINAL_ORDER:i=this._originalMappings;break;default:throw new Error("Unknown order of iteration.")}var a=this.sourceRoot;i.map((function(e){var t=null===e.source?null:this._sources.at(e.source);return null!=t&&null!=a&&(t=r.join(a,t)),{source:t,generatedLine:e.generatedLine,generatedColumn:e.generatedColumn,originalLine:e.originalLine,originalColumn:e.originalColumn,name:null===e.name?null:this._names.at(e.name)}}),this).forEach(e,o)},l.prototype.allGeneratedPositionsFor=function(e){var t=r.getArg(e,"line"),n={source:r.getArg(e,"source"),originalLine:t,originalColumn:r.getArg(e,"column",0)};if(null!=this.sourceRoot&&(n.source=r.relative(this.sourceRoot,n.source)),!this._sources.has(n.source))return[];n.source=this._sources.indexOf(n.source);var o=[],a=this._findMapping(n,this._originalMappings,"originalLine","originalColumn",r.compareByOriginalPositions,i.LEAST_UPPER_BOUND);if(a>=0){var c=this._originalMappings[a];if(void 0===e.column)for(var l=c.originalLine;c&&c.originalLine===l;)o.push({line:r.getArg(c,"generatedLine",null),column:r.getArg(c,"generatedColumn",null),lastColumn:r.getArg(c,"lastGeneratedColumn",null)}),c=this._originalMappings[++a];else for(var s=c.originalColumn;c&&c.originalLine===t&&c.originalColumn==s;)o.push({line:r.getArg(c,"generatedLine",null),column:r.getArg(c,"generatedColumn",null),lastColumn:r.getArg(c,"lastGeneratedColumn",null)}),c=this._originalMappings[++a]}return o},t.SourceMapConsumer=l,s.prototype=Object.create(l.prototype),s.prototype.consumer=l,s.fromSourceMap=function(e){var t=Object.create(s.prototype),n=t._names=o.fromArray(e._names.toArray(),!0),i=t._sources=o.fromArray(e._sources.toArray(),!0);t.sourceRoot=e._sourceRoot,t.sourcesContent=e._generateSourcesContent(t._sources.toArray(),t.sourceRoot),t.file=e._file;for(var a=e._mappings.toArray().slice(),l=t.__generatedMappings=[],g=t.__originalMappings=[],d=0,I=a.length;d<I;d++){var p=a[d],b=new u;b.generatedLine=p.generatedLine,b.generatedColumn=p.generatedColumn,p.source&&(b.source=i.indexOf(p.source),b.originalLine=p.originalLine,b.originalColumn=p.originalColumn,p.name&&(b.name=n.indexOf(p.name)),g.push(b)),l.push(b)}return c(t.__originalMappings,r.compareByOriginalPositions),t},s.prototype._version=3,Object.defineProperty(s.prototype,"sources",{get:function(){return this._sources.toArray().map((function(e){return null!=this.sourceRoot?r.join(this.sourceRoot,e):e}),this)}}),s.prototype._parseMappings=function(e,t){for(var n,i,o,l,s,g=1,d=0,I=0,p=0,b=0,m=0,C=e.length,h=0,B={},A={},y=[],f=[];h<C;)if(";"===e.charAt(h))g++,h++,d=0;else if(","===e.charAt(h))h++;else{for((n=new u).generatedLine=g,l=h;l<C&&!this._charIsMappingSeparator(e,l);l++);if(o=B[i=e.slice(h,l)])h+=i.length;else{for(o=[];h<l;)a.decode(e,h,A),s=A.value,h=A.rest,o.push(s);if(2===o.length)throw new Error("Found a source, but no line and column");if(3===o.length)throw new Error("Found a source and line, but no column");B[i]=o}n.generatedColumn=d+o[0],d=n.generatedColumn,o.length>1&&(n.source=b+o[1],b+=o[1],n.originalLine=I+o[2],I=n.originalLine,n.originalLine+=1,n.originalColumn=p+o[3],p=n.originalColumn,o.length>4&&(n.name=m+o[4],m+=o[4])),f.push(n),"number"==typeof n.originalLine&&y.push(n)}c(f,r.compareByGeneratedPositionsDeflated),this.__generatedMappings=f,c(y,r.compareByOriginalPositions),this.__originalMappings=y},s.prototype._findMapping=function(e,t,n,r,o,a){if(e[n]<=0)throw new TypeError("Line must be greater than or equal to 1, got "+e[n]);if(e[r]<0)throw new TypeError("Column must be greater than or equal to 0, got "+e[r]);return i.search(e,t,o,a)},s.prototype.computeColumnSpans=function(){for(var e=0;e<this._generatedMappings.length;++e){var t=this._generatedMappings[e];if(e+1<this._generatedMappings.length){var n=this._generatedMappings[e+1];if(t.generatedLine===n.generatedLine){t.lastGeneratedColumn=n.generatedColumn-1;continue}}t.lastGeneratedColumn=1/0}},s.prototype.originalPositionFor=function(e){var t={generatedLine:r.getArg(e,"line"),generatedColumn:r.getArg(e,"column")},n=this._findMapping(t,this._generatedMappings,"generatedLine","generatedColumn",r.compareByGeneratedPositionsDeflated,r.getArg(e,"bias",l.GREATEST_LOWER_BOUND));if(n>=0){var i=this._generatedMappings[n];if(i.generatedLine===t.generatedLine){var o=r.getArg(i,"source",null);null!==o&&(o=this._sources.at(o),null!=this.sourceRoot&&(o=r.join(this.sourceRoot,o)));var a=r.getArg(i,"name",null);return null!==a&&(a=this._names.at(a)),{source:o,line:r.getArg(i,"originalLine",null),column:r.getArg(i,"originalColumn",null),name:a}}}return{source:null,line:null,column:null,name:null}},s.prototype.hasContentsOfAllSources=function(){return!!this.sourcesContent&&this.sourcesContent.length>=this._sources.size()&&!this.sourcesContent.some((function(e){return null==e}))},s.prototype.sourceContentFor=function(e,t){if(!this.sourcesContent)return null;if(null!=this.sourceRoot&&(e=r.relative(this.sourceRoot,e)),this._sources.has(e))return this.sourcesContent[this._sources.indexOf(e)];var n;if(null!=this.sourceRoot&&(n=r.urlParse(this.sourceRoot))){var i=e.replace(/^file:\/\//,"");if("file"==n.scheme&&this._sources.has(i))return this.sourcesContent[this._sources.indexOf(i)];if((!n.path||"/"==n.path)&&this._sources.has("/"+e))return this.sourcesContent[this._sources.indexOf("/"+e)]}if(t)return null;throw new Error('"'+e+'" is not in the SourceMap.')},s.prototype.generatedPositionFor=function(e){var t=r.getArg(e,"source");if(null!=this.sourceRoot&&(t=r.relative(this.sourceRoot,t)),!this._sources.has(t))return{line:null,column:null,lastColumn:null};var n={source:t=this._sources.indexOf(t),originalLine:r.getArg(e,"line"),originalColumn:r.getArg(e,"column")},i=this._findMapping(n,this._originalMappings,"originalLine","originalColumn",r.compareByOriginalPositions,r.getArg(e,"bias",l.GREATEST_LOWER_BOUND));if(i>=0){var o=this._originalMappings[i];if(o.source===n.source)return{line:r.getArg(o,"generatedLine",null),column:r.getArg(o,"generatedColumn",null),lastColumn:r.getArg(o,"lastGeneratedColumn",null)}}return{line:null,column:null,lastColumn:null}},g.prototype=Object.create(l.prototype),g.prototype.constructor=l,g.prototype._version=3,Object.defineProperty(g.prototype,"sources",{get:function(){for(var e=[],t=0;t<this._sections.length;t++)for(var n=0;n<this._sections[t].consumer.sources.length;n++)e.push(this._sections[t].consumer.sources[n]);return e}}),g.prototype.originalPositionFor=function(e){var t={generatedLine:r.getArg(e,"line"),generatedColumn:r.getArg(e,"column")},n=i.search(t,this._sections,(function(e,t){return e.generatedLine-t.generatedOffset.generatedLine||e.generatedColumn-t.generatedOffset.generatedColumn})),o=this._sections[n];return o?o.consumer.originalPositionFor({line:t.generatedLine-(o.generatedOffset.generatedLine-1),column:t.generatedColumn-(o.generatedOffset.generatedLine===t.generatedLine?o.generatedOffset.generatedColumn-1:0),bias:e.bias}):{source:null,line:null,column:null,name:null}},g.prototype.hasContentsOfAllSources=function(){return this._sections.every((function(e){return e.consumer.hasContentsOfAllSources()}))},g.prototype.sourceContentFor=function(e,t){for(var n=0;n<this._sections.length;n++){var r=this._sections[n].consumer.sourceContentFor(e,!0);if(r)return r}if(t)return null;throw new Error('"'+e+'" is not in the SourceMap.')},g.prototype.generatedPositionFor=function(e){for(var t=0;t<this._sections.length;t++){var n=this._sections[t];if(-1!==n.consumer.sources.indexOf(r.getArg(e,"source"))){var i=n.consumer.generatedPositionFor(e);if(i)return{line:i.line+(n.generatedOffset.generatedLine-1),column:i.column+(n.generatedOffset.generatedLine===i.line?n.generatedOffset.generatedColumn-1:0)}}}return{line:null,column:null}},g.prototype._parseMappings=function(e,t){this.__generatedMappings=[],this.__originalMappings=[];for(var n=0;n<this._sections.length;n++)for(var i=this._sections[n],o=i.consumer._generatedMappings,a=0;a<o.length;a++){var l=o[a],s=i.consumer._sources.at(l.source);null!==i.consumer.sourceRoot&&(s=r.join(i.consumer.sourceRoot,s)),this._sources.add(s),s=this._sources.indexOf(s);var u=i.consumer._names.at(l.name);this._names.add(u),u=this._names.indexOf(u);var g={source:s,generatedLine:l.generatedLine+(i.generatedOffset.generatedLine-1),generatedColumn:l.generatedColumn+(i.generatedOffset.generatedLine===l.generatedLine?i.generatedOffset.generatedColumn-1:0),originalLine:l.originalLine,originalColumn:l.originalColumn,name:u};this.__generatedMappings.push(g),"number"==typeof g.originalLine&&this.__originalMappings.push(g)}c(this.__generatedMappings,r.compareByGeneratedPositionsDeflated),c(this.__originalMappings,r.compareByOriginalPositions)}},1945:(e,t,n)=>{var r=n(1860),i=n(3835),o=n(671).C,a=n(7238).P;function c(e){e||(e={}),this._file=i.getArg(e,"file",null),this._sourceRoot=i.getArg(e,"sourceRoot",null),this._skipValidation=i.getArg(e,"skipValidation",!1),this._sources=new o,this._names=new o,this._mappings=new a,this._sourcesContents=null}c.prototype._version=3,c.fromSourceMap=function(e){var t=e.sourceRoot,n=new c({file:e.file,sourceRoot:t});return e.eachMapping((function(e){var r={generated:{line:e.generatedLine,column:e.generatedColumn}};null!=e.source&&(r.source=e.source,null!=t&&(r.source=i.relative(t,r.source)),r.original={line:e.originalLine,column:e.originalColumn},null!=e.name&&(r.name=e.name)),n.addMapping(r)})),e.sources.forEach((function(t){var r=e.sourceContentFor(t);null!=r&&n.setSourceContent(t,r)})),n},c.prototype.addMapping=function(e){var t=i.getArg(e,"generated"),n=i.getArg(e,"original",null),r=i.getArg(e,"source",null),o=i.getArg(e,"name",null);this._skipValidation||this._validateMapping(t,n,r,o),null!=r&&(r=String(r),this._sources.has(r)||this._sources.add(r)),null!=o&&(o=String(o),this._names.has(o)||this._names.add(o)),this._mappings.add({generatedLine:t.line,generatedColumn:t.column,originalLine:null!=n&&n.line,originalColumn:null!=n&&n.column,source:r,name:o})},c.prototype.setSourceContent=function(e,t){var n=e;null!=this._sourceRoot&&(n=i.relative(this._sourceRoot,n)),null!=t?(this._sourcesContents||(this._sourcesContents=Object.create(null)),this._sourcesContents[i.toSetString(n)]=t):this._sourcesContents&&(delete this._sourcesContents[i.toSetString(n)],0===Object.keys(this._sourcesContents).length&&(this._sourcesContents=null))},c.prototype.applySourceMap=function(e,t,n){var r=t;if(null==t){if(null==e.file)throw new Error('SourceMapGenerator.prototype.applySourceMap requires either an explicit source file, or the source map\'s "file" property. Both were omitted.');r=e.file}var a=this._sourceRoot;null!=a&&(r=i.relative(a,r));var c=new o,l=new o;this._mappings.unsortedForEach((function(t){if(t.source===r&&null!=t.originalLine){var o=e.originalPositionFor({line:t.originalLine,column:t.originalColumn});null!=o.source&&(t.source=o.source,null!=n&&(t.source=i.join(n,t.source)),null!=a&&(t.source=i.relative(a,t.source)),t.originalLine=o.line,t.originalColumn=o.column,null!=o.name&&(t.name=o.name))}var s=t.source;null==s||c.has(s)||c.add(s);var u=t.name;null==u||l.has(u)||l.add(u)}),this),this._sources=c,this._names=l,e.sources.forEach((function(t){var r=e.sourceContentFor(t);null!=r&&(null!=n&&(t=i.join(n,t)),null!=a&&(t=i.relative(a,t)),this.setSourceContent(t,r))}),this)},c.prototype._validateMapping=function(e,t,n,r){if((!(e&&"line"in e&&"column"in e&&e.line>0&&e.column>=0)||t||n||r)&&!(e&&"line"in e&&"column"in e&&t&&"line"in t&&"column"in t&&e.line>0&&e.column>=0&&t.line>0&&t.column>=0&&n))throw new Error("Invalid mapping: "+JSON.stringify({generated:e,source:n,original:t,name:r}))},c.prototype._serializeMappings=function(){for(var e,t,n,o,a=0,c=1,l=0,s=0,u=0,g=0,d="",I=this._mappings.toArray(),p=0,b=I.length;p<b;p++){if(e="",(t=I[p]).generatedLine!==c)for(a=0;t.generatedLine!==c;)e+=";",c++;else if(p>0){if(!i.compareByGeneratedPositionsInflated(t,I[p-1]))continue;e+=","}e+=r.encode(t.generatedColumn-a),a=t.generatedColumn,null!=t.source&&(o=this._sources.indexOf(t.source),e+=r.encode(o-g),g=o,e+=r.encode(t.originalLine-1-s),s=t.originalLine-1,e+=r.encode(t.originalColumn-l),l=t.originalColumn,null!=t.name&&(n=this._names.indexOf(t.name),e+=r.encode(n-u),u=n)),d+=e}return d},c.prototype._generateSourcesContent=function(e,t){return e.map((function(e){if(!this._sourcesContents)return null;null!=t&&(e=i.relative(t,e));var n=i.toSetString(e);return Object.prototype.hasOwnProperty.call(this._sourcesContents,n)?this._sourcesContents[n]:null}),this)},c.prototype.toJSON=function(){var e={version:this._version,sources:this._sources.toArray(),names:this._names.toArray(),mappings:this._serializeMappings()};return null!=this._file&&(e.file=this._file),null!=this._sourceRoot&&(e.sourceRoot=this._sourceRoot),this._sourcesContents&&(e.sourcesContent=this._generateSourcesContent(e.sources,e.sourceRoot)),e},c.prototype.toString=function(){return JSON.stringify(this.toJSON())},t.SourceMapGenerator=c},1171:(e,t,n)=>{var r=n(1945).SourceMapGenerator,i=n(3835),o=/(\r?\n)/,a="$$$isSourceNode$$$";function c(e,t,n,r,i){this.children=[],this.sourceContents={},this.line=null==e?null:e,this.column=null==t?null:t,this.source=null==n?null:n,this.name=null==i?null:i,this[a]=!0,null!=r&&this.add(r)}c.fromStringWithSourceMap=function(e,t,n){var r=new c,a=e.split(o),l=function(){return a.shift()+(a.shift()||"")},s=1,u=0,g=null;return t.eachMapping((function(e){if(null!==g){if(!(s<e.generatedLine)){var t=(n=a[0]).substr(0,e.generatedColumn-u);return a[0]=n.substr(e.generatedColumn-u),u=e.generatedColumn,d(g,t),void(g=e)}d(g,l()),s++,u=0}for(;s<e.generatedLine;)r.add(l()),s++;if(u<e.generatedColumn){var n=a[0];r.add(n.substr(0,e.generatedColumn)),a[0]=n.substr(e.generatedColumn),u=e.generatedColumn}g=e}),this),a.length>0&&(g&&d(g,l()),r.add(a.join(""))),t.sources.forEach((function(e){var o=t.sourceContentFor(e);null!=o&&(null!=n&&(e=i.join(n,e)),r.setSourceContent(e,o))})),r;function d(e,t){if(null===e||void 0===e.source)r.add(t);else{var o=n?i.join(n,e.source):e.source;r.add(new c(e.originalLine,e.originalColumn,o,t,e.name))}}},c.prototype.add=function(e){if(Array.isArray(e))e.forEach((function(e){this.add(e)}),this);else{if(!e[a]&&"string"!=typeof e)throw new TypeError("Expected a SourceNode, string, or an array of SourceNodes and strings. Got "+e);e&&this.children.push(e)}return this},c.prototype.prepend=function(e){if(Array.isArray(e))for(var t=e.length-1;t>=0;t--)this.prepend(e[t]);else{if(!e[a]&&"string"!=typeof e)throw new TypeError("Expected a SourceNode, string, or an array of SourceNodes and strings. Got "+e);this.children.unshift(e)}return this},c.prototype.walk=function(e){for(var t,n=0,r=this.children.length;n<r;n++)(t=this.children[n])[a]?t.walk(e):""!==t&&e(t,{source:this.source,line:this.line,column:this.column,name:this.name})},c.prototype.join=function(e){var t,n,r=this.children.length;if(r>0){for(t=[],n=0;n<r-1;n++)t.push(this.children[n]),t.push(e);t.push(this.children[n]),this.children=t}return this},c.prototype.replaceRight=function(e,t){var n=this.children[this.children.length-1];return n[a]?n.replaceRight(e,t):"string"==typeof n?this.children[this.children.length-1]=n.replace(e,t):this.children.push("".replace(e,t)),this},c.prototype.setSourceContent=function(e,t){this.sourceContents[i.toSetString(e)]=t},c.prototype.walkSourceContents=function(e){for(var t=0,n=this.children.length;t<n;t++)this.children[t][a]&&this.children[t].walkSourceContents(e);var r=Object.keys(this.sourceContents);for(t=0,n=r.length;t<n;t++)e(i.fromSetString(r[t]),this.sourceContents[r[t]])},c.prototype.toString=function(){var e="";return this.walk((function(t){e+=t})),e},c.prototype.toStringWithSourceMap=function(e){var t={code:"",line:1,column:0},n=new r(e),i=!1,o=null,a=null,c=null,l=null;return this.walk((function(e,r){t.code+=e,null!==r.source&&null!==r.line&&null!==r.column?(o===r.source&&a===r.line&&c===r.column&&l===r.name||n.addMapping({source:r.source,original:{line:r.line,column:r.column},generated:{line:t.line,column:t.column},name:r.name}),o=r.source,a=r.line,c=r.column,l=r.name,i=!0):i&&(n.addMapping({generated:{line:t.line,column:t.column}}),o=null,i=!1);for(var s=0,u=e.length;s<u;s++)10===e.charCodeAt(s)?(t.line++,t.column=0,s+1===u?(o=null,i=!1):i&&n.addMapping({source:r.source,original:{line:r.line,column:r.column},generated:{line:t.line,column:t.column},name:r.name})):t.column++})),this.walkSourceContents((function(e,t){n.setSourceContent(e,t)})),{code:t.code,map:n}},t.SourceNode=c},3835:(e,t)=>{t.getArg=function(e,t,n){if(t in e)return e[t];if(3===arguments.length)return n;throw new Error('"'+t+'" is a required argument.')};var n=/^(?:([\w+\-.]+):)?\/\/(?:(\w+:\w+)@)?([\w.]*)(?::(\d+))?(\S*)$/,r=/^data:.+\,.+$/;function i(e){var t=e.match(n);return t?{scheme:t[1],auth:t[2],host:t[3],port:t[4],path:t[5]}:null}function o(e){var t="";return e.scheme&&(t+=e.scheme+":"),t+="//",e.auth&&(t+=e.auth+"@"),e.host&&(t+=e.host),e.port&&(t+=":"+e.port),e.path&&(t+=e.path),t}function a(e){var n=e,r=i(e);if(r){if(!r.path)return e;n=r.path}for(var a,c=t.isAbsolute(n),l=n.split(/\/+/),s=0,u=l.length-1;u>=0;u--)"."===(a=l[u])?l.splice(u,1):".."===a?s++:s>0&&(""===a?(l.splice(u+1,s),s=0):(l.splice(u,2),s--));return""===(n=l.join("/"))&&(n=c?"/":"."),r?(r.path=n,o(r)):n}t.urlParse=i,t.urlGenerate=o,t.normalize=a,t.join=function(e,t){""===e&&(e="."),""===t&&(t=".");var n=i(t),c=i(e);if(c&&(e=c.path||"/"),n&&!n.scheme)return c&&(n.scheme=c.scheme),o(n);if(n||t.match(r))return t;if(c&&!c.host&&!c.path)return c.host=t,o(c);var l="/"===t.charAt(0)?t:a(e.replace(/\/+$/,"")+"/"+t);return c?(c.path=l,o(c)):l},t.isAbsolute=function(e){return"/"===e.charAt(0)||!!e.match(n)},t.relative=function(e,t){""===e&&(e="."),e=e.replace(/\/$/,"");for(var n=0;0!==t.indexOf(e+"/");){var r=e.lastIndexOf("/");if(r<0)return t;if((e=e.slice(0,r)).match(/^([^\/]+:\/)?\/*$/))return t;++n}return Array(n+1).join("../")+t.substr(e.length+1)};var c=!("__proto__"in Object.create(null));function l(e){return e}function s(e){if(!e)return!1;var t=e.length;if(t<9)return!1;if(95!==e.charCodeAt(t-1)||95!==e.charCodeAt(t-2)||111!==e.charCodeAt(t-3)||116!==e.charCodeAt(t-4)||111!==e.charCodeAt(t-5)||114!==e.charCodeAt(t-6)||112!==e.charCodeAt(t-7)||95!==e.charCodeAt(t-8)||95!==e.charCodeAt(t-9))return!1;for(var n=t-10;n>=0;n--)if(36!==e.charCodeAt(n))return!1;return!0}function u(e,t){return e===t?0:e>t?1:-1}t.toSetString=c?l:function(e){return s(e)?"$"+e:e},t.fromSetString=c?l:function(e){return s(e)?e.slice(1):e},t.compareByOriginalPositions=function(e,t,n){var r=e.source-t.source;return 0!==r||0!=(r=e.originalLine-t.originalLine)||0!=(r=e.originalColumn-t.originalColumn)||n||0!=(r=e.generatedColumn-t.generatedColumn)||0!=(r=e.generatedLine-t.generatedLine)?r:e.name-t.name},t.compareByGeneratedPositionsDeflated=function(e,t,n){var r=e.generatedLine-t.generatedLine;return 0!==r||0!=(r=e.generatedColumn-t.generatedColumn)||n||0!=(r=e.source-t.source)||0!=(r=e.originalLine-t.originalLine)||0!=(r=e.originalColumn-t.originalColumn)?r:e.name-t.name},t.compareByGeneratedPositionsInflated=function(e,t){var n=e.generatedLine-t.generatedLine;return 0!==n||0!=(n=e.generatedColumn-t.generatedColumn)||0!==(n=u(e.source,t.source))||0!=(n=e.originalLine-t.originalLine)||0!=(n=e.originalColumn-t.originalColumn)?n:u(e.name,t.name)}},65:(e,t,n)=>{t.SourceMapGenerator=n(1945).SourceMapGenerator,t.SourceMapConsumer=n(1606).SourceMapConsumer,t.SourceNode=n(1171).SourceNode},7885:function(e,t,n){var r,i,o;!function(){"use strict";i=[n(65),n(343)],void 0===(o="function"==typeof(r=function(e,t){function n(e){return new Promise((function(t,n){var r=new XMLHttpRequest;r.open("get",e),r.onerror=n,r.onreadystatechange=function(){4===r.readyState&&(r.status>=200&&r.status<300||"file://"===e.substr(0,7)&&r.responseText?t(r.responseText):n(new Error("HTTP status: "+r.status+" retrieving "+e)))},r.send()}))}function r(e){if("undefined"!=typeof window&&window.atob)return window.atob(e);throw new Error("You must supply a polyfill for window.atob in this environment")}function i(e){if("object"!=typeof e)throw new TypeError("Given StackFrame is not an object");if("string"!=typeof e.fileName)throw new TypeError("Given file name is not a String");if("number"!=typeof e.lineNumber||e.lineNumber%1!=0||e.lineNumber<1)throw new TypeError("Given line number must be a positive integer");if("number"!=typeof e.columnNumber||e.columnNumber%1!=0||e.columnNumber<0)throw new TypeError("Given column number must be a non-negative integer");return!0}function o(e,n,r){return new Promise((function(i,o){var a=n.originalPositionFor({line:e.lineNumber,column:e.columnNumber});if(a.source){var c=n.sourceContentFor(a.source);c&&(r[a.source]=c),i(new t({functionName:a.name||e.functionName,args:e.args,fileName:a.source,lineNumber:a.line,columnNumber:a.column}))}else o(new Error("Could not get original source for given stackframe and source map"))}))}return function a(c){if(!(this instanceof a))return new a(c);c=c||{},this.sourceCache=c.sourceCache||{},this.sourceMapConsumerCache=c.sourceMapConsumerCache||{},this.ajax=c.ajax||n,this._atob=c.atob||r,this._get=function(e){return new Promise(function(t,n){var r="data:"===e.substr(0,5);if(this.sourceCache[e])t(this.sourceCache[e]);else if(c.offline&&!r)n(new Error("Cannot make network requests in offline mode"));else if(r){var i=e.match(/^data:application\/json;([\w=:"-]+;)*base64,/);if(i){var o=i[0].length,a=e.substr(o),l=this._atob(a);this.sourceCache[e]=l,t(l)}else n(new Error("The encoding of the inline sourcemap is not supported"))}else{var s=this.ajax(e,{method:"get"});this.sourceCache[e]=s,s.then(t,n)}}.bind(this))},this._getSourceMapConsumer=function(t,n){return new Promise(function(r){if(this.sourceMapConsumerCache[t])r(this.sourceMapConsumerCache[t]);else{var i=new Promise(function(r,i){return this._get(t).then((function(t){"string"==typeof t&&(t=function(e){if("undefined"!=typeof JSON&&JSON.parse)return JSON.parse(e);throw new Error("You must supply a polyfill for JSON.parse in this environment")}(t.replace(/^\)\]\}'/,""))),void 0===t.sourceRoot&&(t.sourceRoot=n),r(new e.SourceMapConsumer(t))})).catch(i)}.bind(this));this.sourceMapConsumerCache[t]=i,r(i)}}.bind(this))},this.pinpoint=function(e){return new Promise(function(t,n){this.getMappedLocation(e).then(function(e){function n(){t(e)}this.findFunctionName(e).then(t,n).catch(n)}.bind(this),n)}.bind(this))},this.findFunctionName=function(e){return new Promise(function(n,r){i(e),this._get(e.fileName).then((function(r){var i=e.lineNumber,o=e.columnNumber,a=function(e,t){for(var n=[/['"]?([$_A-Za-z][$_A-Za-z0-9]*)['"]?\s*[:=]\s*function\b/,/function\s+([^('"`]*?)\s*\(([^)]*)\)/,/['"]?([$_A-Za-z][$_A-Za-z0-9]*)['"]?\s*[:=]\s*(?:eval|new Function)\b/,/\b(?!(?:if|for|switch|while|with|catch)\b)(?:(?:static)\s+)?(\S+)\s*\(.*?\)\s*\{/,/['"]?([$_A-Za-z][$_A-Za-z0-9]*)['"]?\s*[:=]\s*\(.*?\)\s*=>/],r=e.split("\n"),i="",o=Math.min(t,20),a=0;a<o;++a){var c=r[t-a-1],l=c.indexOf("//");if(l>=0&&(c=c.substr(0,l)),c){i=c+i;for(var s=n.length,u=0;u<s;u++){var g=n[u].exec(i);if(g&&g[1])return g[1]}}}}(r,i);n(a?new t({functionName:a,args:e.args,fileName:e.fileName,lineNumber:i,columnNumber:o}):e)}),r).catch(r)}.bind(this))},this.getMappedLocation=function(e){return new Promise(function(t,n){(function(){if("function"!=typeof Object.defineProperty||"function"!=typeof Object.create)throw new Error("Unable to consume source maps in older browsers")})(),i(e);var r=this.sourceCache,a=e.fileName;this._get(a).then(function(n){var i=function(e){for(var t,n,r=/\/\/[#@] ?sourceMappingURL=([^\s'"]+)\s*$/gm;n=r.exec(e);)t=n[1];if(t)return t;throw new Error("sourceMappingURL not found")}(n),c="data:"===i.substr(0,5),l=a.substring(0,a.lastIndexOf("/")+1);return"/"===i[0]||c||/^https?:\/\/|^\/\//i.test(i)||(i=l+i),this._getSourceMapConsumer(i,l).then((function(n){return o(e,n,r).then(t).catch((function(){t(e)}))}))}.bind(this),n).catch(n)}.bind(this))}}})?r.apply(t,i):r)||(e.exports=o)}()},8139:function(e,t,n){var r,i,o;!function(){"use strict";i=[n(4263),n(8887),n(7885)],r=function(e,t,n){var r={filter:function(e){return-1===(e.functionName||"").indexOf("StackTrace$$")&&-1===(e.functionName||"").indexOf("ErrorStackParser$$")&&-1===(e.functionName||"").indexOf("StackTraceGPS$$")&&-1===(e.functionName||"").indexOf("StackGenerator$$")},sourceCache:{}},i=function(){try{throw new Error}catch(e){return e}};function o(e,t){var n={};return[e,t].forEach((function(e){for(var t in e)Object.prototype.hasOwnProperty.call(e,t)&&(n[t]=e[t]);return n})),n}function a(e){return e.stack||e["opera#sourceloc"]}function c(e,t){return"function"==typeof t?e.filter(t):e}return{get:function(e){var t=i();return a(t)?this.fromError(t,e):this.generateArtificially(e)},getSync:function(n){n=o(r,n);var l=i();return c(a(l)?e.parse(l):t.backtrace(n),n.filter)},fromError:function(t,i){i=o(r,i);var a=new n(i);return new Promise(function(n){var r=c(e.parse(t),i.filter);n(Promise.all(r.map((function(e){return new Promise((function(t){function n(){t(e)}a.pinpoint(e).then(t,n).catch(n)}))}))))}.bind(this))},generateArtificially:function(e){e=o(r,e);var n=t.backtrace(e);return"function"==typeof e.filter&&(n=n.filter(e.filter)),Promise.resolve(n)},instrument:function(e,t,n,r){if("function"!=typeof e)throw new Error("Cannot instrument non-function object");if("function"==typeof e.__stacktraceOriginalFn)return e;var i=function(){try{return this.get().then(t,n).catch(n),e.apply(r||this,arguments)}catch(i){throw a(i)&&this.fromError(i).then(t,n).catch(n),i}}.bind(this);return i.__stacktraceOriginalFn=e,i},deinstrument:function(e){if("function"!=typeof e)throw new Error("Cannot de-instrument non-function object");return"function"==typeof e.__stacktraceOriginalFn?e.__stacktraceOriginalFn:e},report:function(e,t,n,r){return new Promise((function(i,o){var a=new XMLHttpRequest;if(a.onerror=o,a.onreadystatechange=function(){4===a.readyState&&(a.status>=200&&a.status<400?i(a.responseText):o(new Error("POST to "+t+" failed with status: "+a.status)))},a.open("post",t),a.setRequestHeader("Content-Type","application/json"),r&&"object"==typeof r.headers){var c=r.headers;for(var l in c)Object.prototype.hasOwnProperty.call(c,l)&&a.setRequestHeader(l,c[l])}var s={stack:e};null!=n&&(s.message=n),a.send(JSON.stringify(s))}))}}},void 0===(o=r.apply(t,i))||(e.exports=o)}()},2403:(e,t,n)=>{"use strict";
/*!
 * statuses
 * Copyright(c) 2014 Jonathan Ong
 * Copyright(c) 2016 Douglas Christopher Wilson
 * MIT Licensed
 */var r=n(7662);function i(e){if(!Object.prototype.hasOwnProperty.call(o.message,e))throw new Error("invalid status code: "+e);return o.message[e]}function o(e){if("number"==typeof e)return i(e);if("string"!=typeof e)throw new TypeError("code must be a number or string");var t=parseInt(e,10);return isNaN(t)?function(e){var t=e.toLowerCase();if(!Object.prototype.hasOwnProperty.call(o.code,t))throw new Error('invalid status message: "'+e+'"');return o.code[t]}(e):i(t)}e.exports=o,o.message=r,o.code=function(e){var t={};return Object.keys(e).forEach((function(n){var r=e[n],i=Number(n);t[r.toLowerCase()]=i})),t}(r),o.codes=function(e){return Object.keys(e).map((function(e){return Number(e)}))}(r),o.redirect={300:!0,301:!0,302:!0,303:!0,305:!0,307:!0,308:!0},o.empty={204:!0,205:!0,304:!0},o.retry={502:!0,503:!0,504:!0}},8028:e=>{e.exports=function(e){return e.replace(/[A-Z]/g,(function(e){return"-"+e.toLowerCase()})).toLowerCase()}},2568:(e,t,n)=>{"use strict";n.r(t),n.d(t,{ServerStyleSheet:()=>He,StyleSheetConsumer:()=>oe,StyleSheetContext:()=>ie,StyleSheetManager:()=>ge,ThemeConsumer:()=>Ue,ThemeContext:()=>xe,ThemeProvider:()=>Ne,__PRIVATE__:()=>De,createGlobalStyle:()=>_e,css:()=>ye,default:()=>Le,isStyledComponent:()=>y,keyframes:()=>we,useTheme:()=>ke,version:()=>G,withTheme:()=>Ye});var r=n(4363),i=n(5927),o=n.n(i),a=n(2833),c=n.n(a);const l=function(e){function t(e,r,l,s,d){for(var I,p,b,m,A,f=0,G=0,Q=0,F=0,v=0,x=0,N=b=I=0,O=0,V=0,W=0,_=0,w=l.length,H=w-1,Y="",k="",D="",L="";O<w;){if(p=l.charCodeAt(O),O===H&&0!==G+F+Q+f&&(0!==G&&(p=47===G?10:47),F=Q=f=0,w++,H++),0===G+F+Q+f){if(O===H&&(0<V&&(Y=Y.replace(g,"")),0<Y.trim().length)){switch(p){case 32:case 9:case 59:case 13:case 10:break;default:Y+=l.charAt(O)}p=59}switch(p){case 123:for(I=(Y=Y.trim()).charCodeAt(0),b=1,_=++O;O<w;){switch(p=l.charCodeAt(O)){case 123:b++;break;case 125:b--;break;case 47:switch(p=l.charCodeAt(O+1)){case 42:case 47:e:{for(N=O+1;N<H;++N)switch(l.charCodeAt(N)){case 47:if(42===p&&42===l.charCodeAt(N-1)&&O+2!==N){O=N+1;break e}break;case 10:if(47===p){O=N+1;break e}}O=N}}break;case 91:p++;case 40:p++;case 34:case 39:for(;O++<H&&l.charCodeAt(O)!==p;);}if(0===b)break;O++}if(b=l.substring(_,O),0===I&&(I=(Y=Y.replace(u,"").trim()).charCodeAt(0)),64===I){switch(0<V&&(Y=Y.replace(g,"")),p=Y.charCodeAt(1)){case 100:case 109:case 115:case 45:V=r;break;default:V=T}if(_=(b=t(r,V,b,p,d+1)).length,0<U&&(A=c(3,b,V=n(T,Y,W),r,E,Z,_,p,d,s),Y=V.join(""),void 0!==A&&0===(_=(b=A.trim()).length)&&(p=0,b="")),0<_)switch(p){case 115:Y=Y.replace(y,a);case 100:case 109:case 45:b=Y+"{"+b+"}";break;case 107:b=(Y=Y.replace(C,"$1 $2"))+"{"+b+"}",b=1===X||2===X&&o("@"+b,3)?"@-webkit-"+b+"@"+b:"@"+b;break;default:b=Y+b,112===s&&(k+=b,b="")}else b=""}else b=t(r,n(r,Y,W),b,s,d+1);D+=b,b=W=V=N=I=0,Y="",p=l.charCodeAt(++O);break;case 125:case 59:if(1<(_=(Y=(0<V?Y.replace(g,""):Y).trim()).length))switch(0===N&&(I=Y.charCodeAt(0),45===I||96<I&&123>I)&&(_=(Y=Y.replace(" ",":")).length),0<U&&void 0!==(A=c(1,Y,r,e,E,Z,k.length,s,d,s))&&0===(_=(Y=A.trim()).length)&&(Y="\0\0"),I=Y.charCodeAt(0),p=Y.charCodeAt(1),I){case 0:break;case 64:if(105===p||99===p){L+=Y+l.charAt(O);break}default:58!==Y.charCodeAt(_-1)&&(k+=i(Y,I,p,Y.charCodeAt(2)))}W=V=N=I=0,Y="",p=l.charCodeAt(++O)}}switch(p){case 13:case 10:47===G?G=0:0===1+I&&107!==s&&0<Y.length&&(V=1,Y+="\0"),0<U*R&&c(0,Y,r,e,E,Z,k.length,s,d,s),Z=1,E++;break;case 59:case 125:if(0===G+F+Q+f){Z++;break}default:switch(Z++,m=l.charAt(O),p){case 9:case 32:if(0===F+f+G)switch(v){case 44:case 58:case 9:case 32:m="";break;default:32!==p&&(m=" ")}break;case 0:m="\\0";break;case 12:m="\\f";break;case 11:m="\\v";break;case 38:0===F+G+f&&(V=W=1,m="\f"+m);break;case 108:if(0===F+G+f+S&&0<N)switch(O-N){case 2:112===v&&58===l.charCodeAt(O-3)&&(S=v);case 8:111===x&&(S=x)}break;case 58:0===F+G+f&&(N=O);break;case 44:0===G+Q+F+f&&(V=1,m+="\r");break;case 34:case 39:0===G&&(F=F===p?0:0===F?p:F);break;case 91:0===F+G+Q&&f++;break;case 93:0===F+G+Q&&f--;break;case 41:0===F+G+f&&Q--;break;case 40:0===F+G+f&&(0===I&&(2*v+3*x==533||(I=1)),Q++);break;case 64:0===G+Q+F+f+N+b&&(b=1);break;case 42:case 47:if(!(0<F+f+Q))switch(G){case 0:switch(2*p+3*l.charCodeAt(O+1)){case 235:G=47;break;case 220:_=O,G=42}break;case 42:47===p&&42===v&&_+2!==O&&(33===l.charCodeAt(_+2)&&(k+=l.substring(_,O+1)),m="",G=0)}}0===G&&(Y+=m)}x=v,v=p,O++}if(0<(_=k.length)){if(V=r,0<U&&void 0!==(A=c(2,k,V,e,E,Z,_,s,d,s))&&0===(k=A).length)return L+k+D;if(k=V.join(",")+"{"+k+"}",0!=X*S){switch(2!==X||o(k,2)||(S=0),S){case 111:k=k.replace(B,":-moz-$1")+k;break;case 112:k=k.replace(h,"::-webkit-input-$1")+k.replace(h,"::-moz-$1")+k.replace(h,":-ms-input-$1")+k}S=0}}return L+k+D}function n(e,t,n){var i=t.trim().split(b);t=i;var o=i.length,a=e.length;switch(a){case 0:case 1:var c=0;for(e=0===a?"":e[0]+" ";c<o;++c)t[c]=r(e,t[c],n).trim();break;default:var l=c=0;for(t=[];c<o;++c)for(var s=0;s<a;++s)t[l++]=r(e[s]+" ",i[c],n).trim()}return t}function r(e,t,n){var r=t.charCodeAt(0);switch(33>r&&(r=(t=t.trim()).charCodeAt(0)),r){case 38:return t.replace(m,"$1"+e.trim());case 58:return e.trim()+t.replace(m,"$1"+e.trim());default:if(0<1*n&&0<t.indexOf("\f"))return t.replace(m,(58===e.charCodeAt(0)?"":"$1")+e.trim())}return e+t}function i(e,t,n,r){var a=e+";",c=2*t+3*n+4*r;if(944===c){e=a.indexOf(":",9)+1;var l=a.substring(e,a.length-1).trim();return l=a.substring(0,e).trim()+l+";",1===X||2===X&&o(l,1)?"-webkit-"+l+l:l}if(0===X||2===X&&!o(a,1))return a;switch(c){case 1015:return 97===a.charCodeAt(10)?"-webkit-"+a+a:a;case 951:return 116===a.charCodeAt(3)?"-webkit-"+a+a:a;case 963:return 110===a.charCodeAt(5)?"-webkit-"+a+a:a;case 1009:if(100!==a.charCodeAt(4))break;case 969:case 942:return"-webkit-"+a+a;case 978:return"-webkit-"+a+"-moz-"+a+a;case 1019:case 983:return"-webkit-"+a+"-moz-"+a+"-ms-"+a+a;case 883:if(45===a.charCodeAt(8))return"-webkit-"+a+a;if(0<a.indexOf("image-set(",11))return a.replace(v,"$1-webkit-$2")+a;break;case 932:if(45===a.charCodeAt(4))switch(a.charCodeAt(5)){case 103:return"-webkit-box-"+a.replace("-grow","")+"-webkit-"+a+"-ms-"+a.replace("grow","positive")+a;case 115:return"-webkit-"+a+"-ms-"+a.replace("shrink","negative")+a;case 98:return"-webkit-"+a+"-ms-"+a.replace("basis","preferred-size")+a}return"-webkit-"+a+"-ms-"+a+a;case 964:return"-webkit-"+a+"-ms-flex-"+a+a;case 1023:if(99!==a.charCodeAt(8))break;return"-webkit-box-pack"+(l=a.substring(a.indexOf(":",15)).replace("flex-","").replace("space-between","justify"))+"-webkit-"+a+"-ms-flex-pack"+l+a;case 1005:return I.test(a)?a.replace(d,":-webkit-")+a.replace(d,":-moz-")+a:a;case 1e3:switch(t=(l=a.substring(13).trim()).indexOf("-")+1,l.charCodeAt(0)+l.charCodeAt(t)){case 226:l=a.replace(A,"tb");break;case 232:l=a.replace(A,"tb-rl");break;case 220:l=a.replace(A,"lr");break;default:return a}return"-webkit-"+a+"-ms-"+l+a;case 1017:if(-1===a.indexOf("sticky",9))break;case 975:switch(t=(a=e).length-10,c=(l=(33===a.charCodeAt(t)?a.substring(0,t):a).substring(e.indexOf(":",7)+1).trim()).charCodeAt(0)+(0|l.charCodeAt(7))){case 203:if(111>l.charCodeAt(8))break;case 115:a=a.replace(l,"-webkit-"+l)+";"+a;break;case 207:case 102:a=a.replace(l,"-webkit-"+(102<c?"inline-":"")+"box")+";"+a.replace(l,"-webkit-"+l)+";"+a.replace(l,"-ms-"+l+"box")+";"+a}return a+";";case 938:if(45===a.charCodeAt(5))switch(a.charCodeAt(6)){case 105:return l=a.replace("-items",""),"-webkit-"+a+"-webkit-box-"+l+"-ms-flex-"+l+a;case 115:return"-webkit-"+a+"-ms-flex-item-"+a.replace(G,"")+a;default:return"-webkit-"+a+"-ms-flex-line-pack"+a.replace("align-content","").replace(G,"")+a}break;case 973:case 989:if(45!==a.charCodeAt(3)||122===a.charCodeAt(4))break;case 931:case 953:if(!0===F.test(e))return 115===(l=e.substring(e.indexOf(":")+1)).charCodeAt(0)?i(e.replace("stretch","fill-available"),t,n,r).replace(":fill-available",":stretch"):a.replace(l,"-webkit-"+l)+a.replace(l,"-moz-"+l.replace("fill-",""))+a;break;case 962:if(a="-webkit-"+a+(102===a.charCodeAt(5)?"-ms-"+a:"")+a,211===n+r&&105===a.charCodeAt(13)&&0<a.indexOf("transform",10))return a.substring(0,a.indexOf(";",27)+1).replace(p,"$1-webkit-$2")+a}return a}function o(e,t){var n=e.indexOf(1===t?":":"{"),r=e.substring(0,3!==t?n:10);return n=e.substring(n+1,e.length-1),N(2!==t?r:r.replace(Q,"$1"),n,t)}function a(e,t){var n=i(t,t.charCodeAt(0),t.charCodeAt(1),t.charCodeAt(2));return n!==t+";"?n.replace(f," or ($1)").substring(4):"("+t+")"}function c(e,t,n,r,i,o,a,c,l,u){for(var g,d=0,I=t;d<U;++d)switch(g=x[d].call(s,e,I,n,r,i,o,a,c,l,u)){case void 0:case!1:case!0:case null:break;default:I=g}if(I!==t)return I}function l(e){return void 0!==(e=e.prefix)&&(N=null,e?"function"!=typeof e?X=1:(X=2,N=e):X=0),l}function s(e,n){var r=e;if(33>r.charCodeAt(0)&&(r=r.trim()),r=[r],0<U){var i=c(-1,n,r,r,E,Z,0,0,0,0);void 0!==i&&"string"==typeof i&&(n=i)}var o=t(T,r,n,0,0);return 0<U&&void 0!==(i=c(-2,o,r,r,E,Z,o.length,0,0,0))&&(o=i),S=0,Z=E=1,o}var u=/^\0+/g,g=/[\0\r\f]/g,d=/: */g,I=/zoo|gra/,p=/([,: ])(transform)/g,b=/,\r+?/g,m=/([\t\r\n ])*\f?&/g,C=/@(k\w+)\s*(\S*)\s*/,h=/::(place)/g,B=/:(read-only)/g,A=/[svh]\w+-[tblr]{2}/,y=/\(\s*(.*)\s*\)/g,f=/([\s\S]*?);/g,G=/-self|flex-/g,Q=/[^]*?(:[rp][el]a[\w-]+)[^]*/,F=/stretch|:\s*\w+\-(?:conte|avail)/,v=/([^-])(image-set\()/,Z=1,E=1,S=0,X=1,T=[],x=[],U=0,N=null,R=0;return s.use=function e(t){switch(t){case void 0:case null:U=x.length=0;break;default:if("function"==typeof t)x[U++]=t;else if("object"==typeof t)for(var n=0,r=t.length;n<r;++n)e(t[n]);else R=0|!!t}return e},s.set=l,void 0!==e&&l(e),s},s={animationIterationCount:1,borderImageOutset:1,borderImageSlice:1,borderImageWidth:1,boxFlex:1,boxFlexGroup:1,boxOrdinalGroup:1,columnCount:1,columns:1,flex:1,flexGrow:1,flexPositive:1,flexShrink:1,flexNegative:1,flexOrder:1,gridRow:1,gridRowEnd:1,gridRowSpan:1,gridRowStart:1,gridColumn:1,gridColumnEnd:1,gridColumnSpan:1,gridColumnStart:1,msGridRow:1,msGridRowSpan:1,msGridColumn:1,msGridColumnSpan:1,fontWeight:1,lineHeight:1,opacity:1,order:1,orphans:1,tabSize:1,widows:1,zIndex:1,zoom:1,WebkitLineClamp:1,fillOpacity:1,floodOpacity:1,stopOpacity:1,strokeDasharray:1,strokeDashoffset:1,strokeMiterlimit:1,strokeOpacity:1,strokeWidth:1};var u=/^((children|dangerouslySetInnerHTML|key|ref|autoFocus|defaultValue|defaultChecked|innerHTML|suppressContentEditableWarning|suppressHydrationWarning|valueLink|abbr|accept|acceptCharset|accessKey|action|allow|allowUserMedia|allowPaymentRequest|allowFullScreen|allowTransparency|alt|async|autoComplete|autoPlay|capture|cellPadding|cellSpacing|challenge|charSet|checked|cite|classID|className|cols|colSpan|content|contentEditable|contextMenu|controls|controlsList|coords|crossOrigin|data|dateTime|decoding|default|defer|dir|disabled|disablePictureInPicture|download|draggable|encType|enterKeyHint|form|formAction|formEncType|formMethod|formNoValidate|formTarget|frameBorder|headers|height|hidden|high|href|hrefLang|htmlFor|httpEquiv|id|inputMode|integrity|is|keyParams|keyType|kind|label|lang|list|loading|loop|low|marginHeight|marginWidth|max|maxLength|media|mediaGroup|method|min|minLength|multiple|muted|name|nonce|noValidate|open|optimum|pattern|placeholder|playsInline|poster|preload|profile|radioGroup|readOnly|referrerPolicy|rel|required|reversed|role|rows|rowSpan|sandbox|scope|scoped|scrolling|seamless|selected|shape|size|sizes|slot|span|spellCheck|src|srcDoc|srcLang|srcSet|start|step|style|summary|tabIndex|target|title|translate|type|useMap|value|width|wmode|wrap|about|datatype|inlist|prefix|property|resource|typeof|vocab|autoCapitalize|autoCorrect|autoSave|color|incremental|fallback|inert|itemProp|itemScope|itemType|itemID|itemRef|on|option|results|security|unselectable|accentHeight|accumulate|additive|alignmentBaseline|allowReorder|alphabetic|amplitude|arabicForm|ascent|attributeName|attributeType|autoReverse|azimuth|baseFrequency|baselineShift|baseProfile|bbox|begin|bias|by|calcMode|capHeight|clip|clipPathUnits|clipPath|clipRule|colorInterpolation|colorInterpolationFilters|colorProfile|colorRendering|contentScriptType|contentStyleType|cursor|cx|cy|d|decelerate|descent|diffuseConstant|direction|display|divisor|dominantBaseline|dur|dx|dy|edgeMode|elevation|enableBackground|end|exponent|externalResourcesRequired|fill|fillOpacity|fillRule|filter|filterRes|filterUnits|floodColor|floodOpacity|focusable|fontFamily|fontSize|fontSizeAdjust|fontStretch|fontStyle|fontVariant|fontWeight|format|from|fr|fx|fy|g1|g2|glyphName|glyphOrientationHorizontal|glyphOrientationVertical|glyphRef|gradientTransform|gradientUnits|hanging|horizAdvX|horizOriginX|ideographic|imageRendering|in|in2|intercept|k|k1|k2|k3|k4|kernelMatrix|kernelUnitLength|kerning|keyPoints|keySplines|keyTimes|lengthAdjust|letterSpacing|lightingColor|limitingConeAngle|local|markerEnd|markerMid|markerStart|markerHeight|markerUnits|markerWidth|mask|maskContentUnits|maskUnits|mathematical|mode|numOctaves|offset|opacity|operator|order|orient|orientation|origin|overflow|overlinePosition|overlineThickness|panose1|paintOrder|pathLength|patternContentUnits|patternTransform|patternUnits|pointerEvents|points|pointsAtX|pointsAtY|pointsAtZ|preserveAlpha|preserveAspectRatio|primitiveUnits|r|radius|refX|refY|renderingIntent|repeatCount|repeatDur|requiredExtensions|requiredFeatures|restart|result|rotate|rx|ry|scale|seed|shapeRendering|slope|spacing|specularConstant|specularExponent|speed|spreadMethod|startOffset|stdDeviation|stemh|stemv|stitchTiles|stopColor|stopOpacity|strikethroughPosition|strikethroughThickness|string|stroke|strokeDasharray|strokeDashoffset|strokeLinecap|strokeLinejoin|strokeMiterlimit|strokeOpacity|strokeWidth|surfaceScale|systemLanguage|tableValues|targetX|targetY|textAnchor|textDecoration|textRendering|textLength|to|transform|u1|u2|underlinePosition|underlineThickness|unicode|unicodeBidi|unicodeRange|unitsPerEm|vAlphabetic|vHanging|vIdeographic|vMathematical|values|vectorEffect|version|vertAdvY|vertOriginX|vertOriginY|viewBox|viewTarget|visibility|widths|wordSpacing|writingMode|x|xHeight|x1|x2|xChannelSelector|xlinkActuate|xlinkArcrole|xlinkHref|xlinkRole|xlinkShow|xlinkTitle|xlinkType|xmlBase|xmlns|xmlnsXlink|xmlLang|xmlSpace|y|y1|y2|yChannelSelector|z|zoomAndPan|for|class|autofocus)|(([Dd][Aa][Tt][Aa]|[Aa][Rr][Ii][Aa]|x)-.*))$/,g=function(e){var t=Object.create(null);return function(n){return void 0===t[n]&&(t[n]=e(n)),t[n]}}((function(e){return u.test(e)||111===e.charCodeAt(0)&&110===e.charCodeAt(1)&&e.charCodeAt(2)<91})),d=n(4146),I=n.n(d);function p(){return(p=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e}).apply(this,arguments)}var b=function(e,t){for(var n=[e[0]],r=0,i=t.length;r<i;r+=1)n.push(t[r],e[r+1]);return n},m=function(e){return null!==e&&"object"==typeof e&&"[object Object]"===(e.toString?e.toString():Object.prototype.toString.call(e))&&!(0,r.typeOf)(e)},C=Object.freeze([]),h=Object.freeze({});function B(e){return"function"==typeof e}function A(e){return e.displayName||e.name||"Component"}function y(e){return e&&"string"==typeof e.styledComponentId}var f="undefined"!=typeof process&&void 0!==process.env&&(process.env.REACT_APP_SC_ATTR||process.env.SC_ATTR)||"data-styled",G="5.3.9",Q="undefined"!=typeof window&&"HTMLElement"in window,F=Boolean("boolean"==typeof SC_DISABLE_SPEEDY?SC_DISABLE_SPEEDY:"undefined"!=typeof process&&void 0!==process.env&&(void 0!==process.env.REACT_APP_SC_DISABLE_SPEEDY&&""!==process.env.REACT_APP_SC_DISABLE_SPEEDY?"false"!==process.env.REACT_APP_SC_DISABLE_SPEEDY&&process.env.REACT_APP_SC_DISABLE_SPEEDY:void 0!==process.env.SC_DISABLE_SPEEDY&&""!==process.env.SC_DISABLE_SPEEDY&&"false"!==process.env.SC_DISABLE_SPEEDY&&process.env.SC_DISABLE_SPEEDY)),v={};function Z(e){for(var t=arguments.length,n=new Array(t>1?t-1:0),r=1;r<t;r++)n[r-1]=arguments[r];throw new Error("An error occurred. See https://git.io/JUIaE#"+e+" for more information."+(n.length>0?" Args: "+n.join(", "):""))}var E=function(){function e(e){this.groupSizes=new Uint32Array(512),this.length=512,this.tag=e}var t=e.prototype;return t.indexOfGroup=function(e){for(var t=0,n=0;n<e;n++)t+=this.groupSizes[n];return t},t.insertRules=function(e,t){if(e>=this.groupSizes.length){for(var n=this.groupSizes,r=n.length,i=r;e>=i;)(i<<=1)<0&&Z(16,""+e);this.groupSizes=new Uint32Array(i),this.groupSizes.set(n),this.length=i;for(var o=r;o<i;o++)this.groupSizes[o]=0}for(var a=this.indexOfGroup(e+1),c=0,l=t.length;c<l;c++)this.tag.insertRule(a,t[c])&&(this.groupSizes[e]++,a++)},t.clearGroup=function(e){if(e<this.length){var t=this.groupSizes[e],n=this.indexOfGroup(e),r=n+t;this.groupSizes[e]=0;for(var i=n;i<r;i++)this.tag.deleteRule(n)}},t.getGroup=function(e){var t="";if(e>=this.length||0===this.groupSizes[e])return t;for(var n=this.groupSizes[e],r=this.indexOfGroup(e),i=r+n,o=r;o<i;o++)t+=this.tag.getRule(o)+"/*!sc*/\n";return t},e}(),S=new Map,X=new Map,T=1,x=function(e){if(S.has(e))return S.get(e);for(;X.has(T);)T++;var t=T++;return S.set(e,t),X.set(t,e),t},U=function(e){return X.get(e)},N=function(e,t){t>=T&&(T=t+1),S.set(e,t),X.set(t,e)},R="style["+f+'][data-styled-version="5.3.9"]',O=new RegExp("^"+f+'\\.g(\\d+)\\[id="([\\w\\d-]+)"\\].*?"([^"]*)'),V=function(e,t,n){for(var r,i=n.split(","),o=0,a=i.length;o<a;o++)(r=i[o])&&e.registerName(t,r)},W=function(e,t){for(var n=(t.textContent||"").split("/*!sc*/\n"),r=[],i=0,o=n.length;i<o;i++){var a=n[i].trim();if(a){var c=a.match(O);if(c){var l=0|parseInt(c[1],10),s=c[2];0!==l&&(N(s,l),V(e,s,c[3]),e.getTag().insertRules(l,r)),r.length=0}else r.push(a)}}},_=function(){return n.nc},w=function(e){var t=document.head,n=e||t,r=document.createElement("style"),i=function(e){for(var t=e.childNodes,n=t.length;n>=0;n--){var r=t[n];if(r&&1===r.nodeType&&r.hasAttribute(f))return r}}(n),o=void 0!==i?i.nextSibling:null;r.setAttribute(f,"active"),r.setAttribute("data-styled-version","5.3.9");var a=_();return a&&r.setAttribute("nonce",a),n.insertBefore(r,o),r},H=function(){function e(e){var t=this.element=w(e);t.appendChild(document.createTextNode("")),this.sheet=function(e){if(e.sheet)return e.sheet;for(var t=document.styleSheets,n=0,r=t.length;n<r;n++){var i=t[n];if(i.ownerNode===e)return i}Z(17)}(t),this.length=0}var t=e.prototype;return t.insertRule=function(e,t){try{return this.sheet.insertRule(t,e),this.length++,!0}catch(e){return!1}},t.deleteRule=function(e){this.sheet.deleteRule(e),this.length--},t.getRule=function(e){var t=this.sheet.cssRules[e];return void 0!==t&&"string"==typeof t.cssText?t.cssText:""},e}(),Y=function(){function e(e){var t=this.element=w(e);this.nodes=t.childNodes,this.length=0}var t=e.prototype;return t.insertRule=function(e,t){if(e<=this.length&&e>=0){var n=document.createTextNode(t),r=this.nodes[e];return this.element.insertBefore(n,r||null),this.length++,!0}return!1},t.deleteRule=function(e){this.element.removeChild(this.nodes[e]),this.length--},t.getRule=function(e){return e<this.length?this.nodes[e].textContent:""},e}(),k=function(){function e(e){this.rules=[],this.length=0}var t=e.prototype;return t.insertRule=function(e,t){return e<=this.length&&(this.rules.splice(e,0,t),this.length++,!0)},t.deleteRule=function(e){this.rules.splice(e,1),this.length--},t.getRule=function(e){return e<this.length?this.rules[e]:""},e}(),D=Q,L={isServer:!Q,useCSSOMInjection:!F},P=function(){function e(e,t,n){void 0===e&&(e=h),void 0===t&&(t={}),this.options=p({},L,{},e),this.gs=t,this.names=new Map(n),this.server=!!e.isServer,!this.server&&Q&&D&&(D=!1,function(e){for(var t=document.querySelectorAll(R),n=0,r=t.length;n<r;n++){var i=t[n];i&&"active"!==i.getAttribute(f)&&(W(e,i),i.parentNode&&i.parentNode.removeChild(i))}}(this))}e.registerId=function(e){return x(e)};var t=e.prototype;return t.reconstructWithOptions=function(t,n){return void 0===n&&(n=!0),new e(p({},this.options,{},t),this.gs,n&&this.names||void 0)},t.allocateGSInstance=function(e){return this.gs[e]=(this.gs[e]||0)+1},t.getTag=function(){return this.tag||(this.tag=(n=(t=this.options).isServer,r=t.useCSSOMInjection,i=t.target,e=n?new k(i):r?new H(i):new Y(i),new E(e)));var e,t,n,r,i},t.hasNameForId=function(e,t){return this.names.has(e)&&this.names.get(e).has(t)},t.registerName=function(e,t){if(x(e),this.names.has(e))this.names.get(e).add(t);else{var n=new Set;n.add(t),this.names.set(e,n)}},t.insertRules=function(e,t,n){this.registerName(e,t),this.getTag().insertRules(x(e),n)},t.clearNames=function(e){this.names.has(e)&&this.names.get(e).clear()},t.clearRules=function(e){this.getTag().clearGroup(x(e)),this.clearNames(e)},t.clearTag=function(){this.tag=void 0},t.toString=function(){return function(e){for(var t=e.getTag(),n=t.length,r="",i=0;i<n;i++){var o=U(i);if(void 0!==o){var a=e.names.get(o),c=t.getGroup(i);if(a&&c&&a.size){var l=f+".g"+i+'[id="'+o+'"]',s="";void 0!==a&&a.forEach((function(e){e.length>0&&(s+=e+",")})),r+=""+c+l+'{content:"'+s+'"}/*!sc*/\n'}}}return r}(this)},e}(),J=/(a)(d)/gi,M=function(e){return String.fromCharCode(e+(e>25?39:97))};function z(e){var t,n="";for(t=Math.abs(e);t>52;t=t/52|0)n=M(t%52)+n;return(M(t%52)+n).replace(J,"$1-$2")}var j=function(e,t){for(var n=t.length;n;)e=33*e^t.charCodeAt(--n);return e},K=function(e){return j(5381,e)};function q(e){for(var t=0;t<e.length;t+=1){var n=e[t];if(B(n)&&!y(n))return!1}return!0}var $=K("5.3.9"),ee=function(){function e(e,t,n){this.rules=e,this.staticRulesId="",this.isStatic=(void 0===n||n.isStatic)&&q(e),this.componentId=t,this.baseHash=j($,t),this.baseStyle=n,P.registerId(t)}return e.prototype.generateAndInjectStyles=function(e,t,n){var r=this.componentId,i=[];if(this.baseStyle&&i.push(this.baseStyle.generateAndInjectStyles(e,t,n)),this.isStatic&&!n.hash)if(this.staticRulesId&&t.hasNameForId(r,this.staticRulesId))i.push(this.staticRulesId);else{var o=Be(this.rules,e,t,n).join(""),a=z(j(this.baseHash,o)>>>0);if(!t.hasNameForId(r,a)){var c=n(o,"."+a,void 0,r);t.insertRules(r,a,c)}i.push(a),this.staticRulesId=a}else{for(var l=this.rules.length,s=j(this.baseHash,n.hash),u="",g=0;g<l;g++){var d=this.rules[g];if("string"==typeof d)u+=d;else if(d){var I=Be(d,e,t,n),p=Array.isArray(I)?I.join(""):I;s=j(s,p+g),u+=p}}if(u){var b=z(s>>>0);if(!t.hasNameForId(r,b)){var m=n(u,"."+b,void 0,r);t.insertRules(r,b,m)}i.push(b)}}return i.join(" ")},e}(),te=/^\s*\/\/.*$/gm,ne=[":","[",".","#"];function re(e){var t,n,r,i,o=void 0===e?h:e,a=o.options,c=void 0===a?h:a,s=o.plugins,u=void 0===s?C:s,g=new l(c),d=[],I=function(e){function t(t){if(t)try{e(t+"}")}catch(e){}}return function(n,r,i,o,a,c,l,s,u,g){switch(n){case 1:if(0===u&&64===r.charCodeAt(0))return e(r+";"),"";break;case 2:if(0===s)return r+"/*|*/";break;case 3:switch(s){case 102:case 112:return e(i[0]+r),"";default:return r+(0===g?"/*|*/":"")}case-2:r.split("/*|*/}").forEach(t)}}}((function(e){d.push(e)})),p=function(e,r,o){return 0===r&&-1!==ne.indexOf(o[n.length])||o.match(i)?e:"."+t};function b(e,o,a,c){void 0===c&&(c="&");var l=e.replace(te,""),s=o&&a?a+" "+o+" { "+l+" }":l;return t=c,n=o,r=new RegExp("\\"+n+"\\b","g"),i=new RegExp("(\\"+n+"\\b){2,}"),g(a||!o?"":o,s)}return g.use([].concat(u,[function(e,t,i){2===e&&i.length&&i[0].lastIndexOf(n)>0&&(i[0]=i[0].replace(r,p))},I,function(e){if(-2===e){var t=d;return d=[],t}}])),b.hash=u.length?u.reduce((function(e,t){return t.name||Z(15),j(e,t.name)}),5381).toString():"",b}var ie=o().createContext(),oe=ie.Consumer,ae=o().createContext(),ce=(ae.Consumer,new P),le=re();function se(){return(0,i.useContext)(ie)||ce}function ue(){return(0,i.useContext)(ae)||le}function ge(e){var t=(0,i.useState)(e.stylisPlugins),n=t[0],r=t[1],a=se(),l=(0,i.useMemo)((function(){var t=a;return e.sheet?t=e.sheet:e.target&&(t=t.reconstructWithOptions({target:e.target},!1)),e.disableCSSOMInjection&&(t=t.reconstructWithOptions({useCSSOMInjection:!1})),t}),[e.disableCSSOMInjection,e.sheet,e.target]),s=(0,i.useMemo)((function(){return re({options:{prefix:!e.disableVendorPrefixes},plugins:n})}),[e.disableVendorPrefixes,n]);return(0,i.useEffect)((function(){c()(n,e.stylisPlugins)||r(e.stylisPlugins)}),[e.stylisPlugins]),o().createElement(ie.Provider,{value:l},o().createElement(ae.Provider,{value:s},e.children))}var de=function(){function e(e,t){var n=this;this.inject=function(e,t){void 0===t&&(t=le);var r=n.name+t.hash;e.hasNameForId(n.id,r)||e.insertRules(n.id,r,t(n.rules,r,"@keyframes"))},this.toString=function(){return Z(12,String(n.name))},this.name=e,this.id="sc-keyframes-"+e,this.rules=t}return e.prototype.getName=function(e){return void 0===e&&(e=le),this.name+e.hash},e}(),Ie=/([A-Z])/,pe=/([A-Z])/g,be=/^ms-/,me=function(e){return"-"+e.toLowerCase()};function Ce(e){return Ie.test(e)?e.replace(pe,me).replace(be,"-ms-"):e}var he=function(e){return null==e||!1===e||""===e};function Be(e,t,n,r){if(Array.isArray(e)){for(var i,o=[],a=0,c=e.length;a<c;a+=1)""!==(i=Be(e[a],t,n,r))&&(Array.isArray(i)?o.push.apply(o,i):o.push(i));return o}return he(e)?"":y(e)?"."+e.styledComponentId:B(e)?"function"!=typeof(l=e)||l.prototype&&l.prototype.isReactComponent||!t?e:Be(e(t),t,n,r):e instanceof de?n?(e.inject(n,r),e.getName(r)):e:m(e)?function e(t,n){var r,i,o=[];for(var a in t)t.hasOwnProperty(a)&&!he(t[a])&&(Array.isArray(t[a])&&t[a].isCss||B(t[a])?o.push(Ce(a)+":",t[a],";"):m(t[a])?o.push.apply(o,e(t[a],a)):o.push(Ce(a)+": "+(r=a,(null==(i=t[a])||"boolean"==typeof i||""===i?"":"number"!=typeof i||0===i||r in s?String(i).trim():i+"px")+";")));return n?[n+" {"].concat(o,["}"]):o}(e):e.toString();var l}var Ae=function(e){return Array.isArray(e)&&(e.isCss=!0),e};function ye(e){for(var t=arguments.length,n=new Array(t>1?t-1:0),r=1;r<t;r++)n[r-1]=arguments[r];return B(e)||m(e)?Ae(Be(b(C,[e].concat(n)))):0===n.length&&1===e.length&&"string"==typeof e[0]?e:Ae(Be(b(e,n)))}new Set;var fe=function(e,t,n){return void 0===n&&(n=h),e.theme!==n.theme&&e.theme||t||n.theme},Ge=/[!"#$%&'()*+,./:;<=>?@[\\\]^`{|}~-]+/g,Qe=/(^-|-$)/g;function Fe(e){return e.replace(Ge,"-").replace(Qe,"")}var ve=function(e){return z(K(e)>>>0)};function Ze(e){return"string"==typeof e&&!0}var Ee=function(e){return"function"==typeof e||"object"==typeof e&&null!==e&&!Array.isArray(e)},Se=function(e){return"__proto__"!==e&&"constructor"!==e&&"prototype"!==e};function Xe(e,t,n){var r=e[n];Ee(t)&&Ee(r)?Te(r,t):e[n]=t}function Te(e){for(var t=arguments.length,n=new Array(t>1?t-1:0),r=1;r<t;r++)n[r-1]=arguments[r];for(var i=0,o=n;i<o.length;i++){var a=o[i];if(Ee(a))for(var c in a)Se(c)&&Xe(e,a[c],c)}return e}var xe=o().createContext(),Ue=xe.Consumer;function Ne(e){var t=(0,i.useContext)(xe),n=(0,i.useMemo)((function(){return function(e,t){return e?B(e)?e(t):Array.isArray(e)||"object"!=typeof e?Z(8):t?p({},t,{},e):e:Z(14)}(e.theme,t)}),[e.theme,t]);return e.children?o().createElement(xe.Provider,{value:n},e.children):null}var Re={};function Oe(e,t,n){var r=y(e),a=!Ze(e),c=t.attrs,l=void 0===c?C:c,s=t.componentId,u=void 0===s?function(e,t){var n="string"!=typeof e?"sc":Fe(e);Re[n]=(Re[n]||0)+1;var r=n+"-"+ve("5.3.9"+n+Re[n]);return t?t+"-"+r:r}(t.displayName,t.parentComponentId):s,d=t.displayName,b=void 0===d?function(e){return Ze(e)?"styled."+e:"Styled("+A(e)+")"}(e):d,m=t.displayName&&t.componentId?Fe(t.displayName)+"-"+t.componentId:t.componentId||u,f=r&&e.attrs?Array.prototype.concat(e.attrs,l).filter(Boolean):l,G=t.shouldForwardProp;r&&e.shouldForwardProp&&(G=t.shouldForwardProp?function(n,r,i){return e.shouldForwardProp(n,r,i)&&t.shouldForwardProp(n,r,i)}:e.shouldForwardProp);var Q,F=new ee(n,m,r?e.componentStyle:void 0),v=F.isStatic&&0===l.length,Z=function(e,t){return function(e,t,n,r){var o=e.attrs,a=e.componentStyle,c=e.defaultProps,l=e.foldedComponentIds,s=e.shouldForwardProp,u=e.styledComponentId,d=e.target,I=function(e,t,n){void 0===e&&(e=h);var r=p({},t,{theme:e}),i={};return n.forEach((function(e){var t,n,o,a=e;for(t in B(a)&&(a=a(r)),a)r[t]=i[t]="className"===t?(n=i[t],o=a[t],n&&o?n+" "+o:n||o):a[t]})),[r,i]}(fe(t,(0,i.useContext)(xe),c)||h,t,o),b=I[0],m=I[1],C=function(e,t,n){var r=se(),i=ue();return t?e.generateAndInjectStyles(h,r,i):e.generateAndInjectStyles(n,r,i)}(a,r,b),A=n,y=m.$as||t.$as||m.as||t.as||d,f=Ze(y),G=m!==t?p({},t,{},m):t,Q={};for(var F in G)"$"!==F[0]&&"as"!==F&&("forwardedAs"===F?Q.as=G[F]:(s?s(F,g,y):!f||g(F))&&(Q[F]=G[F]));return t.style&&m.style!==t.style&&(Q.style=p({},t.style,{},m.style)),Q.className=Array.prototype.concat(l,u,C!==u?C:null,t.className,m.className).filter(Boolean).join(" "),Q.ref=A,(0,i.createElement)(y,Q)}(Q,e,t,v)};return Z.displayName=b,(Q=o().forwardRef(Z)).attrs=f,Q.componentStyle=F,Q.displayName=b,Q.shouldForwardProp=G,Q.foldedComponentIds=r?Array.prototype.concat(e.foldedComponentIds,e.styledComponentId):C,Q.styledComponentId=m,Q.target=r?e.target:e,Q.withComponent=function(e){var r=t.componentId,i=function(e,t){if(null==e)return{};var n,r,i={},o=Object.keys(e);for(r=0;r<o.length;r++)n=o[r],t.indexOf(n)>=0||(i[n]=e[n]);return i}(t,["componentId"]),o=r&&r+"-"+(Ze(e)?e:Fe(A(e)));return Oe(e,p({},i,{attrs:f,componentId:o}),n)},Object.defineProperty(Q,"defaultProps",{get:function(){return this._foldedDefaultProps},set:function(t){this._foldedDefaultProps=r?Te({},e.defaultProps,t):t}}),Object.defineProperty(Q,"toString",{value:function(){return"."+Q.styledComponentId}}),a&&I()(Q,e,{attrs:!0,componentStyle:!0,displayName:!0,foldedComponentIds:!0,shouldForwardProp:!0,styledComponentId:!0,target:!0,withComponent:!0}),Q}var Ve=function(e){return function e(t,n,i){if(void 0===i&&(i=h),!(0,r.isValidElementType)(n))return Z(1,String(n));var o=function(){return t(n,i,ye.apply(void 0,arguments))};return o.withConfig=function(r){return e(t,n,p({},i,{},r))},o.attrs=function(r){return e(t,n,p({},i,{attrs:Array.prototype.concat(i.attrs,r).filter(Boolean)}))},o}(Oe,e)};["a","abbr","address","area","article","aside","audio","b","base","bdi","bdo","big","blockquote","body","br","button","canvas","caption","cite","code","col","colgroup","data","datalist","dd","del","details","dfn","dialog","div","dl","dt","em","embed","fieldset","figcaption","figure","footer","form","h1","h2","h3","h4","h5","h6","head","header","hgroup","hr","html","i","iframe","img","input","ins","kbd","keygen","label","legend","li","link","main","map","mark","marquee","menu","menuitem","meta","meter","nav","noscript","object","ol","optgroup","option","output","p","param","picture","pre","progress","q","rp","rt","ruby","s","samp","script","section","select","small","source","span","strong","style","sub","summary","sup","table","tbody","td","textarea","tfoot","th","thead","time","title","tr","track","u","ul","var","video","wbr","circle","clipPath","defs","ellipse","foreignObject","g","image","line","linearGradient","marker","mask","path","pattern","polygon","polyline","radialGradient","rect","stop","svg","text","textPath","tspan"].forEach((function(e){Ve[e]=Ve(e)}));var We=function(){function e(e,t){this.rules=e,this.componentId=t,this.isStatic=q(e),P.registerId(this.componentId+1)}var t=e.prototype;return t.createStyles=function(e,t,n,r){var i=r(Be(this.rules,t,n,r).join(""),""),o=this.componentId+e;n.insertRules(o,o,i)},t.removeStyles=function(e,t){t.clearRules(this.componentId+e)},t.renderStyles=function(e,t,n,r){e>2&&P.registerId(this.componentId+e),this.removeStyles(e,n),this.createStyles(e,t,n,r)},e}();function _e(e){for(var t=arguments.length,n=new Array(t>1?t-1:0),r=1;r<t;r++)n[r-1]=arguments[r];var a=ye.apply(void 0,[e].concat(n)),c="sc-global-"+ve(JSON.stringify(a)),l=new We(a,c);function s(e){var t=se(),n=ue(),r=(0,i.useContext)(xe),o=(0,i.useRef)(t.allocateGSInstance(c)).current;return t.server&&u(o,e,t,r,n),(0,i.useLayoutEffect)((function(){if(!t.server)return u(o,e,t,r,n),function(){return l.removeStyles(o,t)}}),[o,e,t,r,n]),null}function u(e,t,n,r,i){if(l.isStatic)l.renderStyles(e,v,n,i);else{var o=p({},t,{theme:fe(t,r,s.defaultProps)});l.renderStyles(e,o,n,i)}}return o().memo(s)}function we(e){for(var t=arguments.length,n=new Array(t>1?t-1:0),r=1;r<t;r++)n[r-1]=arguments[r];var i=ye.apply(void 0,[e].concat(n)).join(""),o=ve(i);return new de(o,i)}var He=function(){function e(){var e=this;this._emitSheetCSS=function(){var t=e.instance.toString();if(!t)return"";var n=_();return"<style "+[n&&'nonce="'+n+'"',f+'="true"','data-styled-version="5.3.9"'].filter(Boolean).join(" ")+">"+t+"</style>"},this.getStyleTags=function(){return e.sealed?Z(2):e._emitSheetCSS()},this.getStyleElement=function(){var t;if(e.sealed)return Z(2);var n=((t={})[f]="",t["data-styled-version"]="5.3.9",t.dangerouslySetInnerHTML={__html:e.instance.toString()},t),r=_();return r&&(n.nonce=r),[o().createElement("style",p({},n,{key:"sc-0-0"}))]},this.seal=function(){e.sealed=!0},this.instance=new P({isServer:!0}),this.sealed=!1}var t=e.prototype;return t.collectStyles=function(e){return this.sealed?Z(2):o().createElement(ge,{sheet:this.instance},e)},t.interleaveWithNodeStream=function(e){return Z(3)},e}(),Ye=function(e){var t=o().forwardRef((function(t,n){var r=(0,i.useContext)(xe),a=e.defaultProps,c=fe(t,r,a);return o().createElement(e,p({},t,{theme:c,ref:n}))}));return I()(t,e),t.displayName="WithTheme("+A(e)+")",t},ke=function(){return(0,i.useContext)(xe)},De={StyleSheet:P,masterSheet:ce};const Le=Ve},1380:e=>{"use strict";function t(e,t){var r="undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(!r){if(Array.isArray(e)||(r=function(e,t){if(e){if("string"==typeof e)return n(e,t);var r=Object.prototype.toString.call(e).slice(8,-1);return"Object"===r&&e.constructor&&(r=e.constructor.name),"Map"===r||"Set"===r?Array.from(e):"Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)?n(e,t):void 0}}(e))||t&&e&&"number"==typeof e.length){r&&(e=r);var i=0,o=function(){};return{s:o,n:function(){return i>=e.length?{done:!0}:{done:!1,value:e[i++]}},e:function(e){throw e},f:o}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var a,c=!0,l=!1;return{s:function(){r=r.call(e)},n:function(){var e=r.next();return c=e.done,e},e:function(e){l=!0,a=e},f:function(){try{c||null==r.return||r.return()}finally{if(l)throw a}}}}function n(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=new Array(t);n<t;n++)r[n]=e[n];return r}function r(){this._defaults=[]}for(var i=0,o=["use","on","once","set","query","type","accept","auth","withCredentials","sortQuery","retry","ok","redirects","timeout","buffer","serialize","parse","ca","key","pfx","cert","disableTLSCerts"];i<o.length;i++){const e=o[i];r.prototype[e]=function(){for(var t=arguments.length,n=new Array(t),r=0;r<t;r++)n[r]=arguments[r];return this._defaults.push({fn:e,args:n}),this}}r.prototype._setDefaults=function(e){var n,r=t(this._defaults);try{for(r.s();!(n=r.n()).done;){const t=n.value;e[t.fn](...t.args)}}catch(i){r.e(i)}finally{r.f()}},e.exports=r},5734:(e,t,n)=>{"use strict";function r(e,t){var n="undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(!n){if(Array.isArray(e)||(n=function(e,t){if(e){if("string"==typeof e)return i(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?i(e,t):void 0}}(e))||t&&e&&"number"==typeof e.length){n&&(e=n);var r=0,o=function(){};return{s:o,n:function(){return r>=e.length?{done:!0}:{done:!1,value:e[r++]}},e:function(e){throw e},f:o}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var a,c=!0,l=!1;return{s:function(){n=n.call(e)},n:function(){var e=n.next();return c=e.done,e},e:function(e){l=!0,a=e},f:function(){try{c||null==n.return||n.return()}finally{if(l)throw a}}}}function i(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=new Array(t);n<t;n++)r[n]=e[n];return r}let o;"undefined"!=typeof window?o=window:"undefined"==typeof self?(console.warn("Using browser-only version of superagent in non-browser environment"),o=void 0):o=self;const a=n(5971),c=n(8463),l=n(5373),s=n(1948),u=n(3048),g=u.isObject,d=u.mixin,I=u.hasOwn,p=n(9450),b=n(1380);function m(){}e.exports=function(e,n){return"function"==typeof n?new t.Request("GET",e).end(n):1===arguments.length?new t.Request("GET",e):new t.Request(e,n)};const C=t=e.exports;t.Request=Q,C.getXHR=()=>{if(o.XMLHttpRequest)return new o.XMLHttpRequest;throw new Error("Browser-only version of superagent could not find XHR")};const h="".trim?e=>e.trim():e=>e.replace(/(^\s*|\s*$)/g,"");function B(e){if(!g(e))return e;const t=[];for(const n in e)I(e,n)&&A(t,n,e[n]);return t.join("&")}function A(e,t,n){if(void 0!==n)if(null!==n)if(Array.isArray(n)){var i,o=r(n);try{for(o.s();!(i=o.n()).done;)A(e,t,i.value)}catch(a){o.e(a)}finally{o.f()}}else if(g(n))for(const r in n)I(n,r)&&A(e,`${t}[${r}]`,n[r]);else e.push(encodeURI(t)+"="+encodeURIComponent(n));else e.push(encodeURI(t))}function y(e){const t={},n=e.split("&");let r,i;for(let o=0,a=n.length;o<a;++o)r=n[o],i=r.indexOf("="),-1===i?t[decodeURIComponent(r)]="":t[decodeURIComponent(r.slice(0,i))]=decodeURIComponent(r.slice(i+1));return t}function f(e){return/[/+]json($|[^-\w])/i.test(e)}function G(e){this.req=e,this.xhr=this.req.xhr,this.text="HEAD"!==this.req.method&&(""===this.xhr.responseType||"text"===this.xhr.responseType)||void 0===this.xhr.responseType?this.xhr.responseText:null,this.statusText=this.req.xhr.statusText;let t=this.xhr.status;1223===t&&(t=204),this._setStatusProperties(t),this.headers=function(e){const t=e.split(/\r?\n/),n={};let r,i,o,a;for(let c=0,l=t.length;c<l;++c)i=t[c],r=i.indexOf(":"),-1!==r&&(o=i.slice(0,r).toLowerCase(),a=h(i.slice(r+1)),n[o]=a);return n}(this.xhr.getAllResponseHeaders()),this.header=this.headers,this.header["content-type"]=this.xhr.getResponseHeader("content-type"),this._setHeaderProperties(this.header),null===this.text&&e._responseType?this.body=this.xhr.response:this.body="HEAD"===this.req.method?null:this._parseBody(this.text?this.text:this.xhr.response)}function Q(e,t){const n=this;this._query=this._query||[],this.method=e,this.url=t,this.header={},this._header={},this.on("end",(()=>{let e,t=null,r=null;try{r=new G(n)}catch(i){return t=new Error("Parser is unable to parse the response"),t.parse=!0,t.original=i,n.xhr?(t.rawResponse=void 0===n.xhr.responseType?n.xhr.responseText:n.xhr.response,t.status=n.xhr.status?n.xhr.status:null,t.statusCode=t.status):(t.rawResponse=null,t.status=null),n.callback(t)}n.emit("response",r);try{n._isResponseOK(r)||(e=new Error(r.statusText||r.text||"Unsuccessful HTTP response"))}catch(i){e=i}e?(e.original=t,e.response=r,e.status=e.status||r.status,n.callback(e,r)):n.callback(null,r)}))}C.serializeObject=B,C.parseString=y,C.types={html:"text/html",json:"application/json",xml:"text/xml",urlencoded:"application/x-www-form-urlencoded",form:"application/x-www-form-urlencoded","form-data":"application/x-www-form-urlencoded"},C.serialize={"application/x-www-form-urlencoded":l.stringify,"application/json":c},C.parse={"application/x-www-form-urlencoded":y,"application/json":JSON.parse},d(G.prototype,p.prototype),G.prototype._parseBody=function(e){let t=C.parse[this.type];return this.req._parser?this.req._parser(this,e):(!t&&f(this.type)&&(t=C.parse["application/json"]),t&&e&&(e.length>0||e instanceof Object)?t(e):null)},G.prototype.toError=function(){const e=this.req,t=e.method,n=e.url,r=`cannot ${t} ${n} (${this.status})`,i=new Error(r);return i.status=this.status,i.method=t,i.url=n,i},C.Response=G,a(Q.prototype),d(Q.prototype,s.prototype),Q.prototype.type=function(e){return this.set("Content-Type",C.types[e]||e),this},Q.prototype.accept=function(e){return this.set("Accept",C.types[e]||e),this},Q.prototype.auth=function(e,t,n){1===arguments.length&&(t=""),"object"==typeof t&&null!==t&&(n=t,t=""),n||(n={type:"function"==typeof btoa?"basic":"auto"});const r=n.encoder?n.encoder:e=>{if("function"==typeof btoa)return btoa(e);throw new Error("Cannot use basic auth, btoa is not a function")};return this._auth(e,t,n,r)},Q.prototype.query=function(e){return"string"!=typeof e&&(e=B(e)),e&&this._query.push(e),this},Q.prototype.attach=function(e,t,n){if(t){if(this._data)throw new Error("superagent can't mix .send() and .attach()");this._getFormData().append(e,t,n||t.name)}return this},Q.prototype._getFormData=function(){return this._formData||(this._formData=new o.FormData),this._formData},Q.prototype.callback=function(e,t){if(this._shouldRetry(e,t))return this._retry();const n=this._callback;this.clearTimeout(),e&&(this._maxRetries&&(e.retries=this._retries-1),this.emit("error",e)),n(e,t)},Q.prototype.crossDomainError=function(){const e=new Error("Request has been terminated\nPossible causes: the network is offline, Origin is not allowed by Access-Control-Allow-Origin, the page is being unloaded, etc.");e.crossDomain=!0,e.status=this.status,e.method=this.method,e.url=this.url,this.callback(e)},Q.prototype.agent=function(){return console.warn("This is not supported in browser version of superagent"),this},Q.prototype.ca=Q.prototype.agent,Q.prototype.buffer=Q.prototype.ca,Q.prototype.write=()=>{throw new Error("Streaming is not supported in browser version of superagent")},Q.prototype.pipe=Q.prototype.write,Q.prototype._isHost=function(e){return e&&"object"==typeof e&&!Array.isArray(e)&&"[object Object]"!==Object.prototype.toString.call(e)},Q.prototype.end=function(e){this._endCalled&&console.warn("Warning: .end() was called twice. This is not supported in superagent"),this._endCalled=!0,this._callback=e||m,this._finalizeQueryString(),this._end()},Q.prototype._setUploadTimeout=function(){const e=this;this._uploadTimeout&&!this._uploadTimeoutTimer&&(this._uploadTimeoutTimer=setTimeout((()=>{e._timeoutError("Upload timeout of ",e._uploadTimeout,"ETIMEDOUT")}),this._uploadTimeout))},Q.prototype._end=function(){if(this._aborted)return this.callback(new Error("The request has been aborted even before .end() was called"));const e=this;this.xhr=C.getXHR();const t=this.xhr;let n=this._formData||this._data;this._setTimeouts(),t.addEventListener("readystatechange",(()=>{const n=t.readyState;if(n>=2&&e._responseTimeoutTimer&&clearTimeout(e._responseTimeoutTimer),4!==n)return;let r;try{r=t.status}catch(i){r=0}if(!r){if(e.timedout||e._aborted)return;return e.crossDomainError()}e.emit("end")}));const r=(t,n)=>{n.total>0&&(n.percent=n.loaded/n.total*100,100===n.percent&&clearTimeout(e._uploadTimeoutTimer)),n.direction=t,e.emit("progress",n)};if(this.hasListeners("progress"))try{t.addEventListener("progress",r.bind(null,"download")),t.upload&&t.upload.addEventListener("progress",r.bind(null,"upload"))}catch(i){}t.upload&&this._setUploadTimeout();try{this.username&&this.password?t.open(this.method,this.url,!0,this.username,this.password):t.open(this.method,this.url,!0)}catch(i){return this.callback(i)}if(this._withCredentials&&(t.withCredentials=!0),!this._formData&&"GET"!==this.method&&"HEAD"!==this.method&&"string"!=typeof n&&!this._isHost(n)){const e=this._header["content-type"];let t=this._serializer||C.serialize[e?e.split(";")[0]:""];!t&&f(e)&&(t=C.serialize["application/json"]),t&&(n=t(n))}for(const i in this.header)null!==this.header[i]&&I(this.header,i)&&t.setRequestHeader(i,this.header[i]);this._responseType&&(t.responseType=this._responseType),this.emit("request",this),t.send(void 0===n?null:n)},C.agent=()=>new b;for(var F=0,v=["GET","POST","OPTIONS","PATCH","PUT","DELETE"];F<v.length;F++){const e=v[F];b.prototype[e.toLowerCase()]=function(t,n){const r=new C.Request(e,t);return this._setDefaults(r),n&&r.end(n),r}}function Z(e,t,n){const r=C("DELETE",e);return"function"==typeof t&&(n=t,t=null),t&&r.send(t),n&&r.end(n),r}b.prototype.del=b.prototype.delete,C.get=(e,t,n)=>{const r=C("GET",e);return"function"==typeof t&&(n=t,t=null),t&&r.query(t),n&&r.end(n),r},C.head=(e,t,n)=>{const r=C("HEAD",e);return"function"==typeof t&&(n=t,t=null),t&&r.query(t),n&&r.end(n),r},C.options=(e,t,n)=>{const r=C("OPTIONS",e);return"function"==typeof t&&(n=t,t=null),t&&r.send(t),n&&r.end(n),r},C.del=Z,C.delete=Z,C.patch=(e,t,n)=>{const r=C("PATCH",e);return"function"==typeof t&&(n=t,t=null),t&&r.send(t),n&&r.end(n),r},C.post=(e,t,n)=>{const r=C("POST",e);return"function"==typeof t&&(n=t,t=null),t&&r.send(t),n&&r.end(n),r},C.put=(e,t,n)=>{const r=C("PUT",e);return"function"==typeof t&&(n=t,t=null),t&&r.send(t),n&&r.end(n),r}},1948:(e,t,n)=>{"use strict";const r=n(2623),i=n(3048),o=i.isObject,a=i.hasOwn;function c(){}e.exports=c,c.prototype.clearTimeout=function(){return clearTimeout(this._timer),clearTimeout(this._responseTimeoutTimer),clearTimeout(this._uploadTimeoutTimer),delete this._timer,delete this._responseTimeoutTimer,delete this._uploadTimeoutTimer,this},c.prototype.parse=function(e){return this._parser=e,this},c.prototype.responseType=function(e){return this._responseType=e,this},c.prototype.serialize=function(e){return this._serializer=e,this},c.prototype.timeout=function(e){if(!e||"object"!=typeof e)return this._timeout=e,this._responseTimeout=0,this._uploadTimeout=0,this;for(const t in e)if(a(e,t))switch(t){case"deadline":this._timeout=e.deadline;break;case"response":this._responseTimeout=e.response;break;case"upload":this._uploadTimeout=e.upload;break;default:console.warn("Unknown timeout option",t)}return this},c.prototype.retry=function(e,t){return 0!==arguments.length&&!0!==e||(e=1),e<=0&&(e=0),this._maxRetries=e,this._retries=0,this._retryCallback=t,this};const l=new Set(["ETIMEDOUT","ECONNRESET","EADDRINUSE","ECONNREFUSED","EPIPE","ENOTFOUND","ENETUNREACH","EAI_AGAIN"]),s=new Set([408,413,429,500,502,503,504,521,522,524]);c.prototype._shouldRetry=function(e,t){if(!this._maxRetries||this._retries++>=this._maxRetries)return!1;if(this._retryCallback)try{const n=this._retryCallback(e,t);if(!0===n)return!0;if(!1===n)return!1}catch(n){console.error(n)}if(t&&t.status&&s.has(t.status))return!0;if(e){if(e.code&&l.has(e.code))return!0;if(e.timeout&&"ECONNABORTED"===e.code)return!0;if(e.crossDomain)return!0}return!1},c.prototype._retry=function(){return this.clearTimeout(),this.req&&(this.req=null,this.req=this.request()),this._aborted=!1,this.timedout=!1,this.timedoutError=null,this._end()},c.prototype.then=function(e,t){if(!this._fullfilledPromise){const e=this;this._endCalled&&console.warn("Warning: superagent request was sent twice, because both .end() and .then() were called. Never call .end() if you use promises"),this._fullfilledPromise=new Promise(((t,n)=>{e.on("abort",(()=>{if(this._maxRetries&&this._maxRetries>this._retries)return;if(this.timedout&&this.timedoutError)return void n(this.timedoutError);const e=new Error("Aborted");e.code="ABORTED",e.status=this.status,e.method=this.method,e.url=this.url,n(e)})),e.end(((e,r)=>{e?n(e):t(r)}))}))}return this._fullfilledPromise.then(e,t)},c.prototype.catch=function(e){return this.then(void 0,e)},c.prototype.use=function(e){return e(this),this},c.prototype.ok=function(e){if("function"!=typeof e)throw new Error("Callback required");return this._okCallback=e,this},c.prototype._isResponseOK=function(e){return!!e&&(this._okCallback?this._okCallback(e):e.status>=200&&e.status<300)},c.prototype.get=function(e){return this._header[e.toLowerCase()]},c.prototype.getHeader=c.prototype.get,c.prototype.set=function(e,t){if(o(e)){for(const t in e)a(e,t)&&this.set(t,e[t]);return this}return this._header[e.toLowerCase()]=t,this.header[e]=t,this},c.prototype.unset=function(e){return delete this._header[e.toLowerCase()],delete this.header[e],this},c.prototype.field=function(e,t,n){if(null==e)throw new Error(".field(name, val) name can not be empty");if(this._data)throw new Error(".field() can't be used if .send() is used. Please use only .send() or only .field() & .attach()");if(o(e)){for(const t in e)a(e,t)&&this.field(t,e[t]);return this}if(Array.isArray(t)){for(const n in t)a(t,n)&&this.field(e,t[n]);return this}if(null==t)throw new Error(".field(name, val) val can not be empty");return"boolean"==typeof t&&(t=String(t)),n?this._getFormData().append(e,t,n):this._getFormData().append(e,t),this},c.prototype.abort=function(){if(this._aborted)return this;if(this._aborted=!0,this.xhr&&this.xhr.abort(),this.req){if(r.gte(process.version,"v13.0.0")&&r.lt(process.version,"v14.0.0"))throw new Error("Superagent does not work in v13 properly with abort() due to Node.js core changes");r.gte(process.version,"v14.0.0")&&(this.req.destroyed=!0),this.req.abort()}return this.clearTimeout(),this.emit("abort"),this},c.prototype._auth=function(e,t,n,r){switch(n.type){case"basic":this.set("Authorization",`Basic ${r(`${e}:${t}`)}`);break;case"auto":this.username=e,this.password=t;break;case"bearer":this.set("Authorization",`Bearer ${e}`)}return this},c.prototype.withCredentials=function(e){return void 0===e&&(e=!0),this._withCredentials=e,this},c.prototype.redirects=function(e){return this._maxRedirects=e,this},c.prototype.maxResponseSize=function(e){if("number"!=typeof e)throw new TypeError("Invalid argument");return this._maxResponseSize=e,this},c.prototype.toJSON=function(){return{method:this.method,url:this.url,data:this._data,headers:this._header}},c.prototype.send=function(e){const t=o(e);let n=this._header["content-type"];if(this._formData)throw new Error(".send() can't be used if .attach() or .field() is used. Please use only .send() or only .field() & .attach()");if(t&&!this._data)Array.isArray(e)?this._data=[]:this._isHost(e)||(this._data={});else if(e&&this._data&&this._isHost(this._data))throw new Error("Can't merge these send calls");if(t&&o(this._data))for(const r in e)a(e,r)&&(this._data[r]=e[r]);else"string"==typeof e?(n||this.type("form"),n=this._header["content-type"],n&&(n=n.toLowerCase().trim()),this._data="application/x-www-form-urlencoded"===n?this._data?`${this._data}&${e}`:e:(this._data||"")+e):this._data=e;return!t||this._isHost(e)||n||this.type("json"),this},c.prototype.sortQuery=function(e){return this._sort=void 0===e||e,this},c.prototype._finalizeQueryString=function(){const e=this._query.join("&");if(e&&(this.url+=(this.url.includes("?")?"&":"?")+e),this._query.length=0,this._sort){const e=this.url.indexOf("?");if(e>=0){const t=this.url.slice(e+1).split("&");"function"==typeof this._sort?t.sort(this._sort):t.sort(),this.url=this.url.slice(0,e)+"?"+t.join("&")}}},c.prototype._appendQueryString=()=>{console.warn("Unsupported")},c.prototype._timeoutError=function(e,t,n){if(this._aborted)return;const r=new Error(`${e+t}ms exceeded`);r.timeout=t,r.code="ECONNABORTED",r.errno=n,this.timedout=!0,this.timedoutError=r,this.abort(),this.callback(r)},c.prototype._setTimeouts=function(){const e=this;this._timeout&&!this._timer&&(this._timer=setTimeout((()=>{e._timeoutError("Timeout of ",e._timeout,"ETIME")}),this._timeout)),this._responseTimeout&&!this._responseTimeoutTimer&&(this._responseTimeoutTimer=setTimeout((()=>{e._timeoutError("Response timeout of ",e._responseTimeout,"ETIMEDOUT")}),this._responseTimeout))}},9450:(e,t,n)=>{"use strict";const r=n(3048);function i(){}e.exports=i,i.prototype.get=function(e){return this.header[e.toLowerCase()]},i.prototype._setHeaderProperties=function(e){const t=e["content-type"]||"";this.type=r.type(t);const n=r.params(t);for(const r in n)Object.prototype.hasOwnProperty.call(n,r)&&(this[r]=n[r]);this.links={};try{e.link&&(this.links=r.parseLinks(e.link))}catch(i){}},i.prototype._setStatusProperties=function(e){const t=Math.trunc(e/100);this.statusCode=e,this.status=this.statusCode,this.statusType=t,this.info=1===t,this.ok=2===t,this.redirect=3===t,this.clientError=4===t,this.serverError=5===t,this.error=(4===t||5===t)&&this.toError(),this.created=201===e,this.accepted=202===e,this.noContent=204===e,this.badRequest=400===e,this.unauthorized=401===e,this.notAcceptable=406===e,this.forbidden=403===e,this.notFound=404===e,this.unprocessableEntity=422===e}},3048:(e,t)=>{"use strict";function n(e,t){var n="undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(!n){if(Array.isArray(e)||(n=function(e,t){if(e){if("string"==typeof e)return r(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?r(e,t):void 0}}(e))||t&&e&&"number"==typeof e.length){n&&(e=n);var i=0,o=function(){};return{s:o,n:function(){return i>=e.length?{done:!0}:{done:!1,value:e[i++]}},e:function(e){throw e},f:o}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var a,c=!0,l=!1;return{s:function(){n=n.call(e)},n:function(){var e=n.next();return c=e.done,e},e:function(e){l=!0,a=e},f:function(){try{c||null==n.return||n.return()}finally{if(l)throw a}}}}function r(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=new Array(t);n<t;n++)r[n]=e[n];return r}t.type=e=>e.split(/ *; */).shift(),t.params=e=>{const t={};var r,i=n(e.split(/ *; */));try{for(i.s();!(r=i.n()).done;){const e=r.value.split(/ *= */),n=e.shift(),i=e.shift();n&&i&&(t[n]=i)}}catch(o){i.e(o)}finally{i.f()}return t},t.parseLinks=e=>{const t={};var r,i=n(e.split(/ *, */));try{for(i.s();!(r=i.n()).done;){const e=r.value.split(/ *; */),n=e[0].slice(1,-1);t[e[1].split(/ *= */)[1].slice(1,-1)]=n}}catch(o){i.e(o)}finally{i.f()}return t},t.cleanHeader=(e,t)=>(delete e["content-type"],delete e["content-length"],delete e["transfer-encoding"],delete e.host,t&&(delete e.authorization,delete e.cookie),e),t.isObject=e=>null!==e&&"object"==typeof e,t.hasOwn=Object.hasOwn||function(e,t){if(null==e)throw new TypeError("Cannot convert undefined or null to object");return Object.prototype.hasOwnProperty.call(new Object(e),t)},t.mixin=(e,n)=>{for(const r in n)t.hasOwn(n,r)&&(e[r]=n[r])}},9423:(e,t,n)=>{"use strict";n.d(t,{A:()=>r}),e=n.hmd(e);const r=function(e){var t,n=e.Symbol;return"function"==typeof n?n.observable?t=n.observable:(t=n("observable"),n.observable=t):t="@@observable",t}("undefined"!=typeof self?self:"undefined"!=typeof window?window:void 0!==n.g?n.g:e)},1004:(e,t,n)=>{"use strict";n.d(t,{V1:()=>l,zU:()=>c});var r=n(5215),i="Invariant Violation",o=Object.setPrototypeOf,a=void 0===o?function(e,t){return e.__proto__=t,e}:o,c=function(e){function t(n){void 0===n&&(n=i);var r=e.call(this,"number"==typeof n?i+": "+n+" (see https://github.com/apollographql/invariant-packages)":n)||this;return r.framesToPop=1,r.name=i,a(r,t.prototype),r}return(0,r.C6)(t,e),t}(Error);function l(e,t){if(!e)throw new c(t)}function s(e){return function(){return console[e].apply(console,arguments)}}!function(e){e.warn=s("warn"),e.error=s("error")}(l||(l={}));var u={env:{}};if("object"==typeof process)u=process;else try{Function("stub","process = stub")(u)}catch(g){}},5215:(e,t,n)=>{"use strict";n.d(t,{C6:()=>i,Cl:()=>o,Tt:()=>a,YH:()=>l,aN:()=>s,sH:()=>c});
/*! *****************************************************************************
Copyright (c) Microsoft Corporation.

Permission to use, copy, modify, and/or distribute this software for any
purpose with or without fee is hereby granted.

THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH
REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,
INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
PERFORMANCE OF THIS SOFTWARE.
***************************************************************************** */
var r=function(e,t){return r=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)t.hasOwnProperty(n)&&(e[n]=t[n])},r(e,t)};function i(e,t){function n(){this.constructor=e}r(e,t),e.prototype=null===t?Object.create(t):(n.prototype=t.prototype,new n)}var o=function(){return o=Object.assign||function(e){for(var t,n=1,r=arguments.length;n<r;n++)for(var i in t=arguments[n])Object.prototype.hasOwnProperty.call(t,i)&&(e[i]=t[i]);return e},o.apply(this,arguments)};function a(e,t){var n={};for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&t.indexOf(r)<0&&(n[r]=e[r]);if(null!=e&&"function"==typeof Object.getOwnPropertySymbols){var i=0;for(r=Object.getOwnPropertySymbols(e);i<r.length;i++)t.indexOf(r[i])<0&&Object.prototype.propertyIsEnumerable.call(e,r[i])&&(n[r[i]]=e[r[i]])}return n}function c(e,t,n,r){return new(n||(n=Promise))((function(i,o){function a(e){try{l(r.next(e))}catch(t){o(t)}}function c(e){try{l(r.throw(e))}catch(t){o(t)}}function l(e){var t;e.done?i(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,c)}l((r=r.apply(e,t||[])).next())}))}function l(e,t){var n,r,i,o,a={label:0,sent:function(){if(1&i[0])throw i[1];return i[1]},trys:[],ops:[]};return o={next:c(0),throw:c(1),return:c(2)},"function"==typeof Symbol&&(o[Symbol.iterator]=function(){return this}),o;function c(o){return function(c){return function(o){if(n)throw new TypeError("Generator is already executing.");for(;a;)try{if(n=1,r&&(i=2&o[0]?r.return:o[0]?r.throw||((i=r.return)&&i.call(r),0):r.next)&&!(i=i.call(r,o[1])).done)return i;switch(r=0,i&&(o=[2&o[0],i.value]),o[0]){case 0:case 1:i=o;break;case 4:return a.label++,{value:o[1],done:!1};case 5:a.label++,r=o[1],o=[0];continue;case 7:o=a.ops.pop(),a.trys.pop();continue;default:if(!((i=(i=a.trys).length>0&&i[i.length-1])||6!==o[0]&&2!==o[0])){a=0;continue}if(3===o[0]&&(!i||o[1]>i[0]&&o[1]<i[3])){a.label=o[1];break}if(6===o[0]&&a.label<i[1]){a.label=i[1],i=o;break}if(i&&a.label<i[2]){a.label=i[2],a.ops.push(o);break}i[2]&&a.ops.pop(),a.trys.pop();continue}o=t.call(e,a)}catch(c){o=[6,c],r=0}finally{n=i=0}if(5&o[0])throw o[1];return{value:o[0]?o[1]:void 0,done:!0}}([o,c])}}}function s(){for(var e=0,t=0,n=arguments.length;t<n;t++)e+=arguments[t].length;var r=Array(e),i=0;for(t=0;t<n;t++)for(var o=arguments[t],a=0,c=o.length;a<c;a++,i++)r[i]=o[a];return r}},7475:function(e,t){!function(e){"use strict";function t(e){return null==e}function n(e){throw new Error("Argument "+e+" is empty.")}function r(e){return"function"==typeof e&&"getType"in e}function i(e){throw new Error("Argument "+e+' is invalid, it should be an action-creator instance from "typesafe-actions"')}function o(e,t){if(null==e)throw new Error("Argument contains array with empty element at index "+t);if(null==e.getType)throw new Error("Argument contains array with invalid element at index "+t+', it should be an action-creator instance from "typesafe-actions"')}function a(e){return"string"==typeof e||"symbol"==typeof e}function c(e){return!a(e)}function l(e){throw new Error("Argument "+e+" is invalid, it should be an action type of type: string | symbol")}function s(e,t){if(null==e)throw new Error("Argument contains array with empty element at index "+t);if("string"!=typeof e&&"symbol"!=typeof e)throw new Error("Argument contains array with invalid element at index "+t+", it should be of type: string | symbol")}function u(e,r,o,a){return t(e)&&n(1),c(e)&&i(1),{type:e,payload:r,meta:o,error:a}}function g(e,r){return t(e)&&n(1),c(e)&&l(1),Object.assign((function(){var t=null!=r?r.apply(void 0,arguments):void 0;return Object.assign({type:e},t)}),{getType:function(){return e},toString:function(){return e}})}function d(e,r,i){return t(e)&&n(1),c(e)&&l(1),function(){return g(e,(function(){var e=arguments.length<=0?void 0:arguments[0],t=arguments.length<=1?void 0:arguments[1];return null==r&&null==i||(e=null!=r?r.apply(void 0,arguments):void 0,t=null!=i?i.apply(void 0,arguments):void 0),Object.assign({},void 0!==e&&{payload:e},{},void 0!==t&&{meta:t})}))}}function I(e){return t(e)&&n(1),r(e)||i(1),e.getType()}function p(e,r){t(e)&&n(1),c(e)&&l(1);var i=null!=r?r(e):function(){return{type:e}};return Object.assign(i,{getType:function(){return e},toString:function(){return e}})}var b={createAction:function(e,t){var n=null==t?function(){return u(e)}:t(u.bind(null,e));return Object.assign(n,{getType:function(){return e},toString:function(){return e}})},createCustomAction:p,createStandardAction:function(e){return t(e)&&n(1),c(e)&&l(1),Object.assign((function(){return p(e,(function(e){return function(t,n){return{type:e,payload:t,meta:n}}}))}),{map:function(t){return p(e,(function(e){return function(n,r){return Object.assign(t(n,r),{type:e})}}))}})}};e.action=u,e.createAction=d,e.createAsyncAction=function(e,t,n,r){return function(){var i=[e,t,n,r].map((function(e,t){return Array.isArray(e)?d(e[0],e[1],e[2])():"string"==typeof e||"symbol"==typeof e?d(e)():void(t<3&&function(e){throw new Error("Argument "+e+' is invalid, it should be an action type of "string | symbol" or a tuple of "[string | symbol, Function, Function?]"')}(t))}));return{request:i[0],success:i[1],failure:i[2],cancel:i[3]}}},e.createCustomAction=g,e.createReducer=function e(t,n){void 0===n&&(n={});var i=Object.assign({},n),o=function(n,o){var c=Array.isArray(n)?n:[n],l={};return c.map((function(e,t){return r(e)?I(e):a(e)?e:function(e){throw new Error("Argument "+e+' is invalid, it should be an action-creator instance from "typesafe-actions" or action type of type: string | symbol')}(t+1)})).forEach((function(e){return l[e]=o})),e(t,Object.assign({},i,{},l))};return Object.assign((function(e,n){if(void 0===e&&(e=t),i.hasOwnProperty(n.type)){var r=i[n.type];if("function"!=typeof r)throw Error('Reducer under "'+n.type+'" key is not a valid reducer');return r(e,n)}return e}),{handlers:Object.assign({},i),handleAction:o,handleType:o})},e.deprecated=b,e.getType=I,e.isActionOf=function(e,r){t(e)&&n(1);var i=Array.isArray(e)?e:[e];i.forEach(o);var a=function(e){return i.some((function(t){return e.type===t.getType()}))};return void 0===r?a:a(r)},e.isOfType=function(e,r){t(e)&&n(1);var i=Array.isArray(e)?e:[e];i.forEach(s);var o=function(e){return i.includes(e.type)};return void 0===r?o:o(r)}}(t)},1063:(e,t,n)=>{"use strict";
/**
 * @license React
 * use-sync-external-store-shim.production.min.js
 *
 * Copyright (c) Facebook, Inc. and its affiliates.
 *
 * This source code is licensed under the MIT license found in the
 * LICENSE file in the root directory of this source tree.
 */var r=n(5927),i="function"==typeof Object.is?Object.is:function(e,t){return e===t&&(0!==e||1/e==1/t)||e!=e&&t!=t},o=r.useState,a=r.useEffect,c=r.useLayoutEffect,l=r.useDebugValue;function s(e){var t=e.getSnapshot;e=e.value;try{var n=t();return!i(e,n)}catch(r){return!0}}var u="undefined"==typeof window||void 0===window.document||void 0===window.document.createElement?function(e,t){return t()}:function(e,t){var n=t(),r=o({inst:{value:n,getSnapshot:t}}),i=r[0].inst,u=r[1];return c((function(){i.value=n,i.getSnapshot=t,s(i)&&u({inst:i})}),[e,n,t]),a((function(){return s(i)&&u({inst:i}),e((function(){s(i)&&u({inst:i})}))}),[e]),l(n),n};t.useSyncExternalStore=void 0!==r.useSyncExternalStore?r.useSyncExternalStore:u},9888:(e,t,n)=>{"use strict";e.exports=n(1063)},3829:(e,t,n)=>{"use strict";n.d(t,{A:()=>l});const r={randomUUID:"undefined"!=typeof crypto&&crypto.randomUUID&&crypto.randomUUID.bind(crypto)};let i;const o=new Uint8Array(16);function a(){if(!i&&(i="undefined"!=typeof crypto&&crypto.getRandomValues&&crypto.getRandomValues.bind(crypto),!i))throw new Error("crypto.getRandomValues() not supported. See https://github.com/uuidjs/uuid#getrandomvalues-not-supported");return i(o)}const c=[];for(let s=0;s<256;++s)c.push((s+256).toString(16).slice(1));const l=function(e,t,n){if(r.randomUUID&&!t&&!e)return r.randomUUID();const i=(e=e||{}).random||(e.rng||a)();if(i[6]=15&i[6]|64,i[8]=63&i[8]|128,t){n=n||0;for(let e=0;e<16;++e)t[n+e]=i[e];return t}return function(e,t=0){return c[e[t+0]]+c[e[t+1]]+c[e[t+2]]+c[e[t+3]]+"-"+c[e[t+4]]+c[e[t+5]]+"-"+c[e[t+6]]+c[e[t+7]]+"-"+c[e[t+8]]+c[e[t+9]]+"-"+c[e[t+10]]+c[e[t+11]]+c[e[t+12]]+c[e[t+13]]+c[e[t+14]]+c[e[t+15]]}(i)}},8117:(e,t,n)=>{"use strict";n.d(t,{A:()=>i});var r=n(6064);const i=n.n(r)()},6064:(e,t,n)=>{e.exports=n(3619).Observable},3619:(e,t)=>{"use strict";function n(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function r(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}function i(e,t,n){return t&&r(e.prototype,t),n&&r(e,n),e}t.Observable=void 0;var o=function(){return"function"==typeof Symbol},a=function(e){return o()&&Boolean(Symbol[e])},c=function(e){return a(e)?Symbol[e]:"@@"+e};o()&&!a("observable")&&(Symbol.observable=Symbol("observable"));var l=c("iterator"),s=c("observable"),u=c("species");function g(e,t){var n=e[t];if(null!=n){if("function"!=typeof n)throw new TypeError(n+" is not a function");return n}}function d(e){var t=e.constructor;return void 0!==t&&null===(t=t[u])&&(t=void 0),void 0!==t?t:y}function I(e){I.log?I.log(e):setTimeout((function(){throw e}))}function p(e){Promise.resolve().then((function(){try{e()}catch(t){I(t)}}))}function b(e){var t=e._cleanup;if(void 0!==t&&(e._cleanup=void 0,t))try{if("function"==typeof t)t();else{var n=g(t,"unsubscribe");n&&n.call(t)}}catch(r){I(r)}}function m(e){e._observer=void 0,e._queue=void 0,e._state="closed"}function C(e,t,n){e._state="running";var r=e._observer;try{var i=g(r,t);switch(t){case"next":i&&i.call(r,n);break;case"error":if(m(e),!i)throw n;i.call(r,n);break;case"complete":m(e),i&&i.call(r)}}catch(o){I(o)}"closed"===e._state?b(e):"running"===e._state&&(e._state="ready")}function h(e,t,n){if("closed"!==e._state){if("buffering"!==e._state)return"ready"!==e._state?(e._state="buffering",e._queue=[{type:t,value:n}],void p((function(){return function(e){var t=e._queue;if(t){e._queue=void 0,e._state="ready";for(var n=0;n<t.length&&(C(e,t[n].type,t[n].value),"closed"!==e._state);++n);}}(e)}))):void C(e,t,n);e._queue.push({type:t,value:n})}}var B=function(){function e(t,r){n(this,e),this._cleanup=void 0,this._observer=t,this._queue=void 0,this._state="initializing";var i=new A(this);try{this._cleanup=r.call(void 0,i)}catch(o){i.error(o)}"initializing"===this._state&&(this._state="ready")}return i(e,[{key:"unsubscribe",value:function(){"closed"!==this._state&&(m(this),b(this))}},{key:"closed",get:function(){return"closed"===this._state}}]),e}(),A=function(){function e(t){n(this,e),this._subscription=t}return i(e,[{key:"next",value:function(e){h(this._subscription,"next",e)}},{key:"error",value:function(e){h(this._subscription,"error",e)}},{key:"complete",value:function(){h(this._subscription,"complete")}},{key:"closed",get:function(){return"closed"===this._subscription._state}}]),e}(),y=function(){function e(t){if(n(this,e),!(this instanceof e))throw new TypeError("Observable cannot be called as a function");if("function"!=typeof t)throw new TypeError("Observable initializer must be a function");this._subscriber=t}return i(e,[{key:"subscribe",value:function(e){return"object"==typeof e&&null!==e||(e={next:e,error:arguments[1],complete:arguments[2]}),new B(e,this._subscriber)}},{key:"forEach",value:function(e){var t=this;return new Promise((function(n,r){if("function"==typeof e)var i=t.subscribe({next:function(t){try{e(t,o)}catch(n){r(n),i.unsubscribe()}},error:r,complete:n});else r(new TypeError(e+" is not a function"));function o(){i.unsubscribe(),n()}}))}},{key:"map",value:function(e){var t=this;if("function"!=typeof e)throw new TypeError(e+" is not a function");return new(d(this))((function(n){return t.subscribe({next:function(t){try{t=e(t)}catch(r){return n.error(r)}n.next(t)},error:function(e){n.error(e)},complete:function(){n.complete()}})}))}},{key:"filter",value:function(e){var t=this;if("function"!=typeof e)throw new TypeError(e+" is not a function");return new(d(this))((function(n){return t.subscribe({next:function(t){try{if(!e(t))return}catch(r){return n.error(r)}n.next(t)},error:function(e){n.error(e)},complete:function(){n.complete()}})}))}},{key:"reduce",value:function(e){var t=this;if("function"!=typeof e)throw new TypeError(e+" is not a function");var n=d(this),r=arguments.length>1,i=!1,o=arguments[1];return new n((function(n){return t.subscribe({next:function(t){var a=!i;if(i=!0,!a||r)try{o=e(o,t)}catch(c){return n.error(c)}else o=t},error:function(e){n.error(e)},complete:function(){if(!i&&!r)return n.error(new TypeError("Cannot reduce an empty sequence"));n.next(o),n.complete()}})}))}},{key:"concat",value:function(){for(var e=this,t=arguments.length,n=new Array(t),r=0;r<t;r++)n[r]=arguments[r];var i=d(this);return new i((function(t){var r,o=0;return function e(a){r=a.subscribe({next:function(e){t.next(e)},error:function(e){t.error(e)},complete:function(){o===n.length?(r=void 0,t.complete()):e(i.from(n[o++]))}})}(e),function(){r&&(r.unsubscribe(),r=void 0)}}))}},{key:"flatMap",value:function(e){var t=this;if("function"!=typeof e)throw new TypeError(e+" is not a function");var n=d(this);return new n((function(r){var i=[],o=t.subscribe({next:function(t){if(e)try{t=e(t)}catch(c){return r.error(c)}var o=n.from(t).subscribe({next:function(e){r.next(e)},error:function(e){r.error(e)},complete:function(){var e=i.indexOf(o);e>=0&&i.splice(e,1),a()}});i.push(o)},error:function(e){r.error(e)},complete:function(){a()}});function a(){o.closed&&0===i.length&&r.complete()}return function(){i.forEach((function(e){return e.unsubscribe()})),o.unsubscribe()}}))}},{key:s,value:function(){return this}}],[{key:"from",value:function(t){var n="function"==typeof this?this:e;if(null==t)throw new TypeError(t+" is not an object");var r=g(t,s);if(r){var i=r.call(t);if(Object(i)!==i)throw new TypeError(i+" is not an object");return function(e){return e instanceof y}(i)&&i.constructor===n?i:new n((function(e){return i.subscribe(e)}))}if(a("iterator")&&(r=g(t,l)))return new n((function(e){p((function(){if(!e.closed){var n=!0,i=!1,o=void 0;try{for(var a,c=r.call(t)[Symbol.iterator]();!(n=(a=c.next()).done);n=!0){var l=a.value;if(e.next(l),e.closed)return}}catch(s){i=!0,o=s}finally{try{n||null==c.return||c.return()}finally{if(i)throw o}}e.complete()}}))}));if(Array.isArray(t))return new n((function(e){p((function(){if(!e.closed){for(var n=0;n<t.length;++n)if(e.next(t[n]),e.closed)return;e.complete()}}))}));throw new TypeError(t+" is not observable")}},{key:"of",value:function(){for(var t=arguments.length,n=new Array(t),r=0;r<t;r++)n[r]=arguments[r];return new("function"==typeof this?this:e)((function(e){p((function(){if(!e.closed){for(var t=0;t<n.length;++t)if(e.next(n[t]),e.closed)return;e.complete()}}))}))}},{key:u,get:function(){return this}}]),e}();t.Observable=y,o()&&Object.defineProperty(y,Symbol("extensions"),{value:{symbol:s,hostReportError:I},configurable:!0})},9798:e=>{"use strict";e.exports=class{constructor({projectId:e,logName:t,labels:n,clientInfo:r,onSuccess:i,onError:o}){this.projectId=e,this.logName=t,this.labels=n,this.clientInfo=r,this.onSuccess=i,this.onError=o}sendLogs(e){fetch("https://agatha-log-service-kk33tpavpa-de.a.run.app/v1/log",{headers:{"Content-Type":"application/json"},body:JSON.stringify({projectId:this.projectId,logName:this.logName,labels:this.labels,clientInfo:this.clientInfo,entries:e}),method:"POST"}).then((()=>{this.onSuccess&&this.onSuccess(e)})).catch((t=>{this.onError&&this.onError(t,e)}))}updateClientInfo(e){this.clientInfo=Object.assign(Object.assign({},this.clientInfo),e)}}},6942:(e,t)=>{var n;
/*!
	Copyright (c) 2018 Jed Watson.
	Licensed under the MIT License (MIT), see
	http://jedwatson.github.io/classnames
*/!function(){"use strict";var r={}.hasOwnProperty;function i(){for(var e="",t=0;t<arguments.length;t++){var n=arguments[t];n&&(e=a(e,o(n)))}return e}function o(e){if("string"==typeof e||"number"==typeof e)return e;if("object"!=typeof e)return"";if(Array.isArray(e))return i.apply(null,e);if(e.toString!==Object.prototype.toString&&!e.toString.toString().includes("[native code]"))return e.toString();var t="";for(var n in e)r.call(e,n)&&e[n]&&(t=a(t,n));return t}function a(e,t){return t?e?e+" "+t:e+t:e}e.exports?(i.default=i,e.exports=i):void 0===(n=function(){return i}.apply(t,[]))||(e.exports=n)}()},5049:(e,t,n)=>{"use strict";n.d(t,{AH:()=>c,Ay:()=>h,py:()=>g,xI:()=>u});var r,i,o,a,c,l,s,u,g,d,I=function(){return I=Object.assign||function(e){for(var t,n=1,r=arguments.length;n<r;n++)for(var i in t=arguments[n])Object.prototype.hasOwnProperty.call(t,i)&&(e[i]=t[i]);return e},I.apply(this,arguments)};function p(e,t,n,r){return new(n||(n=Promise))((function(i,o){function a(e){try{l(r.next(e))}catch(e){o(e)}}function c(e){try{l(r.throw(e))}catch(e){o(e)}}function l(e){var t;e.done?i(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,c)}l((r=r.apply(e,t||[])).next())}))}function b(e,t){var n,r,i,o,a={label:0,sent:function(){if(1&i[0])throw i[1];return i[1]},trys:[],ops:[]};return o={next:c(0),throw:c(1),return:c(2)},"function"==typeof Symbol&&(o[Symbol.iterator]=function(){return this}),o;function c(c){return function(l){return function(c){if(n)throw new TypeError("Generator is already executing.");for(;o&&(o=0,c[0]&&(a=0)),a;)try{if(n=1,r&&(i=2&c[0]?r.return:c[0]?r.throw||((i=r.return)&&i.call(r),0):r.next)&&!(i=i.call(r,c[1])).done)return i;switch(r=0,i&&(c=[2&c[0],i.value]),c[0]){case 0:case 1:i=c;break;case 4:return a.label++,{value:c[1],done:!1};case 5:a.label++,r=c[1],c=[0];continue;case 7:c=a.ops.pop(),a.trys.pop();continue;default:if(!((i=(i=a.trys).length>0&&i[i.length-1])||6!==c[0]&&2!==c[0])){a=0;continue}if(3===c[0]&&(!i||c[1]>i[0]&&c[1]<i[3])){a.label=c[1];break}if(6===c[0]&&a.label<i[1]){a.label=i[1],i=c;break}if(i&&a.label<i[2]){a.label=i[2],a.ops.push(c);break}i[2]&&a.ops.pop(),a.trys.pop();continue}c=t.call(e,a)}catch(e){c=[6,e],r=0}finally{n=i=0}if(5&c[0])throw c[1];return{value:c[0]?c[1]:void 0,done:!0}}([c,l])}}}"function"==typeof SuppressedError&&SuppressedError,function(e){e.PXPay="PXPay",e.Line="Line",e.JKOPay="JKOPay",e.FBMessenger="FBMessenger",e.PayMe="PayMe",e.GooglePay="GooglePay",e.ICashPay="ICashPay",e.EasyWallet="EasyWallet",e.WeChatPayHK="WeChatPayHK",e.PoyaPay="PoyaPay",e.Atome="Atome",e.BoCPay="BoCPay",e.PXPayPlus="PXPayPlus",e.OpenWallet="OpenWallet",e.FamilyMartOnlinePay="FamilyMartOnlinePay"}(r||(r={})),function(e){e.Check3rdPartyAppStatus="Check3rdPartyAppStatus",e.GetAppVersion="GetAppVersion"}(i||(i={})),function(e){e.LaunchApplePay="LaunchApplePay",e.LaunchEasyWallet="LaunchEasyWallet",e.LaunchGooglePay="LaunchGooglePay",e.LaunchAliPay="LaunchAliPay",e.LaunchWeChatPay="LaunchWeChatPay",e.Launch2C2P="Launch2C2P",e.SetStripeClientSecret="SetStripeClientSecret"}(o||(o={})),function(e){e.Launch3rdPartyApp="Launch3rdPartyApp",e.RequestInstall3rdPartyApp="RequestInstall3rdPartyApp",e.CloseWebView="CloseWebView",e.UpdateCurrencyRate="UpdateCurrencyRate",e.AddToWishList="AddToWishList",e.RemoveFromWishList="RemoveFromWishList",e.AddToBasket="AddToBasket",e.ShowToast="ShowToast",e.ShowPopup="ShowPopup",e.Redirect="Redirect"}(a||(a={})),function(e){e.HeaderBackAction="HeaderBackAction"}(c||(c={})),function(e){e.CartViewed="CartViewed",e.CheckoutProgress="CheckoutProgress",e.AddToCart="AddToCart",e.RemoveFromCart="RemoveFromCart",e.AddToWishList="AddToWishList",e.RemoveFromWishList="RemoveFromWishList",e.BeginCheckOut="BeginCheckOut",e.PaymentMethod="PaymentMethod",e.ShippingMethod="ShippingMethod",e.EcommercePurchase="EcommercePurchase",e.TrackCart="TrackCart",e.SelectContent="SelectContent",e.CartCleared="CartCleared",e.Refund="Refund",e.CancelOrder="CancelOrder",e.PageViewed="PageViewed"}(l||(l={})),function(e){e[e.view_cart=1]="view_cart",e[e.confirm_cart_list=2]="confirm_cart_list"}(s||(s={})),function(e){e.OnBackPressed="OnBackPressed",e.RefreshOuterSalesOrder="RefreshOuterSalesOrder",e.RefreshShoppingCart="RefreshShoppingCart"}(u||(u={})),function(e){e.success="success",e.alert="alert",e.error="error",e.plain="plain"}(g||(g={})),function(e){e[e.Greater=1]="Greater",e[e.Less=-1]="Less",e[e.Equal=0]="Equal"}(d||(d={}));var m=function(e){return new RegExp(/^\d+\.\d+(\.\d+)?[a-z]?$/i).test(e)},C=function(e,t){if(!m(e)||!m(t))throw new Error("Invalid argument, not a valid app version");for(var n=e.split("."),r=t.split("."),i=0;i<Math.max(n.length,r.length);i+=1){var o=n[i]?Number(n[i]):0,a=r[i]?Number(r[i]):0;if(o>a)return d.Greater;if(o<a)return d.Less;var c=n[i]&&/[a-z]/i.test(n[i])?n[i].replace(/\d/g,""):"",l=r[i]&&/[a-z]/i.test(r[i])?r[i].replace(/\d/g,""):"";if(c>l)return d.Greater;if(c<l)return d.Less}return d.Equal},h=function(){function e(){var e,t=this;this.check3rdPartyAppStatus=function(e){return p(t,void 0,void 0,(function(){var t;return b(this,(function(n){return t=this.getPayloadString(i.Check3rdPartyAppStatus,{appName:e}),[2,this.getAppInfo(t)]}))}))},this.getAppVersion=function(){return p(t,void 0,void 0,(function(){var e;return b(this,(function(t){return e=this.getPayloadString(i.GetAppVersion),[2,this.getAppInfo(e)]}))}))},this.requestInstall3rdPartyApp=function(e){var n=t.getPayloadString(a.RequestInstall3rdPartyApp,{appName:e});t.triggerApp(n)},this.launch3rdPartyApp=function(e){var n=t.getPayloadString(a.Launch3rdPartyApp,{appName:e});t.triggerApp(n)},this.TriggerAppPageView=function(e,n,r,i,o){var a={eventType:"PageViewed",data:{viewType:e,viewTitle:n,viewId:r||"",isPopupView:!1,viewFrom:i||"",contentSource:o||""}},c=JSON.stringify(a);t.sendTracking(c)},this.viewItemList=function(e){var n=e.viewType,r=e.viewTitle,i=e.viewId,o=e.contentType,a={eventType:"ViewItemList",data:{viewType:n,viewId:i,contentSource:e.contentSource,contentType:o,items:e.items,viewTitle:r||""}},c=JSON.stringify(a);t.sendTracking(c)},this.cartViewed=function(e){var n=t.getPayloadString(l.CartViewed,e);t.sendTracking(n)},this.checkoutProgress=function(e){var n=t.getPayloadString(l.CheckoutProgress,e);t.sendTracking(n)},this.beginCheckOut=function(e){var n=t.getPayloadString(l.BeginCheckOut,e);t.sendTracking(n)},this.addToCart=function(e){var n=t.getPayloadString(l.AddToCart,e);t.sendTracking(n)},this.removeFromCart=function(e){var n=t.getPayloadString(l.RemoveFromCart,e);t.sendTracking(n)},this.addToWishList=function(e){var n=t.getPayloadString(l.AddToWishList,e);t.sendTracking(n)},this.removeFromWishList=function(e){var n=t.getPayloadString(l.RemoveFromWishList,e);t.sendTracking(n)},this.paymentMethod=function(e){var n=t.getPayloadString(l.PaymentMethod,e);t.sendTracking(n)},this.shippingMethod=function(e){var n=t.getPayloadString(l.ShippingMethod,e);t.sendTracking(n)},this.ecommercePurchase=function(e){var n=t.getPayloadString(l.EcommercePurchase,e);t.sendTracking(n)},this.trackCart=function(e){var n=t.getPayloadString(l.TrackCart,e);t.sendTracking(n)},this.selectContent=function(e){var n=t.getPayloadString(l.SelectContent,e);t.sendTracking(n)},this.cartCleared=function(){var e=t.getPayloadString(l.CartCleared);t.sendTracking(e)},this.refund=function(e){var n=t.getPayloadString(l.Refund,e);t.sendTracking(n)},this.cancelOrder=function(e){var n=t.getPayloadString(l.CancelOrder,e);t.sendTracking(n)},this.setAppHeaderIcon=function(e){var n=e.ios,r=e.android,i=t.isIOS?t.getPayloadString(n.eventType,n.data):t.getPayloadString(r.eventType,r.data);t.setApp(i)},this.closeWebView=function(){var e=t.getPayloadString(a.CloseWebView);t.triggerApp(e)},this.redirect=function(e){var n=t.getPayloadString(a.Redirect,e);t.triggerApp(n)},this.triggerWebAction=function(e){window.triggerWeb=null,window.triggerWeb=function(t){return e(t)}},this.launchEasyWallet=function(e){var n=t.getPayloadString(o.LaunchEasyWallet,{url:e},"EasyWallet");t.payment(n)},this.launchApplePay=function(e,n){var r={totalPayment:e.toString()};t.getAppVersion().then((function(e){(null==e?void 0:e.appVer)&&-1!==C(e.appVer,"24.4.0")&&(r=I(I({},r),{paymentServiceProvider:n}))})).then((function(){var e=t.getPayloadString(o.LaunchApplePay,r,"ApplePay");t.payment(e)})).catch((function(e){}))},this.setStripeClientSecret=function(e){return p(t,void 0,void 0,(function(){var t,n;return b(this,(function(r){switch(r.label){case 0:return r.trys.push([0,2,,3]),[4,this.getAppVersion()];case 1:return(null==(t=r.sent())?void 0:t.appVer)&&-1!==C(t.appVer,"24.12.0")&&(n=this.getPayloadString(o.SetStripeClientSecret,e),this.payment(n)),[3,3];case 2:return r.sent(),[3,3];case 3:return[2]}}))}))},this.launchGooglePay=function(e,n){return p(t,void 0,void 0,(function(){var t,r,i;return b(this,(function(a){switch(a.label){case 0:t={totalPayment:e.toString()},a.label=1;case 1:return a.trys.push([1,3,,4]),[4,this.getAppVersion()];case 2:return(null==(r=a.sent())?void 0:r.appVer)&&-1!==C(r.appVer,"24.12.0")&&(t=I(I({},t),{paymentServiceProvider:n})),i=this.getPayloadString(o.LaunchGooglePay,t,"GooglePay"),this.payment(i),[3,4];case 3:return a.sent(),[3,4];case 4:return[2]}}))}))},this.launchAliPay=function(e,n){var r=t.getPayloadString(o.LaunchAliPay,{launchUrl:e,payChannelUrl:n},"AliPay");t.payment(r)},this.launchWeChatPay=function(e,n){var r=t.getPayloadString(o.LaunchWeChatPay,{launchUrl:e,payChannelUrl:n},"WeChatPay");t.payment(r)},this.updateCurrencyRate=function(e){var n=t.getPayloadString(a.UpdateCurrencyRate,{currencyRates:e});t.triggerApp(n)},this.launch2C2P=function(e){var n=t.getPayloadString(o.Launch2C2P,{launchUrl:e},"2C2P");t.payment(n)},this.onJsiResult=function(e){window.onJsiResult=null,window.onJsiResult=function(t){return e(t)}},this.addToBasket=function(e){var n=t.getPayloadString(a.AddToBasket,e);t.triggerApp(n)},this.showToast=function(e){var n=t.getPayloadString(a.ShowToast,e);t.triggerApp(n)},this.showPopup=function(e){var n=t.getPayloadString(a.ShowPopup,e.showPopupData,e.requestCode);return t.triggerAppWithAsyncResponse(n)},this.addToWishListJsi=function(e){var n=t.getPayloadString(a.AddToWishList,{itemId:e});t.triggerApp(n)},this.removeFromWishListJsi=function(e){var n=t.getPayloadString(a.RemoveFromWishList,{itemId:e});t.triggerApp(n)},this.androidExecutor=window.android||null,this.iOSExecutor=(null===(e=window.webkit)||void 0===e?void 0:e.messageHandlers)||null}return Object.defineProperty(e.prototype,"isAndroid",{get:function(){return!!this.androidExecutor},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"isIOS",{get:function(){return!!this.iOSExecutor},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"executableOS",{get:function(){return{android:!!this.androidExecutor,iOS:!!this.iOSExecutor}},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"executable",{get:function(){return this.isAndroid||this.isIOS},enumerable:!1,configurable:!0}),e.prototype.getPayloadString=function(e,t,n){var r={eventType:e,data:t,requestCode:n};return JSON.stringify(r)},e.prototype.getAppInfo=function(e){var t,n,r,i,o;return p(this,void 0,void 0,(function(){var a;return b(this,(function(c){switch(c.label){case 0:return this.isIOS?[4,null===(r=null===(n=null===(t=this.iOSExecutor)||void 0===t?void 0:t.getAppInfo)||void 0===n?void 0:n.postMessage)||void 0===r?void 0:r.call(n,e)]:[3,2];case 1:return[2,(a=c.sent())?JSON.parse(a):null];case 2:if(this.isAndroid)return[2,(a=null===(o=null===(i=this.androidExecutor)||void 0===i?void 0:i.getAppInfo)||void 0===o?void 0:o.call(i,e))?JSON.parse(a):null];c.label=3;case 3:return[2,null]}}))}))},e.prototype.triggerApp=function(e){var t,n,r,i,o;this.isIOS?null===(r=null===(n=null===(t=this.iOSExecutor)||void 0===t?void 0:t.triggerApp)||void 0===n?void 0:n.postMessage)||void 0===r||r.call(n,e):this.isAndroid&&(null===(o=null===(i=this.androidExecutor)||void 0===i?void 0:i.triggerApp)||void 0===o||o.call(i,e))},e.prototype.triggerAppWithAsyncResponse=function(e){var t,n,r;try{return this.isIOS&&(null===(n=null===(t=this.iOSExecutor)||void 0===t?void 0:t.triggerApp)||void 0===n?void 0:n.postMessage)?this.iOSExecutor.triggerApp.postMessage(e):this.isAndroid&&(null===(r=this.androidExecutor)||void 0===r?void 0:r.triggerApp)?this.androidExecutor.triggerApp(e):Promise.reject(new Error("No executor found"))}catch(e){return Promise.reject(e)}},e.prototype.sendTracking=function(e){var t,n,r,i,o;this.isIOS?null===(r=null===(n=null===(t=this.iOSExecutor)||void 0===t?void 0:t.sendTracking)||void 0===n?void 0:n.postMessage)||void 0===r||r.call(n,e):this.isAndroid&&(null===(o=null===(i=this.androidExecutor)||void 0===i?void 0:i.sendTracking)||void 0===o||o.call(i,e))},e.prototype.setApp=function(e){var t,n,r,i,o;this.isIOS?null===(r=null===(n=null===(t=this.iOSExecutor)||void 0===t?void 0:t.setApp)||void 0===n?void 0:n.postMessage)||void 0===r||r.call(n,e):this.isAndroid&&(null===(o=null===(i=this.androidExecutor)||void 0===i?void 0:i.setApp)||void 0===o||o.call(i,e))},e.prototype.payment=function(e){var t,n,r;this.isIOS&&(null===(n=null===(t=this.iOSExecutor)||void 0===t?void 0:t.payment)||void 0===n?void 0:n.postMessage)?this.iOSExecutor.payment.postMessage(e):this.isAndroid&&(null===(r=this.androidExecutor)||void 0===r?void 0:r.payment)&&this.androidExecutor.payment(e)},e}()},1842:(e,t,n)=>{"use strict";n.d(t,{L:()=>d,e:()=>g});const r={emptyImagesKey:["no-data","no-shopping","no-item","no-coupon","no-result","no-event","no-history","no-favorite","no-notification","no-message","no-service","no-card","no-point","no-location","no-member-level","no-ranking","error-page","error-connection","error-permission","error-maintain","info-att","info-gift","info-coupon","info-apppush","info-location","info-success","info-tasks","info-reward","info-invitation","info-wallet","info-lock","info-alert","line-add","line-coupon"]},i={"91APP":{"no-data":"design-cloud/asset/n1-org/DesignCloud/*/6586a5adc8467dc7d9b0841c/hq_400.webp","no-shopping":"design-cloud/asset/n1-org/DesignCloud/*/6586a5fec8467dc7d9b08429/hq_400.webp","no-item":"design-cloud/asset/n1-org/DesignCloud/*/6586a5c6c8467dc7d9b08420/hq_400.webp","no-coupon":"design-cloud/asset/n1-org/DesignCloud/*/6586a5a7c8467dc7d9b0841b/hq_400.webp","no-result":"design-cloud/asset/n1-org/DesignCloud/*/6586a5f2c8467dc7d9b08427/hq_400.webp","no-event":"design-cloud/asset/n1-org/DesignCloud/*/6586a5b3c8467dc7d9b0841d/hq_400.webp","no-history":"design-cloud/asset/n1-org/DesignCloud/*/6586a5c0c8467dc7d9b0841f/hq_400.webp","no-favorite":"design-cloud/asset/n1-org/DesignCloud/*/6586a5bac8467dc7d9b0841e/hq_400.webp","no-notification":"design-cloud/asset/n1-org/DesignCloud/*/6586a5dfc8467dc7d9b08424/hq_400.webp","no-message":"design-cloud/asset/n1-org/DesignCloud/*/6586a5d9c8467dc7d9b08423/hq_400.webp","no-service":"design-cloud/asset/n1-org/DesignCloud/*/6586a5f8c8467dc7d9b08428/hq_400.webp","no-card":"design-cloud/asset/n1-org/DesignCloud/*/6586a5a1c8467dc7d9b0841a/hq_400.webp","no-point":"design-cloud/asset/n1-org/DesignCloud/*/6586a5e5c8467dc7d9b08425/hq_400.webp","no-location":"design-cloud/asset/n1-org/DesignCloud/*/6586a5ccc8467dc7d9b08421/hq_400.webp","no-member-level":"design-cloud/asset/n1-org/DesignCloud/*/6586a5d3c8467dc7d9b08422/hq_400.webp","no-ranking":"design-cloud/asset/n1-org/DesignCloud/*/6586a5ecc8467dc7d9b08426/hq_400.webp","error-page":"design-cloud/asset/n1-org/DesignCloud/*/6586a555c8467dc7d9b0840e/hq_400.webp","error-connection":"design-cloud/asset/n1-org/DesignCloud/*/6586a548c8467dc7d9b0840c/hq_400.webp","error-permission":"design-cloud/asset/n1-org/DesignCloud/*/6586a55cc8467dc7d9b0840f/hq_400.webp","error-maintain":"design-cloud/asset/n1-org/DesignCloud/*/6586a54fc8467dc7d9b0840d/hq_400.webp","info-att":"design-cloud/asset/n1-org/DesignCloud/*/6586a568c8467dc7d9b08411/hq_400.webp","info-gift":"design-cloud/asset/n1-org/DesignCloud/*/6586a575c8467dc7d9b08413/hq_400.webp","info-apppush":"design-cloud/asset/n1-org/DesignCloud/*/6586a562c8467dc7d9b08410/hq_400.webp","info-location":"design-cloud/asset/n1-org/DesignCloud/*/6586a57bc8467dc7d9b08414/hq_400.webp","info-success":"design-cloud/asset/n1-org/DesignCloud/*/6586a588c8467dc7d9b08416/hq_400.webp","info-tasks":"design-cloud/asset/n1-org/DesignCloud/*/6586a58ec8467dc7d9b08417/hq_400.webp","info-coupon":"design-cloud/asset/n1-org/DesignCloud/*/6586a56ec8467dc7d9b08412/hq_400.webp","info-invitation":"design-cloud/asset/n1-org/DesignCloud/*/658cf6c9d3413e83b7c6c5fb/hq_400.webp","info-reward":"design-cloud/asset/n1-org/DesignCloud/*/6586a581c8467dc7d9b08415/hq_400.webp","info-wallet":"design-cloud/asset/n1-org/DesignCloud/*/659d1e42d3413e83b7c6c5fd/hq_400.webp","info-lock":"design-cloud/asset/n1-org/DesignCloud/*/659fb2c4d3413e83b7c6c5fe/hq_400.webp","info-alert":"design-cloud/asset/n1-org/DesignCloud/*/659fb2ccd3413e83b7c6c5ff/hq_400.webp","line-add":"design-cloud/asset/n1-org/DesignCloud/*/6586a594c8467dc7d9b08418/hq_400.webp","line-coupon":"design-cloud/asset/n1-org/DesignCloud/*/6586a59bc8467dc7d9b08419/hq_400.webp"}},o={41566:{}},a={},c={},l={225:{"no-data":"design-cloud/key2image-test/shop-test/cat.webp","no-shopping":"design-cloud/key2image-test/shop-test/cat.webp","no-item":"design-cloud/key2image-test/shop-test/cat.webp","no-coupon":"design-cloud/key2image-test/shop-test/cat.webp","no-result":"design-cloud/key2image-test/shop-test/cat.webp","no-event":"design-cloud/key2image-test/shop-test/cat.webp","no-history":"design-cloud/key2image-test/shop-test/cat1.webp","no-favorite":"design-cloud/key2image-test/shop-test/cat1.webp","no-notification":"design-cloud/key2image-test/shop-test/cat1.webp","no-message":"design-cloud/key2image-test/shop-test/cat1.webp","no-service":"design-cloud/key2image-test/shop-test/cat1.webp","no-card":"design-cloud/key2image-test/shop-test/cat1.webp","no-point":"design-cloud/key2image-test/shop-test/cat1.webp","no-location":"design-cloud/key2image-test/shop-test/cat.webp","no-member-level":"design-cloud/key2image-test/shop-test/cat.webp","no-ranking":"design-cloud/key2image-test/shop-test/cat.webp","error-page":"design-cloud/key2image-test/shop-test/otter1.webp","error-connection":"design-cloud/key2image-test/shop-test/otter1.webp","error-permission":"design-cloud/key2image-test/shop-test/otter2.webp","error-maintain":"design-cloud/key2image-test/shop-test/otter2.webp","info-att":"design-cloud/key2image-test/shop-test/shiba.webp","info-gift":"design-cloud/key2image-test/shop-test/shiba.webp","info-coupon":"design-cloud/key2image-test/shop-test/shiba.webp","info-apppush":"design-cloud/key2image-test/shop-test/shiba.webp","info-location":"design-cloud/key2image-test/shop-test/shiba.webp","info-success":"design-cloud/key2image-test/shop-test/shiba.webp","info-tasks":"design-cloud/key2image-test/shop-test/shiba1.webp","info-invitation":"design-cloud/key2image-test/shop-test/shiba1.webp","info-reward":"design-cloud/key2image-test/shop-test/shiba.webp","info-wallet":"design-cloud/key2image-test/shop-test/otter1.webp","info-lock":"design-cloud/key2image-test/shop-test/otter1.webp","info-alert":"design-cloud/key2image-test/shop-test/otter2.webp","line-add":"design-cloud/key2image-test/shop-test/shiba1.webp","line-coupon":"design-cloud/key2image-test/shop-test/shiba1.webp"},231:{}},s={},u={};var g=(e=>(e.NO_DATA="no-data",e.NO_SHOPPING="no-shopping",e.NO_ITEM="no-item",e.NO_COUPON="no-coupon",e.NO_RESULT="no-result",e.NO_EVENT="no-event",e.NO_HISTORY="no-history",e.NO_FAVORITE="no-favorite",e.NO_NOTIFICATION="no-notification",e.NO_MESSAGE="no-message",e.NO_SERVICE="no-service",e.NO_CARD="no-card",e.NO_POINT="no-point",e.NO_LOCATION="no-location",e.NO_MEMBER_LEVEL="no-member-level",e.NO_RANKING="no-ranking",e.ERROR_PAGE="error-page",e.ERROR_CONNECTION="error-connection",e.ERROR_PERMISSION="error-permission",e.ERROR_MAINTAIN="error-maintain",e.INFO_ATT="info-att",e.INFO_GIFT="info-gift",e.INFO_APPPUSH="info-apppush",e.INFO_LOCATION="info-location",e.INFO_SUCCESS="info-success",e.INFO_TASKS="info-tasks",e.INFO_COUPON="info-coupon",e.INFO_INVITATION="info-invitation",e.INFO_REWARD="info-reward",e.INFO_WALLET="info-wallet",e.INFO_LOCK="info-lock",e.INFO_ALERT="info-alert",e.LINE_ADD="line-add",e.LINE_COUPON="line-coupon",e))(g||{});class d{constructor(){this.config={},this.shopMappingTable={},this.nine1MappingTable={"91APP":{}},this.emptyImageKeysData=r}getIsShopEnabledCustomImage(e){return e in this.shopMappingTable}get_info(){return{imageSource:this.config.imageSource,configSource:this.config.configSource,market:this.config.market,env:this.config.env,nine1MappingTable:this.nine1MappingTable,shopMappingTable:this.shopMappingTable,emptyImageKeysData:this.emptyImageKeysData}}async initialize({local:e,imageSource:t,configSource:n,market:r,env:g,nine1MappingTable:d,shopMappingTable:I,emptyImageKeysData:p=this.emptyImageKeysData}){try{if(this.config.env=null==g?void 0:g.toLocaleLowerCase(),this.config.market=null==r?void 0:r.toLocaleLowerCase(),this.config.local=null==e?void 0:e.toLocaleLowerCase(),this.emptyImageKeysData=p,t&&n)this.config.imageSource=t,this.config.configSource=n;else{const{defaultImageSource:e,defaultConfigSource:r}=(({env:e,market:n})=>{try{let t="",r="";if("prod"===e||"stage"===e||"pp"===e)switch(t="https://static.91app.com",n){case"tw":r="https://cms.cdn.91app.com";break;case"hk":r="https://cms.cdn.91app.hk";break;case"my":r="https://cms.cdn.91app.com.my";break;default:throw new Error(`Market is invlid: ${n}`)}else{if(!e.includes("qa")&&"dev"!==e)throw new Error(`Env is invlid: ${e}`);switch(t="https://static.qa.91dev.tw",n){case"tw":r="https://theme.qa.91dev.tw";break;case"hk":r="https://theme.qa1.hk.91dev.tw";break;case"my":r="https://theme.qa1.my.91dev.tw";break;default:throw new Error(`Market is invlid: ${n}`)}}return{defaultImageSource:t,defaultConfigSource:r}}catch(t){throw console.error(`[ERROR]: getDefaultSourceSetting failed: ${t.message}`),t}})({env:this.config.env,market:this.config.market});this.config.imageSource=t||e,this.config.configSource=n||r}if(d)this.nine1MappingTable=d;else{const t=(t=>{try{if(!["dev","qa","stage","pp","prod"].includes(t)&&!t.includes("qa"))throw new Error(`Env is invlid: ${t}`);return i}catch(e){throw console.error(`[ERROR]: getDefaultNine1MappingTable failed: ${e.message}`),e}})(this.config.env);this.nine1MappingTable=t}if(I)this.shopMappingTable=d;else{const e=(({env:e,market:n})=>{try{if("prod"===e||"stage"===e||"pp"===e)switch(n){case"tw":return o;case"hk":return a;case"my":return c;default:throw new Error(`Market is invlid: ${n}`)}else{if(!e.includes("qa")&&"dev"!==e)throw new Error(`Env is invlid: ${e}`);switch(n){case"tw":return l;case"hk":return s;case"my":return u;default:throw new Error(`Market is invlid: ${n}`)}}}catch(t){throw console.error(`[ERROR]: getDefaultShopMappingTable failed: ${t.message}`),t}})({env:this.config.env,market:this.config.market});this.shopMappingTable=e}}catch(b){console.error(`[ERROR]: Key2Image lib initialize failed: ${b.message}`)}}img_t({shopId:e,key:t,isDefaultImageEnabled:n=!1}){try{(({shopId:e,key:t,imageSource:n,nine1MappingTable:r})=>{if(isNaN(e))throw new Error(`ShopId must be a number. ${e}`);if(!t)throw new Error("Key is required.");if(!n)throw new Error("Image source is not valid.");if(null==r||!r["91APP"]||Object.keys(r["91APP"]).length<1)throw new Error("Nine1MappingTable is required.")})({shopId:e,key:t,imageSource:this.config.imageSource,nine1MappingTable:this.nine1MappingTable});const r=this.getIsShopEnabledCustomImage(e),i=(({nine1MappingTable:e,shopMappingTable:t,isDefaultImageEnabled:n,isShopEnabledCustomImage:r,shopId:i,key:o})=>{var a,c,l;if(!r)return null==(l=null==e?void 0:e["91APP"])?void 0:l[o];{const r=null==(a=null==t?void 0:t[i])?void 0:a[o];if(r)return r;if(!r&&n)return null==(c=null==e?void 0:e["91APP"])?void 0:c[o]}})({nine1MappingTable:this.nine1MappingTable,shopMappingTable:this.shopMappingTable,isDefaultImageEnabled:n,isShopEnabledCustomImage:r,shopId:e,key:t});return i?`${this.config.imageSource}/${i}`:null}catch(r){return console.error(`[ERROR]: Convert key to image failed: ${r.message}`),t}}}},255:(e,t,n)=>{"use strict";n.d(t,{A:()=>c});var r=n(5927);const i=r.createContext({}),o=!0;function a({baseColor:e,highlightColor:t,width:n,height:r,borderRadius:i,circle:a,direction:c,duration:l,enableAnimation:s=o}){const u={};return"rtl"===c&&(u["--animation-direction"]="reverse"),"number"==typeof l&&(u["--animation-duration"]=`${l}s`),s||(u["--pseudo-element-display"]="none"),"string"!=typeof n&&"number"!=typeof n||(u.width=n),"string"!=typeof r&&"number"!=typeof r||(u.height=r),"string"!=typeof i&&"number"!=typeof i||(u.borderRadius=i),a&&(u.borderRadius="50%"),void 0!==e&&(u["--base-color"]=e),void 0!==t&&(u["--highlight-color"]=t),u}function c({count:e=1,wrapper:t,className:n,containerClassName:c,containerTestId:l,circle:s=!1,style:u,...g}){var d,I,p;const b=r.useContext(i),m={...g};for(const[r,i]of Object.entries(g))void 0===i&&delete m[r];const C={...b,...m,circle:s},h={...u,...a(C)};let B="react-loading-skeleton";n&&(B+=` ${n}`);const A=null!==(d=C.inline)&&void 0!==d&&d,y=[],f=Math.ceil(e);for(let i=0;i<f;i++){let t=h;if(f>e&&i===f-1){const n=null!==(I=t.width)&&void 0!==I?I:"100%",r=e%1,i="number"==typeof n?n*r:`calc(${n} * ${r})`;t={...t,width:i}}const n=r.createElement("span",{className:B,style:t,key:i},"‌");A?y.push(n):y.push(r.createElement(r.Fragment,{key:i},n,r.createElement("br",null)))}return r.createElement("span",{className:c,"data-testid":l,"aria-live":"polite","aria-busy":null!==(p=C.enableAnimation)&&void 0!==p?p:o},t?y.map(((e,n)=>r.createElement(t,{key:n},e))):y)}},9600:(e,t,n)=>{"use strict";n.d(t,{P5:()=>s});const r=[EvalError,RangeError,ReferenceError,SyntaxError,TypeError,URIError,globalThis.DOMException,globalThis.AssertionError,globalThis.SystemError].filter(Boolean).map((e=>[e.name,e])),i=new Map(r);Error;const o=[{property:"name",enumerable:!1},{property:"message",enumerable:!1},{property:"stack",enumerable:!1},{property:"code",enumerable:!0},{property:"cause",enumerable:!1}],a=Symbol(".toJSON was called"),c=e=>i.get(e)??Error,l=({from:e,seen:t,to:n,forceEnumerable:r,maxDepth:i,depth:s,useToJSON:g,serialize:d})=>{if(n||(n=Array.isArray(e)?[]:!d&&u(e)?new(c(e.name)):{}),t.push(e),s>=i)return n;if(g&&"function"==typeof e.toJSON&&!0!==e[a])return(e=>{e[a]=!0;const t=e.toJSON();return delete e[a],t})(e);const I=e=>l({from:e,seen:[...t],forceEnumerable:r,maxDepth:i,depth:s,useToJSON:g,serialize:d});for(const[o,a]of Object.entries(e))"function"==typeof Buffer&&Buffer.isBuffer(a)?n[o]="[object Buffer]":null===a||"object"!=typeof a||"function"!=typeof a.pipe?"function"!=typeof a&&(a&&"object"==typeof a?t.includes(e[o])?n[o]="[Circular]":(s++,n[o]=I(e[o])):n[o]=a):n[o]="[object Stream]";for(const{property:a,enumerable:c}of o)void 0!==e[a]&&null!==e[a]&&Object.defineProperty(n,a,{value:u(e[a])?I(e[a]):e[a],enumerable:!!r||c,configurable:!0,writable:!0});return n};function s(e,t={}){const{maxDepth:n=Number.POSITIVE_INFINITY,useToJSON:r=!0}=t;return"object"==typeof e&&null!==e?l({from:e,seen:[],forceEnumerable:!0,maxDepth:n,depth:0,useToJSON:r,serialize:!0}):"function"==typeof e?`[Function: ${e.name??"anonymous"}]`:e}function u(e){return Boolean(e)&&"object"==typeof e&&"name"in e&&"message"in e&&"stack"in e}},4993:(e,t,n)=>{"use strict";n.d(t,{BE:()=>L,Es:()=>S,Ht:()=>$,Tn:()=>l,X3:()=>Z,ZH:()=>o,aw:()=>q,b0:()=>c,bZ:()=>p,bu:()=>O,dO:()=>v,iX:()=>z,lK:()=>x,lg:()=>N,mF:()=>V,mf:()=>E,qm:()=>K,qv:()=>a,r9:()=>A,rL:()=>s,sb:()=>Y});var r=n(5927);const i=()=>{},o=void 0,a=Object,c=e=>e===o,l=e=>"function"==typeof e,s=(e,t)=>({...e,...t}),u=e=>l(e.then),g=new WeakMap;let d=0;const I=e=>{const t=typeof e,n=e&&e.constructor,r=n==Date;let i,o;if(a(e)!==e||r||n==RegExp)i=r?e.toJSON():"symbol"==t?e.toString():"string"==t?JSON.stringify(e):""+e;else{if(i=g.get(e),i)return i;if(i=++d+"~",g.set(e,i),n==Array){for(i="@",o=0;o<e.length;o++)i+=I(e[o])+",";g.set(e,i)}if(n==a){i="#";const t=a.keys(e).sort();for(;!c(o=t.pop());)c(e[o])||(i+=o+":"+I(e[o])+",");g.set(e,i)}}return i},p=new WeakMap,b={},m={},C="undefined",h=typeof window!=C,B=typeof document!=C,A=(e,t)=>{const n=p.get(e);return[()=>!c(t)&&e.get(t)||b,r=>{if(!c(t)){const i=e.get(t);t in m||(m[t]=i),n[5](t,s(i,r),i||b)}},n[6],()=>!c(t)&&t in m?m[t]:!c(t)&&e.get(t)||b]};let y=!0;const[f,G]=h&&window.addEventListener?[window.addEventListener.bind(window),window.removeEventListener.bind(window)]:[i,i],Q={isOnline:()=>y,isVisible:()=>{const e=B&&document.visibilityState;return c(e)||"hidden"!==e}},F={initFocus:e=>(B&&document.addEventListener("visibilitychange",e),f("focus",e),()=>{B&&document.removeEventListener("visibilitychange",e),G("focus",e)}),initReconnect:e=>{const t=()=>{y=!0,e()},n=()=>{y=!1};return f("online",t),f("offline",n),()=>{G("online",t),G("offline",n)}}},v=!r.useId,Z=!h||"Deno"in window,E=e=>h&&typeof window.requestAnimationFrame!=C?window.requestAnimationFrame(e):setTimeout(e,1),S=Z?r.useEffect:r.useLayoutEffect,X="undefined"!=typeof navigator&&navigator.connection,T=!Z&&X&&(["slow-2g","2g"].includes(X.effectiveType)||X.saveData),x=e=>{if(l(e))try{e=e()}catch(n){e=""}const t=e;return[e="string"==typeof e?e:(Array.isArray(e)?e.length:e)?I(e):"",t]};let U=0;const N=()=>++U,R=2;var O={__proto__:null,ERROR_REVALIDATE_EVENT:3,FOCUS_EVENT:0,MUTATE_EVENT:R,RECONNECT_EVENT:1};async function V(...e){const[t,n,r,i]=e,a=s({populateCache:!0,throwOnError:!0},"boolean"==typeof i?{revalidate:i}:i||{});let g=a.populateCache;const d=a.rollbackOnError;let I=a.optimisticData;const b=a.throwOnError;if(l(n)){const e=n,r=[],i=t.keys();for(const n of i)!/^\$(inf|sub)\$/.test(n)&&e(t.get(n)._k)&&r.push(n);return Promise.all(r.map(m))}return m(n);async function m(n){const[i]=x(n);if(!i)return;const[s,m]=A(t,i),[C,h,B,y]=p.get(t),f=()=>{const e=C[i];return(l(a.revalidate)?a.revalidate(s().data,n):!1!==a.revalidate)&&(delete B[i],delete y[i],e&&e[0])?e[0](R).then((()=>s().data)):s().data};if(e.length<3)return f();let G,Q=r;const F=N();h[i]=[F,0];const v=!c(I),Z=s(),E=Z.data,S=Z._c,X=c(S)?E:S;if(v&&(I=l(I)?I(X,E):I,m({data:I,_c:X})),l(Q))try{Q=Q(X)}catch(T){G=T}if(Q&&u(Q)){if(Q=await Q.catch((e=>{G=e})),F!==h[i][0]){if(G)throw G;return Q}G&&v&&(e=>"function"==typeof d?d(e):!1!==d)(G)&&(g=!0,m({data:X,_c:o}))}if(g&&!G)if(l(g)){const e=g(Q,X);m({data:e,error:o,_c:o})}else m({data:Q,error:o,_c:o});if(h[i][1]=N(),Promise.resolve(f()).then((()=>{m({_c:o})})),!G)return Q;if(b)throw G}}const W=(e,t)=>{for(const n in e)e[n][0]&&e[n][0](t)},_=(e,t)=>{if(!p.has(e)){const n=s(F,t),r={},a=V.bind(o,e);let c=i;const l={},u=(e,t)=>{const n=l[e]||[];return l[e]=n,n.push(t),()=>n.splice(n.indexOf(t),1)},g=(t,n,r)=>{e.set(t,n);const i=l[t];if(i)for(const e of i)e(n,r)},d=()=>{if(!p.has(e)&&(p.set(e,[r,{},{},{},a,g,u]),!Z)){const t=n.initFocus(setTimeout.bind(o,W.bind(o,r,0))),i=n.initReconnect(setTimeout.bind(o,W.bind(o,r,1)));c=()=>{t&&t(),i&&i(),p.delete(e)}}};return d(),[e,a,d,c]}return[e,p.get(e)[4]]},[w,H]=_(new Map),Y=s({onLoadingSlow:i,onSuccess:i,onError:i,onErrorRetry:(e,t,n,r,i)=>{const o=n.errorRetryCount,a=i.retryCount,l=~~((Math.random()+.5)*(1<<(a<8?a:8)))*n.errorRetryInterval;!c(o)&&a>o||setTimeout(r,l,i)},onDiscarded:i,revalidateOnFocus:!0,revalidateOnReconnect:!0,revalidateIfStale:!0,shouldRetryOnError:!0,errorRetryInterval:T?1e4:5e3,focusThrottleInterval:5e3,dedupingInterval:2e3,loadingTimeout:T?5e3:3e3,compare:(e,t)=>I(e)==I(t),isPaused:()=>!1,cache:w,mutate:H,fallback:{}},Q),k=(e,t)=>{const n=s(e,t);if(t){const{use:r,fallback:i}=e,{use:o,fallback:a}=t;r&&o&&(n.use=r.concat(o)),i&&a&&(n.fallback=s(i,a))}return n},D=(0,r.createContext)({}),L=e=>{const{value:t}=e,n=(0,r.useContext)(D),i=l(t),a=(0,r.useMemo)((()=>i?t(n):t),[i,n,t]),c=(0,r.useMemo)((()=>i?a:k(n,a)),[i,n,a]),u=a&&a.provider,g=(0,r.useRef)(o);u&&!g.current&&(g.current=_(u(c.cache||w),a));const d=g.current;return d&&(c.cache=d[0],c.mutate=d[1]),S((()=>{if(d)return d[2]&&d[2](),d[3]}),[]),(0,r.createElement)(D.Provider,s(e,{value:c}))},P=h&&window.__SWR_DEVTOOLS_USE__,J=P?window.__SWR_DEVTOOLS_USE__:[],M=e=>l(e[1])?[e[0],e[1],e[2]||{}]:[e[0],null,(null===e[1]?e[2]:e[1])||{}],z=()=>s(Y,(0,r.useContext)(D)),j=J.concat((e=>(t,n,r)=>e(t,n&&((...e)=>{const[r]=x(t),[,,,i]=p.get(w);if(r.startsWith("$inf$"))return n(...e);const o=i[r];return c(o)?n(...e):(delete i[r],o)}),r))),K=e=>function(...t){const n=z(),[r,i,o]=M(t),a=k(n,o);let c=e;const{use:l}=a,s=(l||[]).concat(j);for(let e=s.length;e--;)c=s[e](c);return c(r,i||a.fetcher||null,a)},q=(e,t,n)=>{const r=t[e]||(t[e]=[]);return r.push(n),()=>{const e=r.indexOf(n);e>=0&&(r[e]=r[r.length-1],r.pop())}},$=(e,t)=>(...n)=>{const[r,i,o]=M(n),a=(o.use||[]).concat(t);return e(r,i,{...o,use:a})};P&&(window.__SWR_DEVTOOLS_REACT__=r)},9324:(e,t,n)=>{"use strict";n.d(t,{BE:()=>l});var r=n(5927),i=n(9888),o=n(4993);const a=r.use||(e=>{if("pending"===e.status)throw e;if("fulfilled"===e.status)return e.value;throw"rejected"===e.status?e.reason:(e.status="pending",e.then((t=>{e.status="fulfilled",e.value=t}),(t=>{e.status="rejected",e.reason=t})),e)}),c={dedupe:!0},l=o.qv.defineProperty(o.BE,"defaultValue",{value:o.sb});(0,o.qm)(((e,t,n)=>{const{cache:l,compare:s,suspense:u,fallbackData:g,revalidateOnMount:d,revalidateIfStale:I,refreshInterval:p,refreshWhenHidden:b,refreshWhenOffline:m,keepPreviousData:C}=n,[h,B,A,y]=o.bZ.get(l),[f,G]=(0,o.lK)(e),Q=(0,r.useRef)(!1),F=(0,r.useRef)(!1),v=(0,r.useRef)(f),Z=(0,r.useRef)(t),E=(0,r.useRef)(n),S=()=>E.current,X=()=>S().isVisible()&&S().isOnline(),[T,x,U,N]=(0,o.r9)(l,f),R=(0,r.useRef)({}).current,O=(0,o.b0)(g)?n.fallback[f]:g,V=(e,t)=>{for(const n in R){const r=n;if("data"===r){if(!s(e[r],t[r])){if(!(0,o.b0)(e[r]))return!1;if(!s(P,t[r]))return!1}}else if(t[r]!==e[r])return!1}return!0},W=(0,r.useMemo)((()=>{const e=!!f&&!!t&&((0,o.b0)(d)?!S().isPaused()&&!u&&(!!(0,o.b0)(I)||I):d),n=t=>{const n=(0,o.rL)(t);return delete n._k,e?{isValidating:!0,isLoading:!0,...n}:n},r=T(),i=N(),a=n(r),c=r===i?a:n(i);let l=a;return[()=>{const e=n(T());return V(e,l)?(l.data=e.data,l.isLoading=e.isLoading,l.isValidating=e.isValidating,l.error=e.error,l):(l=e,e)},()=>c]}),[l,f]),_=(0,i.useSyncExternalStore)((0,r.useCallback)((e=>U(f,((t,n)=>{V(n,t)||e()}))),[l,f]),W[0],W[1]),w=!Q.current,H=h[f]&&h[f].length>0,Y=_.data,k=(0,o.b0)(Y)?O:Y,D=_.error,L=(0,r.useRef)(k),P=C?(0,o.b0)(Y)?L.current:Y:k,J=!(H&&!(0,o.b0)(D))&&(w&&!(0,o.b0)(d)?d:!S().isPaused()&&(u?!(0,o.b0)(k)&&I:(0,o.b0)(k)||I)),M=!!(f&&t&&w&&J),z=(0,o.b0)(_.isValidating)?M:_.isValidating,j=(0,o.b0)(_.isLoading)?M:_.isLoading,K=(0,r.useCallback)((async e=>{const t=Z.current;if(!f||!t||F.current||S().isPaused())return!1;let r,i,a=!0;const c=e||{},l=!A[f]||!c.dedupe,u=()=>o.dO?!F.current&&f===v.current&&Q.current:f===v.current,g={isValidating:!1,isLoading:!1},d=()=>{x(g)},I=()=>{const e=A[f];e&&e[1]===i&&delete A[f]},p={isValidating:!0};(0,o.b0)(T().data)&&(p.isLoading=!0);try{if(l&&(x(p),n.loadingTimeout&&(0,o.b0)(T().data)&&setTimeout((()=>{a&&u()&&S().onLoadingSlow(f,n)}),n.loadingTimeout),A[f]=[t(G),(0,o.lg)()]),[r,i]=A[f],r=await r,l&&setTimeout(I,n.dedupingInterval),!A[f]||A[f][1]!==i)return l&&u()&&S().onDiscarded(f),!1;g.error=o.ZH;const e=B[f];if(!(0,o.b0)(e)&&(i<=e[0]||i<=e[1]||0===e[1]))return d(),l&&u()&&S().onDiscarded(f),!1;const c=T().data;g.data=s(c,r)?c:r,l&&u()&&S().onSuccess(r,f,n)}catch(b){I();const t=S(),{shouldRetryOnError:n}=t;t.isPaused()||(g.error=b,l&&u()&&(t.onError(b,f,t),(!0===n||(0,o.Tn)(n)&&n(b))&&(S().revalidateOnFocus&&S().revalidateOnReconnect&&!X()||t.onErrorRetry(b,f,t,(e=>{const t=h[f];t&&t[0]&&t[0](o.bu.ERROR_REVALIDATE_EVENT,e)}),{retryCount:(c.retryCount||0)+1,dedupe:!0}))))}return a=!1,d(),!0}),[f,l]),q=(0,r.useCallback)(((...e)=>(0,o.mF)(l,v.current,...e)),[]);if((0,o.Es)((()=>{Z.current=t,E.current=n,(0,o.b0)(Y)||(L.current=Y)})),(0,o.Es)((()=>{if(!f)return;const e=K.bind(o.ZH,c);let t=0;const n=(0,o.aw)(f,h,((n,r={})=>{if(n==o.bu.FOCUS_EVENT){const n=Date.now();S().revalidateOnFocus&&n>t&&X()&&(t=n+S().focusThrottleInterval,e())}else if(n==o.bu.RECONNECT_EVENT)S().revalidateOnReconnect&&X()&&e();else{if(n==o.bu.MUTATE_EVENT)return K();if(n==o.bu.ERROR_REVALIDATE_EVENT)return K(r)}}));return F.current=!1,v.current=f,Q.current=!0,x({_k:G}),J&&((0,o.b0)(k)||o.X3?e():(0,o.mf)(e)),()=>{F.current=!0,n()}}),[f]),(0,o.Es)((()=>{let e;function t(){const t=(0,o.Tn)(p)?p(T().data):p;t&&-1!==e&&(e=setTimeout(n,t))}function n(){T().error||!b&&!S().isVisible()||!m&&!S().isOnline()?t():K(c).then(t)}return t(),()=>{e&&(clearTimeout(e),e=-1)}}),[p,b,m,f]),(0,r.useDebugValue)(P),u&&(0,o.b0)(k)&&f){if(!o.dO&&o.X3)throw new Error("Fallback data is required when using suspense in SSR.");Z.current=t,E.current=n,F.current=!1;const e=y[f];if(!(0,o.b0)(e)){const t=q(e);a(t)}if(!(0,o.b0)(D))throw D;{const e=K(c);(0,o.b0)(P)||(e.status="fulfilled",e.value=!0),a(e)}}return{mutate:q,get data(){return R.data=!0,P},get error(){return R.error=!0,D},get isValidating(){return R.isValidating=!0,z},get isLoading(){return R.isLoading=!0,j}}}))},4225:(e,t,n)=>{"use strict";n.d(t,{A:()=>s});var r=n(5927),i=n(9888),o=n(4993);const a=r.use||(e=>{if("pending"===e.status)throw e;if("fulfilled"===e.status)return e.value;throw"rejected"===e.status?e.reason:(e.status="pending",e.then((t=>{e.status="fulfilled",e.value=t}),(t=>{e.status="rejected",e.reason=t})),e)}),c={dedupe:!0};o.qv.defineProperty(o.BE,"defaultValue",{value:o.sb});const l=(0,o.qm)(((e,t,n)=>{const{cache:l,compare:s,suspense:u,fallbackData:g,revalidateOnMount:d,revalidateIfStale:I,refreshInterval:p,refreshWhenHidden:b,refreshWhenOffline:m,keepPreviousData:C}=n,[h,B,A,y]=o.bZ.get(l),[f,G]=(0,o.lK)(e),Q=(0,r.useRef)(!1),F=(0,r.useRef)(!1),v=(0,r.useRef)(f),Z=(0,r.useRef)(t),E=(0,r.useRef)(n),S=()=>E.current,X=()=>S().isVisible()&&S().isOnline(),[T,x,U,N]=(0,o.r9)(l,f),R=(0,r.useRef)({}).current,O=(0,o.b0)(g)?n.fallback[f]:g,V=(e,t)=>{for(const n in R){const r=n;if("data"===r){if(!s(e[r],t[r])){if(!(0,o.b0)(e[r]))return!1;if(!s(P,t[r]))return!1}}else if(t[r]!==e[r])return!1}return!0},W=(0,r.useMemo)((()=>{const e=!!f&&!!t&&((0,o.b0)(d)?!S().isPaused()&&!u&&(!!(0,o.b0)(I)||I):d),n=t=>{const n=(0,o.rL)(t);return delete n._k,e?{isValidating:!0,isLoading:!0,...n}:n},r=T(),i=N(),a=n(r),c=r===i?a:n(i);let l=a;return[()=>{const e=n(T());return V(e,l)?(l.data=e.data,l.isLoading=e.isLoading,l.isValidating=e.isValidating,l.error=e.error,l):(l=e,e)},()=>c]}),[l,f]),_=(0,i.useSyncExternalStore)((0,r.useCallback)((e=>U(f,((t,n)=>{V(n,t)||e()}))),[l,f]),W[0],W[1]),w=!Q.current,H=h[f]&&h[f].length>0,Y=_.data,k=(0,o.b0)(Y)?O:Y,D=_.error,L=(0,r.useRef)(k),P=C?(0,o.b0)(Y)?L.current:Y:k,J=!(H&&!(0,o.b0)(D))&&(w&&!(0,o.b0)(d)?d:!S().isPaused()&&(u?!(0,o.b0)(k)&&I:(0,o.b0)(k)||I)),M=!!(f&&t&&w&&J),z=(0,o.b0)(_.isValidating)?M:_.isValidating,j=(0,o.b0)(_.isLoading)?M:_.isLoading,K=(0,r.useCallback)((async e=>{const t=Z.current;if(!f||!t||F.current||S().isPaused())return!1;let r,i,a=!0;const c=e||{},l=!A[f]||!c.dedupe,u=()=>o.dO?!F.current&&f===v.current&&Q.current:f===v.current,g={isValidating:!1,isLoading:!1},d=()=>{x(g)},I=()=>{const e=A[f];e&&e[1]===i&&delete A[f]},p={isValidating:!0};(0,o.b0)(T().data)&&(p.isLoading=!0);try{if(l&&(x(p),n.loadingTimeout&&(0,o.b0)(T().data)&&setTimeout((()=>{a&&u()&&S().onLoadingSlow(f,n)}),n.loadingTimeout),A[f]=[t(G),(0,o.lg)()]),[r,i]=A[f],r=await r,l&&setTimeout(I,n.dedupingInterval),!A[f]||A[f][1]!==i)return l&&u()&&S().onDiscarded(f),!1;g.error=o.ZH;const e=B[f];if(!(0,o.b0)(e)&&(i<=e[0]||i<=e[1]||0===e[1]))return d(),l&&u()&&S().onDiscarded(f),!1;const c=T().data;g.data=s(c,r)?c:r,l&&u()&&S().onSuccess(r,f,n)}catch(b){I();const t=S(),{shouldRetryOnError:n}=t;t.isPaused()||(g.error=b,l&&u()&&(t.onError(b,f,t),(!0===n||(0,o.Tn)(n)&&n(b))&&(S().revalidateOnFocus&&S().revalidateOnReconnect&&!X()||t.onErrorRetry(b,f,t,(e=>{const t=h[f];t&&t[0]&&t[0](o.bu.ERROR_REVALIDATE_EVENT,e)}),{retryCount:(c.retryCount||0)+1,dedupe:!0}))))}return a=!1,d(),!0}),[f,l]),q=(0,r.useCallback)(((...e)=>(0,o.mF)(l,v.current,...e)),[]);if((0,o.Es)((()=>{Z.current=t,E.current=n,(0,o.b0)(Y)||(L.current=Y)})),(0,o.Es)((()=>{if(!f)return;const e=K.bind(o.ZH,c);let t=0;const n=(0,o.aw)(f,h,((n,r={})=>{if(n==o.bu.FOCUS_EVENT){const n=Date.now();S().revalidateOnFocus&&n>t&&X()&&(t=n+S().focusThrottleInterval,e())}else if(n==o.bu.RECONNECT_EVENT)S().revalidateOnReconnect&&X()&&e();else{if(n==o.bu.MUTATE_EVENT)return K();if(n==o.bu.ERROR_REVALIDATE_EVENT)return K(r)}}));return F.current=!1,v.current=f,Q.current=!0,x({_k:G}),J&&((0,o.b0)(k)||o.X3?e():(0,o.mf)(e)),()=>{F.current=!0,n()}}),[f]),(0,o.Es)((()=>{let e;function t(){const t=(0,o.Tn)(p)?p(T().data):p;t&&-1!==e&&(e=setTimeout(n,t))}function n(){T().error||!b&&!S().isVisible()||!m&&!S().isOnline()?t():K(c).then(t)}return t(),()=>{e&&(clearTimeout(e),e=-1)}}),[p,b,m,f]),(0,r.useDebugValue)(P),u&&(0,o.b0)(k)&&f){if(!o.dO&&o.X3)throw new Error("Fallback data is required when using suspense in SSR.");Z.current=t,E.current=n,F.current=!1;const e=y[f];if(!(0,o.b0)(e)){const t=q(e);a(t)}if(!(0,o.b0)(D))throw D;{const e=K(c);(0,o.b0)(P)||(e.status="fulfilled",e.value=!0),a(e)}}return{mutate:q,get data(){return R.data=!0,P},get error(){return R.error=!0,D},get isValidating(){return R.isValidating=!0,z},get isLoading(){return R.isLoading=!0,j}}})),s=(0,o.Ht)(l,(e=>(t,n,r)=>(r.revalidateOnFocus=!1,r.revalidateIfStale=!1,r.revalidateOnReconnect=!1,e(t,n,r))))},3616:(e,t,n)=>{"use strict";n.d(t,{A:()=>u});var r=n(5927),i=n(9888),o=n(4993);const a=r.use||(e=>{if("pending"===e.status)throw e;if("fulfilled"===e.status)return e.value;throw"rejected"===e.status?e.reason:(e.status="pending",e.then((t=>{e.status="fulfilled",e.value=t}),(t=>{e.status="rejected",e.reason=t})),e)}),c={dedupe:!0};o.qv.defineProperty(o.BE,"defaultValue",{value:o.sb});const l=(0,o.qm)(((e,t,n)=>{const{cache:l,compare:s,suspense:u,fallbackData:g,revalidateOnMount:d,revalidateIfStale:I,refreshInterval:p,refreshWhenHidden:b,refreshWhenOffline:m,keepPreviousData:C}=n,[h,B,A,y]=o.bZ.get(l),[f,G]=(0,o.lK)(e),Q=(0,r.useRef)(!1),F=(0,r.useRef)(!1),v=(0,r.useRef)(f),Z=(0,r.useRef)(t),E=(0,r.useRef)(n),S=()=>E.current,X=()=>S().isVisible()&&S().isOnline(),[T,x,U,N]=(0,o.r9)(l,f),R=(0,r.useRef)({}).current,O=(0,o.b0)(g)?n.fallback[f]:g,V=(e,t)=>{for(const n in R){const r=n;if("data"===r){if(!s(e[r],t[r])){if(!(0,o.b0)(e[r]))return!1;if(!s(P,t[r]))return!1}}else if(t[r]!==e[r])return!1}return!0},W=(0,r.useMemo)((()=>{const e=!!f&&!!t&&((0,o.b0)(d)?!S().isPaused()&&!u&&(!!(0,o.b0)(I)||I):d),n=t=>{const n=(0,o.rL)(t);return delete n._k,e?{isValidating:!0,isLoading:!0,...n}:n},r=T(),i=N(),a=n(r),c=r===i?a:n(i);let l=a;return[()=>{const e=n(T());return V(e,l)?(l.data=e.data,l.isLoading=e.isLoading,l.isValidating=e.isValidating,l.error=e.error,l):(l=e,e)},()=>c]}),[l,f]),_=(0,i.useSyncExternalStore)((0,r.useCallback)((e=>U(f,((t,n)=>{V(n,t)||e()}))),[l,f]),W[0],W[1]),w=!Q.current,H=h[f]&&h[f].length>0,Y=_.data,k=(0,o.b0)(Y)?O:Y,D=_.error,L=(0,r.useRef)(k),P=C?(0,o.b0)(Y)?L.current:Y:k,J=!(H&&!(0,o.b0)(D))&&(w&&!(0,o.b0)(d)?d:!S().isPaused()&&(u?!(0,o.b0)(k)&&I:(0,o.b0)(k)||I)),M=!!(f&&t&&w&&J),z=(0,o.b0)(_.isValidating)?M:_.isValidating,j=(0,o.b0)(_.isLoading)?M:_.isLoading,K=(0,r.useCallback)((async e=>{const t=Z.current;if(!f||!t||F.current||S().isPaused())return!1;let r,i,a=!0;const c=e||{},l=!A[f]||!c.dedupe,u=()=>o.dO?!F.current&&f===v.current&&Q.current:f===v.current,g={isValidating:!1,isLoading:!1},d=()=>{x(g)},I=()=>{const e=A[f];e&&e[1]===i&&delete A[f]},p={isValidating:!0};(0,o.b0)(T().data)&&(p.isLoading=!0);try{if(l&&(x(p),n.loadingTimeout&&(0,o.b0)(T().data)&&setTimeout((()=>{a&&u()&&S().onLoadingSlow(f,n)}),n.loadingTimeout),A[f]=[t(G),(0,o.lg)()]),[r,i]=A[f],r=await r,l&&setTimeout(I,n.dedupingInterval),!A[f]||A[f][1]!==i)return l&&u()&&S().onDiscarded(f),!1;g.error=o.ZH;const e=B[f];if(!(0,o.b0)(e)&&(i<=e[0]||i<=e[1]||0===e[1]))return d(),l&&u()&&S().onDiscarded(f),!1;const c=T().data;g.data=s(c,r)?c:r,l&&u()&&S().onSuccess(r,f,n)}catch(b){I();const t=S(),{shouldRetryOnError:n}=t;t.isPaused()||(g.error=b,l&&u()&&(t.onError(b,f,t),(!0===n||(0,o.Tn)(n)&&n(b))&&(S().revalidateOnFocus&&S().revalidateOnReconnect&&!X()||t.onErrorRetry(b,f,t,(e=>{const t=h[f];t&&t[0]&&t[0](o.bu.ERROR_REVALIDATE_EVENT,e)}),{retryCount:(c.retryCount||0)+1,dedupe:!0}))))}return a=!1,d(),!0}),[f,l]),q=(0,r.useCallback)(((...e)=>(0,o.mF)(l,v.current,...e)),[]);if((0,o.Es)((()=>{Z.current=t,E.current=n,(0,o.b0)(Y)||(L.current=Y)})),(0,o.Es)((()=>{if(!f)return;const e=K.bind(o.ZH,c);let t=0;const n=(0,o.aw)(f,h,((n,r={})=>{if(n==o.bu.FOCUS_EVENT){const n=Date.now();S().revalidateOnFocus&&n>t&&X()&&(t=n+S().focusThrottleInterval,e())}else if(n==o.bu.RECONNECT_EVENT)S().revalidateOnReconnect&&X()&&e();else{if(n==o.bu.MUTATE_EVENT)return K();if(n==o.bu.ERROR_REVALIDATE_EVENT)return K(r)}}));return F.current=!1,v.current=f,Q.current=!0,x({_k:G}),J&&((0,o.b0)(k)||o.X3?e():(0,o.mf)(e)),()=>{F.current=!0,n()}}),[f]),(0,o.Es)((()=>{let e;function t(){const t=(0,o.Tn)(p)?p(T().data):p;t&&-1!==e&&(e=setTimeout(n,t))}function n(){T().error||!b&&!S().isVisible()||!m&&!S().isOnline()?t():K(c).then(t)}return t(),()=>{e&&(clearTimeout(e),e=-1)}}),[p,b,m,f]),(0,r.useDebugValue)(P),u&&(0,o.b0)(k)&&f){if(!o.dO&&o.X3)throw new Error("Fallback data is required when using suspense in SSR.");Z.current=t,E.current=n,F.current=!1;const e=y[f];if(!(0,o.b0)(e)){const t=q(e);a(t)}if(!(0,o.b0)(D))throw D;{const e=K(c);(0,o.b0)(P)||(e.status="fulfilled",e.value=!0),a(e)}}return{mutate:q,get data(){return R.data=!0,P},get error(){return R.error=!0,D},get isValidating(){return R.isValidating=!0,z},get isLoading(){return R.isLoading=!0,j}}})),s=o.dO?e=>{e()}:r.startTransition,u=(0,o.Ht)(l,(()=>(e,t,n={})=>{const{mutate:i}=(0,o.iX)(),a=(0,r.useRef)(e),c=(0,r.useRef)(t),l=(0,r.useRef)(n),u=(0,r.useRef)(0),[g,d,I]=(e=>{const[,t]=(0,r.useState)({}),n=(0,r.useRef)(!1),i=(0,r.useRef)(e),a=(0,r.useRef)({data:!1,error:!1,isValidating:!1}),c=(0,r.useCallback)((e=>{let r=!1;const o=i.current;for(const t in e){const n=t;o[n]!==e[n]&&(o[n]=e[n],a.current[n]&&(r=!0))}r&&!n.current&&t({})}),[]);return(0,o.Es)((()=>(n.current=!1,()=>{n.current=!0}))),[i,a.current,c]})({data:o.ZH,error:o.ZH,isMutating:!1}),p=g.current,b=(0,r.useCallback)((async(e,t)=>{const[n,r]=(0,o.lK)(a.current);if(!c.current)throw new Error("Can’t trigger the mutation: missing fetcher.");if(!n)throw new Error("Can’t trigger the mutation: missing key.");const g=(0,o.rL)((0,o.rL)({populateCache:!1,throwOnError:!0},l.current),t),d=(0,o.lg)();u.current=d,I({isMutating:!0});try{const t=await i(n,c.current(r,{arg:e}),(0,o.rL)(g,{throwOnError:!0}));return u.current<=d&&(s((()=>I({data:t,isMutating:!1,error:void 0}))),null==g.onSuccess||g.onSuccess.call(g,t,n,g)),t}catch(p){if(u.current<=d&&(s((()=>I({error:p,isMutating:!1}))),null==g.onError||g.onError.call(g,p,n,g),g.throwOnError))throw p}}),[]),m=(0,r.useCallback)((()=>{u.current=(0,o.lg)(),I({data:o.ZH,error:o.ZH,isMutating:!1})}),[]);return(0,o.Es)((()=>{a.current=e,c.current=t,l.current=n})),{trigger:b,reset:m,get data(){return d.data=!0,p.data},get error(){return d.error=!0,p.error},get isMutating(){return d.isMutating=!0,p.isMutating}}}))},7662:e=>{"use strict";e.exports=JSON.parse('{"100":"Continue","101":"Switching Protocols","102":"Processing","103":"Early Hints","200":"OK","201":"Created","202":"Accepted","203":"Non-Authoritative Information","204":"No Content","205":"Reset Content","206":"Partial Content","207":"Multi-Status","208":"Already Reported","226":"IM Used","300":"Multiple Choices","301":"Moved Permanently","302":"Found","303":"See Other","304":"Not Modified","305":"Use Proxy","307":"Temporary Redirect","308":"Permanent Redirect","400":"Bad Request","401":"Unauthorized","402":"Payment Required","403":"Forbidden","404":"Not Found","405":"Method Not Allowed","406":"Not Acceptable","407":"Proxy Authentication Required","408":"Request Timeout","409":"Conflict","410":"Gone","411":"Length Required","412":"Precondition Failed","413":"Payload Too Large","414":"URI Too Long","415":"Unsupported Media Type","416":"Range Not Satisfiable","417":"Expectation Failed","418":"I\'m a Teapot","421":"Misdirected Request","422":"Unprocessable Entity","423":"Locked","424":"Failed Dependency","425":"Too Early","426":"Upgrade Required","428":"Precondition Required","429":"Too Many Requests","431":"Request Header Fields Too Large","451":"Unavailable For Legal Reasons","500":"Internal Server Error","501":"Not Implemented","502":"Bad Gateway","503":"Service Unavailable","504":"Gateway Timeout","505":"HTTP Version Not Supported","506":"Variant Also Negotiates","507":"Insufficient Storage","508":"Loop Detected","509":"Bandwidth Limit Exceeded","510":"Not Extended","511":"Network Authentication Required"}')}}])},"./node_modules/@91app/nineyi.utility.cookie/dist/src/index.js":(e,t)=>{"use strict";t.q5=function(e,t,n){var r="";if(n){var i=new Date;i.setTime(i.getTime()+24*n*60*60*1e3),r="; expires="+i.toUTCString()}document.cookie=e+"="+t+r+"; path=/"},t.Ri=function(e){var t=document.cookie.match(new RegExp("(^| )"+e+"=([^;]*)(;|$)"));return t?t[2]:""}},"./node_modules/@91app/nineyi.utility.log.client/dist/src/agathaReporter/index.js":function(e,t,n){"use strict";var r=this&&this.__assign||function(){return r=Object.assign||function(e){for(var t,n=1,r=arguments.length;n<r;n++)for(var i in t=arguments[n])Object.prototype.hasOwnProperty.call(t,i)&&(e[i]=t[i]);return e},r.apply(this,arguments)},i=this&&this.__spreadArray||function(e,t,n){if(n||2===arguments.length)for(var r,i=0,o=t.length;i<o;i++)!r&&i in t||(r||(r=Array.prototype.slice.call(t,0,i)),r[i]=t[i]);return e.concat(r||Array.prototype.slice.call(t))},o=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});var a=o(n("./node_modules/@91app/agatha-client/lib/index.cjs.js")),c=new WeakMap,l=function(){function e(e,t,n){if(!(null==e?void 0:e.length)||!(null==t?void 0:t.length))throw new Error("請正確設定 projectId 與 serviceName 初始化 AgathaReporter");c.set(this,{bufferedLogs:[],clientInfo:null!=n?n:null,defaultCustomPayload:null,excludeLogMessages:[],projectId:e,serviceName:"".concat(t.toLowerCase(),"-service")}),this.agatha=null,this.catchException(),this.init()}return e.instance=function(t){return e._instance||(e._instance=new e(t.projectId,t.serviceName,t.clientInfo)),e._instance},e.prototype.catchException=function(){var e=this,t=window.onerror||null,n=window.onunhandledrejection||null;window.onerror=function(n,i,o,a,c){var l,s;if(c){var u=(null===(l=null==c?void 0:c.message)||void 0===l?void 0:l.length)?c.message:(null==n?void 0:n.toString())||null,g=(null===(s=null==c?void 0:c.stack)||void 0===s?void 0:s.length)?c.stack:null;(null==u?void 0:u.length)&&(null==g?void 0:g.length)&&e.sendLogs([{severity:"ERROR",message:u,customPayload:r(r(r(r(r({},g?{stack:g}:{}),i?{source:i}:{}),o?{lineno:o}:{}),a?{colno:a}:{}),{logType:"exception"})}])}return t&&t.call(window,n,i,o,a,c),!0},window.onunhandledrejection=function(t){if(t){var r=null;t.reason&&("string"==typeof t.reason?r=t.reason:t.reason instanceof Error?r=t.reason.message:"object"==typeof t.reason&&(r=JSON.stringify(t.reason))),(null==r?void 0:r.length)&&e.sendLogs([{severity:"ERROR",message:r,customPayload:{logType:"exception"}}])}return n&&n.call(window,t),!0}},e.prototype.init=function(){var e=this,t=c.get(this);t&&(this.agatha=new a.default(r(r({projectId:t.projectId,logName:t.serviceName},t.clientInfo?{clientInfo:t.clientInfo}:{}),{onSuccess:function(){t.bufferedLogs.length&&e.setPrivateValue("bufferedLogs",[])},onError:function(e){console.error("Agatha send log failure: ".concat(e.errorMsg))}})),t.bufferedLogs.length&&this.sendLogs(t.bufferedLogs))},e.prototype.sendLogs=function(e){var t=this,n=c.get(this);if(n)if(this.agatha){var o=i(i([],n.bufferedLogs,!0),e,!0).filter((function(e){return t.isAllowSendLog(e.message)}));this.agatha.sendLogs(o.map((function(e){var n,i,o,a,c;return r(r({},e),{severity:null!==(n=e.severity)&&void 0!==n?n:"ERROR",customPayload:r(r(r({},t.defaultCustomPayload?r({},t.defaultCustomPayload):{}),e.customPayload?r({},e.customPayload):{}),{logType:null!==(o=null===(i=e.customPayload)||void 0===i?void 0:i.logType)&&void 0!==o?o:"javascript-".concat(e.severity.toLowerCase()),href:null!==(c=null===(a=e.customPayload)||void 0===a?void 0:a.href)&&void 0!==c?c:window.location.href})})})))}else this.setPrivateValue("bufferedLogs",i(i([],n.bufferedLogs,!0),e,!0))},e.prototype.isAllowSendLog=function(e){var t,n,r,i=c.get(this);return!(null===(t=null==i?void 0:i.excludeLogMessages)||void 0===t?void 0:t.length)||!(null===(r=null===(n=null==i?void 0:i.excludeLogMessages)||void 0===n?void 0:n.filter((function(t){return e.toLowerCase().includes(t.toLowerCase())})))||void 0===r?void 0:r.length)},e.prototype.setPrivateValue=function(e,t){var n=c.get(this);n&&(n[e]=t,c.set(this,n))},Object.defineProperty(e.prototype,"clientInfo",{set:function(e){var t;this.setPrivateValue("clientInfo",e),null===(t=this.agatha)||void 0===t||t.updateClientInfo(e)},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"excludeLogMessages",{get:function(){var e;return(null===(e=c.get(this))||void 0===e?void 0:e.excludeLogMessages)||[]},set:function(e){this.setPrivateValue("excludeLogMessages",e)},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"defaultCustomPayload",{get:function(){var e;return null===(e=c.get(this))||void 0===e?void 0:e.defaultCustomPayload},set:function(e){this.setPrivateValue("defaultCustomPayload",e)},enumerable:!1,configurable:!0}),e}();t.default=l},"./node_modules/@91app/nineyi.utility.log.client/dist/src/index.js":function(e,t,n){"use strict";var r=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0}),t.AgathaReporter=t.registeErrorHandler=t.initalizeLogger=t.log=void 0;var i=r(n("./node_modules/loglevel/lib/loglevel.js")),o=n("./node_modules/@91app/nineyi.utility.log.client/dist/src/stackDriverReporter.js");Object.defineProperty(t,"registeErrorHandler",{enumerable:!0,get:function(){return o.registeErrorHandler}});var a=r(n("./node_modules/@91app/nineyi.utility.log.client/dist/src/agathaReporter/index.js"));t.AgathaReporter=a.default;var c=i.default;t.log=c;t.initalizeLogger=function(e){c.setDefaultLevel(e)}},"./node_modules/@91app/nineyi.utility.log.client/dist/src/stackDriverReporter.js":function(e,t,n){"use strict";var r=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0}),t.registeErrorHandler=void 0;var i=r(n("./node_modules/@91app/nineyi.utility.log.client/node_modules/stackdriver-errors-js/stackdriver-errors.js"));t.registeErrorHandler=function(e){var t=e.envName,n=void 0===t?"":t,r=e.stackDriverConfig,o=void 0===r?{name:"",version:""}:r,a=o.name,c=o.version;if(""===o.name)throw new Error("stackDriverConfig is invalid!!");var l=a.split(/[. ]+/).pop(),s=n,u=new i.default;return u.start({key:"AIzaSyDI_CdmrnZjKAg5bR4zpwJ2lvhtYG1XktY",projectId:"k8s-91app-dev",service:"".concat(l,"-service-").concat(s),version:c}),u}},"./node_modules/@91app/nineyi.utility.log.client/node_modules/stackdriver-errors-js/stackdriver-errors.js":(e,t,n)=>{var r=n("./node_modules/stacktrace-js/stacktrace.js"),i=function(){};i.prototype.start=function(e){if(!e.key&&!e.targetUrl&&!e.customReportingFunction)throw new Error("Cannot initialize: No API key, target url or custom reporting function provided.");if(!e.projectId&&!e.targetUrl&&!e.customReportingFunction)throw new Error("Cannot initialize: No project ID, target url or custom reporting function provided.");this.customReportingFunction=e.customReportingFunction,this.apiKey=e.key,this.projectId=e.projectId,this.targetUrl=e.targetUrl,this.context=e.context||{},this.serviceContext={service:e.service||"web"},e.version&&(this.serviceContext.version=e.version),this.reportUncaughtExceptions=!1!==e.reportUncaughtExceptions,this.reportUnhandledPromiseRejections=!1!==e.reportUnhandledPromiseRejections,this.disabled=!!e.disabled,function(e){var t=function(){};if(e.reportUncaughtExceptions){var n=window.onerror||t;window.onerror=function(r,i,o,a,c){return c&&e.report(c).catch(t),n(r,i,o,a,c),!0}}if(e.reportUnhandledPromiseRejections){var r=window.onunhandledrejection||t;window.onunhandledrejection=function(n){return n&&e.report(n.reason).catch(t),r(n.reason),!0}}}(this)},i.prototype.report=function(e,t){if(this.disabled)return Promise.resolve(null);if(!e)return Promise.reject(new Error("no error to report"));t=t||{};var n={};n.serviceContext=this.serviceContext,n.context=this.context,n.context.httpRequest={userAgent:window.navigator.userAgent,url:window.location.href};var i=0;if("string"==typeof e||e instanceof String){try{throw new Error(e)}catch(c){e=c}i=t.skipLocalFrames||1}var o=this.targetUrl||"https://clouderrorreporting.googleapis.com/v1beta1/projects/"+this.projectId+"/events:report?key="+this.apiKey,a=this.customReportingFunction;return function(e,t){return r.fromError(e).then((function(n){for(var r=[e.toString()],i=t;i<n.length;i++)r.push(["    at ",n[i].getFunctionName()||"<anonymous>"," (",n[i].getFileName(),":",n[i].getLineNumber(),":",n[i].getColumnNumber(),")"].join(""));return r.join("\n")}),(function(t){return["Error extracting stack trace: ",t,"\n",e.toString(),"\n","    (",e.file,":",e.line,":",e.column,")"].join("")}))}(e,i).then((function(e){return n.message=e,a?a(n):function(e,t){var n=new XMLHttpRequest;return n.open("POST",e,!0),n.setRequestHeader("Content-Type","application/json; charset=UTF-8"),new Promise((function(e,r){n.onreadystatechange=function(){if(4===n.readyState){var i=n.status;if(i>=200&&i<300)e({message:t.message});else if(429===i)r({message:"quota or rate limiting error on stackdriver report",name:"Http429FakeError"});else{r(new Error((i?i+" http response":"network error")+" on stackdriver report"))}}},n.send(JSON.stringify(t))}))}(o,n)}))},i.prototype.setUser=function(e){this.context.user=e},e.exports=i},"./node_modules/@91app/nineyi.utility.pagelink/dist/src/configs/pageInfo.config.js":(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.shopIntroduceCustomerService=t.shopIntroduceShoppingGuide=t.shopIntroducePageInfo=t.officialBrandStory=t.backInStockAlertList=t.traceSalePageList=t.vipMemberIndexPageInfo=t.unknownPageInfo=t.loginIndexPageInfo=t.appDownloadPage=t.payFinishPageInfo=t.payLandingPageInfo=t.payIndexPageInfo=t.shoppingCart=t.eCouponHowToUse=t.collectionDetail=t.collectionViewAll=t.tagCategory=t.loyaltyPointCenter=t.loyaltyPointECouponDetail=t.loyaltyPointECouponList=t.fsEvent=t.newestSalePage=t.storeSidebarCustomLink=t.infoModuleVideoDetail=t.infoModuleVideoList=t.infoModuleAlbumDetail=t.infoModuleAlbumList=t.infoModuleArticleDetail=t.infoModuleArticleList=t.infoModuleList=t.promotionEngine=t.custom=t.hidden=t.vipMemberProfile=t.search=t.hotSaleRanking=t.couponDetail=t.couponList=t.shopStoreDetail=t.shopStoreList=t.promotionDetail=t.promotionList=t.eCouponHistory=t.ecouponDetail=t.ecouponList=t.activityPageInfo=t.salePageInfo=t.shopCategoryPageInfo=t.indexPageInfo=void 0,t.extraPurchaseList=t.addOnsSalePage=t.shoppingCartBatchInsert=t.ecouponIdForLoyaltyPoint=t.ecouponCustomList=t.stampRecordHistory=t.pointHistory=t.walletHistoryTopped=t.walletHistoryCard=t.walletHistoryAll=t.consumptionHistoryOffline=t.consumptionHistoryOnline=t.outerSalesOrder=t.crmShopMemberCardDescPage=t.brandPageWrapper=t.brandIndexWrapper=t.inlineWrapper=t.invitingHistory=t.invitingFriends=t.notFoundPage=t.activityPreparation=t.activityClosed=t.officialClosed=t.serviceInfo=t.preparation=t.payFinishExpressCheckout=t.expressCheckout=t.expressSalePage=t.salePageCommentList=t.gameModuleEvent=t.changeGoodsRequest=t.returnGoodsRequest=t.cancelGoodsRequest=t.promotionGift=t.locationPickupSelectLocation=t.browsingHistory=t.preview=t.questionInsertPageInfo=t.emailNotificationPageInfo=t.agreePrivacyPageInfo=t.myAccountChangePassword=t.invoiceListPageInfo=t.questionCustomerServiceCenter=t.ecouponMyEcoupon=t.tradesOrderDetail=t.tradesOrderList=t.myAccountLocationBooksPageInfo=t.myAccountVipMemberBenefits=t.myAccountPrivacy=t.helpServicePageInfo=void 0,t.streamPage=void 0;var r=n("./node_modules/@91app/nineyi.utility.pagelink/dist/src/constants.js");t.indexPageInfo={pageType:r.PAGE_TYPE.INDEX,pageTitle:"首頁",viewType:"Home",routerPathFunc:function(){return"/"}},t.shopCategoryPageInfo={pageType:r.PAGE_TYPE.CATEGORY,pageTitle:"小分類頁",viewType:"SalePageCategory",routerPathFunc:function(e){var t=e.id;return"/v2/official/SalePageCategory/"+(void 0===t?"":t)}},t.salePageInfo={pageType:r.PAGE_TYPE.SALEPAGE,pageTitle:"商品頁",viewType:"SalePage",routerPathFunc:function(e){var t=e.id;return"/SalePage/Index/"+(void 0===t?"":t)}},t.activityPageInfo={pageType:r.PAGE_TYPE.ACTIVITY,pageTitle:"活動頁公版",viewType:"Activity",routerPathFunc:function(e){var t=e.id;return"/v2/activity/"+(void 0===t?"":t)}},t.ecouponList={pageType:r.PAGE_TYPE.ECOUPON_LIST,pageTitle:"優惠券專區 全部列表",viewType:"ECouponList",routerPathFunc:function(){return"/v2/ECoupon/List"}},t.ecouponDetail={pageType:r.PAGE_TYPE.ECOUPON,pageTitle:"優惠券詳細頁",viewType:"ECouponDetail",routerPathFunc:function(e){var t=e.id;return"/v2/ECoupon/Detail/"+(void 0===t?"":t)}},t.eCouponHistory={pageType:r.PAGE_TYPE.ECOUPON_HISTORY,pageTitle:"優惠券紀錄",viewType:"ECouponECouponHistory",routerPathFunc:function(){return"/V2/ECoupon/ECouponHistory"}},t.promotionList={pageType:r.PAGE_TYPE.PROMOTION_LIST,pageTitle:"折扣活動列表頁",viewType:"PromotionList",routerPathFunc:function(){return"/v2/Promotion/List"}},t.promotionDetail={pageType:r.PAGE_TYPE.PROMOTION,pageTitle:"折扣活動內容頁-現折活動",viewType:"PromotionDetail",routerPathFunc:function(e){var t=e.id;return"/Promotion/Detail/"+(void 0===t?"":t)}},t.shopStoreList={pageType:r.PAGE_TYPE.SHOP_STORE_LIST,pageTitle:"門市資訊",viewType:"StoreList",routerPathFunc:function(e){return"/v2/Shop/StoreList/"+(e.shopId||"")}},t.shopStoreDetail={pageType:r.PAGE_TYPE.SHOP_STORE_DETAIL,pageTitle:"門市詳細",viewType:"StoreDetail",routerPathFunc:function(e){var t=e.shopId,n=e.id;return"/Shop/StoreDetail/"+(t||"")+"/"+(void 0===n?"":n)}},t.couponList={pageType:r.PAGE_TYPE.COUPON_LIST,pageTitle:"門市優惠券列表",viewType:"ECouponListCoupon",routerPathFunc:function(){return"/v2/ECoupon/List/Coupon"}},t.couponDetail={pageType:r.PAGE_TYPE.COUPON,pageTitle:"門市優惠券",viewType:"CouponDetail",routerPathFunc:function(e){var t=e.id;return"/Coupon/Detail/"+(void 0===t?"":t)}},t.hotSaleRanking={pageType:r.PAGE_TYPE.HOT_SALE_RANKING,pageTitle:"熱銷排行榜",viewType:"HotSaleRanking",routerPathFunc:function(e){return"/Shop/HotSaleRanking/"+(e.shopId||"")+"?period=Weekly"}},t.search={pageType:r.PAGE_TYPE.SEARCH,pageTitle:"搜尋結果",viewType:"Search",routerPathFunc:function(e){var t=e.shopId,n=e.id;return"/v2/Search?q="+encodeURI(String(n))+"&shopId="+(t||"")}},t.vipMemberProfile={pageType:r.PAGE_TYPE.VIP_MEMBER_PROFILE,pageTitle:"會員基本資料",viewType:"VipMemberProfile",routerPathFunc:function(){return"/v2/VipMember/Profile"}},t.hidden={pageType:r.PAGE_TYPE.HIDDEN,pageTitle:"隱形活動頁",viewType:"HiddenPage",routerPathFunc:function(e){var t=e.id;return"/hidden/"+(void 0===t?"":t)}},t.custom={pageType:r.PAGE_TYPE.CUSTOM,pageTitle:"自訂頁",viewType:"CustomPage",routerPathFunc:function(e){var t=e.id;return"/page/"+(void 0===t?"":t)}},t.promotionEngine={pageType:r.PAGE_TYPE.PROMOTION_ENGINE,pageTitle:"促購引擎折扣活動內容頁",viewType:"PromotionEngineDetail",routerPathFunc:function(e){var t=e.id;return"/v2/PromotionEngine/Detail/"+(void 0===t?"":t)}},t.infoModuleList={pageType:r.PAGE_TYPE.SHOP_INFO_MODULE_LIST,pageTitle:"資訊模組列表頁",viewType:"InfoModule",routerPathFunc:function(){return"/v2/shop/InfoModuleList#/"}},t.infoModuleArticleList={pageType:r.PAGE_TYPE.SHOP_INFO_MODULE_ARTICLE_LIST,pageTitle:"文章列表頁",viewType:"Article",routerPathFunc:function(){return"/v2/shop/InfoModuleList#!/ArticleList"}},t.infoModuleArticleDetail={pageType:r.PAGE_TYPE.SHOP_INFO_MODULE_ARTICLE_DETAIL,pageTitle:"圖文模組頁",viewType:"ArticleDetail",routerPathFunc:function(e){var t=e.id;return"/Article/Detail/"+(void 0===t?"":t)}},t.infoModuleAlbumList={pageType:r.PAGE_TYPE.SHOP_INFO_MODULE_ALBUM_LIST,pageTitle:"相簿列表頁",viewType:"Album",routerPathFunc:function(){return"/v2/shop/InfoModuleList#!/AlbumList"}},t.infoModuleAlbumDetail={pageType:r.PAGE_TYPE.SHOP_INFO_MODULE_ALBUM_DETAIL,pageTitle:"相簿模組頁",viewType:"AlbumDetail",routerPathFunc:function(e){var t=e.id;return"/Album/Detail/"+(void 0===t?"":t)}},t.infoModuleVideoList={pageType:r.PAGE_TYPE.SHOP_INFO_MODULE_VIDEO_LIST,pageTitle:"影片列表頁",viewType:"Video",routerPathFunc:function(){return"/v2/shop/InfoModuleList#!/VideoList"}},t.infoModuleVideoDetail={pageType:r.PAGE_TYPE.SHOP_INFO_MODULE_VIDEO_DETAIL,pageTitle:"影音模組頁",viewType:"VideoDetail",routerPathFunc:function(e){var t=e.id;return"/Video/Detail/"+(void 0===t?"":t)}},t.storeSidebarCustomLink={pageType:r.PAGE_TYPE.STORE_SIDEBAR_CUSTOM_LINK,pageTitle:"側欄門市自訂連結",viewType:"VIPMemberCustomLinkRelay",routerPathFunc:function(e){var t=e.id;return"/v2/VIPMember/CustomLinkRelay/"+(void 0===t?"":t)}},t.newestSalePage={pageType:r.PAGE_TYPE.NEWEST_SALEPAGE,pageTitle:"最新商品頁",viewType:"NewestSalePage",routerPathFunc:function(){return"/v2/Official/NewestSalePage"}},t.fsEvent={pageType:r.PAGE_TYPE.FS_EVENT,pageTitle:"Fever social 活動頁",viewType:"NewestSalePage",routerPathFunc:function(e){var t=e.shopId,n=e.id;return"/v2/FSevent/"+(t||"")+"/"+(void 0===n?"":n)}},t.loyaltyPointECouponList={pageType:r.PAGE_TYPE.LOYALTY_POINT_ECOUPON_LIST,pageTitle:"會員點數兌換專區",viewType:"LoyaltyPointToECouponList",routerPathFunc:function(){return"/v2/LoyaltyPoint/ECouponList"}},t.loyaltyPointECouponDetail={pageType:r.PAGE_TYPE.LOYALTY_POINT_ECOUPON_DETAIL,pageTitle:"紅利點數折價券詳細頁",viewType:"LoyaltyPointToECouponDetail",routerPathFunc:function(){return"/v2/LoyaltyPoint/ECouponDetail"}},t.loyaltyPointCenter={pageType:r.PAGE_TYPE.LOYALTY_POINT_CENTER,pageTitle:"會員點數中心",viewType:"LoyaltyPointCenter",routerPathFunc:function(){return"/V2/LoyaltyPoint/Index"}},t.tagCategory={pageType:r.PAGE_TYPE.TAG_CATEGORY,pageTitle:"標籤分類頁",viewType:"TagCategory",routerPathFunc:function(e){var t=e.id;return"/tagCategory/"+(void 0===t?"":t)}},t.collectionViewAll={pageType:r.PAGE_TYPE.COLLECTION_VIEW_ALL,pageTitle:"穿搭一覽頁",viewType:"CollectionList",routerPathFunc:function(){return"/catalog/collectionList"}},t.collectionDetail={pageType:r.PAGE_TYPE.COLLECTION_DETAIL,pageTitle:"穿搭詳細頁",viewType:"CollectionDetail",routerPathFunc:function(e){var t=e.id;return"/catalog/collectionDetail/"+(void 0===t?"":t)}},t.eCouponHowToUse={pageType:r.PAGE_TYPE.ECOUPON_HOW_TO_USE,pageTitle:"折價券使用說明",viewType:"ECouponHowToUse",routerPathFunc:function(){return"ECoupon/HowToUse"}},t.shoppingCart={pageType:r.PAGE_TYPE.SHOPPING_CART,pageTitle:"購物車",viewType:"ShoppingCart",routerPathFunc:function(e){return"/v2/ShoppingCart/Index?shopId="+(e.shopId||"")+"#/Info/Index"}},t.payIndexPageInfo={pageType:r.PAGE_TYPE.PAY_INDEX,pageTitle:"結帳付款頁",viewType:"Pay",routerPathFunc:function(e){var t=e.shopId,n=e.id;return"/v2/Pay?k="+(void 0===n?"":n)+"shopId="+(t||"")+"#/Info/PayAdvanced"}},t.payLandingPageInfo={pageType:r.PAGE_TYPE.PAY_LANDING,pageTitle:"結帳付款頁等待頁",viewType:"PayLanding",routerPathFunc:function(){return"/v2/Pay/Landing"}},t.payFinishPageInfo={pageType:r.PAGE_TYPE.PAY_FINISH,pageTitle:"結帳完成頁",viewType:"PayFinish",routerPathFunc:function(e){var t=e.shopId,n=e.id;return"/v2/Pay/Finish?k="+(void 0===n?"":n)+"&shopId="+(t||"")}},t.appDownloadPage={pageType:r.PAGE_TYPE.APP_DOWNLOAD,pageTitle:"導下載頁",viewType:"AppDownload",routerPathFunc:function(){return"/app/download"}},t.loginIndexPageInfo={pageType:r.PAGE_TYPE.LOGIN,pageTitle:"登入",viewType:"Login",routerPathFunc:function(){return"/V2/Login/Index"}},t.unknownPageInfo={pageType:null,pageTitle:"不明的頁面",viewType:"unknown",routerPathFunc:function(){return""}},t.vipMemberIndexPageInfo={pageType:r.PAGE_TYPE.VIP_MEMBER,viewType:"VipMember",pageTitle:"會員專區",routerPathFunc:function(){return"/V2/VipMember/Index"}},t.traceSalePageList={viewType:"WishList",pageType:r.PAGE_TYPE.TRACE_SALE_PAGE_LIST,pageTitle:"我的收藏",routerPathFunc:function(){return"/TraceSalePageList/TraceSalePageList"}},t.backInStockAlertList={viewType:"BackInStockAlertList",pageType:r.PAGE_TYPE.BACK_IN_STOCK_ALERT_LIST,pageTitle:"貨到通知",routerPathFunc:function(){return"/v2/BackInStockAlertList"}},t.officialBrandStory={viewType:"BrandStory",pageType:r.PAGE_TYPE.OFFICIAL_BRAND_STORY,pageTitle:"品牌故事",routerPathFunc:function(){return"/v2/Official/BrandStory"}},t.shopIntroducePageInfo={viewType:"Introduce",pageType:r.PAGE_TYPE.SHOP_INTRODUCE,pageTitle:"商店簡介",routerPathFunc:function(e){return"/shop/introduce/"+(e.shopId||"")+"?t=1"}},t.shopIntroduceShoppingGuide={viewType:"Introduce",pageType:r.PAGE_TYPE.SHOP_INTRODUCE_SHOPPING_GUIDE,pageTitle:"購物說明",routerPathFunc:function(e){return"/shop/introduce/"+(e.shopId||"")+"?t=2"}},t.shopIntroduceCustomerService={viewType:"Introduce",pageType:r.PAGE_TYPE.SHOP_INTRODUCE_CUSTOMER_SERVICE,pageTitle:"商店客服",routerPathFunc:function(e){return"/shop/introduce/"+(e.shopId||"")+"?t=3"}},t.helpServicePageInfo={pageType:null,viewType:"",pageTitle:"購物說明",routerPathFunc:function(e){return"/shop/introduce/"+(e.shopId||"")+"?t=2"}},t.myAccountPrivacy={pageType:r.PAGE_TYPE.MY_ACCOUNT_PRIVACY,pageTitle:"隱私權條款頁",viewType:"Privacy",routerPathFunc:function(){return"/MyAccount/Privacy"}},t.myAccountVipMemberBenefits={pageType:r.PAGE_TYPE.MY_ACCOUNT_VIP_MEMBER_BENEFITS,viewType:"VipMemberBenefits",pageTitle:"會員權益說明",routerPathFunc:function(){return"/V2/MyAccount/VipMemberBenefits"}},t.myAccountLocationBooksPageInfo={pageType:null,viewType:"",pageTitle:"常用收件人",routerPathFunc:function(){return"/MyAccount/LocationBooks"}},t.tradesOrderList={pageType:r.PAGE_TYPE.TRADES_ORDER_LIST,viewType:"TradesOrderList",pageTitle:"訂單列表",routerPathFunc:function(){return"/V2/TradesOrder/TradesOrderList"}},t.tradesOrderDetail={pageType:r.PAGE_TYPE.TRADES_ORDER_LIST,viewType:"TradesOrderDetail",pageTitle:"訂單明細",routerPathFunc:function(){return"/V2/TradesOrder/TradesOrderDetail"}},t.ecouponMyEcoupon={pageType:r.PAGE_TYPE.ECOUPON_MY_ECOUPON,pageTitle:"我的優惠券",viewType:"ECouponMyECoupon",routerPathFunc:function(){return"/V2/ECoupon/MyECoupon"}},t.questionCustomerServiceCenter={pageType:r.PAGE_TYPE.QUESTION_CUSTOMER_SERVICE_CENTER,viewType:"CustomerServiceCenter",pageTitle:"常見問題",routerPathFunc:function(){return"/Question/CustomerServiceCenter"}},t.invoiceListPageInfo={pageType:null,viewType:"",pageTitle:"常用統一編號",routerPathFunc:function(){return"/MyAccount/InvoiceList"}},t.myAccountChangePassword={pageType:r.PAGE_TYPE.MY_ACCOUNT_CHANGE_PASSWORD,viewType:"ChangePassword",pageTitle:"修改密碼",routerPathFunc:function(){return"/V2/MyAccount/ChangePassword"}},t.agreePrivacyPageInfo={pageType:null,viewType:"",pageTitle:"會員權益聲明",routerPathFunc:function(){return"/V2/VipMember/agreePrivacy"}},t.emailNotificationPageInfo={pageType:null,viewType:"",pageTitle:"通知相關設定",routerPathFunc:function(){return"/V2/VipMember/EmailNotification"}},t.questionInsertPageInfo={pageType:r.PAGE_TYPE.QUESTION_INSERT,viewType:"QuestionInsert",pageTitle:"客服留言/問答紀錄",routerPathFunc:function(e){return"/Question/QuestionInsert/0?sId="+(e.shopId||"")}},t.preview={pageType:r.PAGE_TYPE.PRIVIEW,viewType:"Preview",pageTitle:"預覽頁",routerPathFunc:function(e){var t=e.id;return"/preview/"+(void 0===t?"":t)}},t.browsingHistory={pageType:r.PAGE_TYPE.BROWSING_HISTORY,viewType:"BrowsingHistory",pageTitle:"瀏覽紀錄",routerPathFunc:function(){return"/v2/browsingHistory"}},t.locationPickupSelectLocation={pageType:r.PAGE_TYPE.LOCATION_PICK_UP_SELECT_LOCATION,viewType:"LocationPickup",pageTitle:"選擇門市",routerPathFunc:function(){return"/V2/LocationPickup/SelectLocation"}},t.promotionGift={pageType:r.PAGE_TYPE.PROMOTION_GIFT,viewType:"PromotionGift",pageTitle:"贈品詳細",routerPathFunc:function(){return"/V2/Promotion/Gift"}},t.cancelGoodsRequest={pageType:r.PAGE_TYPE.CANCEL_GOODS_REQUEST,viewType:"CancelGoodsRequest",pageTitle:"訂單取消",routerPathFunc:function(){return"/V2/CancelGoodsRequest/list"}},t.returnGoodsRequest={pageType:r.PAGE_TYPE.RETURN_GOODS_REQUEST,viewType:"ReturnGoodsRequest",pageTitle:"訂單退貨",routerPathFunc:function(){return"/V2/ReturnGoodsRequest/list"}},t.changeGoodsRequest={pageType:r.PAGE_TYPE.CHANGE_GOODS_REQUEST,viewType:"ChangeGoodsRequest",pageTitle:"訂單換貨",routerPathFunc:function(){return"/V2/ChangeGoodsRequest/list"}},t.gameModuleEvent={pageType:r.PAGE_TYPE.GAME_MODULE_EVENT,pageTitle:"遊戲產生器活動頁",viewType:"GameModuleEvent",routerPathFunc:function(e){var t=e.shopId,n=e.id;return"/V2/GameModule/"+(t||"")+"/gpc001/"+(void 0===n?"":n)}},t.salePageCommentList={pageType:r.PAGE_TYPE.SALEPAGE_COMMENT_LIST,pageTitle:"評價列表頁",viewType:"SalePageComment",routerPathFunc:function(e){var t=e.id;return"/v2/SalePageComment/List?salePageId="+(void 0===t?"":t)}},t.expressSalePage={pageType:r.PAGE_TYPE.EXPRESS_SALEPAGE,pageTitle:"商品頁_express",viewType:"ExpressSalePage",routerPathFunc:function(e){var t=e.id;return"/cms/liff/tall/expressSalePage/"+(void 0===t?"":t)}},t.expressCheckout={pageType:r.PAGE_TYPE.EXPRESS_CHECKOUT,pageTitle:"快速結帳",viewType:"ExpressCheckout",routerPathFunc:function(e){var t=e.id;return"/v2/checkouts/"+(void 0===t?"":t)+"?pageType=express"}},t.payFinishExpressCheckout={pageType:r.PAGE_TYPE.EXPRESS_CHECKOUT_PAY_FINISH,pageTitle:"結帳完成頁",viewType:"ExpressCheckout",routerPathFunc:function(e){var t=e.shopId,n=e.id;return"/v2/Pay/Finish?k="+(void 0===n?"":n)+"&shopId="+(t||"")+"&pageType=express"}},t.preparation={pageType:r.PAGE_TYPE.PREPARATION,pageTitle:"網站準備中",viewType:"Preparation",routerPathFunc:function(e){return"/V2/Static/Official/OfficialPreparation.htm?shopId="+e.shopId+"&reason=InProcess"}},t.serviceInfo={pageType:r.PAGE_TYPE.SERVICEINFO,pageTitle:"例行系統維護中",viewType:"ServiceInfo",routerPathFunc:function(){return"/service_info.htm"}},t.officialClosed={pageType:r.PAGE_TYPE.OFFICIAL_CLOSED,pageTitle:"網站關閉",viewType:"OfficialClosed",routerPathFunc:function(){return"/V2/Static/Official/Officialclosed.htm"}},t.activityClosed={pageType:r.PAGE_TYPE.ACTIVITY_CLOSED,pageTitle:"活動已結束",viewType:"Activityclosed",routerPathFunc:function(){return"/v2/Static/Activity/Activityclosed.html"}},t.activityPreparation={pageType:r.PAGE_TYPE.ACTIVITY_PREPARATION,pageTitle:"活動尚未開始",viewType:"ActivityPreparation",routerPathFunc:function(){return"/v2/Static/Activity/ActivityPreparation.html"}},t.notFoundPage={pageType:r.PAGE_TYPE.NOT_FOUND_PAGE,pageTitle:"找不到該頁面",viewType:"NotFoundPage",routerPathFunc:function(){return"/404V2.html"}},t.invitingFriends={pageType:r.PAGE_TYPE.INVITING_FRIENDS,pageTitle:"邀請好友",viewType:"SharedInvitation",routerPathFunc:function(){return"/V2/MyAccount/InvitingFriends"}},t.invitingHistory={pageType:r.PAGE_TYPE.INVITING_HISTORY,pageTitle:"邀請紀錄",viewType:"InvitingHistory",routerPathFunc:function(){return"/V2/MyAccount/InvitingHistory"}},t.inlineWrapper={pageType:r.PAGE_TYPE.INLINE_WRAPPER,pageTitle:"inline ifarme 頁",viewType:"IfarmeWrappery",routerPathFunc:function(e){return"/catalog/inlineWrapper/"+e.serviceType+"/"+e.id}},t.brandIndexWrapper={pageType:r.PAGE_TYPE.BRAND_INDEX,pageTitle:"品牌總覽頁",viewType:"ProductBrandOverview",routerPathFunc:function(){return"/V2/Brand"}},t.brandPageWrapper={pageType:r.PAGE_TYPE.BRAND_PAGE,pageTitle:"商品品牌頁",viewType:"BrandPage",routerPathFunc:function(e){var t=e.id;return"/V2/Brand/"+(void 0===t?"":t)}},t.crmShopMemberCardDescPage={pageType:r.PAGE_TYPE.MEMBER_CARD_DESC,pageTitle:"會員專區_會員制度說明頁",viewType:"CRMShopMemberCard",routerPathFunc:function(){return"/V2/CRMShopMemberCard/Description.html"}},t.outerSalesOrder={pageType:r.PAGE_TYPE.OUTER_SLAES_ORDER,pageTitle:"交易紀錄頁",viewType:"OuterSalesOrder",routerPathFunc:function(){return"/V2/MembershipCard/OuterSalesOrder#/"}},t.consumptionHistoryOnline={pageType:r.PAGE_TYPE.CONSUMPTION_HISTORY_ONLINE,pageTitle:"交易紀錄頁_消費紀錄_線上",viewType:"ConsumptionHistoryOnline",routerPathFunc:function(){return"/V2/MembershipCard/OuterSalesOrder#/consumption-history/online"}},t.consumptionHistoryOffline={pageType:r.PAGE_TYPE.CONSUMPTION_HISTORY_ONLINE,pageTitle:"交易紀錄頁_消費紀錄_門市",viewType:"ConsumptionHistoryOffline",routerPathFunc:function(){return"/V2/MembershipCard/OuterSalesOrder#/consumption-history/offline"}},t.walletHistoryAll={pageType:r.PAGE_TYPE.WALLET_HISTORY_ALL,pageTitle:"交易紀錄頁_POYABuy紀錄_全部",viewType:"WalletHistoryAll",routerPathFunc:function(){return"/V2/MembershipCard/OuterSalesOrder#/wallet-history/all"}},t.walletHistoryCard={pageType:r.PAGE_TYPE.WALLET_HISTORY_CARD,pageTitle:"交易紀錄頁_POYABuy紀錄_信用卡",viewType:"WalletHistoryCard",routerPathFunc:function(){return"/V2/MembershipCard/OuterSalesOrder#/wallet-history/card"}},t.walletHistoryTopped={pageType:r.PAGE_TYPE.WALLET_HISTORY_CARD,pageTitle:"交易紀錄頁_POYABuy紀錄_儲值金",viewType:"WalletHistoryTopped",routerPathFunc:function(){return"/V2/MembershipCard/OuterSalesOrder#/wallet-history/topped"}},t.pointHistory={pageType:r.PAGE_TYPE.POINT_HISTORY,pageTitle:"交易紀錄頁_點數紀錄",viewType:"PointHistory",routerPathFunc:function(){return"/V2/MembershipCard/OuterSalesOrder#/point-history"}},t.stampRecordHistory={pageType:r.PAGE_TYPE.STAMP_RECORD_HISTORY,pageTitle:"交易紀錄頁_印花紀錄",viewType:"StampRecordHistory",routerPathFunc:function(){return"/V2/MembershipCard/OuterSalesOrder#/stampRecord-history"}},t.ecouponCustomList={pageType:r.PAGE_TYPE.ECOUPON_CUSTOM_LIST,pageTitle:"優惠券專區 自訂券列表",viewType:"ecouponCustomList",routerPathFunc:function(e){var t=e.id;return"/v2/ECoupon/List?TypeDef=ECouponCustom&ECouponCustomId="+(void 0===t?"":t)}},t.ecouponIdForLoyaltyPoint={pageType:r.PAGE_TYPE.ECOUPON_ID_FOR_LOYALTY_POINT,pageTitle:"優惠券詳細頁(紅利點數兌換)",viewType:"ecouponIdForLoyaltyPoint",routerPathFunc:function(e){var t=e.id;return"/v2/LoyaltyPoint/ECouponDetail?eCouponId="+(void 0===t?"":t)}},t.shoppingCartBatchInsert={pageType:r.PAGE_TYPE.SHOPPING_CART_BATCH_INSERT,pageTitle:"購物車批次新增轉導頁",viewType:"ShoppingCartBatchInsert",routerPathFunc:function(){return"/v2/ShoppingCart/BatchInsert"}},t.addOnsSalePage={pageType:r.PAGE_TYPE.ADD_ONS_SALEPAGE,pageTitle:"商品頁",viewType:"AddOnsSalePage",routerPathFunc:function(e){var t=e.id;return"/AddOnsSalePage/Index/"+(void 0===t?"":t)}},t.extraPurchaseList={pageType:r.PAGE_TYPE.EXTRA_PURCHASE_LIST,pageTitle:"加價購專區",viewType:"AddOnsSalePageArea",routerPathFunc:function(e){var t=e.id;return"/V2/AddOnsSalePage/ExtraPurchaseList/"+(void 0===t?"":t)}},t.streamPage={pageType:r.PAGE_TYPE.STREAM,pageTitle:"影片頁",viewType:"StreamPage",routerPathFunc:function(e){var t=e.id;return"/catalog/stream/"+(void 0===t?"":t)}}},"./node_modules/@91app/nineyi.utility.pagelink/dist/src/constants.js":(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.PAGE_NAME=t.URL_TYPE=t.PAGE_TYPE=void 0,t.PAGE_TYPE={INDEX:"p01",CATEGORY:"p02",SALEPAGE:"p03",ACTIVITY:"p04",ECOUPON_LIST:"p05",ECOUPON:"p06",PROMOTION_LIST:"p07",PROMOTION:"p08",SHOP_STORE_LIST:"p09",SHOP_STORE_DETAIL:"p10",COUPON_LIST:"p11",COUPON:"p12",HOT_SALE_RANKING:"p13",SEARCH:"p14",VIP_MEMBER_PROFILE:"p15",HIDDEN:"p16",CUSTOM:"p17",PROMOTION_ENGINE:"p18",SHOP_INFO_MODULE_LIST:"p19",SHOP_INFO_MODULE_ARTICLE_LIST:"p20",SHOP_INFO_MODULE_ARTICLE_DETAIL:"p21",SHOP_INFO_MODULE_ALBUM_LIST:"p22",SHOP_INFO_MODULE_ALBUM_DETAIL:"p23",SHOP_INFO_MODULE_VIDEO_LIST:"p24",SHOP_INFO_MODULE_VIDEO_DETAIL:"p25",STORE_SIDEBAR_CUSTOM_LINK:"p26",NEWEST_SALEPAGE:"p27",FS_EVENT:"p28",LOYALTY_POINT_ECOUPON_LIST:"p29",TAG_CATEGORY:"p30",COLLECTION_VIEW_ALL:"p31",COLLECTION_DETAIL:"p32",ECOUPON_HOW_TO_USE:"p33",SHOPPING_CART:"p34",PAY_INDEX:"p35",PAY_LANDING:"p36",PAY_FINISH:"p37",APP_DOWNLOAD:"p38",LOGIN:"p39",TRADES_ORDER_LIST:"p40",PRIVIEW:"p41",BROWSING_HISTORY:"p42",SHOP_INTRODUCE:"p43",VIP_MEMBER:"p44",LOCATION_PICK_UP_SELECT_LOCATION:"p45",OFFICIAL_BRAND_STORY:"p46",SHOP_INTRODUCE_CUSTOMER_SERVICE:"p47",SHOP_INTRODUCE_SHOPPING_GUIDE:"p48",QUESTION_INSERT:"p49",QUESTION_CUSTOMER_SERVICE_CENTER:"p50",MY_ACCOUNT_PRIVACY:"p51",MY_ACCOUNT_VIP_MEMBER_BENEFITS:"p52",MY_ACCOUNT_CHANGE_PASSWORD:"p53",PROMOTION_GIFT:"p54",LOYALTY_POINT_CENTER:"p55",ECOUPON_HISTORY:"p56",ECOUPON_MY_ECOUPON:"p57",TRACE_SALE_PAGE_LIST:"p58",CANCEL_GOODS_REQUEST:"p59",RETURN_GOODS_REQUEST:"p60",CHANGE_GOODS_REQUEST:"p61",GAME_MODULE_EVENT:"p62",BACK_IN_STOCK_ALERT_LIST:"p63",SALEPAGE_COMMENT_LIST:"p64",EXPRESS_SALEPAGE:"p65",LOYALTY_POINT_ECOUPON_DETAIL:"p66",EXPRESS_CHECKOUT:"p67",EXPRESS_CHECKOUT_PAY_FINISH:"p68",PREVIEW:"p69",PREPARATION:"p70",SERVICEINFO:"p71",OFFICIAL_CLOSED:"p72",ACTIVITY_CLOSED:"p73",ACTIVITY_PREPARATION:"p74",NOT_FOUND_PAGE:"p75",INVITING_FRIENDS:"p76",INVITING_HISTORY:"p77",INLINE_WRAPPER:"P78",BRAND_INDEX:"P79",BRAND_PAGE:"P80",MEMBER_CARD_DESC:"p81",OUTER_SLAES_ORDER:"p82",CONSUMPTION_HISTORY_ONLINE:"p83",CONSUMPTION_HISTORY_OFFLINE:"p84",WALLET_HISTORY_ALL:"p85",WALLET_HISTORY_CARD:"p86",WALLET_HISTORY_TOPPED:"p87",POINT_HISTORY:"p88",STAMP_RECORD_HISTORY:"p89",ECOUPON_CUSTOM_LIST:"p90",ECOUPON_ID_FOR_LOYALTY_POINT:"p91",SHOPPING_CART_BATCH_INSERT:"p92",ADD_ONS_SALEPAGE:"p93",EXTRA_PURCHASE_LIST:"p94",STREAM:"p95",UNKNOWN:"unknown"},t.URL_TYPE={CUSTOM:"custom",INTERNAL:"internal",NONE:"none"},t.PAGE_NAME={INDEX:"index",HIDDEN:"hidden",PREVIEW:"preview",CUSTOM:"custom",CATEGORY:"category",TAG_CATEGORY:"tagCategory",COLLECTION_LIST:"collectionList",COLLECTION_DETAIL:"collectionDetail",BROWSING_HISTORY:"browsingHistory",DOWNLOAD:"download",HOT_SALE_RANKING:"hotSaleRanking",EXPRESS_SALEPAGE:"expressSalePage",SEARCH:"search",NEWEST_SALE_PAGE:"newestSalePage",LINE_EXPRESS_RELAY:"lineExpressRelay",INLINE_WRAPPER:"inlineWrapper",LINE:"line",STREAM:"stream"}},"./node_modules/@91app/nineyi.utility.pagelink/dist/src/index.js":function(e,t,n){"use strict";var r=this&&this.__createBinding||(Object.create?function(e,t,n,r){void 0===r&&(r=n),Object.defineProperty(e,r,{enumerable:!0,get:function(){return t[n]}})}:function(e,t,n,r){void 0===r&&(r=n),e[r]=t[n]}),i=this&&this.__exportStar||function(e,t){for(var n in e)"default"===n||Object.prototype.hasOwnProperty.call(t,n)||r(t,e,n)};Object.defineProperty(t,"__esModule",{value:!0}),i(n("./node_modules/@91app/nineyi.utility.pagelink/dist/src/constants.js"),t),i(n("./node_modules/@91app/nineyi.utility.pagelink/dist/src/modules/pageInfo.module.js"),t)},"./node_modules/@91app/nineyi.utility.pagelink/dist/src/modules/pageInfo.module.js":function(e,t,n){"use strict";var r=this&&this.__createBinding||(Object.create?function(e,t,n,r){void 0===r&&(r=n),Object.defineProperty(e,r,{enumerable:!0,get:function(){return t[n]}})}:function(e,t,n,r){void 0===r&&(r=n),e[r]=t[n]}),i=this&&this.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),o=this&&this.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var n in e)"default"!==n&&Object.prototype.hasOwnProperty.call(e,n)&&r(t,e,n);return i(t,e),t};Object.defineProperty(t,"__esModule",{value:!0}),t.getPageUrl=t.getPageInfoByPageType=t.getPageInfoByPathRegex=t.PageInfoMap=void 0;var a=n("./node_modules/@91app/nineyi.utility.pagelink/dist/src/constants.js"),c=o(n("./node_modules/@91app/nineyi.utility.pagelink/dist/src/configs/pageInfo.config.js"));t.PageInfoMap=new Map([[a.PAGE_TYPE.INDEX,c.indexPageInfo],[a.PAGE_TYPE.CATEGORY,c.shopCategoryPageInfo],[a.PAGE_TYPE.SALEPAGE,c.salePageInfo],[a.PAGE_TYPE.ACTIVITY,c.activityPageInfo],[a.PAGE_TYPE.ECOUPON_LIST,c.ecouponList],[a.PAGE_TYPE.ECOUPON,c.ecouponDetail],[a.PAGE_TYPE.PROMOTION_LIST,c.promotionList],[a.PAGE_TYPE.PROMOTION,c.promotionDetail],[a.PAGE_TYPE.SHOP_STORE_LIST,c.shopStoreList],[a.PAGE_TYPE.SHOP_STORE_DETAIL,c.shopStoreDetail],[a.PAGE_TYPE.COUPON_LIST,c.couponList],[a.PAGE_TYPE.COUPON,c.couponDetail],[a.PAGE_TYPE.HOT_SALE_RANKING,c.hotSaleRanking],[a.PAGE_TYPE.SEARCH,c.search],[a.PAGE_TYPE.VIP_MEMBER_PROFILE,c.vipMemberProfile],[a.PAGE_TYPE.HIDDEN,c.hidden],[a.PAGE_TYPE.CUSTOM,c.custom],[a.PAGE_TYPE.PROMOTION_ENGINE,c.promotionEngine],[a.PAGE_TYPE.SHOP_INFO_MODULE_LIST,c.infoModuleList],[a.PAGE_TYPE.SHOP_INFO_MODULE_ARTICLE_LIST,c.infoModuleArticleList],[a.PAGE_TYPE.SHOP_INFO_MODULE_ARTICLE_DETAIL,c.infoModuleArticleDetail],[a.PAGE_TYPE.SHOP_INFO_MODULE_ALBUM_LIST,c.infoModuleAlbumList],[a.PAGE_TYPE.SHOP_INFO_MODULE_ALBUM_DETAIL,c.infoModuleAlbumDetail],[a.PAGE_TYPE.SHOP_INFO_MODULE_VIDEO_LIST,c.infoModuleVideoList],[a.PAGE_TYPE.SHOP_INFO_MODULE_VIDEO_DETAIL,c.infoModuleVideoDetail],[a.PAGE_TYPE.STORE_SIDEBAR_CUSTOM_LINK,c.storeSidebarCustomLink],[a.PAGE_TYPE.NEWEST_SALEPAGE,c.newestSalePage],[a.PAGE_TYPE.FS_EVENT,c.fsEvent],[a.PAGE_TYPE.LOYALTY_POINT_ECOUPON_LIST,c.loyaltyPointECouponList],[a.PAGE_TYPE.TAG_CATEGORY,c.tagCategory],[a.PAGE_TYPE.COLLECTION_VIEW_ALL,c.collectionViewAll],[a.PAGE_TYPE.COLLECTION_DETAIL,c.collectionDetail],[a.PAGE_TYPE.ECOUPON_HOW_TO_USE,c.eCouponHowToUse],[a.PAGE_TYPE.SHOPPING_CART,c.shoppingCart],[a.PAGE_TYPE.SHOPPING_CART_BATCH_INSERT,c.shoppingCartBatchInsert],[a.PAGE_TYPE.PAY_INDEX,c.payIndexPageInfo],[a.PAGE_TYPE.PAY_LANDING,c.payLandingPageInfo],[a.PAGE_TYPE.PAY_FINISH,c.payFinishPageInfo],[a.PAGE_TYPE.APP_DOWNLOAD,c.appDownloadPage],[a.PAGE_TYPE.UNKNOWN,c.unknownPageInfo],[a.PAGE_TYPE.LOGIN,c.loginIndexPageInfo],[a.PAGE_TYPE.TRADES_ORDER_LIST,c.tradesOrderList],[a.PAGE_TYPE.PRIVIEW,c.preview],[a.PAGE_TYPE.BROWSING_HISTORY,c.browsingHistory],[a.PAGE_TYPE.SHOP_INTRODUCE,c.shopIntroducePageInfo],[a.PAGE_TYPE.SHOP_INTRODUCE_SHOPPING_GUIDE,c.shopIntroduceShoppingGuide],[a.PAGE_TYPE.SHOP_INTRODUCE_CUSTOMER_SERVICE,c.shopIntroduceCustomerService],[a.PAGE_TYPE.VIP_MEMBER,c.vipMemberIndexPageInfo],[a.PAGE_TYPE.LOCATION_PICK_UP_SELECT_LOCATION,c.locationPickupSelectLocation],[a.PAGE_TYPE.OFFICIAL_BRAND_STORY,c.officialBrandStory],[a.PAGE_TYPE.QUESTION_INSERT,c.questionInsertPageInfo],[a.PAGE_TYPE.QUESTION_CUSTOMER_SERVICE_CENTER,c.questionCustomerServiceCenter],[a.PAGE_TYPE.MY_ACCOUNT_PRIVACY,c.myAccountPrivacy],[a.PAGE_TYPE.MY_ACCOUNT_VIP_MEMBER_BENEFITS,c.myAccountVipMemberBenefits],[a.PAGE_TYPE.MY_ACCOUNT_CHANGE_PASSWORD,c.myAccountChangePassword],[a.PAGE_TYPE.PROMOTION_GIFT,c.promotionGift],[a.PAGE_TYPE.LOYALTY_POINT_CENTER,c.loyaltyPointCenter],[a.PAGE_TYPE.ECOUPON_HISTORY,c.eCouponHistory],[a.PAGE_TYPE.ECOUPON_MY_ECOUPON,c.ecouponMyEcoupon],[a.PAGE_TYPE.TRACE_SALE_PAGE_LIST,c.traceSalePageList],[a.PAGE_TYPE.CANCEL_GOODS_REQUEST,c.cancelGoodsRequest],[a.PAGE_TYPE.RETURN_GOODS_REQUEST,c.returnGoodsRequest],[a.PAGE_TYPE.CHANGE_GOODS_REQUEST,c.changeGoodsRequest],[a.PAGE_TYPE.GAME_MODULE_EVENT,c.gameModuleEvent],[a.PAGE_TYPE.BACK_IN_STOCK_ALERT_LIST,c.backInStockAlertList],[a.PAGE_TYPE.SALEPAGE_COMMENT_LIST,c.salePageCommentList],[a.PAGE_TYPE.EXPRESS_SALEPAGE,c.expressSalePage],[a.PAGE_TYPE.LOYALTY_POINT_ECOUPON_DETAIL,c.loyaltyPointECouponDetail],[a.PAGE_TYPE.EXPRESS_CHECKOUT,c.expressCheckout],[a.PAGE_TYPE.EXPRESS_CHECKOUT_PAY_FINISH,c.payFinishExpressCheckout],[a.PAGE_TYPE.PREVIEW,c.preview],[a.PAGE_TYPE.PREPARATION,c.preparation],[a.PAGE_TYPE.SERVICEINFO,c.serviceInfo],[a.PAGE_TYPE.OFFICIAL_CLOSED,c.officialClosed],[a.PAGE_TYPE.ACTIVITY_CLOSED,c.activityClosed],[a.PAGE_TYPE.ACTIVITY_PREPARATION,c.activityPreparation],[a.PAGE_TYPE.INVITING_FRIENDS,c.invitingFriends],[a.PAGE_TYPE.INVITING_HISTORY,c.invitingHistory],[a.PAGE_TYPE.INLINE_WRAPPER,c.inlineWrapper],[a.PAGE_TYPE.BRAND_INDEX,c.brandIndexWrapper],[a.PAGE_TYPE.BRAND_PAGE,c.brandPageWrapper],[a.PAGE_TYPE.NOT_FOUND_PAGE,c.notFoundPage],[a.PAGE_TYPE.MEMBER_CARD_DESC,c.crmShopMemberCardDescPage],[a.PAGE_TYPE.OUTER_SLAES_ORDER,c.outerSalesOrder],[a.PAGE_TYPE.CONSUMPTION_HISTORY_ONLINE,c.consumptionHistoryOnline],[a.PAGE_TYPE.CONSUMPTION_HISTORY_OFFLINE,c.consumptionHistoryOffline],[a.PAGE_TYPE.WALLET_HISTORY_ALL,c.walletHistoryAll],[a.PAGE_TYPE.WALLET_HISTORY_CARD,c.walletHistoryCard],[a.PAGE_TYPE.WALLET_HISTORY_TOPPED,c.walletHistoryTopped],[a.PAGE_TYPE.POINT_HISTORY,c.pointHistory],[a.PAGE_TYPE.STAMP_RECORD_HISTORY,c.stampRecordHistory],[a.PAGE_TYPE.ECOUPON_CUSTOM_LIST,c.ecouponCustomList],[a.PAGE_TYPE.ECOUPON_ID_FOR_LOYALTY_POINT,c.ecouponIdForLoyaltyPoint],[a.PAGE_TYPE.ADD_ONS_SALEPAGE,c.addOnsSalePage],[a.PAGE_TYPE.EXTRA_PURCHASE_LIST,c.extraPurchaseList],[a.PAGE_TYPE.STREAM,c.streamPage]]);t.getPageInfoByPathRegex=function(e,n,r){if(!e)return c.unknownPageInfo;var i,o=n||"undefined"!=typeof window?window.location.search:"",l=r||"undefined"!=typeof window?window.location.hash:"";switch(!0){case/(\/v2\/official\/$)|(\/v2\/official$)|^$|(^\/$)|(\/v2\/official\/Index$)|(\/v2\/official\/Index\/)/gi.test(e):i=c.indexPageInfo;break;case/\/v2\/official\/salepagecategory\/*/gi.test(e):i=c.shopCategoryPageInfo;break;case/\/salepage\/index\/*/gi.test(e):i=c.salePageInfo;break;case/\/v2\/activity\/*/gi.test(e):i=c.activityPageInfo;break;case/\/preview\/*/gi.test(e):i=c.preview;break;case/\/ecoupon\/list\/*/gi.test(e):i=/TypeDef=ECouponCustom/gi.test(o)?c.ecouponCustomList:c.ecouponList;break;case/\/v2\/ecoupon\/detail\/*/gi.test(e):i=c.ecouponDetail;break;case/\/v2\/promotion\/list\/*/gi.test(e):i=c.promotionList;break;case/\/promotion\/detail\/*/gi.test(e):i=c.promotionDetail;break;case/\/v2\/promotion\/gift\/*/gi.test(e):i=c.promotionGift;break;case/\/v2\/shop\/storeList\/*/gi.test(e):i=c.shopStoreList;break;case/\/shop\/storeDetail\/*/gi.test(e):i=c.shopStoreDetail;break;case/\/ecoupon\/list\/coupon\/*/gi.test(e):i=c.couponList;break;case/\/coupon\/detail\/*/gi.test(e):i=c.couponDetail;break;case/\/shop\/hotSaleRanking\/*/gi.test(e):i=c.hotSaleRanking;break;case/\/search\/*/gi.test(e):i=c.search;break;case/\/v2\/vipMember\/profile\/*/gi.test(e):i=c.vipMemberProfile;break;case/\/hidden\/*/gi.test(e):i=c.hidden;break;case/\/page\/*/gi.test(e):i=c.custom;break;case/\/v2\/promotionengine\/detail\/*/gi.test(e):i=c.promotionEngine;break;case/\/v2\/shop\/InfoModuleList\/*/gi.test(e):i="#/AlbumList"===l?c.infoModuleAlbumList:"#/ArticleList"===l?c.infoModuleArticleList:"#/VideoList"===l?c.infoModuleVideoList:c.infoModuleList;break;case/\/Article\/Detail\/*/gi.test(e):i=c.infoModuleArticleDetail;break;case/\/Album\/Detail\/*/gi.test(e):i=c.infoModuleAlbumDetail;break;case/\/Video\/Detail\/*/gi.test(e):i=c.infoModuleVideoDetail;break;case/\/v2\/official\/newestSalePage\/*/gi.test(e):i=c.newestSalePage;break;case/\/fsevent\/*/gi.test(e):i=c.fsEvent;break;case/\/v2\/LoyaltyPoint\/ECouponList\/*/gi.test(e):i=c.loyaltyPointECouponList;break;case/\/v2\/LoyaltyPoint\/index\/*/gi.test(e):i=c.loyaltyPointCenter;break;case/\/v2\/LoyaltyPoint\/ECouponDetail\/*/gi.test(e):i=/eCouponId=/gi.test(o)?c.ecouponIdForLoyaltyPoint:c.loyaltyPointECouponDetail;break;case/\/tag\/category\/*/gi.test(e):i=c.tagCategory;break;case/\/collectionList\/*/gi.test(e):i=t.PageInfoMap.get(a.PAGE_TYPE.COLLECTION_VIEW_ALL);break;case/\/collectionDetail\/*/gi.test(e):i=t.PageInfoMap.get(a.PAGE_TYPE.COLLECTION_DETAIL);break;case/\/ecoupon\/howToUse\/*/gi.test(e):i=c.eCouponHowToUse;break;case/\/v2\/ShoppingCart\/BatchInsert*/gi.test(e):i=c.shoppingCartBatchInsert;break;case/\/v2\/ShoppingCart*/gi.test(e):i=c.shoppingCart;break;case/\/v2\/pay\/index\/*|\/v2\/pay$/gi.test(e):i=c.payIndexPageInfo;break;case/\/v2\/pay\/landing\/*/gi.test(e):i=c.payLandingPageInfo;break;case/\/v2\/pay\/finish\/*/gi.test(e):var s=(null==o?void 0:o.length)?o.slice(1).split("&").reduce((function(e,t){var n,r=t.split("="),i=r[0],o=r[1];return Object.assign(e,((n={})[i]=o,n))}),{}):null;i=(null==s?void 0:s.pageType)&&"express"===s.pageType?c.payFinishExpressCheckout:c.payFinishPageInfo;break;case/\/app\/download\/*/gi.test(e):i=c.appDownloadPage;break;case/\/v2\/LocationPickup\/SelectLocation\/*/gi.test(e):i=c.locationPickupSelectLocation;break;case/\/TraceSalePageList\/TraceSalePageList\/*/gi.test(e):i=c.traceSalePageList;break;case/\/Official\/BrandStory\/*/gi.test(e):i=c.officialBrandStory;break;case/\/shop\/introduce\/*/gi.test(e):/t=1/gi.test(o)?i=c.shopIntroducePageInfo:/t=2/gi.test(o)?i=c.shopIntroduceShoppingGuide:/t=3/gi.test(o)&&(i=c.shopIntroduceCustomerService);break;case/\/Help\/ServiceInfo\/*/gi.test(e):i=c.helpServicePageInfo;break;case/\/MyAccount\/Privacy\/*/gi.test(e):i=c.myAccountPrivacy;break;case/\/MyAccount\/VipMemberBenefits\/*/gi.test(e):i=c.myAccountVipMemberBenefits;break;case/\/MyAccount\/LocationBooks\/*/gi.test(e):i=c.myAccountLocationBooksPageInfo;break;case/\/V2\/TradesOrder\/TradesOrderList*/gi.test(e):i=c.tradesOrderList;break;case/\/V2\/TradesOrder\/TradesOrderDetail*/gi.test(e):i=c.tradesOrderDetail;break;case/\/ECoupon\/MyECoupon\/*/gi.test(e):i=c.ecouponMyEcoupon;break;case/\/ECoupon\/ECouponHistory\/*/gi.test(e):i=c.eCouponHistory;break;case/\/Question\/CustomerServiceCenter\/*/gi.test(e):i=c.questionCustomerServiceCenter;break;case/\/MyAccount\/InvoiceList\/*/gi.test(e):i=c.invoiceListPageInfo;break;case/\/V2\/MyAccount\/ChangePassword\/*/gi.test(e):i=c.myAccountChangePassword;break;case/\/V2\/VipMember\/AgreePrivacy\/*/gi.test(e):i=c.agreePrivacyPageInfo;break;case/\/V2\/VipMember\/EmailNotification\/*/gi.test(e):i=c.emailNotificationPageInfo;break;case/\/V2\/VipMember\/*/gi.test(e):i=c.vipMemberIndexPageInfo;break;case/\/Login\/Index\/*/gi.test(e):i=c.loginIndexPageInfo;break;case/\/Question\/QuestionInsert\/*/gi.test(e):i=c.questionInsertPageInfo;break;case/\/v2\/browsingHistory\/*/gi.test(e):i=c.browsingHistory;break;case/\/v2\/CancelGoodsRequest\/list*/gi.test(e):i=c.cancelGoodsRequest;break;case/\/v2\/ReturnGoodsRequest\/list*/gi.test(e):i=c.returnGoodsRequest;break;case/\/v2\/ChangeGoodsRequest\/list*/gi.test(e):i=c.changeGoodsRequest;break;case/\/V2\/GameModule\/*/gi.test(e):i=c.gameModuleEvent;break;case/\/v2\/BackInStockAlertList\/*/gi.test(e):i=c.backInStockAlertList;break;case/\/v2\/SalePageComment\/list*/gi.test(e):i=c.salePageCommentList;break;case/(\/cms\/liff\/tall\/expressSalePage\/*)|(\/catalog\/expressSalePage\/*)/gi.test(e):i=c.expressSalePage;break;case/\/v2\/checkouts\/*/gi.test(e):i=c.expressCheckout;break;case/\/v2\/Static\/Official\/OfficialPreparation/gi.test(e):i=c.preparation;break;case/\/service_info/gi.test(e):i=c.serviceInfo;break;case/\/V2\/Static\/Official\/Officialclose/gi.test(e):i=c.officialClosed;break;case/\/v2\/Static\/Activity\/Activityclosed/gi.test(e):i=c.activityClosed;break;case/\/v2\/Static\/Activity\/ActivityPreparation/gi.test(e):i=c.activityPreparation;break;case/\/404V2/gi.test(e):i=c.notFoundPage;break;case/\/V2\/MyAccount\/InvitingFriends/gi.test(e):i=c.invitingFriends;break;case/\/V2\/MyAccount\/InvitingHistory/gi.test(e):i=c.invitingHistory;break;case/\/catalog\/inlineWrapper/gi.test(e):i=c.inlineWrapper;break;case/\/catalog\/stream/gi.test(e):i=c.streamPage;break;case/\/V2\/Brand$/gi.test(e):i=c.brandIndexWrapper;break;case/\/V2\/Brand\/\S/gi.test(e):i=c.brandPageWrapper;break;case/\/V2\/CRMShopMemberCard\/Description/gi.test(e):i=c.crmShopMemberCardDescPage;break;case/\/v2\/MembershipCard\/OuterSalesOrder\/*/gi.test(e):i=l.includes("#/consumption-history/online")?c.consumptionHistoryOnline:l.includes("#/consumption-history/offline")?c.consumptionHistoryOffline:"#/wallet-history/all"===l?c.walletHistoryAll:"#/wallet-history/card"===l?c.walletHistoryCard:"#/wallet-history/topped"===l?c.walletHistoryTopped:"#/point-history"===l?c.pointHistory:"#/stampRecord-history"===l?c.stampRecordHistory:c.outerSalesOrder;break;case/\/AddOnsSalePage\/Index\/*/gi.test(e):i=c.addOnsSalePage;break;case/\/AddOnsSalePage\/ExtraPurchaseList\/*/gi.test(e):i=c.extraPurchaseList}return i||c.unknownPageInfo};t.getPageInfoByPageType=function(e){return t.PageInfoMap.get(e)||c.unknownPageInfo};t.getPageUrl=function(e,n,r){void 0===r&&(r={id:""});var i="//"+e,o=(t.PageInfoMap.get(n)||{}).routerPathFunc,a=o?o(r):"";return n.includes("P78_")?i+"/catalog/inlineWrapper/"+("RESERVATION"===n.split("_")[1]?"TableReservation":"TakeoutOrDelivery"):""+i+a}},"./node_modules/@91app/agatha-client/lib/index.cjs.js":e=>{"use strict";e.exports=class{constructor({projectId:e,logName:t,labels:n,clientInfo:r,onSuccess:i,onError:o}){this.projectId=e,this.logName=t,this.labels=n,this.clientInfo=r,this.onSuccess=i,this.onError=o}sendLogs(e){fetch("https://agatha-log-service-kk33tpavpa-de.a.run.app/v1/log",{headers:{"Content-Type":"application/json"},body:JSON.stringify({projectId:this.projectId,logName:this.logName,labels:this.labels,clientInfo:this.clientInfo,entries:e}),method:"POST"}).then((()=>{this.onSuccess&&this.onSuccess(e)})).catch((t=>{this.onError&&this.onError(t,e)}))}updateClientInfo(e){this.clientInfo=Object.assign(Object.assign({},this.clientInfo),e)}}},"./node_modules/@91app/nine1.lib.jsi/dist/index.js":(e,t,n)=>{"use strict";n.d(t,{Ay:()=>U,xI:()=>p});var r=function(){return r=Object.assign||function(e){for(var t,n=1,r=arguments.length;n<r;n++)for(var i in t=arguments[n])Object.prototype.hasOwnProperty.call(t,i)&&(e[i]=t[i]);return e},r.apply(this,arguments)};function i(e,t,n,r){return new(n||(n=Promise))((function(i,o){function a(e){try{l(r.next(e))}catch(e){o(e)}}function c(e){try{l(r.throw(e))}catch(e){o(e)}}function l(e){var t;e.done?i(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,c)}l((r=r.apply(e,t||[])).next())}))}function o(e,t){var n,r,i,o,a={label:0,sent:function(){if(1&i[0])throw i[1];return i[1]},trys:[],ops:[]};return o={next:c(0),throw:c(1),return:c(2)},"function"==typeof Symbol&&(o[Symbol.iterator]=function(){return this}),o;function c(c){return function(l){return function(c){if(n)throw new TypeError("Generator is already executing.");for(;o&&(o=0,c[0]&&(a=0)),a;)try{if(n=1,r&&(i=2&c[0]?r.return:c[0]?r.throw||((i=r.return)&&i.call(r),0):r.next)&&!(i=i.call(r,c[1])).done)return i;switch(r=0,i&&(c=[2&c[0],i.value]),c[0]){case 0:case 1:i=c;break;case 4:return a.label++,{value:c[1],done:!1};case 5:a.label++,r=c[1],c=[0];continue;case 7:c=a.ops.pop(),a.trys.pop();continue;default:if(!((i=(i=a.trys).length>0&&i[i.length-1])||6!==c[0]&&2!==c[0])){a=0;continue}if(3===c[0]&&(!i||c[1]>i[0]&&c[1]<i[3])){a.label=c[1];break}if(6===c[0]&&a.label<i[1]){a.label=i[1],i=c;break}if(i&&a.label<i[2]){a.label=i[2],a.ops.push(c);break}i[2]&&a.ops.pop(),a.trys.pop();continue}c=t.call(e,a)}catch(e){c=[6,e],r=0}finally{n=i=0}if(5&c[0])throw c[1];return{value:c[0]?c[1]:void 0,done:!0}}([c,l])}}}"function"==typeof SuppressedError&&SuppressedError;var a,c,l,s,u,g,d,I,p,b,m,C=function(){function e(){this.listeners=new Set}return e.prototype.subscribe=function(e){this.listeners.add(e)},e.prototype.unsubscribe=function(e){this.listeners.delete(e)},e.prototype.notify=function(e){this.listeners.forEach((function(t){return t(e)}))},e.prototype.clear=function(){this.listeners.clear()},e}();!function(e){e.PXPay="PXPay",e.Line="Line",e.JKOPay="JKOPay",e.FBMessenger="FBMessenger",e.PayMe="PayMe",e.GooglePay="GooglePay",e.ICashPay="ICashPay",e.EasyWallet="EasyWallet",e.WeChatPayHK="WeChatPayHK",e.PoyaPay="PoyaPay",e.Atome="Atome",e.BoCPay="BoCPay",e.PXPayPlus="PXPayPlus",e.OpenWallet="OpenWallet",e.FamilyMartOnlinePay="FamilyMartOnlinePay"}(a||(a={})),function(e){e.GetAppInfo="GetAppInfo",e.TriggerWeb="TriggerWeb",e.TriggerApp="TriggerApp",e.Payment="Payment",e.SetApp="SetApp",e.SendTracking="SendTracking"}(c||(c={})),function(e){e.Check3rdPartyAppStatus="Check3rdPartyAppStatus",e.GetAppVersion="GetAppVersion"}(l||(l={})),function(e){e.LaunchApplePay="LaunchApplePay",e.LaunchEasyWallet="LaunchEasyWallet",e.LaunchGooglePay="LaunchGooglePay",e.LaunchAliPay="LaunchAliPay",e.LaunchWeChatPay="LaunchWeChatPay",e.Launch2C2P="Launch2C2P",e.SetStripeClientSecret="SetStripeClientSecret"}(s||(s={})),function(e){e.Launch3rdPartyApp="Launch3rdPartyApp",e.RequestInstall3rdPartyApp="RequestInstall3rdPartyApp",e.CloseWebView="CloseWebView",e.UpdateCurrencyRate="UpdateCurrencyRate",e.AddToWishList="AddToWishList",e.RemoveFromWishList="RemoveFromWishList",e.AddToBasket="AddToBasket",e.ShowToast="ShowToast",e.ShowPopup="ShowPopup",e.Redirect="Redirect"}(u||(u={})),function(e){e.HeaderBackAction="HeaderBackAction"}(g||(g={})),function(e){e.CartViewed="CartViewed",e.CheckoutProgress="CheckoutProgress",e.AddToCart="AddToCart",e.RemoveFromCart="RemoveFromCart",e.AddToWishList="AddToWishList",e.RemoveFromWishList="RemoveFromWishList",e.BeginCheckOut="BeginCheckOut",e.PaymentMethod="PaymentMethod",e.ShippingMethod="ShippingMethod",e.EcommercePurchase="EcommercePurchase",e.TrackCart="TrackCart",e.SelectContent="SelectContent",e.CartCleared="CartCleared",e.Refund="Refund",e.CancelOrder="CancelOrder",e.PageViewed="PageViewed"}(d||(d={})),function(e){e[e.view_cart=1]="view_cart",e[e.confirm_cart_list=2]="confirm_cart_list"}(I||(I={})),function(e){e.OnBackPressed="OnBackPressed",e.RefreshOuterSalesOrder="RefreshOuterSalesOrder",e.RefreshShoppingCart="RefreshShoppingCart"}(p||(p={})),function(e){e.success="success",e.alert="alert",e.error="error",e.plain="plain"}(b||(b={}));var h,B,A,y,f,G,Q={functionVersion:"23.7.0",events:(m={},m[l.Check3rdPartyAppStatus]={version:"23.7.0"},m[l.GetAppVersion]={version:"23.7.0"},m)},F={functionVersion:"23.7.0",events:(h={},h[s.Launch2C2P]={version:"24.2.0"},h[s.LaunchAliPay]={version:"23.9.0"},h[s.LaunchApplePay]={version:"23.7.0",paymentServiceProvider:"24.4.0"},h[s.LaunchEasyWallet]={version:"23.7.0"},h[s.LaunchGooglePay]={version:"23.7.0",paymentServiceProvider:"24.13.0"},h[s.LaunchWeChatPay]={version:"23.9.0"},h[s.SetStripeClientSecret]={version:"24.13.0"},h)},v={functionVersion:"23.7.0",events:(B={},B[d.AddToCart]={version:"23.7.0"},B[d.AddToWishList]={version:"23.7.0"},B[d.BeginCheckOut]={version:"23.7.0"},B[d.CancelOrder]={version:"24.9.0"},B[d.CartCleared]={version:"23.7.0"},B[d.CartViewed]={version:"23.7.0"},B[d.CheckoutProgress]={version:"23.7.0"},B[d.EcommercePurchase]={version:"23.7.0"},B[d.PaymentMethod]={version:"23.7.0"},B[d.Refund]={version:"24.9.0"},B[d.RemoveFromCart]={version:"23.11.0"},B[d.RemoveFromWishList]={version:"23.7.0"},B[d.SelectContent]={version:"23.9.0"},B[d.ShippingMethod]={version:"23.7.0"},B[d.TrackCart]={version:"23.7.0"},B[d.PageViewed]={version:"24.4.0"},B)},Z={functionVersion:"23.7.0",events:(A={},A[g.HeaderBackAction]={version:"23.7.0"},A)},E={functionVersion:"23.7.0",events:(y={},y[u.AddToBasket]={version:"24.12.0"},y[u.AddToWishList]={version:"23.7.0"},y[u.CloseWebView]={version:"23.7.0"},y[u.Launch3rdPartyApp]={version:"23.7.0"},y[u.Redirect]={version:"24.3.0"},y[u.RemoveFromWishList]={version:"23.7.0"},y[u.RequestInstall3rdPartyApp]={version:"23.7.0"},y[u.ShowPopup]={version:"24.12.0"},y[u.ShowToast]={version:"24.12.0"},y[u.UpdateCurrencyRate]={version:"24.3.0"},y)},S={GetAppInfo:Q,TriggerWeb:{functionVersion:"23.7.0",events:(f={},f[p.OnBackPressed]={version:"23.7.0"},f[p.RefreshOuterSalesOrder]={version:"23.7.0"},f[p.RefreshShoppingCart]={version:"23.7.0"},f)},TriggerApp:E,Payment:F,SetApp:Z,SendTracking:v},X=function(e,t,n){var r,i;void 0===n&&(n="version");var o=S[e];return null!==(i=null===(r=null==o?void 0:o.events[t])||void 0===r?void 0:r[n])&&void 0!==i?i:null};!function(e){e[e.Greater=1]="Greater",e[e.Less=-1]="Less",e[e.Equal=0]="Equal"}(G||(G={}));var T=function(e){var t=new RegExp(/^\d+\.\d+(\.\d+)?[a-z]?$/i);return!!e&&t.test(e)},x=function(e,t,n){try{var r=function(e,t){if(!(e&&t&&T(e)&&T(t)))throw new Error("Invalid argument, not a valid app version");for(var n=e.split("."),r=t.split("."),i=0;i<Math.max(n.length,r.length);i+=1){var o=n[i]?Number(n[i]):0,a=r[i]?Number(r[i]):0;if(o>a)return G.Greater;if(o<a)return G.Less;var c=n[i]&&/[a-z]/i.test(n[i])?n[i].replace(/\d/g,""):"",l=r[i]&&/[a-z]/i.test(r[i])?r[i].replace(/\d/g,""):"";if(c>l)return G.Greater;if(c<l)return G.Less}return G.Equal}(e,t);switch(n){case">":return r===G.Greater;case"<":return r===G.Less;case"=":return r===G.Equal;case">=":return r!==G.Less;case"<=":return r!==G.Greater;default:throw new Error("Invalid operator: ".concat(n))}}catch(e){return!1}},U=function(){function e(){var e,t=this;this.appVersion=null,this.check3rdPartyAppStatus=function(e){return i(t,void 0,void 0,(function(){var t;return o(this,(function(n){return t=this.getPayloadString(l.Check3rdPartyAppStatus,{appName:e}),[2,this.getAppInfo(t)]}))}))},this.getAppVersion=function(){return i(t,void 0,void 0,(function(){var e,t,n,i,a,c,s,u;return o(this,(function(o){switch(o.label){case 0:if(this.appVersion)return[2,this.appVersion];o.label=1;case 1:return o.trys.push([1,3,,4]),e=this.getPayloadString(l.GetAppVersion),[4,this.getAppInfo(e)];case 2:if(t=o.sent())return n=r(r({},t),{appVer:null!==(c=t.appVer)&&void 0!==c?c:t.appVersion}),this.appVersion=n,[2,n];if(i=null!==(u=null===(s=RegExp("(^|; )appVer=([^;]*)").exec(document.cookie))||void 0===s?void 0:s[2])&&void 0!==u?u:null)return[2,{appVer:i,osVer:"",browserUserAgent:""}];throw new Error("App version not found");case 3:return a=o.sent(),this.handleError(a,l.GetAppVersion),[2,null];case 4:return[2]}}))}))},this.requestInstall3rdPartyApp=function(e){var n=t.getPayloadString(u.RequestInstall3rdPartyApp,{appName:e});t.triggerApp(n)},this.launch3rdPartyApp=function(e){var n=t.getPayloadString(u.Launch3rdPartyApp,{appName:e});t.triggerApp(n)},this.TriggerAppPageView=function(e,n,r,i,o){var a={eventType:"PageViewed",data:{viewType:e,viewTitle:n,viewId:r||"",isPopupView:!1,viewFrom:i||"",contentSource:o||""}},c=JSON.stringify(a);t.sendTracking(c)},this.viewItemList=function(e){var n=e.viewType,r=e.viewTitle,i=e.viewId,o=e.contentType,a={eventType:"ViewItemList",data:{viewType:n,viewId:i,contentSource:e.contentSource,contentType:o,items:e.items,viewTitle:r||""}},c=JSON.stringify(a);t.sendTracking(c)},this.cartViewed=function(e){var n=t.getPayloadString(d.CartViewed,e);t.sendTracking(n)},this.checkoutProgress=function(e){var n=t.getPayloadString(d.CheckoutProgress,e);t.sendTracking(n)},this.beginCheckOut=function(e){var n=t.getPayloadString(d.BeginCheckOut,e);t.sendTracking(n)},this.addToCart=function(e){var n=t.getPayloadString(d.AddToCart,e);t.sendTracking(n)},this.removeFromCart=function(e){var n=t.getPayloadString(d.RemoveFromCart,e);t.sendTracking(n)},this.addToWishList=function(e){var n=t.getPayloadString(d.AddToWishList,e);t.sendTracking(n)},this.removeFromWishList=function(e){var n=t.getPayloadString(d.RemoveFromWishList,e);t.sendTracking(n)},this.paymentMethod=function(e){var n=t.getPayloadString(d.PaymentMethod,e);t.sendTracking(n)},this.shippingMethod=function(e){var n=t.getPayloadString(d.ShippingMethod,e);t.sendTracking(n)},this.ecommercePurchase=function(e){var n=t.getPayloadString(d.EcommercePurchase,e);t.sendTracking(n)},this.trackCart=function(e){var n=t.getPayloadString(d.TrackCart,e);t.sendTracking(n)},this.selectContent=function(e){var n=t.getPayloadString(d.SelectContent,e);t.sendTracking(n)},this.cartCleared=function(){var e=t.getPayloadString(d.CartCleared);t.sendTracking(e)},this.refund=function(e){var n=t.getPayloadString(d.Refund,e);t.sendTracking(n)},this.cancelOrder=function(e){var n=t.getPayloadString(d.CancelOrder,e);t.sendTracking(n)},this.setAppHeaderIcon=function(e){var n=e.ios,r=e.android,i=t.isIOS?t.getPayloadString(n.eventType,n.data):t.getPayloadString(r.eventType,r.data);t.setApp(i)},this.closeWebView=function(){var e=t.getPayloadString(u.CloseWebView);t.triggerApp(e)},this.redirect=function(e){var n=t.getPayloadString(u.Redirect,e);t.triggerApp(n)},this.triggerWebAction=function(e){window.triggerWeb=null,window.triggerWeb=function(t){return e(t)}},this.launchEasyWallet=function(e){return i(t,void 0,void 0,(function(){var t,n;return o(this,(function(r){switch(r.label){case 0:return r.trys.push([0,2,,3]),t=this.getPayloadString(s.LaunchEasyWallet,{url:e},"EasyWallet"),[4,this.payment(t)];case 1:return r.sent(),[3,3];case 2:throw n=r.sent(),this.handleError(n,s.LaunchEasyWallet),n;case 3:return[2]}}))}))},this.launchApplePay=function(e,n){return i(t,void 0,void 0,(function(){var t,r,i,a,l;return o(this,(function(o){switch(o.label){case 0:t={totalPayment:e.toString()},o.label=1;case 1:return o.trys.push([1,4,,5]),[4,this.getAppVersion()];case 2:return r=o.sent(),i=X(c.Payment,s.LaunchApplePay,"paymentServiceProvider"),(null==r?void 0:r.appVer)&&i&&x(r.appVer,i,">=")&&Object.assign(t,{paymentServiceProvider:n}),a=this.getPayloadString(s.LaunchApplePay,t,"ApplePay"),[4,this.payment(a)];case 3:return o.sent(),[3,5];case 4:throw l=o.sent(),this.handleError(l,s.LaunchApplePay),l;case 5:return[2]}}))}))},this.setStripeClientSecret=function(e){return i(t,void 0,void 0,(function(){var t,n;return o(this,(function(r){switch(r.label){case 0:return r.trys.push([0,2,,3]),t=this.getPayloadString(s.SetStripeClientSecret,e),[4,this.payment(t)];case 1:return r.sent(),[3,3];case 2:throw n=r.sent(),this.handleError(n,s.SetStripeClientSecret),n;case 3:return[2]}}))}))},this.launchGooglePay=function(e){return i(t,void 0,void 0,(function(){var t,n,r;return o(this,(function(i){switch(i.label){case 0:t={totalPayment:e.toString()},i.label=1;case 1:return i.trys.push([1,3,,4]),n=this.getPayloadString(s.LaunchGooglePay,t,"GooglePay"),[4,this.payment(n)];case 2:return i.sent(),[3,4];case 3:throw r=i.sent(),this.handleError(r,s.LaunchGooglePay),r;case 4:return[2]}}))}))},this.launchAliPay=function(e,n){return i(t,void 0,void 0,(function(){var t,r;return o(this,(function(i){switch(i.label){case 0:return i.trys.push([0,2,,3]),t=this.getPayloadString(s.LaunchAliPay,{launchUrl:e,payChannelUrl:n},"AliPay"),[4,this.payment(t)];case 1:return i.sent(),[3,3];case 2:throw r=i.sent(),this.handleError(r,s.LaunchAliPay),r;case 3:return[2]}}))}))},this.launchWeChatPay=function(e,n){return i(t,void 0,void 0,(function(){var t,r;return o(this,(function(i){switch(i.label){case 0:return i.trys.push([0,2,,3]),t=this.getPayloadString(s.LaunchWeChatPay,{launchUrl:e,payChannelUrl:n},"WeChatPay"),[4,this.payment(t)];case 1:return i.sent(),[3,3];case 2:throw r=i.sent(),this.handleError(r,s.LaunchWeChatPay),r;case 3:return[2]}}))}))},this.updateCurrencyRate=function(e){var n=t.getPayloadString(u.UpdateCurrencyRate,{currencyRates:e});t.triggerApp(n)},this.launch2C2P=function(e){return i(t,void 0,void 0,(function(){var t,n;return o(this,(function(r){switch(r.label){case 0:return r.trys.push([0,2,,3]),t=this.getPayloadString(s.Launch2C2P,{launchUrl:e},"2C2P"),[4,this.payment(t)];case 1:return r.sent(),[3,3];case 2:throw n=r.sent(),this.handleError(n,s.Launch2C2P),n;case 3:return[2]}}))}))},this.onJsiResult=function(e){window.onJsiResult=null,window.onJsiResult=function(t){return e(t)}},this.addToBasket=function(e){var n=t.getPayloadString(u.AddToBasket,e);t.triggerApp(n)},this.showToast=function(e){var n=t.getPayloadString(u.ShowToast,e);t.triggerApp(n)},this.showPopup=function(e){var n=t.getPayloadString(u.ShowPopup,e.showPopupData,e.requestCode);return t.triggerAppWithAsyncResponse(n)},this.addToWishListJsi=function(e){var n=t.getPayloadString(u.AddToWishList,{itemId:e});t.triggerApp(n)},this.removeFromWishListJsi=function(e){var n=t.getPayloadString(u.RemoveFromWishList,{itemId:e});t.triggerApp(n)},this.androidExecutor=window.android||null,this.iOSExecutor=(null===(e=window.webkit)||void 0===e?void 0:e.messageHandlers)||null,this.errorHandler=new C}return Object.defineProperty(e.prototype,"isAndroid",{get:function(){return!!this.androidExecutor},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"isIOS",{get:function(){return!!this.iOSExecutor},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"executableOS",{get:function(){return{android:!!this.androidExecutor,iOS:!!this.iOSExecutor}},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"executable",{get:function(){return this.isAndroid||this.isIOS},enumerable:!1,configurable:!0}),e.prototype.getPayloadString=function(e,t,n){var r={eventType:e,data:t,requestCode:n};return JSON.stringify(r)},e.prototype.getAppInfo=function(e){var t,n,r,a,c;return i(this,void 0,void 0,(function(){var i;return o(this,(function(o){switch(o.label){case 0:return this.isIOS?[4,null===(r=null===(n=null===(t=this.iOSExecutor)||void 0===t?void 0:t.getAppInfo)||void 0===n?void 0:n.postMessage)||void 0===r?void 0:r.call(n,e)]:[3,2];case 1:return[2,(i=o.sent())?JSON.parse(i):null];case 2:if(this.isAndroid)return[2,(i=null===(c=null===(a=this.androidExecutor)||void 0===a?void 0:a.getAppInfo)||void 0===c?void 0:c.call(a,e))?JSON.parse(i):null];o.label=3;case 3:return[2,null]}}))}))},e.prototype.triggerApp=function(e){var t,n,r,i,o;this.isIOS?null===(r=null===(n=null===(t=this.iOSExecutor)||void 0===t?void 0:t.triggerApp)||void 0===n?void 0:n.postMessage)||void 0===r||r.call(n,e):this.isAndroid&&(null===(o=null===(i=this.androidExecutor)||void 0===i?void 0:i.triggerApp)||void 0===o||o.call(i,e))},e.prototype.triggerAppWithAsyncResponse=function(e){var t,n,r;try{return this.isIOS&&(null===(n=null===(t=this.iOSExecutor)||void 0===t?void 0:t.triggerApp)||void 0===n?void 0:n.postMessage)?this.iOSExecutor.triggerApp.postMessage(e):this.isAndroid&&(null===(r=this.androidExecutor)||void 0===r?void 0:r.triggerApp)?this.androidExecutor.triggerApp(e):Promise.reject(new Error("No executor found"))}catch(e){return Promise.reject(e)}},e.prototype.sendTracking=function(e){var t,n,r,i,o;this.isIOS?null===(r=null===(n=null===(t=this.iOSExecutor)||void 0===t?void 0:t.sendTracking)||void 0===n?void 0:n.postMessage)||void 0===r||r.call(n,e):this.isAndroid&&(null===(o=null===(i=this.androidExecutor)||void 0===i?void 0:i.sendTracking)||void 0===o||o.call(i,e))},e.prototype.setApp=function(e){var t,n,r,i,o;this.isIOS?null===(r=null===(n=null===(t=this.iOSExecutor)||void 0===t?void 0:t.setApp)||void 0===n?void 0:n.postMessage)||void 0===r||r.call(n,e):this.isAndroid&&(null===(o=null===(i=this.androidExecutor)||void 0===i?void 0:i.setApp)||void 0===o||o.call(i,e))},e.prototype.payment=function(e){var t,n,r;return i(this,void 0,void 0,(function(){var i;return o(this,(function(o){switch(o.label){case 0:return(i=JSON.parse(e).eventType)!==s.LaunchApplePay&&i!==s.LaunchGooglePay?[3,2]:[4,this.checkVersion(c.Payment,i)];case 1:o.sent(),o.label=2;case 2:return this.isIOS&&(null===(n=null===(t=this.iOSExecutor)||void 0===t?void 0:t.payment)||void 0===n?void 0:n.postMessage)?[4,this.iOSExecutor.payment.postMessage(e)]:[3,4];case 3:return[2,o.sent()];case 4:return this.isAndroid&&(null===(r=this.androidExecutor)||void 0===r?void 0:r.payment)?[4,this.androidExecutor.payment(e)]:[3,6];case 5:return[2,o.sent()];case 6:throw new Error("Payment method not supported on this platform")}}))}))},e.prototype.checkVersion=function(e,t){return i(this,void 0,void 0,(function(){var n,r,i;return o(this,(function(o){switch(o.label){case 0:return[4,this.getAppVersion()];case 1:if(n=o.sent(),r=function(e){var t,n;return null!==(n=null===(t=S[e])||void 0===t?void 0:t.functionVersion)&&void 0!==n?n:null}(e),i=X(e,t),!(null==n?void 0:n.appVer))throw new Error("Unable to get app version.");if(!x(n.appVer,r,">="))throw new Error("App version (".concat(n.appVer,") does not support function version (").concat(r,")."));if(!x(n.appVer,i,">="))throw new Error("App version (".concat(n.appVer,") does not support event version (").concat(i,")."));return[2]}}))}))},e.prototype.onError=function(e){this.errorHandler.subscribe(e)},e.prototype.handleError=function(e,t){var n="An unknown error occurred";e instanceof Error?n=e.message:"string"==typeof e&&(n=e),this.errorHandler.notify(new Error("Jsi Error: ".concat(t," - ").concat(n)))},e.prototype.dispose=function(){this.errorHandler.clear()},e}()},"./node_modules/@91app/nine1.lib.key2image/dist/index.mjs":(e,t,n)=>{"use strict";n.d(t,{e:()=>r});var r=(e=>(e.NO_DATA="no-data",e.NO_SHOPPING="no-shopping",e.NO_ITEM="no-item",e.NO_COUPON="no-coupon",e.NO_RESULT="no-result",e.NO_EVENT="no-event",e.NO_HISTORY="no-history",e.NO_FAVORITE="no-favorite",e.NO_NOTIFICATION="no-notification",e.NO_MESSAGE="no-message",e.NO_SERVICE="no-service",e.NO_CARD="no-card",e.NO_POINT="no-point",e.NO_LOCATION="no-location",e.NO_MEMBER_LEVEL="no-member-level",e.NO_RANKING="no-ranking",e.ERROR_PAGE="error-page",e.ERROR_CONNECTION="error-connection",e.ERROR_PERMISSION="error-permission",e.ERROR_MAINTAIN="error-maintain",e.INFO_ATT="info-att",e.INFO_GIFT="info-gift",e.INFO_APPPUSH="info-apppush",e.INFO_LOCATION="info-location",e.INFO_SUCCESS="info-success",e.INFO_TASKS="info-tasks",e.INFO_COUPON="info-coupon",e.INFO_INVITATION="info-invitation",e.INFO_REWARD="info-reward",e.INFO_WALLET="info-wallet",e.INFO_LOCK="info-lock",e.INFO_ALERT="info-alert",e.LINE_ADD="line-add",e.LINE_COUPON="line-coupon",e))(r||{})}}]);