{"version":3,"sources":["webpack:///webpack/bootstrap","webpack:///./cartridges/app_storefront_base/cartridge/client/default/js/checkout/address.js","webpack:///./cartridges/app_storefront_base/cartridge/client/default/js/checkout/billing.js","webpack:///./cartridges/app_storefront_base/cartridge/client/default/js/components/cleave.js","webpack:///./cartridges/app_storefront_base/cartridge/client/default/js/components/focus.js","webpack:///./cartridges/app_storefront_base/cartridge/client/default/js/product/base.js","webpack:///./cartridges/int_paypal/cartridge/client/default/js/components/loader.js","webpack:///./cartridges/int_paypal/cartridge/client/default/js/helpers/api.js","webpack:///./cartridges/int_paypal/cartridge/client/default/js/helpers/helper.js","webpack:///./cartridges/int_paypal/cartridge/client/default/js/models/alertHandler.js","webpack:///./cartridges/int_paypal/cartridge/client/default/js/models/billingAgreement/payPalBase.js","webpack:///./cartridges/int_paypal/cartridge/client/default/js/models/billingAgreement/payPalProduct.js","webpack:///./cartridges/int_paypal/cartridge/client/default/js/models/buttons/payPalBase.js","webpack:///./cartridges/int_paypal/cartridge/client/default/js/models/buttons/payPalExpress.js","webpack:///./cartridges/int_paypal/cartridge/client/default/js/models/buttons/payPalProduct.js","webpack:///./cartridges/int_paypal/cartridge/client/default/js/models/sessionStorage.js","webpack:///./cartridges/int_paypal/cartridge/client/default/js/pvp.js","webpack:///./node_modules/cleave.js/dist/cleave-esm.js","webpack:///(webpack)/buildin/global.js"],"names":["_typeof","o","Symbol","iterator","constructor","prototype","populateAddressSummary","parentSelector","address","$","each","attr","val","text","optionValueForAddress","shipping","selected","order","options","safeOptions","isBilling","type","className","isSelected","isNew","safeShipping","shippingAddress","billing","matchingAddressId","billingAddress","UUID","uuid","optionEl","title","resources","addNewAddress","firstName","push","lastName","address1","address2","city","state","stateCode","postalCode","selectedShippingMethod","displayName","length","join","newAddress","keyMap","key","mappedKey","mappedValue","value","giftObj","getAddressFieldsFromUI","form","countryCode","phone","module","exports","methods","showDetails","on","closest","find","removeClass","addClass","$el","parents","trigger","$option","$newTitle","prop","$newEl","parent","addressHelpers","require","cleave","updateBillingAddressSelector","customer","shippings","$billingAddressSelector","hasSelectedAddress","empty","append","shippingAddresses","forEach","aShipping","addresses","accountAddresses","ID","show","updateBillingAddress","orderEmail","validateAndUpdateBillingPaymentInstrument","payment","selectedPaymentInstruments","instrument","expirationMonth","expirationYear","data","setRawValue","updateBillingAddressFormValues","clearBillingAddressFormValues","updateBillingAddressSummary","updateBillingInformation","updatePaymentInformation","$paymentSummary","htmlToAppend","cardType","maskedCreditCardNumber","cardEnding","clearCreditCardForm","showBillingDetails","hideBillingDetails","selectBillingAddress","selectedOption","optionID","attrs","element","Object","keys","handleCreditCardNumber","santitizeForm","e","serializedForm","serializeData","callback","selectSavedPaymentInstrument","document","preventDefault","addNewPaymentInstrument","cancelNewPayment","clearBillingForm","paymentTabs","methodID","Cleave","default","cardFieldSelector","cardTypeSelector","creditCard","onCreditCardTypeChanged","creditCardTypes","visa","mastercard","amex","discover","unknown","indexOf","serializedArray","serializeArray","item","name","getRawValue","param","setTabNextFocus","focusParams","KEYCODE_TAB","isTabPressed","event","keyCode","firstFocusableEl","containerSelector","firstElementSelector","lastFocusableEl","lastElementSelector","is","nextToLastElementSelector","linkElements","shiftKey","focus","focusHelper","getPidValue","pid","hasClass","getQuantitySelector","quantitySelected","quantitySelectedModal","quantitySelectedPDP","undefined","getQuantitySelected","processSwatchValues","$productContainer","msgs","values","attrValue","$attrValue","id","$swatchButton","siblings","assistiveSelectedText","url","removeAttr","selectable","processNonSwatchValues","$attr","$defaultOption","resetUrl","updateAttrs","attrsWithSwatches","updateAvailability","response","availabilityValue","availabilityMessages","product","availability","messages","readyToOrder","info_selectforstock","message","getAttributesHtml","attributes","html","attributeGroup","attribute","label","updateOptions","optionsHtml","createCarousel","imgs","carousel","carouselId","i","alt","parseInt","index","appendTo","first","detach","handleVariantResponse","isChoiceOfBonusProducts","isVaraint","variationAttributes","productType","primaryImageUrls","images","large","$priceSelector","replaceWith","price","promotionsHtml","$selectButton","updateQuantities","quantities","map","quantity","attributeSelect","selectedValueUrl","container","ajax","method","success","spinner","stop","error","getAddToCartUrl","parseHtml","$html","parseHTML","body","footer","children","chooseBonusProducts","start","remove","bonusUrl","bonusChoiceRuleBased","showProductsUrlRuleBased","showProductsUrlListBased","htmlString","maxBonusItems","pliUUID","addToCartUrl","pageSize","labels","selectprods","dataType","parsedHtml","renderedTemplate","enterDialogMessage","closeButtonText","modal","handlePostCartAdd","messageType","newBonusDiscountLineItem","setTimeout","getChildProducts","childProducts","JSON","stringify","getOptions","$elOption","urlValue","selectedValueId","optionId","toArray","miniCartReportingUrl","editBonusProducts","focusChooseBonusProductModal","onClosingChooseBonusProductModal","trapChooseBonusProductModalFocus","colorAttribute","selectAttribute","currentTarget","addToCart","pidsObj","setPids","qty","reportingURL","selectBonusProduct","$choiceOfBonusProduct","maxPids","submittedQty","totalQty","valueId","selectedBonusProductHtml","removeBonusProduct","$selected","count","enableBonusProductSelection","available","showMoreBonusProducts","addBonusProductsToCart","$readyToOrderBonusProducts","queryString","pidsObject","bonusProducts","qtyOption","option","productId","errorMessage","msgSuccess","location","reload","containerElement","Constructor","containerEl","style","display","hide","loaderInstance","helper","$loaderContainer","querySelector","loader","CONTENT_TYPE_JSON","AlertHandlerModel","alertHandler","updateOrderData","isAddressNeedChange","arguments","getUrlWithCsrfToken","window","paypalUrls","href","placeOrderStage","err","parse","responseText","showError","errorMsg","transactionExpired","getBillingAgreementToken","isCartFlow","isSkipShippingAddress","createBillingAgreementToken","get","then","createBillingAgreementCall","createBillingAgreement","contentType","createCartBillingFormData","fieldsData","$paypalButton","cartBillingFormData","FormData","getElementById","cartBillingFields","getAttribute","entries","entry","_entry","_slicedToArray","field","returnFromCart","catch","validateStaticImageAddress","paypalStaticImage","fetch","validateStaticImage","headers","email","formFields","json","finishPayNowFlow","fundingSource","$usedPaymentMethod","pmName","savePaypalDefaultAddress","addressObject","isAccountPage","finishPayNowPayment","usedPaymentMethod","_ref","redirectUrl","processPayNowConfirmForm","getPaypalOrderId","paymentSourceData","async","responseJSON","validateHostedFields","fieldsState","arr","_arrayWithHoles","_iterableToArrayLimit","_unsupportedIterableToArray","_nonIterableRest","TypeError","minLen","_arrayLikeToArray","n","toString","call","slice","Array","from","test","len","arr2","r","l","t","u","a","f","next","done","return","isArray","defaultStyle","color","shape","layout","tagline","HIDE_CLASS","PRODUCT_DETAIL_CLASS","PDP_PRICE_VALUE_CLASS","INVALID_CLASSNAME","base","getPaypalButtonStyle","button","config","buttonConfigs","createConfirmForm","action","orderID","orderToken","splitUrl","split","paramsString","searchParams","URLSearchParams","formParam","submit","getPaymentMethodToLowerCase","paymentMethodName","paymentMethod","charAt","toLocaleLowerCase","createHTMLElementWithText","tag","createElement","textContent","appendHtml","selectedPaymentInstrument","paymentMethodId","isVenmoUsed","paypalConstants","PAYMENT_METHOD_ID_VENMO","classList","contains","availablePaymentMethods","PAYMENT_METHOD_ID_PAYPAL","PP_DEBIT_CREDIT_PAYMENT_TYPE","includes","accountHolderResource","paypalAccountHolder","priceTotal","amount","updateCheckoutView","add","innerHTML","appendChild","handleValidationAddressResult","status","showPaypalButton","paypalButton","hidePaypalButton","isProductZeroAmount","$element","getMiniCartQuantity","initPaypalButtonBehaviorOnPvp","isProductReadyToOrderElement","isProductReadyToOrder","addToCartButton","disabled","initPayPalBtnBehaviorOnSet","miniCartQuantityElement","addToCartButtons","querySelectorAll","miniCartQuantity","btn","parentElement","prices","isWrongAmount","some","parseFloat","target","getPaymentMethodName","getCsrfToken","urlInstance","URL","origin","addProductToCart","ppBtnSelector","productContainer","elOption","selectedValue","concat","ppBtn","bundleItems","setItems","ppBtnContainer","isGlobalButton","items","innerText","removeAllProductsFromCart","finally","_this","payer","api","that","usedPaymentMethodName","$payPalBtnContainer","billingAgreementID","billingAgreementPayerEmail","payer_info","payPalButton","redirectURL","tryParseJSON","result","FLASH_MESSAGE_ERROR_INTERNAL_SERVER","getValueOr","defaultValue","updateOptionDataAttribute","optionClassName","_ref2","_ref3","dataset","getBillingAddressAsString","billingAddressStringRepresentation","lastname","decodeURIComponent","displaySelectedStoredBillingAddress","billingAddressAsString","$storedCreditCardAddressOption","hidden","$selectedOption","baseBilling","storedCcAddressClassName","validateForm","checkValidity","invalidFields","reduce","accum","validity","valid","isValid","_classCallCheck","instance","_defineProperties","props","descriptor","enumerable","configurable","writable","defineProperty","_toPropertyKey","_createClass","protoProps","staticProps","arg","_toPrimitive","String","input","hint","prim","toPrimitive","res","Number","$flashMessagesContainer","$alertTemplate","createAlertMessage","alertMessage","alertType","$alertContainer","cloneNode","FLASH_MESSAGE_DANGER","showWarning","warningMessage","FLASH_MESSAGE_WARNING","showInfo","infoMessage","FLASH_MESSAGE_INFO","hideAlerts","$alertContainers","PayPalBaseBAModel","selector","payPalInstance","token","fail","close","onApprove","onCancel","onError","onClose","initPayPalButton","paypal","Buttons","bind","_get","Reflect","property","receiver","_superPropBase","desc","getOwnPropertyDescriptor","apply","object","hasOwnProperty","_getPrototypeOf","_inherits","subClass","superClass","create","_setPrototypeOf","p","setPrototypeOf","__proto__","_createSuper","Derived","hasNativeReflectConstruct","_isNativeReflectConstruct","_createSuperInternal","Super","NewTarget","construct","_possibleConstructorReturn","self","_assertThisInitialized","ReferenceError","sham","Proxy","Boolean","valueOf","getPrototypeOf","PayPalProductBAModel","_PayPalBaseBAModel","_super","errorResponse","errorName","cartPage","render","$usedPaymentMethodName","disableFunds","isLpmUsed","PayPalBaseModel","payPalBtnSelector","isPayNowFlowEnabled","paypalPreferences","isBtnEligible","processPayNowFlow","SessionStorageModel","sessionStorageInstance","clear","processGenericBtnFlow","$selectedPaypalAccount","$selectedVenmoAccount","click","onClick","FUNDING","CARD","VENMO","PAYPAL","createOrder","renderButtonMarks","Marks","renderPaymentFields","PaymentFields","showButtonTab","fs","createBtnGeneralOption","setPayPalButtonColor","CREDIT","el","initBtnsForPayPalTab","btnProperty","eligibleFundingSources","getFundingSources","filter","isEligible","PAYPAL_FS","isTabShown","isEnabled","assign","initBtnByFundingSource","btnInitResult","PayPalExpressModel","PayPalProductModel","sessionStorage","setItem","getItem","removeItem","setActiveBillingPmTab","ACTIVE_TAB","getActiveBillingPmTab","applyPaypalButtonBehavior","_require","isProductSet","initStaticImageFunctionality","_require2","_require3","paypalStaticImageContainers","isNeed","staticImage","addEventListener","loaderContainer","cart","Error","initPaypalFunctionality","PP_BTN_SELECTOR","isBAEnabled","billingAgreementEnabled","paypalButtonContainers","ppButton","payPalProductInstance","injectPaypalSDK","head","getElementsByTagName","script","src","paypalSDK","cartSdkUrl","onload","setAttribute","partnerAttributionId","isPaypalStaticImage","commonjsGlobal","global","NumeralFormatter","numeralDecimalMark","numeralIntegerScale","numeralDecimalScale","numeralThousandsGroupStyle","numeralPositiveOnly","stripLeadingZeroes","prefix","signBeforePrefix","tailPrefix","delimiter","owner","groupStyle","thousand","delimiterRE","RegExp","lakh","wan","none","replace","format","parts","partSign","partSignAndPrefix","partInteger","partDecimal","NumeralFormatter_1","DateFormatter","datePattern","dateMin","dateMax","date","blocks","reverse","x","unshift","initBlocks","getISOFormatDate","addLeadingZero","getBlocks","getValidatedDate","sub","sub0","rest","getFixedDateString","dayIndex","monthIndex","yearIndex","dayStartIndex","monthStartIndex","yearStartIndex","day","month","year","fullYearDone","toLowerCase","getFixedDate","getRangeFixedDate","previous","current","addLeadingZeroForYear","Math","min","isLeapYear","number","fullYearMode","DateFormatter_1","TimeFormatter","timePattern","timeFormat","time","getISOFormatTime","getTimeFormatOptions","maxHourFirstDigit","maxHours","maxMinutesFirstDigit","maxMinutes","getValidatedTime","timeFormatOptions","getFixedTimeString","secondIndex","minuteIndex","hourIndex","secondStartIndex","minuteStartIndex","hourStartIndex","second","minute","hour","getFixedTime","TimeFormatter_1","PhoneFormatter","formatter","setFormatter","phoneNumber","validated","iMax","inputDigit","PhoneFormatter_1","CreditCardDetector","uatp","diners","dankort","instapayment","jcb15","jcb","maestro","mir","unionPay","general","re","getStrictBlocks","block","total","prev","getInfo","strictMode","matchedBlocks","CreditCardDetector_1","Util","noop","strip","getPostDelimiter","delimiters","matchedDelimiter","getDelimiterREByDelimiter","getNextCursorPosition","prevPos","oldValue","newValue","getPositionOffset","oldRawValue","newRawValue","lengthOffset","stripDelimiters","abs","letter","headStr","str","getMaxLength","getPrefixStrippedValue","prefixLength","prevResult","noImmediatePrefix","prevValue","getFirstDiffIndex","getFormattedValue","blocksLength","delimiterLazyShow","multipleDelimiters","currentDelimiter","fixPrefixCursor","appendix","setSelectionRange","checkFullSelection","selection","getSelection","ex","setSelection","position","doc","getActiveElement","createTextRange","range","move","select","console","warn","activeElement","shadowRoot","isAndroid","navigator","userAgent","isAndroidBackspaceKeydown","lastInputValue","currentInputValue","Util_1","DefaultProperties","opts","creditCardStrictMode","creditCardType","phoneRegionCode","phoneFormatter","timeFormatter","dateFormatter","numeral","swapHiddenInput","numericOnly","uppercase","lowercase","rawValueTrimPrefix","copyDelimiter","initValue","delimiterLength","root","maxLength","backspace","onValueChanged","DefaultProperties_1","hasMultipleElements","properties","init","pps","onInput","isBackward","onChangeListener","onChange","onKeyDownListener","onKeyDown","onFocusListener","onFocus","onCutListener","onCut","onCopyListener","onCopy","initSwapHiddenInput","initPhoneFormatter","initDateFormatter","initTimeFormatter","initNumeralFormatter","inputFormatter","parentNode","insertBefore","elementSwapHidden","numeralFormatter","AsYouTypeFormatter","charCode","which","inputType","postDelimiter","postDelimiterBackspace","copyClipboardData","inputValue","textToCopy","clipboardData","setData","postDelimiterAfter","updateValueState","toUpperCase","updateCreditCardPropsByValue","creditCardInfo","endPos","selectionEnd","callOnValueChanged","rawValue","setPhoneRegionCode","destroy","removeEventListener","Cleave_1","g","Function"],"mappings":";QAAA;QACA;;QAEA;QACA;;QAEA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;;QAEA;QACA;;QAEA;QACA;;QAEA;QACA;QACA;;;QAGA;QACA;;QAEA;QACA;;QAEA;QACA;QACA;QACA,0CAA0C,gCAAgC;QAC1E;QACA;;QAEA;QACA;QACA;QACA,wDAAwD,kBAAkB;QAC1E;QACA,iDAAiD,cAAc;QAC/D;;QAEA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA,yCAAyC,iCAAiC;QAC1E,gHAAgH,mBAAmB,EAAE;QACrI;QACA;;QAEA;QACA;QACA;QACA,2BAA2B,0BAA0B,EAAE;QACvD,iCAAiC,eAAe;QAChD;QACA;QACA;;QAEA;QACA,sDAAsD,+DAA+D;;QAErH;QACA;;;QAGA;QACA;;;;;;;;;;;;;AClFa;;AAEb;AACA;AACA;AACA;AACA;AAJA,SAAAA,QAAAC,CAAA,sCAAAD,OAAA,wBAAAE,MAAA,uBAAAA,MAAA,CAAAC,QAAA,aAAAF,CAAA,kBAAAA,CAAA,gBAAAA,CAAA,WAAAA,CAAA,yBAAAC,MAAA,IAAAD,CAAA,CAAAG,WAAA,KAAAF,MAAA,IAAAD,CAAA,KAAAC,MAAA,CAAAG,SAAA,qBAAAJ,CAAA,KAAAD,OAAA,CAAAC,CAAA;AAKA,SAASK,sBAAsBA,CAACC,cAAc,EAAEC,OAAO,EAAE;EACrDC,CAAC,CAACC,IAAI,CAACF,OAAO,EAAE,UAAUG,IAAI,EAAE;IAC5B,IAAIC,GAAG,GAAGJ,OAAO,CAACG,IAAI,CAAC;IACvBF,CAAC,CAAC,GAAG,GAAGE,IAAI,EAAEJ,cAAc,CAAC,CAACM,IAAI,CAACD,GAAG,IAAI,EAAE,CAAC;EACjD,CAAC,CAAC;AACN;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAASE,qBAAqBA,CAACC,QAAQ,EAAEC,QAAQ,EAAEC,KAAK,EAAEC,OAAO,EAAE;EAC/D,IAAIC,WAAW,GAAGD,OAAO,IAAI,CAAC,CAAC;EAC/B,IAAIE,SAAS,GAAGD,WAAW,CAACE,IAAI,IAAIF,WAAW,CAACE,IAAI,KAAK,SAAS;EAClE,IAAIC,SAAS,GAAGH,WAAW,CAACG,SAAS,IAAI,EAAE;EAC3C,IAAIC,UAAU,GAAGP,QAAQ;EACzB,IAAIQ,KAAK,GAAG,CAACT,QAAQ;EACrB,IAAI,OAAOA,QAAQ,KAAK,QAAQ,EAAE;IAC9B,OAAON,CAAC,CAAC,iBAAiB,GAAGa,SAAS,GAAG,aAAa,GAAGP,QAAQ,GAAG,WAAW,CAAC;EACpF;EACA,IAAIU,YAAY,GAAGV,QAAQ,IAAI,CAAC,CAAC;EACjC,IAAIW,eAAe,GAAGD,YAAY,CAACC,eAAe,IAAI,CAAC,CAAC;EAExD,IAAIN,SAAS,IAAII,KAAK,IAAI,CAACP,KAAK,CAACU,OAAO,CAACC,iBAAiB,EAAE;IACxDF,eAAe,GAAGT,KAAK,CAACU,OAAO,CAACE,cAAc,CAACrB,OAAO,IAAI,CAAC,CAAC;IAC5DgB,KAAK,GAAG,KAAK;IACbD,UAAU,GAAG,IAAI;IACjBE,YAAY,CAACK,IAAI,GAAG,cAAc;EACtC;EAEA,IAAIC,IAAI,GAAGN,YAAY,CAACK,IAAI,GAAGL,YAAY,CAACK,IAAI,GAAG,KAAK;EACxD,IAAIE,QAAQ,GAAGvB,CAAC,CAAC,iBAAiB,GAAGa,SAAS,GAAG,MAAM,CAAC;EACxDU,QAAQ,CAACpB,GAAG,CAACmB,IAAI,CAAC;EAElB,IAAIE,KAAK;EAET,IAAIT,KAAK,EAAE;IACPS,KAAK,GAAGhB,KAAK,CAACiB,SAAS,CAACC,aAAa;EACzC,CAAC,MAAM;IACHF,KAAK,GAAG,EAAE;IACV,IAAIP,eAAe,CAACU,SAAS,EAAE;MAC3BH,KAAK,CAACI,IAAI,CAACX,eAAe,CAACU,SAAS,CAAC;IACzC;IACA,IAAIV,eAAe,CAACY,QAAQ,EAAE;MAC1BL,KAAK,CAACI,IAAI,CAACX,eAAe,CAACY,QAAQ,CAAC;IACxC;IACA,IAAIZ,eAAe,CAACa,QAAQ,EAAE;MAC1BN,KAAK,CAACI,IAAI,CAACX,eAAe,CAACa,QAAQ,CAAC;IACxC;IACA,IAAIb,eAAe,CAACc,QAAQ,EAAE;MAC1BP,KAAK,CAACI,IAAI,CAACX,eAAe,CAACc,QAAQ,CAAC;IACxC;IACA,IAAId,eAAe,CAACe,IAAI,EAAE;MACtB,IAAIf,eAAe,CAACgB,KAAK,EAAE;QACvBT,KAAK,CAACI,IAAI,CAACX,eAAe,CAACe,IAAI,GAAG,GAAG,CAAC;MAC1C,CAAC,MAAM;QACHR,KAAK,CAACI,IAAI,CAACX,eAAe,CAACe,IAAI,CAAC;MACpC;IACJ;IACA,IAAIf,eAAe,CAACiB,SAAS,EAAE;MAC3BV,KAAK,CAACI,IAAI,CAACX,eAAe,CAACiB,SAAS,CAAC;IACzC;IACA,IAAIjB,eAAe,CAACkB,UAAU,EAAE;MAC5BX,KAAK,CAACI,IAAI,CAACX,eAAe,CAACkB,UAAU,CAAC;IAC1C;IACA,IAAI,CAACxB,SAAS,IAAIK,YAAY,CAACoB,sBAAsB,EAAE;MACnDZ,KAAK,CAACI,IAAI,CAAC,GAAG,CAAC;MACfJ,KAAK,CAACI,IAAI,CAACZ,YAAY,CAACoB,sBAAsB,CAACC,WAAW,CAAC;IAC/D;IAEA,IAAIb,KAAK,CAACc,MAAM,GAAG,CAAC,EAAE;MAClBd,KAAK,GAAGA,KAAK,CAACe,IAAI,CAAC,GAAG,CAAC;IAC3B,CAAC,MAAM;MACHf,KAAK,GAAGhB,KAAK,CAACiB,SAAS,CAACe,UAAU;IACtC;EACJ;EACAjB,QAAQ,CAACnB,IAAI,CAACoB,KAAK,CAAC;EAEpB,IAAIiB,MAAM,GAAG;IACT,iBAAiB,EAAE,WAAW;IAC9B,gBAAgB,EAAE,UAAU;IAC5B,eAAe,EAAE,UAAU;IAC3B,eAAe,EAAE,UAAU;IAC3B,WAAW,EAAE,MAAM;IACnB,iBAAiB,EAAE,WAAW;IAC9B,kBAAkB,EAAE,YAAY;IAChC,mBAAmB,EAAE,aAAa;IAClC,YAAY,EAAE;EAClB,CAAC;EACDzC,CAAC,CAACC,IAAI,CAACwC,MAAM,EAAE,UAAUC,GAAG,EAAE;IAC1B,IAAIC,SAAS,GAAGF,MAAM,CAACC,GAAG,CAAC;IAC3B,IAAIE,WAAW,GAAG3B,eAAe,CAAC0B,SAAS,CAAC;IAC5C;IACA,IAAIC,WAAW,IAAIrD,OAAA,CAAOqD,WAAW,MAAK,QAAQ,EAAE;MAChDA,WAAW,GAAGA,WAAW,CAACC,KAAK;IACnC;IAEAtB,QAAQ,CAACrB,IAAI,CAACwC,GAAG,EAAEE,WAAW,IAAI,EAAE,CAAC;EACzC,CAAC,CAAC;EAEF,IAAIE,OAAO,GAAG;IACV,cAAc,EAAE,QAAQ;IACxB,mBAAmB,EAAE;EACzB,CAAC;EAED9C,CAAC,CAACC,IAAI,CAAC6C,OAAO,EAAE,UAAUJ,GAAG,EAAE;IAC3B,IAAIC,SAAS,GAAGG,OAAO,CAACJ,GAAG,CAAC;IAC5B,IAAIE,WAAW,GAAG5B,YAAY,CAAC2B,SAAS,CAAC;IACzCpB,QAAQ,CAACrB,IAAI,CAACwC,GAAG,EAAEE,WAAW,IAAI,EAAE,CAAC;EACzC,CAAC,CAAC;EAEF,IAAI9B,UAAU,EAAE;IACZS,QAAQ,CAACrB,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC;EACnC;EAEA,OAAOqB,QAAQ;AACnB;;AAEA;AACA;AACA;AACA;AACA;AACA,SAASwB,sBAAsBA,CAACC,IAAI,EAAE;EAClC,IAAIjD,OAAO,GAAG;IACV4B,SAAS,EAAE3B,CAAC,CAAC,yBAAyB,EAAEgD,IAAI,CAAC,CAAC7C,GAAG,CAAC,CAAC;IACnD0B,QAAQ,EAAE7B,CAAC,CAAC,wBAAwB,EAAEgD,IAAI,CAAC,CAAC7C,GAAG,CAAC,CAAC;IACjD2B,QAAQ,EAAE9B,CAAC,CAAC,wBAAwB,EAAEgD,IAAI,CAAC,CAAC7C,GAAG,CAAC,CAAC;IACjD4B,QAAQ,EAAE/B,CAAC,CAAC,wBAAwB,EAAEgD,IAAI,CAAC,CAAC7C,GAAG,CAAC,CAAC;IACjD6B,IAAI,EAAEhC,CAAC,CAAC,oBAAoB,EAAEgD,IAAI,CAAC,CAAC7C,GAAG,CAAC,CAAC;IACzCgC,UAAU,EAAEnC,CAAC,CAAC,0BAA0B,EAAEgD,IAAI,CAAC,CAAC7C,GAAG,CAAC,CAAC;IACrD+B,SAAS,EAAElC,CAAC,CAAC,kDAAkD,EAAEgD,IAAI,CAAC,CAAC7C,GAAG,CAAC,CAAC;IAC5E8C,WAAW,EAAEjD,CAAC,CAAC,wBAAwB,EAAEgD,IAAI,CAAC,CAAC7C,GAAG,CAAC,CAAC;IACpD+C,KAAK,EAAElD,CAAC,CAAC,qBAAqB,EAAEgD,IAAI,CAAC,CAAC7C,GAAG,CAAC;EAC9C,CAAC;EACD,OAAOJ,OAAO;AAClB;AAEAoD,MAAM,CAACC,OAAO,GAAG;EACbC,OAAO,EAAE;IACLxD,sBAAsB,EAAEA,sBAAsB;IAC9CQ,qBAAqB,EAAEA,qBAAqB;IAC5C0C,sBAAsB,EAAEA;EAC5B,CAAC;EAEDO,WAAW,EAAE,SAAAA,YAAA,EAAY;IACrBtD,CAAC,CAAC,mBAAmB,CAAC,CAACuD,EAAE,CAAC,OAAO,EAAE,YAAY;MAC3C,IAAIP,IAAI,GAAGhD,CAAC,CAAC,IAAI,CAAC,CAACwD,OAAO,CAAC,MAAM,CAAC;MAElCR,IAAI,CAAC9C,IAAI,CAAC,mBAAmB,EAAE,SAAS,CAAC;MACzC8C,IAAI,CAACS,IAAI,CAAC,6BAA6B,CAAC,CAACC,WAAW,CAAC,QAAQ,CAAC;MAC9DV,IAAI,CAACS,IAAI,CAAC,wDAAwD,CAAC,CAACE,QAAQ,CAAC,QAAQ,CAAC;IAC1F,CAAC,CAAC;EACN,CAAC;EAEDjC,aAAa,EAAE,SAAAA,cAAA,EAAY;IACvB1B,CAAC,CAAC,cAAc,CAAC,CAACuD,EAAE,CAAC,OAAO,EAAE,YAAY;MACtC,IAAIK,GAAG,GAAG5D,CAAC,CAAC,IAAI,CAAC;MACjB,IAAI4D,GAAG,CAACC,OAAO,CAAC,gBAAgB,CAAC,CAACvB,MAAM,GAAG,CAAC,EAAE;QAC1C;QACAtC,CAAC,CAAC,MAAM,CAAC,CAAC8D,OAAO,CAAC,2BAA2B,CAAC;QAC9C,IAAIC,OAAO,GAAG/D,CAAC,CAAC4D,GAAG,CAACC,OAAO,CAAC,MAAM,CAAC,CAACJ,IAAI,CAAC,yBAAyB,CAAC,CAAC,CAAC,CAAC,CAAC;QACvEM,OAAO,CAAC7D,IAAI,CAAC,OAAO,EAAE,KAAK,CAAC;QAC5B,IAAI8D,SAAS,GAAGhE,CAAC,CAAC,qDAAqD,CAAC,CAACG,GAAG,CAAC,CAAC;QAC9E4D,OAAO,CAAC3D,IAAI,CAAC4D,SAAS,CAAC;QACvBD,OAAO,CAACE,IAAI,CAAC,UAAU,EAAE,UAAU,CAAC;QACpCL,GAAG,CAACC,OAAO,CAAC,qBAAqB,CAAC,CAAC3D,IAAI,CAAC,mBAAmB,EAAE,KAAK,CAAC;MACvE,CAAC,MAAM;QACH;QACA,IAAIgE,MAAM,GAAGN,GAAG,CAACC,OAAO,CAAC,MAAM,CAAC,CAACJ,IAAI,CAAC,oCAAoC,CAAC;QAC3ES,MAAM,CAACD,IAAI,CAAC,UAAU,EAAE,UAAU,CAAC;QACnCC,MAAM,CAACC,MAAM,CAAC,CAAC,CAACL,OAAO,CAAC,QAAQ,CAAC;MACrC;IACJ,CAAC,CAAC;EACN;AACJ,CAAC,C;;;;;;;;;;;;AC1LY;;AAEb,IAAIM,cAAc,GAAGC,mBAAO,CAAC,mGAAW,CAAC;AACzC,IAAIC,MAAM,GAAGD,mBAAO,CAAC,+GAAsB,CAAC;;AAE5C;AACA;AACA;AACA;AACA;AACA,SAASE,4BAA4BA,CAAC/D,KAAK,EAAEgE,QAAQ,EAAE;EACnD,IAAIC,SAAS,GAAGjE,KAAK,CAACF,QAAQ;EAE9B,IAAI0C,IAAI,GAAGhD,CAAC,CAAC,qBAAqB,CAAC,CAAC,CAAC,CAAC;EACtC,IAAI0E,uBAAuB,GAAG1E,CAAC,CAAC,kBAAkB,EAAEgD,IAAI,CAAC;EACzD,IAAI2B,kBAAkB,GAAG,KAAK;EAE9B,IAAID,uBAAuB,IAAIA,uBAAuB,CAACpC,MAAM,KAAK,CAAC,EAAE;IACjEoC,uBAAuB,CAACE,KAAK,CAAC,CAAC;IAC/B;IACAF,uBAAuB,CAACG,MAAM,CAACT,cAAc,CAACf,OAAO,CAAChD,qBAAqB,CACvE,IAAI,EACJ,KAAK,EACLG,KAAK,EACL;MAAEI,IAAI,EAAE;IAAU,CAAC,CAAC,CAAC;;IAEzB;IACA8D,uBAAuB,CAACG,MAAM,CAACT,cAAc,CAACf,OAAO,CAAChD,qBAAqB,CACvEG,KAAK,CAACiB,SAAS,CAACqD,iBAAiB,EAAE,KAAK,EAAEtE,KAAK,EAAE;MAC7C;MACAI,IAAI,EAAE;IACV,CACJ,CAAC,CAAC;IAEF6D,SAAS,CAACM,OAAO,CAAC,UAAUC,SAAS,EAAE;MACnC,IAAIlE,UAAU,GAAGN,KAAK,CAACU,OAAO,CAACC,iBAAiB,KAAK6D,SAAS,CAAC3D,IAAI;MACnEsD,kBAAkB,GAAGA,kBAAkB,IAAI7D,UAAU;MACrD;MACA4D,uBAAuB,CAACG,MAAM,CAC1BT,cAAc,CAACf,OAAO,CAAChD,qBAAqB,CAAC2E,SAAS,EAAElE,UAAU,EAAEN,KAAK,EACrE;QACI;QACAI,IAAI,EAAE;MACV,CACJ,CACJ,CAAC;IACL,CAAC,CAAC;IAEF,IAAI4D,QAAQ,CAACS,SAAS,IAAIT,QAAQ,CAACS,SAAS,CAAC3C,MAAM,GAAG,CAAC,EAAE;MACrDoC,uBAAuB,CAACG,MAAM,CAACT,cAAc,CAACf,OAAO,CAAChD,qBAAqB,CACvEG,KAAK,CAACiB,SAAS,CAACyD,gBAAgB,EAAE,KAAK,EAAE1E,KAAK,CAAC,CAAC;MACpDgE,QAAQ,CAACS,SAAS,CAACF,OAAO,CAAC,UAAUhF,OAAO,EAAE;QAC1C,IAAIe,UAAU,GAAGN,KAAK,CAACU,OAAO,CAACC,iBAAiB,KAAKpB,OAAO,CAACoF,EAAE;QAC/DR,kBAAkB,GAAGA,kBAAkB,IAAI7D,UAAU;QACrD;QACA4D,uBAAuB,CAACG,MAAM,CAC1BT,cAAc,CAACf,OAAO,CAAChD,qBAAqB,CAAC;UACzCgB,IAAI,EAAE,KAAK,GAAGtB,OAAO,CAACoF,EAAE;UACxBlE,eAAe,EAAElB;QACrB,CAAC,EAAEe,UAAU,EAAEN,KAAK,EAAE;UAAEI,IAAI,EAAE;QAAU,CAAC,CAC7C,CAAC;MACL,CAAC,CAAC;IACN;EACJ;EAEA,IAAI+D,kBAAkB,IACd,CAACnE,KAAK,CAACU,OAAO,CAACC,iBAAiB,IAAIX,KAAK,CAACU,OAAO,CAACE,cAAc,CAACrB,OAAQ,EAAE;IAC/E;IACAC,CAAC,CAACgD,IAAI,CAAC,CAAC9C,IAAI,CAAC,mBAAmB,EAAE,MAAM,CAAC;EAC7C,CAAC,MAAM;IACHF,CAAC,CAACgD,IAAI,CAAC,CAAC9C,IAAI,CAAC,mBAAmB,EAAE,KAAK,CAAC;EAC5C;EAEAwE,uBAAuB,CAACU,IAAI,CAAC,CAAC;AAClC;;AAEA;AACA;AACA;AACA;AACA,SAASC,oBAAoBA,CAAC7E,KAAK,EAAE;EACjC,IAAIU,OAAO,GAAGV,KAAK,CAACU,OAAO;EAC3B,IAAI,CAACA,OAAO,CAACE,cAAc,IAAI,CAACF,OAAO,CAACE,cAAc,CAACrB,OAAO,EAAE;EAEhE,IAAIiD,IAAI,GAAGhD,CAAC,CAAC,0BAA0B,CAAC;EACxC,IAAI,CAACgD,IAAI,EAAE;EAEXhD,CAAC,CAAC,yBAAyB,EAAEgD,IAAI,CAAC,CAAC7C,GAAG,CAACe,OAAO,CAACE,cAAc,CAACrB,OAAO,CAAC4B,SAAS,CAAC;EAChF3B,CAAC,CAAC,wBAAwB,EAAEgD,IAAI,CAAC,CAAC7C,GAAG,CAACe,OAAO,CAACE,cAAc,CAACrB,OAAO,CAAC8B,QAAQ,CAAC;EAC9E7B,CAAC,CAAC,wBAAwB,EAAEgD,IAAI,CAAC,CAAC7C,GAAG,CAACe,OAAO,CAACE,cAAc,CAACrB,OAAO,CAAC+B,QAAQ,CAAC;EAC9E9B,CAAC,CAAC,wBAAwB,EAAEgD,IAAI,CAAC,CAAC7C,GAAG,CAACe,OAAO,CAACE,cAAc,CAACrB,OAAO,CAACgC,QAAQ,CAAC;EAC9E/B,CAAC,CAAC,oBAAoB,EAAEgD,IAAI,CAAC,CAAC7C,GAAG,CAACe,OAAO,CAACE,cAAc,CAACrB,OAAO,CAACiC,IAAI,CAAC;EACtEhC,CAAC,CAAC,0BAA0B,EAAEgD,IAAI,CAAC,CAAC7C,GAAG,CAACe,OAAO,CAACE,cAAc,CAACrB,OAAO,CAACoC,UAAU,CAAC;EAClFnC,CAAC,CAAC,kDAAkD,EAAEgD,IAAI,CAAC,CACtD7C,GAAG,CAACe,OAAO,CAACE,cAAc,CAACrB,OAAO,CAACmC,SAAS,CAAC;EAClDlC,CAAC,CAAC,wBAAwB,EAAEgD,IAAI,CAAC,CAAC7C,GAAG,CAACe,OAAO,CAACE,cAAc,CAACrB,OAAO,CAACkD,WAAW,CAACJ,KAAK,CAAC;EACvF7C,CAAC,CAAC,qBAAqB,EAAEgD,IAAI,CAAC,CAAC7C,GAAG,CAACe,OAAO,CAACE,cAAc,CAACrB,OAAO,CAACmD,KAAK,CAAC;EACxElD,CAAC,CAAC,qBAAqB,EAAEgD,IAAI,CAAC,CAAC7C,GAAG,CAACK,KAAK,CAAC8E,UAAU,CAAC;AACxD;;AAEA;AACA;AACA;AACA;AACA,SAASC,yCAAyCA,CAAC/E,KAAK,EAAE;EACtD,IAAIU,OAAO,GAAGV,KAAK,CAACU,OAAO;EAC3B,IAAI,CAACA,OAAO,CAACsE,OAAO,IAAI,CAACtE,OAAO,CAACsE,OAAO,CAACC,0BAA0B,IAC5DvE,OAAO,CAACsE,OAAO,CAACC,0BAA0B,CAACnD,MAAM,IAAI,CAAC,EAAE;EAE/D,IAAIU,IAAI,GAAGhD,CAAC,CAAC,0BAA0B,CAAC;EACxC,IAAI,CAACgD,IAAI,EAAE;EAEX,IAAI0C,UAAU,GAAGxE,OAAO,CAACsE,OAAO,CAACC,0BAA0B,CAAC,CAAC,CAAC;EAC9DzF,CAAC,CAAC,+BAA+B,EAAEgD,IAAI,CAAC,CAAC7C,GAAG,CAACuF,UAAU,CAACC,eAAe,CAAC;EACxE3F,CAAC,CAAC,8BAA8B,EAAEgD,IAAI,CAAC,CAAC7C,GAAG,CAACuF,UAAU,CAACE,cAAc,CAAC;EACtE;EACA5F,CAAC,CAAC,2BAA2B,EAAEgD,IAAI,CAAC,CAAC7C,GAAG,CAAC,EAAE,CAAC;EAC5CH,CAAC,CAAC,yBAAyB,CAAC,CAAC6F,IAAI,CAAC,QAAQ,CAAC,CAACC,WAAW,CAAC,EAAE,CAAC;AAC/D;;AAEA;AACA;AACA;AACA;AACA,SAASC,8BAA8BA,CAACvF,KAAK,EAAE;EAC3C2C,MAAM,CAACC,OAAO,CAACC,OAAO,CAACgC,oBAAoB,CAAC7E,KAAK,CAAC;EAClD2C,MAAM,CAACC,OAAO,CAACC,OAAO,CAACkC,yCAAyC,CAAC/E,KAAK,CAAC;AAC3E;;AAEA;AACA;AACA;AACA,SAASwF,6BAA6BA,CAAA,EAAG;EACrCD,8BAA8B,CAAC;IAC3B7E,OAAO,EAAE;MACLE,cAAc,EAAE;QACZrB,OAAO,EAAE;UACLkD,WAAW,EAAE,CAAC;QAClB;MACJ;IACJ;EACJ,CAAC,CAAC;AACN;;AAEA;AACA;AACA;AACA;AACA,SAASgD,2BAA2BA,CAACzF,KAAK,EAAE;EACxC;EACA4D,cAAc,CAACf,OAAO,CAACxD,sBAAsB,CAAC,2BAA2B,EACrEW,KAAK,CAACU,OAAO,CAACE,cAAc,CAACrB,OAAO,CAAC;;EAEzC;EACAC,CAAC,CAAC,sBAAsB,CAAC,CAACI,IAAI,CAACI,KAAK,CAAC8E,UAAU,CAAC;EAEhD,IAAI9E,KAAK,CAACU,OAAO,CAACE,cAAc,CAACrB,OAAO,EAAE;IACtCC,CAAC,CAAC,sBAAsB,CAAC,CAACI,IAAI,CAACI,KAAK,CAACU,OAAO,CAACE,cAAc,CAACrB,OAAO,CAACmD,KAAK,CAAC;EAC9E;AACJ;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,SAASgD,wBAAwBA,CAAC1F,KAAK,EAAEgE,QAAQ,EAAE;EAC/CD,4BAA4B,CAAC/D,KAAK,EAAEgE,QAAQ,CAAC;;EAE7C;EACAuB,8BAA8B,CAACvF,KAAK,CAAC;;EAErC;EACAyF,2BAA2B,CAACzF,KAAK,CAAC;AACtC;;AAEA;AACA;AACA;AACA;AACA,SAAS2F,wBAAwBA,CAAC3F,KAAK,EAAE;EACrC;EACA,IAAI4F,eAAe,GAAGpG,CAAC,CAAC,kBAAkB,CAAC;EAC3C,IAAIqG,YAAY,GAAG,EAAE;EAErB,IAAI7F,KAAK,CAACU,OAAO,CAACsE,OAAO,IAAIhF,KAAK,CAACU,OAAO,CAACsE,OAAO,CAACC,0BAA0B,IACtEjF,KAAK,CAACU,OAAO,CAACsE,OAAO,CAACC,0BAA0B,CAACnD,MAAM,GAAG,CAAC,EAAE;IAChE+D,YAAY,IAAI,QAAQ,GAAG7F,KAAK,CAACiB,SAAS,CAAC6E,QAAQ,GAAG,GAAG,GACnD9F,KAAK,CAACU,OAAO,CAACsE,OAAO,CAACC,0BAA0B,CAAC,CAAC,CAAC,CAAC7E,IAAI,GACxD,cAAc,GACdJ,KAAK,CAACU,OAAO,CAACsE,OAAO,CAACC,0BAA0B,CAAC,CAAC,CAAC,CAACc,sBAAsB,GAC1E,mBAAmB,GACnB/F,KAAK,CAACiB,SAAS,CAAC+E,UAAU,GAAG,GAAG,GAChChG,KAAK,CAACU,OAAO,CAACsE,OAAO,CAACC,0BAA0B,CAAC,CAAC,CAAC,CAACE,eAAe,GACnE,GAAG,GAAGnF,KAAK,CAACU,OAAO,CAACsE,OAAO,CAACC,0BAA0B,CAAC,CAAC,CAAC,CAACG,cAAc,GACxE,eAAe;EACzB;EAEAQ,eAAe,CAACxB,KAAK,CAAC,CAAC,CAACC,MAAM,CAACwB,YAAY,CAAC;AAChD;;AAEA;AACA;AACA;AACA,SAASI,mBAAmBA,CAAA,EAAG;EAC3BzG,CAAC,CAAC,4BAA4B,CAAC,CAAC6F,IAAI,CAAC,QAAQ,CAAC,CAACC,WAAW,CAAC,EAAE,CAAC;EAC9D9F,CAAC,CAAC,kCAAkC,CAAC,CAACG,GAAG,CAAC,EAAE,CAAC;EAC7CH,CAAC,CAAC,iCAAiC,CAAC,CAACG,GAAG,CAAC,EAAE,CAAC;EAC5CH,CAAC,CAAC,8BAA8B,CAAC,CAACG,GAAG,CAAC,EAAE,CAAC;AAC7C;AAEAgD,MAAM,CAACC,OAAO,GAAG;EACbC,OAAO,EAAE;IACLkB,4BAA4B,EAAEA,4BAA4B;IAC1DwB,8BAA8B,EAAEA,8BAA8B;IAC9DC,6BAA6B,EAAEA,6BAA6B;IAC5DE,wBAAwB,EAAEA,wBAAwB;IAClDC,wBAAwB,EAAEA,wBAAwB;IAClDM,mBAAmB,EAAEA,mBAAmB;IACxCpB,oBAAoB,EAAEA,oBAAoB;IAC1CE,yCAAyC,EAAEA,yCAAyC;IACpFU,2BAA2B,EAAEA;EACjC,CAAC;EAEDS,kBAAkB,EAAE,SAAAA,mBAAA,EAAY;IAC5B1G,CAAC,CAAC,2BAA2B,CAAC,CAACuD,EAAE,CAAC,OAAO,EAAE,YAAY;MACnDvD,CAAC,CAAC,IAAI,CAAC,CAAC6D,OAAO,CAAC,qBAAqB,CAAC,CAAC3D,IAAI,CAAC,mBAAmB,EAAE,KAAK,CAAC;IAC3E,CAAC,CAAC;EACN,CAAC;EAEDyG,kBAAkB,EAAE,SAAAA,mBAAA,EAAY;IAC5B3G,CAAC,CAAC,2BAA2B,CAAC,CAACuD,EAAE,CAAC,OAAO,EAAE,YAAY;MACnDvD,CAAC,CAAC,IAAI,CAAC,CAAC6D,OAAO,CAAC,qBAAqB,CAAC,CAAC3D,IAAI,CAAC,mBAAmB,EAAE,UAAU,CAAC;IAChF,CAAC,CAAC;EACN,CAAC;EAED0G,oBAAoB,EAAE,SAAAA,qBAAA,EAAY;IAC9B5G,CAAC,CAAC,gCAAgC,CAAC,CAACuD,EAAE,CAAC,QAAQ,EAAE,YAAY;MACzD,IAAIP,IAAI,GAAGhD,CAAC,CAAC,IAAI,CAAC,CAAC6D,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;MACrC,IAAIgD,cAAc,GAAG7G,CAAC,CAAC,iBAAiB,EAAE,IAAI,CAAC;MAC/C,IAAI8G,QAAQ,GAAGD,cAAc,CAAC,CAAC,CAAC,CAAChE,KAAK;MAEtC,IAAIiE,QAAQ,KAAK,KAAK,EAAE;QACpB;QACA9G,CAAC,CAACgD,IAAI,CAAC,CAAC9C,IAAI,CAAC,mBAAmB,EAAE,KAAK,CAAC;MAC5C,CAAC,MAAM;QACH;QACAF,CAAC,CAACgD,IAAI,CAAC,CAAC9C,IAAI,CAAC,mBAAmB,EAAE,UAAU,CAAC;MACjD;;MAEA;MACA,IAAI6G,KAAK,GAAGF,cAAc,CAAChB,IAAI,CAAC,CAAC;MACjC,IAAImB,OAAO;MAEXC,MAAM,CAACC,IAAI,CAACH,KAAK,CAAC,CAAChC,OAAO,CAAC,UAAU7E,IAAI,EAAE;QACvC8G,OAAO,GAAG9G,IAAI,KAAK,aAAa,GAAG,SAAS,GAAGA,IAAI;QACnD,IAAI8G,OAAO,KAAK,YAAY,EAAE;UAC1BhH,CAAC,CAAC,aAAa,CAAC,CAAC6F,IAAI,CAAC,QAAQ,CAAC,CAACC,WAAW,CAACiB,KAAK,CAAC7G,IAAI,CAAC,CAAC;QAC5D,CAAC,MAAM;UACHF,CAAC,CAAC,SAAS,GAAGgH,OAAO,GAAG,GAAG,EAAEhE,IAAI,CAAC,CAAC7C,GAAG,CAAC4G,KAAK,CAAC7G,IAAI,CAAC,CAAC;QACvD;MACJ,CAAC,CAAC;IACN,CAAC,CAAC;EACN,CAAC;EAEDiH,sBAAsB,EAAE,SAAAA,uBAAA,EAAY;IAChC7C,MAAM,CAAC6C,sBAAsB,CAAC,aAAa,EAAE,WAAW,CAAC;EAC7D,CAAC;EAEDC,aAAa,EAAE,SAAAA,cAAA,EAAY;IACvBpH,CAAC,CAAC,MAAM,CAAC,CAACuD,EAAE,CAAC,2BAA2B,EAAE,UAAU8D,CAAC,EAAExB,IAAI,EAAE;MACzD,IAAIyB,cAAc,GAAGhD,MAAM,CAACiD,aAAa,CAAC1B,IAAI,CAAC7C,IAAI,CAAC;MAEpD6C,IAAI,CAAC2B,QAAQ,CAACF,cAAc,CAAC;IACjC,CAAC,CAAC;EACN,CAAC;EAEDG,4BAA4B,EAAE,SAAAA,6BAAA,EAAY;IACtCzH,CAAC,CAAC0H,QAAQ,CAAC,CAACnE,EAAE,CAAC,OAAO,EAAE,2BAA2B,EAAE,UAAU8D,CAAC,EAAE;MAC9DA,CAAC,CAACM,cAAc,CAAC,CAAC;MAClB3H,CAAC,CAAC,8BAA8B,CAAC,CAACG,GAAG,CAAC,EAAE,CAAC;MACzCH,CAAC,CAAC,2BAA2B,CAAC,CAAC0D,WAAW,CAAC,kBAAkB,CAAC;MAC9D1D,CAAC,CAAC,IAAI,CAAC,CAAC2D,QAAQ,CAAC,kBAAkB,CAAC;MACpC3D,CAAC,CAAC,uCAAuC,CAAC,CAAC0D,WAAW,CAAC,iBAAiB,CAAC;MACzE1D,CAAC,CAAC,gDAAgD,CAAC,CAAC2D,QAAQ,CAAC,iBAAiB,CAAC;MAC/E3D,CAAC,CAAC,4CAA4C,GAC1C,cAAc,CAAC,CAAC2D,QAAQ,CAAC,iBAAiB,CAAC;MAC/C3D,CAAC,CAAC,6CAA6C,GAC3C,sBAAsB,CAAC,CAAC0D,WAAW,CAAC,iBAAiB,CAAC;IAC9D,CAAC,CAAC;EACN,CAAC;EAEDkE,uBAAuB,EAAE,SAAAA,wBAAA,EAAY;IACjC5H,CAAC,CAAC,kBAAkB,CAAC,CAACuD,EAAE,CAAC,OAAO,EAAE,UAAU8D,CAAC,EAAE;MAC3CA,CAAC,CAACM,cAAc,CAAC,CAAC;MAClB3H,CAAC,CAAC,sBAAsB,CAAC,CAAC6F,IAAI,CAAC,gBAAgB,EAAE,IAAI,CAAC;MACtDY,mBAAmB,CAAC,CAAC;MACrBzG,CAAC,CAAC,mBAAmB,CAAC,CAAC0D,WAAW,CAAC,iBAAiB,CAAC;MACrD1D,CAAC,CAAC,2BAA2B,CAAC,CAAC2D,QAAQ,CAAC,iBAAiB,CAAC;IAC9D,CAAC,CAAC;EACN,CAAC;EAEDkE,gBAAgB,EAAE,SAAAA,iBAAA,EAAY;IAC1B7H,CAAC,CAAC,qBAAqB,CAAC,CAACuD,EAAE,CAAC,OAAO,EAAE,UAAU8D,CAAC,EAAE;MAC9CA,CAAC,CAACM,cAAc,CAAC,CAAC;MAClB3H,CAAC,CAAC,sBAAsB,CAAC,CAAC6F,IAAI,CAAC,gBAAgB,EAAE,KAAK,CAAC;MACvDY,mBAAmB,CAAC,CAAC;MACrBzG,CAAC,CAAC,2BAA2B,CAAC,CAAC0D,WAAW,CAAC,iBAAiB,CAAC;MAC7D1D,CAAC,CAAC,mBAAmB,CAAC,CAAC2D,QAAQ,CAAC,iBAAiB,CAAC;IACtD,CAAC,CAAC;EACN,CAAC;EAEDmE,gBAAgB,EAAE,SAAAA,iBAAA,EAAY;IAC1B9H,CAAC,CAAC,MAAM,CAAC,CAACuD,EAAE,CAAC,2BAA2B,EAAE,YAAY;MAClDyC,6BAA6B,CAAC,CAAC;IACnC,CAAC,CAAC;EACN,CAAC;EAED+B,WAAW,EAAE,SAAAA,YAAA,EAAY;IACrB/H,CAAC,CAAC,4BAA4B,CAAC,CAACuD,EAAE,CAAC,OAAO,EAAE,UAAU8D,CAAC,EAAE;MACrDA,CAAC,CAACM,cAAc,CAAC,CAAC;MAClB,IAAIK,QAAQ,GAAGhI,CAAC,CAAC,IAAI,CAAC,CAAC6F,IAAI,CAAC,WAAW,CAAC;MACxC7F,CAAC,CAAC,sBAAsB,CAAC,CAAC6F,IAAI,CAAC,mBAAmB,EAAEmC,QAAQ,CAAC;IACjE,CAAC,CAAC;EACN;AACJ,CAAC,C;;;;;;;;;;;;ACtUY;;AAEb,IAAIC,MAAM,GAAG5D,mBAAO,CAAC,8DAAW,CAAC,CAAC6D,OAAO;AAEzC/E,MAAM,CAACC,OAAO,GAAG;EACb+D,sBAAsB,EAAE,SAAAA,uBAAUgB,iBAAiB,EAAEC,gBAAgB,EAAE;IACnE,IAAI9D,MAAM,GAAG,IAAI2D,MAAM,CAACE,iBAAiB,EAAE;MACvCE,UAAU,EAAE,IAAI;MAChBC,uBAAuB,EAAE,SAAAA,wBAAU1H,IAAI,EAAE;QACrC,IAAI2H,eAAe,GAAG;UAClBC,IAAI,EAAE,MAAM;UACZC,UAAU,EAAE,aAAa;UACzBC,IAAI,EAAE,MAAM;UACZC,QAAQ,EAAE,UAAU;UACpBC,OAAO,EAAE;QACb,CAAC;QAED,IAAItC,QAAQ,GAAGiC,eAAe,CAACtB,MAAM,CAACC,IAAI,CAACqB,eAAe,CAAC,CAACM,OAAO,CAACjI,IAAI,CAAC,GAAG,CAAC,CAAC,GACxEA,IAAI,GACJ,SAAS,CAAC;QAChBZ,CAAC,CAACoI,gBAAgB,CAAC,CAACjI,GAAG,CAACmG,QAAQ,CAAC;QACjCtG,CAAC,CAAC,sBAAsB,CAAC,CAACE,IAAI,CAAC,WAAW,EAAEU,IAAI,CAAC;QACjD,IAAIA,IAAI,KAAK,MAAM,IAAIA,IAAI,KAAK,YAAY,IAAIA,IAAI,KAAK,UAAU,EAAE;UACjEZ,CAAC,CAAC,eAAe,CAAC,CAACE,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC;QAC3C,CAAC,MAAM;UACHF,CAAC,CAAC,eAAe,CAAC,CAACE,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC;QAC3C;MACJ;IACJ,CAAC,CAAC;IAEFF,CAAC,CAACmI,iBAAiB,CAAC,CAACtC,IAAI,CAAC,QAAQ,EAAEvB,MAAM,CAAC;EAC/C,CAAC;EAEDiD,aAAa,EAAE,SAAAA,cAAUvE,IAAI,EAAE;IAC3B,IAAI8F,eAAe,GAAG9F,IAAI,CAAC+F,cAAc,CAAC,CAAC;IAE3CD,eAAe,CAAC/D,OAAO,CAAC,UAAUiE,IAAI,EAAE;MACpC,IAAIA,IAAI,CAACC,IAAI,CAACJ,OAAO,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,EAAE;QACtCG,IAAI,CAACnG,KAAK,GAAG7C,CAAC,CAAC,aAAa,CAAC,CAAC6F,IAAI,CAAC,QAAQ,CAAC,CAACqD,WAAW,CAAC,CAAC,CAAC,CAAC;MAChE;IACJ,CAAC,CAAC;IAEF,OAAOlJ,CAAC,CAACmJ,KAAK,CAACL,eAAe,CAAC;EACnC;AACJ,CAAC,C;;;;;;;;;;;;AC5CY;;AAEb3F,MAAM,CAACC,OAAO,GAAG;EACbgG,eAAe,EAAE,SAAAA,gBAAUC,WAAW,EAAE;IACpC,IAAIC,WAAW,GAAG,CAAC;IACnB,IAAIC,YAAY,GAAIF,WAAW,CAACG,KAAK,CAAC9G,GAAG,KAAK,KAAK,IAAI2G,WAAW,CAACG,KAAK,CAACC,OAAO,KAAKH,WAAY;IAEjG,IAAI,CAACC,YAAY,EAAE;MACf;IACJ;IAEA,IAAIG,gBAAgB,GAAG1J,CAAC,CAACqJ,WAAW,CAACM,iBAAiB,GAAG,GAAG,GAAGN,WAAW,CAACO,oBAAoB,CAAC;IAChG,IAAIC,eAAe,GAAG7J,CAAC,CAACqJ,WAAW,CAACM,iBAAiB,GAAG,GAAG,GAAGN,WAAW,CAACS,mBAAmB,CAAC;IAE9F,IAAI9J,CAAC,CAACqJ,WAAW,CAACM,iBAAiB,GAAG,GAAG,GAAGN,WAAW,CAACS,mBAAmB,CAAC,CAACC,EAAE,CAAC,WAAW,CAAC,EAAE;MAC1FF,eAAe,GAAG7J,CAAC,CAACqJ,WAAW,CAACM,iBAAiB,GAAG,GAAG,GAAGN,WAAW,CAACW,yBAAyB,CAAC;MAChG,IAAIhK,CAAC,CAAC,gCAAgC,CAAC,CAACsC,MAAM,GAAG,CAAC,EAAE;QAChD,IAAI2H,YAAY,GAAGjK,CAAC,CAACqJ,WAAW,CAACM,iBAAiB,GAAG,wBAAwB,CAAC;QAC9EE,eAAe,GAAGI,YAAY,CAACA,YAAY,CAAC3H,MAAM,GAAG,CAAC,CAAC;MAC3D;IACJ;IAEA,IAAI+G,WAAW,CAACG,KAAK,CAACU,QAAQ,EAAE,iBAAkB;QAC9C,IAAIlK,CAAC,CAAC,QAAQ,CAAC,CAAC+J,EAAE,CAACL,gBAAgB,CAAC,EAAE;UAClCG,eAAe,CAACM,KAAK,CAAC,CAAC;UACvBd,WAAW,CAACG,KAAK,CAAC7B,cAAc,CAAC,CAAC;QACtC;MACJ,CAAC,MAAM,SAAU;QACb,IAAI3H,CAAC,CAAC,QAAQ,CAAC,CAAC+J,EAAE,CAACF,eAAe,CAAC,EAAE;UAAE;UACnCH,gBAAgB,CAACS,KAAK,CAAC,CAAC;UACxBd,WAAW,CAACG,KAAK,CAAC7B,cAAc,CAAC,CAAC;QACtC;MACJ;EACJ;AACJ,CAAC,C;;;;;;;;;;;;AClCY;;AACb,IAAIyC,WAAW,GAAG/F,mBAAO,CAAC,6GAAqB,CAAC;;AAEhD;AACA;AACA;AACA;AACA;AACA,SAASgG,WAAWA,CAACzG,GAAG,EAAE;EACtB,IAAI0G,GAAG;EAEP,IAAItK,CAAC,CAAC,iBAAiB,CAAC,CAACuK,QAAQ,CAAC,MAAM,CAAC,IAAI,CAACvK,CAAC,CAAC,cAAc,CAAC,CAACsC,MAAM,EAAE;IACpEgI,GAAG,GAAGtK,CAAC,CAAC4D,GAAG,CAAC,CAACJ,OAAO,CAAC,gBAAgB,CAAC,CAACC,IAAI,CAAC,oBAAoB,CAAC,CAACoC,IAAI,CAAC,KAAK,CAAC;EACjF,CAAC,MAAM,IAAI7F,CAAC,CAAC,qBAAqB,CAAC,CAACsC,MAAM,IAAItC,CAAC,CAAC,cAAc,CAAC,CAACsC,MAAM,EAAE;IACpEgI,GAAG,GAAGtK,CAAC,CAAC4D,GAAG,CAAC,CAACJ,OAAO,CAAC,iBAAiB,CAAC,CAACC,IAAI,CAAC,aAAa,CAAC,CAACrD,IAAI,CAAC,CAAC;EACtE,CAAC,MAAM;IACHkK,GAAG,GAAGtK,CAAC,CAAC,qCAAqC,CAAC,CAAC6F,IAAI,CAAC,KAAK,CAAC;EAC9D;EAEA,OAAOyE,GAAG;AACd;;AAEA;AACA;AACA;AACA;AACA;AACA,SAASE,mBAAmBA,CAAC5G,GAAG,EAAE;EAC9B,IAAI6G,gBAAgB;EACpB,IAAI7G,GAAG,IAAI5D,CAAC,CAAC,YAAY,CAAC,CAACsC,MAAM,EAAE;IAC/BmI,gBAAgB,GAAGzK,CAAC,CAAC4D,GAAG,CAAC,CAACJ,OAAO,CAAC,iBAAiB,CAAC,CAACC,IAAI,CAAC,kBAAkB,CAAC;EACjF,CAAC,MAAM,IAAIG,GAAG,IAAI5D,CAAC,CAAC,iBAAiB,CAAC,CAACsC,MAAM,EAAE;IAC3C,IAAIoI,qBAAqB,GAAG1K,CAAC,CAAC4D,GAAG,CAAC,CAACJ,OAAO,CAAC,eAAe,CAAC,CAACC,IAAI,CAAC,kBAAkB,CAAC;IACpF,IAAIkH,mBAAmB,GAAG3K,CAAC,CAAC4D,GAAG,CAAC,CAACJ,OAAO,CAAC,gBAAgB,CAAC,CAACC,IAAI,CAAC,kBAAkB,CAAC;IACnF,IAAIiH,qBAAqB,CAACvK,GAAG,CAAC,CAAC,KAAKyK,SAAS,EAAE;MAC3CH,gBAAgB,GAAGE,mBAAmB;IAC1C,CAAC,MAAM;MACHF,gBAAgB,GAAGC,qBAAqB;IAC5C;EACJ,CAAC,MAAM;IACHD,gBAAgB,GAAGzK,CAAC,CAAC,kBAAkB,CAAC;EAC5C;EACA,OAAOyK,gBAAgB;AAC3B;;AAEA;AACA;AACA;AACA;AACA;AACA,SAASI,mBAAmBA,CAACjH,GAAG,EAAE;EAC9B,OAAO4G,mBAAmB,CAAC5G,GAAG,CAAC,CAACzD,GAAG,CAAC,CAAC;AACzC;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS2K,mBAAmBA,CAAC5K,IAAI,EAAE6K,iBAAiB,EAAEC,IAAI,EAAE;EACxD9K,IAAI,CAAC+K,MAAM,CAAClG,OAAO,CAAC,UAAUmG,SAAS,EAAE;IACrC,IAAIC,UAAU,GAAGJ,iBAAiB,CAACtH,IAAI,CAAC,cAAc,GAAGvD,IAAI,CAACkL,EAAE,GAAG,uBAAuB,GACtFF,SAAS,CAACrI,KAAK,GAAG,IAAI,CAAC;IAC3B,IAAIwI,aAAa,GAAGF,UAAU,CAAChH,MAAM,CAAC,CAAC;IAEvC,IAAI+G,SAAS,CAAC3K,QAAQ,EAAE;MACpB4K,UAAU,CAACxH,QAAQ,CAAC,UAAU,CAAC;MAC/BwH,UAAU,CAACG,QAAQ,CAAC,0BAA0B,CAAC,CAAClL,IAAI,CAAC4K,IAAI,CAACO,qBAAqB,CAAC;IACpF,CAAC,MAAM;MACHJ,UAAU,CAACzH,WAAW,CAAC,UAAU,CAAC;MAClCyH,UAAU,CAACG,QAAQ,CAAC,0BAA0B,CAAC,CAAC1G,KAAK,CAAC,CAAC;IAC3D;IAEA,IAAIsG,SAAS,CAACM,GAAG,EAAE;MACfH,aAAa,CAACnL,IAAI,CAAC,UAAU,EAAEgL,SAAS,CAACM,GAAG,CAAC;IACjD,CAAC,MAAM;MACHH,aAAa,CAACI,UAAU,CAAC,UAAU,CAAC;IACxC;;IAEA;IACAN,UAAU,CAACzH,WAAW,CAAC,yBAAyB,CAAC;IAEjDyH,UAAU,CAACxH,QAAQ,CAACuH,SAAS,CAACQ,UAAU,GAAG,YAAY,GAAG,cAAc,CAAC;EAC7E,CAAC,CAAC;AACN;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAASC,sBAAsBA,CAACzL,IAAI,EAAE6K,iBAAiB,EAAE;EACrD,IAAIa,KAAK,GAAG,cAAc,GAAG1L,IAAI,CAACkL,EAAE,GAAG,IAAI;EAC3C,IAAIS,cAAc,GAAGd,iBAAiB,CAACtH,IAAI,CAACmI,KAAK,GAAG,WAAW,GAAG1L,IAAI,CAACkL,EAAE,GAAG,eAAe,CAAC;EAC5FS,cAAc,CAAC3L,IAAI,CAAC,OAAO,EAAEA,IAAI,CAAC4L,QAAQ,CAAC;EAE3C5L,IAAI,CAAC+K,MAAM,CAAClG,OAAO,CAAC,UAAUmG,SAAS,EAAE;IACrC,IAAIC,UAAU,GAAGJ,iBAAiB,CAC7BtH,IAAI,CAACmI,KAAK,GAAG,qBAAqB,GAAGV,SAAS,CAACrI,KAAK,GAAG,IAAI,CAAC;IACjEsI,UAAU,CAACjL,IAAI,CAAC,OAAO,EAAEgL,SAAS,CAACM,GAAG,CAAC,CAClCC,UAAU,CAAC,UAAU,CAAC;IAE3B,IAAI,CAACP,SAAS,CAACQ,UAAU,EAAE;MACvBP,UAAU,CAACjL,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC;IACrC;EACJ,CAAC,CAAC;AACN;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS6L,WAAWA,CAAChF,KAAK,EAAEgE,iBAAiB,EAAEC,IAAI,EAAE;EACjD;EACA,IAAIgB,iBAAiB,GAAG,CAAC,OAAO,CAAC;EAEjCjF,KAAK,CAAChC,OAAO,CAAC,UAAU7E,IAAI,EAAE;IAC1B,IAAI8L,iBAAiB,CAACnD,OAAO,CAAC3I,IAAI,CAACkL,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE;MACzCN,mBAAmB,CAAC5K,IAAI,EAAE6K,iBAAiB,EAAEC,IAAI,CAAC;IACtD,CAAC,MAAM;MACHW,sBAAsB,CAACzL,IAAI,EAAE6K,iBAAiB,CAAC;IACnD;EACJ,CAAC,CAAC;AACN;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAASkB,kBAAkBA,CAACC,QAAQ,EAAEnB,iBAAiB,EAAE;EACrD,IAAIoB,iBAAiB,GAAG,EAAE;EAC1B,IAAIC,oBAAoB,GAAGF,QAAQ,CAACG,OAAO,CAACC,YAAY,CAACC,QAAQ;EACjE,IAAI,CAACL,QAAQ,CAACG,OAAO,CAACG,YAAY,EAAE;IAChCL,iBAAiB,GAAG,WAAW,GAAGD,QAAQ,CAACzK,SAAS,CAACgL,mBAAmB,GAAG,aAAa;EAC5F,CAAC,MAAM;IACHL,oBAAoB,CAACrH,OAAO,CAAC,UAAU2H,OAAO,EAAE;MAC5CP,iBAAiB,IAAI,WAAW,GAAGO,OAAO,GAAG,aAAa;IAC9D,CAAC,CAAC;EACN;EAEA1M,CAAC,CAAC+K,iBAAiB,CAAC,CAACjH,OAAO,CAAC,4BAA4B,EAAE;IACvDuI,OAAO,EAAEH,QAAQ,CAACG,OAAO;IACzBtB,iBAAiB,EAAEA,iBAAiB;IACpC2B,OAAO,EAAEP,iBAAiB;IAC1B1K,SAAS,EAAEyK,QAAQ,CAACzK;EACxB,CAAC,CAAC;AACN;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,SAASkL,iBAAiBA,CAACC,UAAU,EAAE;EACnC,IAAI,CAACA,UAAU,EAAE;IACb,OAAO,EAAE;EACb;EAEA,IAAIC,IAAI,GAAG,EAAE;EAEbD,UAAU,CAAC7H,OAAO,CAAC,UAAU+H,cAAc,EAAE;IACzC,IAAIA,cAAc,CAAC3H,EAAE,KAAK,gBAAgB,EAAE;MACxC2H,cAAc,CAACF,UAAU,CAAC7H,OAAO,CAAC,UAAUgI,SAAS,EAAE;QACnDF,IAAI,IAAI,gCAAgC,GAAGE,SAAS,CAACC,KAAK,GAAG,IAAI,GAC3DD,SAAS,CAAClK,KAAK,GAAG,QAAQ;MACpC,CAAC,CAAC;IACN;EACJ,CAAC,CAAC;EAEF,OAAOgK,IAAI;AACf;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,SAASI,aAAaA,CAACC,WAAW,EAAEnC,iBAAiB,EAAE;EACtD;EACGA,iBAAiB,CAACtH,IAAI,CAAC,kBAAkB,CAAC,CAACmB,KAAK,CAAC,CAAC,CAACiI,IAAI,CAACK,WAAW,CAAC;AACxE;;AAEA;AACA;AACA;AACA;AACA;AACA,SAASC,cAAcA,CAACC,IAAI,EAAErC,iBAAiB,EAAE;EAC7C,IAAIsC,QAAQ,GAAGtC,iBAAiB,CAACtH,IAAI,CAAC,WAAW,CAAC;EAClDzD,CAAC,CAACqN,QAAQ,CAAC,CAACA,QAAQ,CAAC,SAAS,CAAC;EAC/B,IAAIC,UAAU,GAAGtN,CAAC,CAACqN,QAAQ,CAAC,CAACnN,IAAI,CAAC,IAAI,CAAC;EACvCF,CAAC,CAACqN,QAAQ,CAAC,CAACzI,KAAK,CAAC,CAAC,CAACC,MAAM,CAAC,gIAAgI,GAAGyI,UAAU,GAAG,+GAA+G,GAAGtN,CAAC,CAACqN,QAAQ,CAAC,CAACxH,IAAI,CAAC,MAAM,CAAC,GAAG,qDAAqD,GAAGyH,UAAU,GAAG,+GAA+G,GAAGtN,CAAC,CAACqN,QAAQ,CAAC,CAACxH,IAAI,CAAC,MAAM,CAAC,GAAG,aAAa,CAAC;EACxhB,KAAK,IAAI0H,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGH,IAAI,CAAC9K,MAAM,EAAEiL,CAAC,EAAE,EAAE;IAClCvN,CAAC,CAAC,uCAAuC,GAAGoN,IAAI,CAACG,CAAC,CAAC,CAAC/B,GAAG,GAAG,mCAAmC,GAAG4B,IAAI,CAACG,CAAC,CAAC,CAACC,GAAG,GAAG,gBAAgB,GAAGC,QAAQ,CAACL,IAAI,CAACG,CAAC,CAAC,CAACG,KAAK,EAAE,EAAE,CAAC,GAAG,WAAW,GAAGN,IAAI,CAACG,CAAC,CAAC,CAAC/L,KAAK,GAAG,6BAA6B,CAAC,CAACmM,QAAQ,CAAC3N,CAAC,CAACqN,QAAQ,CAAC,CAAC5J,IAAI,CAAC,iBAAiB,CAAC,CAAC;IACzQzD,CAAC,CAAC,oBAAoB,GAAGsN,UAAU,GAAG,mBAAmB,GAAGC,CAAC,GAAG,kBAAkB,CAAC,CAACI,QAAQ,CAAC3N,CAAC,CAACqN,QAAQ,CAAC,CAAC5J,IAAI,CAAC,sBAAsB,CAAC,CAAC;EAC1I;EACAzD,CAAC,CAACA,CAAC,CAACqN,QAAQ,CAAC,CAAC5J,IAAI,CAAC,gBAAgB,CAAC,CAAC,CAACmK,KAAK,CAAC,CAAC,CAACjK,QAAQ,CAAC,QAAQ,CAAC;EAChE3D,CAAC,CAACA,CAAC,CAACqN,QAAQ,CAAC,CAAC5J,IAAI,CAAC,2BAA2B,CAAC,CAAC,CAACmK,KAAK,CAAC,CAAC,CAACjK,QAAQ,CAAC,QAAQ,CAAC;EAC3E,IAAIyJ,IAAI,CAAC9K,MAAM,KAAK,CAAC,EAAE;IACnBtC,CAAC,CAACA,CAAC,CAACqN,QAAQ,CAAC,CAAC5J,IAAI,CAAC,qDAAqD,CAAC,CAAC,CAACoK,MAAM,CAAC,CAAC;EACvF;EACA7N,CAAC,CAACqN,QAAQ,CAAC,CAACA,QAAQ,CAAC,CAAC;EACtBrN,CAAC,CAACA,CAAC,CAACqN,QAAQ,CAAC,CAAC5J,IAAI,CAAC,sBAAsB,CAAC,CAAC,CAACvD,IAAI,CAAC,aAAa,EAAE,IAAI,CAAC;AACzE;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS4N,qBAAqBA,CAAC5B,QAAQ,EAAEnB,iBAAiB,EAAE;EACxD,IAAIgD,uBAAuB,GACvBhD,iBAAiB,CAAClH,OAAO,CAAC,8BAA8B,CAAC,CAACvB,MAAM,GAAG,CAAC;EACxE,IAAI0L,SAAS;EACb,IAAI9B,QAAQ,CAACG,OAAO,CAAC4B,mBAAmB,EAAE;IACtClC,WAAW,CAACG,QAAQ,CAACG,OAAO,CAAC4B,mBAAmB,EAAElD,iBAAiB,EAAEmB,QAAQ,CAACzK,SAAS,CAAC;IACxFuM,SAAS,GAAG9B,QAAQ,CAACG,OAAO,CAAC6B,WAAW,KAAK,SAAS;IACtD,IAAIH,uBAAuB,IAAIC,SAAS,EAAE;MACtCjD,iBAAiB,CAAC5G,MAAM,CAAC,qBAAqB,CAAC,CAC1C0B,IAAI,CAAC,KAAK,EAAEqG,QAAQ,CAACG,OAAO,CAACjB,EAAE,CAAC;MAErCL,iBAAiB,CAAC5G,MAAM,CAAC,qBAAqB,CAAC,CAC1C0B,IAAI,CAAC,gBAAgB,EAAEqG,QAAQ,CAACG,OAAO,CAACG,YAAY,CAAC;IAC9D;EACJ;;EAEA;EACA,IAAI2B,gBAAgB,GAAGjC,QAAQ,CAACG,OAAO,CAAC+B,MAAM,CAACC,KAAK;EACpDlB,cAAc,CAACgB,gBAAgB,EAAEpD,iBAAiB,CAAC;;EAEnD;EACA,IAAI,CAACgD,uBAAuB,EAAE;IAC1B,IAAIO,cAAc,GAAGtO,CAAC,CAAC,gBAAgB,EAAE+K,iBAAiB,CAAC,CAACzI,MAAM,GAC5DtC,CAAC,CAAC,gBAAgB,EAAE+K,iBAAiB,CAAC,GACtC/K,CAAC,CAAC,gBAAgB,CAAC;IACzBsO,cAAc,CAACC,WAAW,CAACrC,QAAQ,CAACG,OAAO,CAACmC,KAAK,CAAC3B,IAAI,CAAC;EAC3D;;EAEA;EACA9B,iBAAiB,CAACtH,IAAI,CAAC,aAAa,CAAC,CAACmB,KAAK,CAAC,CAAC,CAACiI,IAAI,CAACX,QAAQ,CAACG,OAAO,CAACoC,cAAc,CAAC;EAEnFxC,kBAAkB,CAACC,QAAQ,EAAEnB,iBAAiB,CAAC;EAE/C,IAAIgD,uBAAuB,EAAE;IACzB,IAAIW,aAAa,GAAG3D,iBAAiB,CAACtH,IAAI,CAAC,uBAAuB,CAAC;IACnEiL,aAAa,CAAC5K,OAAO,CAAC,iCAAiC,EAAE;MACrDuI,OAAO,EAAEH,QAAQ,CAACG,OAAO;MAAEtB,iBAAiB,EAAEA;IAClD,CAAC,CAAC;EACN,CAAC,MAAM;IACH;IACA/K,CAAC,CAAC,kFAAkF,CAAC,CAAC8D,OAAO,CAAC,yBAAyB,EAAE;MACrHuI,OAAO,EAAEH,QAAQ,CAACG,OAAO;MAAEtB,iBAAiB,EAAEA;IAClD,CAAC,CAAC,CAACjH,OAAO,CAAC,sBAAsB,EAAEoI,QAAQ,CAACG,OAAO,CAAC;EACxD;;EAEA;EACAtB,iBAAiB,CAACtH,IAAI,CAAC,kBAAkB,CAAC,CAACmB,KAAK,CAAC,CAAC,CAC7CiI,IAAI,CAACF,iBAAiB,CAACT,QAAQ,CAACG,OAAO,CAACO,UAAU,CAAC,CAAC;AAC7D;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,SAAS+B,gBAAgBA,CAACC,UAAU,EAAE7D,iBAAiB,EAAE;EACrD,IAAIA,iBAAiB,CAAC5G,MAAM,CAAC,qBAAqB,CAAC,CAAC7B,MAAM,IAAI,CAAC,EAAE;IAC7D,IAAI4K,WAAW,GAAG0B,UAAU,CAACC,GAAG,CAAC,UAAUC,QAAQ,EAAE;MACjD,IAAIvO,QAAQ,GAAGuO,QAAQ,CAACvO,QAAQ,GAAG,YAAY,GAAG,EAAE;MACpD,OAAO,iBAAiB,GAAGuO,QAAQ,CAACjM,KAAK,GAAG,eAAe,GAAGiM,QAAQ,CAACtD,GAAG,GAAG,GAAG,GAC5EjL,QAAQ,GAAG,GAAG,GAAGuO,QAAQ,CAACjM,KAAK,GAAG,WAAW;IACrD,CAAC,CAAC,CAACN,IAAI,CAAC,EAAE,CAAC;IACXiI,mBAAmB,CAACO,iBAAiB,CAAC,CAACnG,KAAK,CAAC,CAAC,CAACiI,IAAI,CAACK,WAAW,CAAC;EACpE;AACJ;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS6B,eAAeA,CAACC,gBAAgB,EAAEjE,iBAAiB,EAAE;EAC1D,IAAIiE,gBAAgB,EAAE;IAClBhP,CAAC,CAAC,MAAM,CAAC,CAAC8D,OAAO,CAAC,+BAA+B,EAC7C;MAAE0H,GAAG,EAAEwD,gBAAgB;MAAEC,SAAS,EAAElE;IAAkB,CAAC,CAAC;IAE5D/K,CAAC,CAACkP,IAAI,CAAC;MACH1D,GAAG,EAAEwD,gBAAgB;MACrBG,MAAM,EAAE,KAAK;MACbC,OAAO,EAAE,SAAAA,QAAUvJ,IAAI,EAAE;QACrBiI,qBAAqB,CAACjI,IAAI,EAAEkF,iBAAiB,CAAC;QAC9CkC,aAAa,CAACpH,IAAI,CAACwG,OAAO,CAACa,WAAW,EAAEnC,iBAAiB,CAAC;QAC1D4D,gBAAgB,CAAC9I,IAAI,CAACwG,OAAO,CAACuC,UAAU,EAAE7D,iBAAiB,CAAC;QAC5D/K,CAAC,CAAC,MAAM,CAAC,CAAC8D,OAAO,CAAC,8BAA8B,EAC5C;UAAE+B,IAAI,EAAEA,IAAI;UAAEoJ,SAAS,EAAElE;QAAkB,CAAC,CAAC;QACjD/K,CAAC,CAACqP,OAAO,CAAC,CAAC,CAACC,IAAI,CAAC,CAAC;MACtB,CAAC;MACDC,KAAK,EAAE,SAAAA,MAAA,EAAY;QACfvP,CAAC,CAACqP,OAAO,CAAC,CAAC,CAACC,IAAI,CAAC,CAAC;MACtB;IACJ,CAAC,CAAC;EACN;AACJ;;AAEA;AACA;AACA;AACA;AACA;AACA,SAASE,eAAeA,CAAA,EAAG;EACvB,OAAOxP,CAAC,CAAC,kBAAkB,CAAC,CAACG,GAAG,CAAC,CAAC;AACtC;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,SAASsP,SAASA,CAAC5C,IAAI,EAAE;EACrB,IAAI6C,KAAK,GAAG1P,CAAC,CAAC,OAAO,CAAC,CAAC6E,MAAM,CAAC7E,CAAC,CAAC2P,SAAS,CAAC9C,IAAI,CAAC,CAAC;EAEhD,IAAI+C,IAAI,GAAGF,KAAK,CAACjM,IAAI,CAAC,0BAA0B,CAAC;EACjD,IAAIoM,MAAM,GAAGH,KAAK,CAACjM,IAAI,CAAC,eAAe,CAAC,CAACqM,QAAQ,CAAC,CAAC;EAEnD,OAAO;IAAEF,IAAI,EAAEA,IAAI;IAAEC,MAAM,EAAEA;EAAO,CAAC;AACzC;;AAEA;AACA;AACA;AACA;AACA;AACA,SAASE,mBAAmBA,CAAClK,IAAI,EAAE;EAC/B7F,CAAC,CAAC,aAAa,CAAC,CAACqP,OAAO,CAAC,CAAC,CAACW,KAAK,CAAC,CAAC;EAElC,IAAIhQ,CAAC,CAAC,0BAA0B,CAAC,CAACsC,MAAM,KAAK,CAAC,EAAE;IAC5CtC,CAAC,CAAC,0BAA0B,CAAC,CAACiQ,MAAM,CAAC,CAAC;EAC1C;EACA,IAAIC,QAAQ;EACZ,IAAIrK,IAAI,CAACsK,oBAAoB,EAAE;IAC3BD,QAAQ,GAAGrK,IAAI,CAACuK,wBAAwB;EAC5C,CAAC,MAAM;IACHF,QAAQ,GAAGrK,IAAI,CAACwK,wBAAwB;EAC5C;EAEA,IAAIC,UAAU,GAAG,gBAAgB,GAC3B,mFAAmF,GACnF,8CAA8C,GAC9C,wDAAwD,GACxD,kBAAkB,GAAGzK,IAAI,CAAC0K,aAAa,GAAG,GAAG,GAC7C,aAAa,GAAG1K,IAAI,CAACvE,IAAI,GAAG,GAAG,GAC/B,gBAAgB,GAAGuE,IAAI,CAAC2K,OAAO,GAAG,GAAG,GACrC,qBAAqB,GAAG3K,IAAI,CAAC4K,YAAY,GAAG,GAAG,GAC/C,oBAAoB,GACpB,iBAAiB,GAAG5K,IAAI,CAAC6K,QAAQ,GAAG,GAAG,GACvC,gBAAgB,GAAG7K,IAAI,CAACuK,wBAAwB,GAAG,GAAG,GACtD,6BAA6B,GAAGvK,IAAI,CAACsK,oBAAoB,GAAG,IAAI,GAChE,uBAAuB,GACvB,6BAA6B,GAC7B,4BAA4B,GAC5B,qBAAqB,GAAGtK,IAAI,CAAC8K,MAAM,CAACC,WAAW,GAAG,SAAS,GAC3D,0EAA0E,GAC1E,iDAAiD,GACjD,wCAAwC,GACxC,eAAe,GACf,QAAQ,GACR,gCAAgC,GAChC,kCAAkC,GAClC,QAAQ,GACR,QAAQ,GACR,QAAQ;EACd5Q,CAAC,CAAC,MAAM,CAAC,CAAC6E,MAAM,CAACyL,UAAU,CAAC;EAC5BtQ,CAAC,CAAC,aAAa,CAAC,CAACqP,OAAO,CAAC,CAAC,CAACW,KAAK,CAAC,CAAC;EAElChQ,CAAC,CAACkP,IAAI,CAAC;IACH1D,GAAG,EAAE0E,QAAQ;IACbf,MAAM,EAAE,KAAK;IACb0B,QAAQ,EAAE,MAAM;IAChBzB,OAAO,EAAE,SAAAA,QAAUlD,QAAQ,EAAE;MACzB,IAAI4E,UAAU,GAAGrB,SAAS,CAACvD,QAAQ,CAAC6E,gBAAgB,CAAC;MACrD/Q,CAAC,CAAC,sCAAsC,CAAC,CAAC4E,KAAK,CAAC,CAAC;MACjD5E,CAAC,CAAC,yCAAyC,CAAC,CAACI,IAAI,CAAC8L,QAAQ,CAAC8E,kBAAkB,CAAC;MAC9EhR,CAAC,CAAC,wDAAwD,CAAC,CAACI,IAAI,CAAC8L,QAAQ,CAAC+E,eAAe,CAAC;MAC1FjR,CAAC,CAAC,sCAAsC,CAAC,CAAC6M,IAAI,CAACiE,UAAU,CAAClB,IAAI,CAAC;MAC/D5P,CAAC,CAAC,wCAAwC,CAAC,CAAC6M,IAAI,CAACiE,UAAU,CAACjB,MAAM,CAAC;MACnE7P,CAAC,CAAC,0BAA0B,CAAC,CAACkR,KAAK,CAAC,MAAM,CAAC;MAC3ClR,CAAC,CAACqP,OAAO,CAAC,CAAC,CAACC,IAAI,CAAC,CAAC;IACtB,CAAC;IACDC,KAAK,EAAE,SAAAA,MAAA,EAAY;MACfvP,CAAC,CAACqP,OAAO,CAAC,CAAC,CAACC,IAAI,CAAC,CAAC;IACtB;EACJ,CAAC,CAAC;AACN;;AAEA;AACA;AACA;AACA;AACA,SAAS6B,iBAAiBA,CAACjF,QAAQ,EAAE;EACjClM,CAAC,CAAC,WAAW,CAAC,CAAC8D,OAAO,CAAC,cAAc,EAAEoI,QAAQ,CAAC;EAChD,IAAIkF,WAAW,GAAGlF,QAAQ,CAACqD,KAAK,GAAG,cAAc,GAAG,eAAe;EACnE;EACA,IAAIrD,QAAQ,CAACmF,wBAAwB,IAC9BpK,MAAM,CAACC,IAAI,CAACgF,QAAQ,CAACmF,wBAAwB,CAAC,CAAC/O,MAAM,KAAK,CAAC,EAAE;IAChEyN,mBAAmB,CAAC7D,QAAQ,CAACmF,wBAAwB,CAAC;EAC1D,CAAC,MAAM;IACH,IAAIrR,CAAC,CAAC,uBAAuB,CAAC,CAACsC,MAAM,KAAK,CAAC,EAAE;MACzCtC,CAAC,CAAC,MAAM,CAAC,CAAC6E,MAAM,CACZ,0CACJ,CAAC;IACL;IAEA7E,CAAC,CAAC,uBAAuB,CAAC,CAAC6E,MAAM,CAC7B,oBAAoB,GAAGuM,WAAW,GAAG,iDAAiD,GACpFlF,QAAQ,CAACQ,OAAO,GAChB,QACN,CAAC;IAED4E,UAAU,CAAC,YAAY;MACnBtR,CAAC,CAAC,sBAAsB,CAAC,CAACiQ,MAAM,CAAC,CAAC;IACtC,CAAC,EAAE,IAAI,CAAC;EACZ;AACJ;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,SAASsB,gBAAgBA,CAAA,EAAG;EACxB,IAAIC,aAAa,GAAG,EAAE;EACtBxR,CAAC,CAAC,cAAc,CAAC,CAACC,IAAI,CAAC,YAAY;IAC/BuR,aAAa,CAAC5P,IAAI,CAAC;MACf0I,GAAG,EAAEtK,CAAC,CAAC,IAAI,CAAC,CAACyD,IAAI,CAAC,aAAa,CAAC,CAACrD,IAAI,CAAC,CAAC;MACvC0O,QAAQ,EAAErB,QAAQ,CAACzN,CAAC,CAAC,IAAI,CAAC,CAACyD,IAAI,CAAC,gBAAgB,CAAC,CAACoC,IAAI,CAAC,UAAU,CAAC,EAAE,EAAE;IAC1E,CAAC,CAAC;EACN,CAAC,CAAC;EAEF,OAAO2L,aAAa,CAAClP,MAAM,GAAGmP,IAAI,CAACC,SAAS,CAACF,aAAa,CAAC,GAAG,EAAE;AACpE;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,SAASG,UAAUA,CAAC5G,iBAAiB,EAAE;EACnC,IAAItK,OAAO,GAAGsK,iBAAiB,CAC1BtH,IAAI,CAAC,iBAAiB,CAAC,CACvBoL,GAAG,CAAC,YAAY;IACb,IAAI+C,SAAS,GAAG5R,CAAC,CAAC,IAAI,CAAC,CAACyD,IAAI,CAAC,iBAAiB,CAAC;IAC/C,IAAIoO,QAAQ,GAAGD,SAAS,CAACzR,GAAG,CAAC,CAAC;IAC9B,IAAI2R,eAAe,GAAGF,SAAS,CAACnO,IAAI,CAAC,gBAAgB,GAAGoO,QAAQ,GAAG,IAAI,CAAC,CACnEhM,IAAI,CAAC,UAAU,CAAC;IACrB,OAAO;MACHkM,QAAQ,EAAE/R,CAAC,CAAC,IAAI,CAAC,CAAC6F,IAAI,CAAC,WAAW,CAAC;MACnCiM,eAAe,EAAEA;IACrB,CAAC;EACL,CAAC,CAAC,CAACE,OAAO,CAAC,CAAC;EAEhB,OAAOP,IAAI,CAACC,SAAS,CAACjR,OAAO,CAAC;AAClC;;AAEA;AACA;AACA;AACA;AACA;AACA,SAASwR,oBAAoBA,CAACzG,GAAG,EAAE;EAC/B,IAAIA,GAAG,EAAE;IACLxL,CAAC,CAACkP,IAAI,CAAC;MACH1D,GAAG,EAAEA,GAAG;MACR2D,MAAM,EAAE,KAAK;MACbC,OAAO,EAAE,SAAAA,QAAA,EAAY;QACjB;MAAA,CACH;MACDG,KAAK,EAAE,SAAAA,MAAA,EAAY;QACf;MAAA;IAER,CAAC,CAAC;EACN;AACJ;AAEApM,MAAM,CAACC,OAAO,GAAG;EACb2L,eAAe,EAAEA,eAAe;EAChC1L,OAAO,EAAE;IACL6O,iBAAiB,EAAE,SAAAA,kBAAUrM,IAAI,EAAE;MAC/BkK,mBAAmB,CAAClK,IAAI,CAAC;IAC7B;EACJ,CAAC;EAEDsM,4BAA4B,EAAE,SAAAA,6BAAA,EAAY;IACtCnS,CAAC,CAAC,MAAM,CAAC,CAACuD,EAAE,CAAC,gBAAgB,EAAE,0BAA0B,EAAE,YAAY;MACnEvD,CAAC,CAAC,0BAA0B,CAAC,CAACsL,QAAQ,CAAC,CAAC,CAACpL,IAAI,CAAC,aAAa,EAAE,MAAM,CAAC;MACpEF,CAAC,CAAC,iCAAiC,CAAC,CAACmK,KAAK,CAAC,CAAC;IAChD,CAAC,CAAC;EACN,CAAC;EAEDiI,gCAAgC,EAAE,SAAAA,iCAAA,EAAY;IAC1CpS,CAAC,CAAC,MAAM,CAAC,CAACuD,EAAE,CAAC,iBAAiB,EAAE,0BAA0B,EAAE,YAAY;MACpEvD,CAAC,CAAC,0BAA0B,CAAC,CAACsL,QAAQ,CAAC,CAAC,CAACpL,IAAI,CAAC,aAAa,EAAE,OAAO,CAAC;IACzE,CAAC,CAAC;EACN,CAAC;EAEDmS,gCAAgC,EAAE,SAAAA,iCAAA,EAAY;IAC1CrS,CAAC,CAAC,MAAM,CAAC,CAACuD,EAAE,CAAC,SAAS,EAAE,0BAA0B,EAAE,UAAU8D,CAAC,EAAE;MAC7D,IAAIgC,WAAW,GAAG;QACdG,KAAK,EAAEnC,CAAC;QACRsC,iBAAiB,EAAE,0BAA0B;QAC7CC,oBAAoB,EAAE,QAAQ;QAC9BE,mBAAmB,EAAE;MACzB,CAAC;MACDM,WAAW,CAAChB,eAAe,CAACC,WAAW,CAAC;IAC5C,CAAC,CAAC;EACN,CAAC;EAEDiJ,cAAc,EAAE,SAAAA,eAAA,EAAY;IACxBtS,CAAC,CAAC0H,QAAQ,CAAC,CAACnE,EAAE,CAAC,OAAO,EAAE,4BAA4B,EAAE,UAAU8D,CAAC,EAAE;MAC/DA,CAAC,CAACM,cAAc,CAAC,CAAC;MAElB,IAAI3H,CAAC,CAAC,IAAI,CAAC,CAACE,IAAI,CAAC,UAAU,CAAC,EAAE;QAC1B;MACJ;MACA,IAAI6K,iBAAiB,GAAG/K,CAAC,CAAC,IAAI,CAAC,CAACwD,OAAO,CAAC,WAAW,CAAC;MACpD,IAAI,CAACuH,iBAAiB,CAACzI,MAAM,EAAE;QAC3ByI,iBAAiB,GAAG/K,CAAC,CAAC,IAAI,CAAC,CAACwD,OAAO,CAAC,iBAAiB,CAAC;MAC1D;MAEAuL,eAAe,CAAC/O,CAAC,CAAC,IAAI,CAAC,CAACE,IAAI,CAAC,UAAU,CAAC,EAAE6K,iBAAiB,CAAC;IAChE,CAAC,CAAC;EACN,CAAC;EAEDwH,eAAe,EAAE,SAAAA,gBAAA,EAAY;IACzBvS,CAAC,CAAC0H,QAAQ,CAAC,CAACnE,EAAE,CAAC,QAAQ,EAAE,2CAA2C,EAAE,UAAU8D,CAAC,EAAE;MAC/EA,CAAC,CAACM,cAAc,CAAC,CAAC;MAElB,IAAIoD,iBAAiB,GAAG/K,CAAC,CAAC,IAAI,CAAC,CAACwD,OAAO,CAAC,WAAW,CAAC;MACpD,IAAI,CAACuH,iBAAiB,CAACzI,MAAM,EAAE;QAC3ByI,iBAAiB,GAAG/K,CAAC,CAAC,IAAI,CAAC,CAACwD,OAAO,CAAC,iBAAiB,CAAC;MAC1D;MACAuL,eAAe,CAAC1H,CAAC,CAACmL,aAAa,CAAC3P,KAAK,EAAEkI,iBAAiB,CAAC;IAC7D,CAAC,CAAC;EACN,CAAC;EAEDuB,YAAY,EAAE,SAAAA,aAAA,EAAY;IACtBtM,CAAC,CAAC0H,QAAQ,CAAC,CAACnE,EAAE,CAAC,QAAQ,EAAE,kBAAkB,EAAE,UAAU8D,CAAC,EAAE;MACtDA,CAAC,CAACM,cAAc,CAAC,CAAC;MAElB,IAAIoD,iBAAiB,GAAG/K,CAAC,CAAC,IAAI,CAAC,CAACwD,OAAO,CAAC,iBAAiB,CAAC;MAC1D,IAAI,CAACuH,iBAAiB,CAACzI,MAAM,EAAE;QAC3ByI,iBAAiB,GAAG/K,CAAC,CAAC,IAAI,CAAC,CAACwD,OAAO,CAAC,gBAAgB,CAAC,CAACC,IAAI,CAAC,oBAAoB,CAAC;MACpF;MAEA,IAAIzD,CAAC,CAAC,eAAe,EAAE+K,iBAAiB,CAAC,CAACzI,MAAM,KAAK,CAAC,EAAE;QACpDyM,eAAe,CAAC/O,CAAC,CAACqH,CAAC,CAACmL,aAAa,CAAC,CAAC/O,IAAI,CAAC,iBAAiB,CAAC,CAACoC,IAAI,CAAC,KAAK,CAAC,EAClEkF,iBAAiB,CAAC;MAC1B;IACJ,CAAC,CAAC;EACN,CAAC;EAED0H,SAAS,EAAE,SAAAA,UAAA,EAAY;IACnBzS,CAAC,CAAC0H,QAAQ,CAAC,CAACnE,EAAE,CAAC,OAAO,EAAE,+CAA+C,EAAE,YAAY;MACjF,IAAIkN,YAAY;MAChB,IAAInG,GAAG;MACP,IAAIoI,OAAO;MACX,IAAIC,OAAO;MAEX3S,CAAC,CAAC,MAAM,CAAC,CAAC8D,OAAO,CAAC,yBAAyB,EAAE,IAAI,CAAC;MAElD,IAAI9D,CAAC,CAAC,YAAY,CAAC,CAACsC,MAAM,IAAItC,CAAC,CAAC,IAAI,CAAC,CAACuK,QAAQ,CAAC,oBAAoB,CAAC,EAAE;QAClEoI,OAAO,GAAG,EAAE;QAEZ3S,CAAC,CAAC,iBAAiB,CAAC,CAACC,IAAI,CAAC,YAAY;UAClC,IAAI,CAACD,CAAC,CAAC,IAAI,CAAC,CAACuK,QAAQ,CAAC,oBAAoB,CAAC,EAAE;YACzCoI,OAAO,CAAC/Q,IAAI,CAAC;cACT0I,GAAG,EAAEtK,CAAC,CAAC,IAAI,CAAC,CAACyD,IAAI,CAAC,aAAa,CAAC,CAACrD,IAAI,CAAC,CAAC;cACvCwS,GAAG,EAAE5S,CAAC,CAAC,IAAI,CAAC,CAACyD,IAAI,CAAC,kBAAkB,CAAC,CAACtD,GAAG,CAAC,CAAC;cAC3CM,OAAO,EAAEkR,UAAU,CAAC3R,CAAC,CAAC,IAAI,CAAC;YAC/B,CAAC,CAAC;UACN;QACJ,CAAC,CAAC;QACF0S,OAAO,GAAGjB,IAAI,CAACC,SAAS,CAACiB,OAAO,CAAC;MACrC;MAEArI,GAAG,GAAGD,WAAW,CAACrK,CAAC,CAAC,IAAI,CAAC,CAAC;MAE1B,IAAI+K,iBAAiB,GAAG/K,CAAC,CAAC,IAAI,CAAC,CAACwD,OAAO,CAAC,iBAAiB,CAAC;MAC1D,IAAI,CAACuH,iBAAiB,CAACzI,MAAM,EAAE;QAC3ByI,iBAAiB,GAAG/K,CAAC,CAAC,IAAI,CAAC,CAACwD,OAAO,CAAC,oBAAoB,CAAC,CAACC,IAAI,CAAC,iBAAiB,CAAC;MACrF;MAEAgN,YAAY,GAAGjB,eAAe,CAAC,CAAC;MAEhC,IAAIxM,IAAI,GAAG;QACPsH,GAAG,EAAEA,GAAG;QACRoI,OAAO,EAAEA,OAAO;QAChBlB,aAAa,EAAED,gBAAgB,CAAC,CAAC;QACjCzC,QAAQ,EAAEjE,mBAAmB,CAAC7K,CAAC,CAAC,IAAI,CAAC;MACzC,CAAC;MAED,IAAI,CAACA,CAAC,CAAC,cAAc,CAAC,CAACsC,MAAM,EAAE;QAC3BU,IAAI,CAACvC,OAAO,GAAGkR,UAAU,CAAC5G,iBAAiB,CAAC;MAChD;MAEA/K,CAAC,CAAC,IAAI,CAAC,CAAC8D,OAAO,CAAC,yBAAyB,EAAEd,IAAI,CAAC;MAChD,IAAIyN,YAAY,EAAE;QACdzQ,CAAC,CAACkP,IAAI,CAAC;UACH1D,GAAG,EAAEiF,YAAY;UACjBtB,MAAM,EAAE,MAAM;UACdtJ,IAAI,EAAE7C,IAAI;UACVoM,OAAO,EAAE,SAAAA,QAAUvJ,IAAI,EAAE;YACrBsL,iBAAiB,CAACtL,IAAI,CAAC;YACvB7F,CAAC,CAAC,MAAM,CAAC,CAAC8D,OAAO,CAAC,wBAAwB,EAAE+B,IAAI,CAAC;YACjD7F,CAAC,CAACqP,OAAO,CAAC,CAAC,CAACC,IAAI,CAAC,CAAC;YAClB2C,oBAAoB,CAACpM,IAAI,CAACgN,YAAY,CAAC;UAC3C,CAAC;UACDtD,KAAK,EAAE,SAAAA,MAAA,EAAY;YACfvP,CAAC,CAACqP,OAAO,CAAC,CAAC,CAACC,IAAI,CAAC,CAAC;UACtB;QACJ,CAAC,CAAC;MACN;IACJ,CAAC,CAAC;EACN,CAAC;EACDwD,kBAAkB,EAAE,SAAAA,mBAAA,EAAY;IAC5B9S,CAAC,CAAC0H,QAAQ,CAAC,CAACnE,EAAE,CAAC,OAAO,EAAE,uBAAuB,EAAE,YAAY;MACzD,IAAIwP,qBAAqB,GAAG/S,CAAC,CAAC,IAAI,CAAC,CAAC6D,OAAO,CAAC,0BAA0B,CAAC;MACvE,IAAIyG,GAAG,GAAGtK,CAAC,CAAC,IAAI,CAAC,CAAC6F,IAAI,CAAC,KAAK,CAAC;MAC7B,IAAImN,OAAO,GAAGhT,CAAC,CAAC,8BAA8B,CAAC,CAAC6F,IAAI,CAAC,WAAW,CAAC;MACjE,IAAIoN,YAAY,GAAGxF,QAAQ,CAACsF,qBAAqB,CAACtP,IAAI,CAAC,wBAAwB,CAAC,CAACtD,GAAG,CAAC,CAAC,EAAE,EAAE,CAAC;MAC3F,IAAI+S,QAAQ,GAAG,CAAC;MAChBlT,CAAC,CAACC,IAAI,CAACD,CAAC,CAAC,iEAAiE,CAAC,EAAE,YAAY;QACrFkT,QAAQ,IAAIlT,CAAC,CAAC,IAAI,CAAC,CAAC6F,IAAI,CAAC,KAAK,CAAC;MACnC,CAAC,CAAC;MACFqN,QAAQ,IAAID,YAAY;MACxB,IAAInM,QAAQ,GAAGiM,qBAAqB,CAACtP,IAAI,CAAC,iBAAiB,CAAC,CAACoC,IAAI,CAAC,WAAW,CAAC;MAC9E,IAAIsN,OAAO,GAAGJ,qBAAqB,CAACtP,IAAI,CAAC,iCAAiC,CAAC,CAACoC,IAAI,CAAC,SAAS,CAAC;MAC3F,IAAIqN,QAAQ,IAAIF,OAAO,EAAE;QACrB,IAAII,wBAAwB,GAAG,EAAE,GAC/B,gCAAgC,GAChC,YAAY,GAAG9I,GAAG,GAAG,GAAG,GACxB,YAAY,GAAG2I,YAAY,GAAG,GAAG,GACjC,iBAAiB,IAAInM,QAAQ,IAAI,EAAE,CAAC,GAAG,GAAG,GAC1C,8BAA8B,IAAIqM,OAAO,IAAI,EAAE,CAAC,GAAG,GAAG,GACtD,GAAG,GACH,mDAAmD,GACnDJ,qBAAqB,CAACtP,IAAI,CAAC,eAAe,CAAC,CAACoJ,IAAI,CAAC,CAAC,GAClD,QAAQ,GACR,yEAAyE,GACzE,QAAQ;QAEV7M,CAAC,CAAC,mDAAmD,CAAC,CAAC6E,MAAM,CAACuO,wBAAwB,CAAC;QACvFpT,CAAC,CAAC,oBAAoB,CAAC,CAAC6M,IAAI,CAACqG,QAAQ,CAAC;QACtClT,CAAC,CAAC,yCAAyC,CAAC,CAAC0D,WAAW,CAAC,cAAc,CAAC;MAC5E,CAAC,MAAM;QACH1D,CAAC,CAAC,yCAAyC,CAAC,CAAC2D,QAAQ,CAAC,cAAc,CAAC;MACzE;IACJ,CAAC,CAAC;EACN,CAAC;EACD0P,kBAAkB,EAAE,SAAAA,mBAAA,EAAY;IAC5BrT,CAAC,CAAC0H,QAAQ,CAAC,CAACnE,EAAE,CAAC,OAAO,EAAE,eAAe,EAAE,YAAY;MACjDvD,CAAC,CAAC,IAAI,CAAC,CAACiQ,MAAM,CAAC,CAAC;MAChB,IAAIqD,SAAS,GAAGtT,CAAC,CAAC,iEAAiE,CAAC;MACpF,IAAIuT,KAAK,GAAG,CAAC;MACb,IAAID,SAAS,CAAChR,MAAM,EAAE;QAClBgR,SAAS,CAACrT,IAAI,CAAC,YAAY;UACvBsT,KAAK,IAAI9F,QAAQ,CAACzN,CAAC,CAAC,IAAI,CAAC,CAAC6F,IAAI,CAAC,KAAK,CAAC,EAAE,EAAE,CAAC;QAC9C,CAAC,CAAC;MACN;MAEA7F,CAAC,CAAC,oBAAoB,CAAC,CAAC6M,IAAI,CAAC0G,KAAK,CAAC;MACnCvT,CAAC,CAAC,yCAAyC,CAAC,CAAC0D,WAAW,CAAC,cAAc,CAAC;IAC5E,CAAC,CAAC;EACN,CAAC;EACD8P,2BAA2B,EAAE,SAAAA,4BAAA,EAAY;IACrCxT,CAAC,CAAC,MAAM,CAAC,CAACuD,EAAE,CAAC,iCAAiC,EAAE,UAAU8D,CAAC,EAAE6E,QAAQ,EAAE;MACnElM,CAAC,CAAC,6BAA6B,EAAEkM,QAAQ,CAACnB,iBAAiB,CAAC,CAAC7K,IAAI,CAAC,UAAU,EACvE,CAACgM,QAAQ,CAACG,OAAO,CAACG,YAAY,IAAI,CAACN,QAAQ,CAACG,OAAO,CAACoH,SAAU,CAAC;MACpE,IAAInJ,GAAG,GAAG4B,QAAQ,CAACG,OAAO,CAACjB,EAAE;MAC7BpL,CAAC,CAAC,6BAA6B,EAAEkM,QAAQ,CAACnB,iBAAiB,CAAC,CAAClF,IAAI,CAAC,KAAK,EAAEyE,GAAG,CAAC;IACjF,CAAC,CAAC;EACN,CAAC;EACDoJ,qBAAqB,EAAE,SAAAA,sBAAA,EAAY;IAC/B1T,CAAC,CAAC0H,QAAQ,CAAC,CAACnE,EAAE,CAAC,OAAO,EAAE,2BAA2B,EAAE,YAAY;MAC7D,IAAIiI,GAAG,GAAGxL,CAAC,CAAC,IAAI,CAAC,CAAC6F,IAAI,CAAC,KAAK,CAAC;MAC7B7F,CAAC,CAAC,gBAAgB,CAAC,CAACqP,OAAO,CAAC,CAAC,CAACW,KAAK,CAAC,CAAC;MACrChQ,CAAC,CAACkP,IAAI,CAAC;QACH1D,GAAG,EAAEA,GAAG;QACR2D,MAAM,EAAE,KAAK;QACbC,OAAO,EAAE,SAAAA,QAAUvC,IAAI,EAAE;UACrB,IAAIiE,UAAU,GAAGrB,SAAS,CAAC5C,IAAI,CAAC;UAChC7M,CAAC,CAAC,aAAa,CAAC,CAAC6E,MAAM,CAACiM,UAAU,CAAClB,IAAI,CAAC;UACxC5P,CAAC,CAAC,iCAAiC,CAAC,CAACiQ,MAAM,CAAC,CAAC;UAC7CjQ,CAAC,CAAC,gBAAgB,CAAC,CAACqP,OAAO,CAAC,CAAC,CAACC,IAAI,CAAC,CAAC;QACxC,CAAC;QACDC,KAAK,EAAE,SAAAA,MAAA,EAAY;UACfvP,CAAC,CAAC,gBAAgB,CAAC,CAACqP,OAAO,CAAC,CAAC,CAACC,IAAI,CAAC,CAAC;QACxC;MACJ,CAAC,CAAC;IACN,CAAC,CAAC;EACN,CAAC;EACDqE,sBAAsB,EAAE,SAAAA,uBAAA,EAAY;IAChC3T,CAAC,CAAC0H,QAAQ,CAAC,CAACnE,EAAE,CAAC,OAAO,EAAE,qBAAqB,EAAE,YAAY;MACvD,IAAIqQ,0BAA0B,GAAG5T,CAAC,CAAC,4CAA4C,CAAC;MAChF,IAAI6T,WAAW,GAAG,QAAQ;MAC1B,IAAIrI,GAAG,GAAGxL,CAAC,CAAC,8BAA8B,CAAC,CAAC6F,IAAI,CAAC,cAAc,CAAC;MAChE,IAAIiO,UAAU,GAAG;QACbC,aAAa,EAAE;MACnB,CAAC;MAED/T,CAAC,CAACC,IAAI,CAAC2T,0BAA0B,EAAE,YAAY;QAC3C,IAAII,SAAS,GACTvG,QAAQ,CAACzN,CAAC,CAAC,IAAI,CAAC,CACX6F,IAAI,CAAC,KAAK,CAAC,EAAE,EAAE,CAAC;QAEzB,IAAIoO,MAAM,GAAG,IAAI;QACjB,IAAID,SAAS,GAAG,CAAC,EAAE;UACf,IAAIhU,CAAC,CAAC,IAAI,CAAC,CAAC6F,IAAI,CAAC,UAAU,CAAC,IAAI7F,CAAC,CAAC,IAAI,CAAC,CAAC6F,IAAI,CAAC,uBAAuB,CAAC,EAAE;YACnEoO,MAAM,GAAG,CAAC,CAAC;YACXA,MAAM,CAAClC,QAAQ,GAAG/R,CAAC,CAAC,IAAI,CAAC,CAAC6F,IAAI,CAAC,UAAU,CAAC;YAC1CoO,MAAM,CAACC,SAAS,GAAGlU,CAAC,CAAC,IAAI,CAAC,CAAC6F,IAAI,CAAC,KAAK,CAAC;YACtCoO,MAAM,CAACnC,eAAe,GAAG9R,CAAC,CAAC,IAAI,CAAC,CAAC6F,IAAI,CAAC,uBAAuB,CAAC;UAClE;UACAiO,UAAU,CAACC,aAAa,CAACnS,IAAI,CAAC;YAC1B0I,GAAG,EAAEtK,CAAC,CAAC,IAAI,CAAC,CAAC6F,IAAI,CAAC,KAAK,CAAC;YACxB+M,GAAG,EAAEoB,SAAS;YACdvT,OAAO,EAAE,CAACwT,MAAM;UACpB,CAAC,CAAC;UACFH,UAAU,CAACZ,QAAQ,GAAGzF,QAAQ,CAACzN,CAAC,CAAC,oBAAoB,CAAC,CAAC6M,IAAI,CAAC,CAAC,EAAE,EAAE,CAAC;QACtE;MACJ,CAAC,CAAC;MACFgH,WAAW,IAAIpC,IAAI,CAACC,SAAS,CAACoC,UAAU,CAAC;MACzCD,WAAW,GAAGA,WAAW,GAAG,QAAQ,GAAG7T,CAAC,CAAC,8BAA8B,CAAC,CAAC6F,IAAI,CAAC,MAAM,CAAC;MACrFgO,WAAW,GAAGA,WAAW,GAAG,WAAW,GAAG7T,CAAC,CAAC,8BAA8B,CAAC,CAAC6F,IAAI,CAAC,SAAS,CAAC;MAC3F7F,CAAC,CAACqP,OAAO,CAAC,CAAC,CAACW,KAAK,CAAC,CAAC;MACnBhQ,CAAC,CAACkP,IAAI,CAAC;QACH1D,GAAG,EAAEA,GAAG,GAAGqI,WAAW;QACtB1E,MAAM,EAAE,MAAM;QACdC,OAAO,EAAE,SAAAA,QAAUvJ,IAAI,EAAE;UACrB7F,CAAC,CAACqP,OAAO,CAAC,CAAC,CAACC,IAAI,CAAC,CAAC;UAClB,IAAIzJ,IAAI,CAAC0J,KAAK,EAAE;YACZvP,CAAC,CAAC,0BAA0B,CAAC,CAACkR,KAAK,CAAC,MAAM,CAAC;YAC3C,IAAIlR,CAAC,CAAC,uBAAuB,CAAC,CAACsC,MAAM,KAAK,CAAC,EAAE;cACzCtC,CAAC,CAAC,MAAM,CAAC,CAAC6E,MAAM,CAAC,0CAA0C,CAAC;YAChE;YACA7E,CAAC,CAAC,uBAAuB,CAAC,CAAC6E,MAAM,CAC7B,iEAAiE,GAC/D,gBAAgB,GAChBgB,IAAI,CAACsO,YAAY,GAAG,QAC1B,CAAC;YACD7C,UAAU,CAAC,YAAY;cACnBtR,CAAC,CAAC,sBAAsB,CAAC,CAACiQ,MAAM,CAAC,CAAC;YACtC,CAAC,EAAE,IAAI,CAAC;UACZ,CAAC,MAAM;YACHjQ,CAAC,CAAC,qCAAqC,CAAC,CAAC6M,IAAI,CAAChH,IAAI,CAAC;YACnD7F,CAAC,CAAC,uBAAuB,CAAC,CAAC0D,WAAW,CAAC,gBAAgB,CAAC;YACxD1D,CAAC,CAAC,0BAA0B,CAAC,CAACkR,KAAK,CAAC,MAAM,CAAC;YAE3C,IAAIlR,CAAC,CAAC,uBAAuB,CAAC,CAACsC,MAAM,KAAK,CAAC,EAAE;cACzCtC,CAAC,CAAC,MAAM,CAAC,CAAC6E,MAAM,CAAC,0CAA0C,CAAC;YAChE;YACA7E,CAAC,CAAC,oBAAoB,CAAC,CAAC6M,IAAI,CAAChH,IAAI,CAACqN,QAAQ,CAAC;YAC3ClT,CAAC,CAAC,uBAAuB,CAAC,CAAC6E,MAAM,CAC7B,kEAAkE,GAChE,gBAAgB,GAChBgB,IAAI,CAACuO,UAAU,GAAG,QACxB,CAAC;YACD9C,UAAU,CAAC,YAAY;cACnBtR,CAAC,CAAC,sBAAsB,CAAC,CAACiQ,MAAM,CAAC,CAAC;cAClC,IAAIjQ,CAAC,CAAC,YAAY,CAAC,CAACsC,MAAM,EAAE;gBACxB+R,QAAQ,CAACC,MAAM,CAAC,CAAC;cACrB;YACJ,CAAC,EAAE,IAAI,CAAC;UACZ;QACJ,CAAC;QACD/E,KAAK,EAAE,SAAAA,MAAA,EAAY;UACfvP,CAAC,CAACqP,OAAO,CAAC,CAAC,CAACC,IAAI,CAAC,CAAC;QACtB;MACJ,CAAC,CAAC;IACN,CAAC,CAAC;EACN,CAAC;EAEDjF,WAAW,EAAEA,WAAW;EACxBQ,mBAAmB,EAAEA,mBAAmB;EACxCoH,oBAAoB,EAAEA;AAC1B,CAAC,C;;;;;;;;;;;AC/0BD;AACA9O,MAAM,CAACC,OAAO,GAAG,UAASmR,gBAAgB,EAAE;EACxC,SAASC,WAAWA,CAAA,EAAG;IACnB,IAAI,CAACC,WAAW,GAAGF,gBAAgB;EACvC;EAEAC,WAAW,CAAC5U,SAAS,CAACwF,IAAI,GAAG,YAAW;IACpC,IAAI,CAACqP,WAAW,CAACC,KAAK,CAACC,OAAO,GAAG,OAAO;EAC5C,CAAC;EAEDH,WAAW,CAAC5U,SAAS,CAACgV,IAAI,GAAG,YAAW;IACpC,IAAI,CAACH,WAAW,CAACC,KAAK,CAACC,OAAO,GAAG,MAAM;EAC3C,CAAC;EAED,OAAO,IAAIH,WAAW,CAAC,CAAC;AAC5B,CAAC,C;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACfD,IAAMK,cAAc,GAAGxQ,mBAAO,CAAC,sGAAsB,CAAC;AACtD,IAAMyQ,MAAM,GAAGzQ,mBAAO,CAAC,uFAAU,CAAC;AAClC,IAAM0Q,gBAAgB,GAAGrN,QAAQ,CAACsN,aAAa,CAAC,eAAe,CAAC;AAChE,IAAMC,MAAM,GAAGJ,cAAc,CAACE,gBAAgB,CAAC;AAC/C,IAAMG,iBAAiB,GAAG,kBAAkB;AAE5C,IAAMC,iBAAiB,GAAG9Q,mBAAO,CAAC,0GAAwB,CAAC;AAC3D,IAAM+Q,YAAY,GAAG,IAAID,iBAAiB,CAAC,CAAC;;AAE5C;AACA;AACA;AACA;AACA;AACA,SAASE,eAAeA,CAAA,EAA8B;EAAA,IAA7BC,mBAAmB,GAAAC,SAAA,CAAAjT,MAAA,QAAAiT,SAAA,QAAA3K,SAAA,GAAA2K,SAAA,MAAG,KAAK;EAChDN,MAAM,CAAC7P,IAAI,CAAC,CAAC;EAEb,OAAOpF,CAAC,CAACkP,IAAI,CAAC;IACV1D,GAAG,EAAEsJ,MAAM,CAACU,mBAAmB,CAAC,CAACC,MAAM,CAACC,UAAU,CAACL,eAAe,EAC9D,kBAAkB,EAAE,uBAAuB,EAAEC,mBAAmB,CAAC,CAAC/S,IAAI,CAAC,EAAE,CAAC,CAAC;IAC/E3B,IAAI,EAAE,OAAO;IACbwO,OAAO,EAAE,SAAAA,QAAA,EAAM;MACX6F,MAAM,CAACL,IAAI,CAAC,CAAC;MACba,MAAM,CAACpB,QAAQ,CAACsB,IAAI,GAAGF,MAAM,CAACC,UAAU,CAACE,eAAe;IAC5D,CAAC;IACDrG,KAAK,EAAE,SAAAA,MAACsG,GAAG,EAAK;MACZ,IAAMtG,KAAK,GAAGkC,IAAI,CAACqE,KAAK,CAACD,GAAG,CAACE,YAAY,CAAC;MAE1Cd,MAAM,CAACL,IAAI,CAAC,CAAC;MACbQ,YAAY,CAACY,SAAS,CAACzG,KAAK,CAAC0G,QAAQ,CAAC;MAEtC,IAAI1G,KAAK,CAAC2G,kBAAkB,EAAE;QAC1B7B,QAAQ,CAACC,MAAM,CAAC,CAAC;MACrB;IACJ;EACJ,CAAC,CAAC;AACN;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS6B,wBAAwBA,CAACC,UAAU,EAAiC;EAAA,IAA/BC,qBAAqB,GAAAd,SAAA,CAAAjT,MAAA,QAAAiT,SAAA,QAAA3K,SAAA,GAAA2K,SAAA,MAAG,KAAK;EACvE,IAAM/J,GAAG,GAAGsJ,MAAM,CAACU,mBAAmB,CAAC,CAACC,MAAM,CAACC,UAAU,CAACY,2BAA2B,EACjF,cAAc,EAAEF,UAAU,EAAE,yBAAyB,EAAEC,qBAAqB,CAAC,CAAC9T,IAAI,CAAC,EAAE,CAAC,CAAC;EAE3F,OAAOvC,CAAC,CAACuW,GAAG,CAAC/K,GAAG,CAAC,CACZgL,IAAI,CAAC,UAAC3Q,IAAI;IAAA,OAAKA,IAAI;EAAA,EAAC;AAC7B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS4Q,0BAA0BA,CAAA,EAAG;EAClC,OAAOzW,CAAC,CAACkP,IAAI,CAAC;IACV1D,GAAG,EAAEsJ,MAAM,CAACU,mBAAmB,CAACC,MAAM,CAACC,UAAU,CAACgB,sBAAsB,CAAC;IACzE9V,IAAI,EAAE,MAAM;IACZ+V,WAAW,EAAEzB;EACjB,CAAC,CAAC;AACN;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS0B,yBAAyBA,CAACC,UAAU,EAAEC,aAAa,EAAE;EAC1D,IAAMC,mBAAmB,GAAG,IAAIC,QAAQ,CAAC,CAAC;EAE1C,IAAI,CAACF,aAAa,EAAE;IAChBA,aAAa,GAAGpP,QAAQ,CAACuP,cAAc,CAAC,qBAAqB,CAAC,IACvDvP,QAAQ,CAACuP,cAAc,CAAC,cAAc,CAAC,IACvCvP,QAAQ,CAACuP,cAAc,CAAC,aAAa,CAAC;EACjD;EAEA,IAAMC,iBAAiB,GAAGJ,aAAa,IAAIrF,IAAI,CAACqE,KAAK,CAACgB,aAAa,CAACK,YAAY,CAAC,iCAAiC,CAAC,CAAC;EAEpHlQ,MAAM,CAACmQ,OAAO,CAACF,iBAAiB,CAAC,CAC5BnS,OAAO,CAAC,UAAAsS,KAAK,EAAI;IACd,IAAAC,MAAA,GAAAC,cAAA,CAAqBF,KAAK;MAAnB3U,GAAG,GAAA4U,MAAA;MAAEE,KAAK,GAAAF,MAAA;IAEjB,IAAI/X,OAAA,CAAOiY,KAAK,MAAK,QAAQ,EAAE;MAC3BT,mBAAmB,CAAClS,MAAM,CAAC2S,KAAK,CAACvO,IAAI,EAAE4N,UAAU,IAAIA,UAAU,CAACnU,GAAG,CAAC,GAAGmU,UAAU,CAACnU,GAAG,CAAC,GAAG8U,KAAK,CAAC3U,KAAK,CAAC;IACzG;EACJ,CAAC,CAAC;EAEN,OAAOkU,mBAAmB;AAC9B;;AAEA;AACA;AACA;AACA;AACA;AACA,SAASU,cAAcA,CAAA,EAA8B;EAAA,IAA7BnC,mBAAmB,GAAAC,SAAA,CAAAjT,MAAA,QAAAiT,SAAA,QAAA3K,SAAA,GAAA2K,SAAA,MAAG,KAAK;EAC/CN,MAAM,CAAC7P,IAAI,CAAC,CAAC;EAEb,OAAO0P,MAAM,CAAC2C,cAAc,CAACnC,mBAAmB,CAAC,CAC5CoC,KAAK,CAAC,UAACnI,KAAK,EAAK;IACd0F,MAAM,CAACL,IAAI,CAAC,CAAC;IACbQ,YAAY,CAACY,SAAS,CAACzG,KAAK,CAACwG,YAAY,CAAC;EAC9C,CAAC,CAAC;AACV;;AAEA;AACA;AACA;AACA;AACA,SAAS4B,0BAA0BA,CAAA,EAAG;EAClC,IAAMC,iBAAiB,GAAGlQ,QAAQ,CAACuP,cAAc,CAAC,qBAAqB,CAAC,IACjEvP,QAAQ,CAACuP,cAAc,CAAC,cAAc,CAAC;EAE9C,OAAOY,KAAK,CAAC/C,MAAM,CAACU,mBAAmB,CAACC,MAAM,CAACC,UAAU,CAACoC,mBAAmB,CAAC,EAAE;IAC5E3I,MAAM,EAAE,MAAM;IACd4I,OAAO,EAAE;MACL,cAAc,EAAE7C;IACpB,CAAC;IACDtF,IAAI,EAAE6B,IAAI,CAACC,SAAS,CAAC;MACjBsG,KAAK,EAAEJ,iBAAiB,CAACT,YAAY,CAAC,8BAA8B,CAAC;MACrEc,UAAU,EAAEL,iBAAiB,CAACT,YAAY,CAAC,iCAAiC;IAChF,CAAC;EACL,CAAC,CAAC,CACGX,IAAI,CAAC,UAAAtK,QAAQ;IAAA,OAAIA,QAAQ,CAACgM,IAAI,CAAC,CAAC;EAAA,EAAC,CACjC1B,IAAI,CAAC,UAAA3Q,IAAI,EAAI;IACV,OAAOA,IAAI,CAACyP,mBAAmB;EACnC,CAAC,CAAC,CACDoC,KAAK,CAAC,YAAM;IACT,OAAO,KAAK;EAChB,CAAC,CAAC;AACV;;AAEA;AACA;AACA;AACA;AACA;AACA,SAASS,gBAAgBA,CAACC,aAAa,EAAE;EACrC,IAAMC,kBAAkB,GAAG3Q,QAAQ,CAACsN,aAAa,CAAC,oBAAoB,CAAC;EACvE,IAAMsD,MAAM,GAAGD,kBAAkB,GAAGA,kBAAkB,CAACxV,KAAK,GAAGuV,aAAa;EAE5E,OAAOpY,CAAC,CAACkP,IAAI,CAAC;IACV1D,GAAG,EAAEsJ,MAAM,CAACU,mBAAmB,CAACC,MAAM,CAACC,UAAU,CAACyC,gBAAgB,CAAC;IACnEvX,IAAI,EAAE,MAAM;IACZ+V,WAAW,EAAEzB,iBAAiB;IAC9BrP,IAAI,EAAE4L,IAAI,CAACC,SAAS,CAAC;MACjB4G,MAAM,EAANA;IACJ,CAAC;EACL,CAAC,CAAC;AACN;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,SAASC,wBAAwBA,CAACC,aAAa,EAAEC,aAAa,EAAE;EAC5D,OAAOzY,CAAC,CAACkP,IAAI,CAAC;IACV1D,GAAG,EAAEiK,MAAM,CAACC,UAAU,CAAC6C,wBAAwB;IAC/C3X,IAAI,EAAE,MAAM;IACZ+V,WAAW,EAAEzB,iBAAiB;IAC9BrP,IAAI,EAAE4L,IAAI,CAACC,SAAS,CAAC;MAAE8G,aAAa,EAAbA,aAAa;MAAEC,aAAa,EAAbA;IAAc,CAAC;EACzD,CAAC,CAAC;AACN;;AAEA;AACA;AACA;AACA;AACA,SAASC,mBAAmBA,CAACC,iBAAiB,EAAE;EAC5CR,gBAAgB,CAACQ,iBAAiB,CAAC,CAC9BnC,IAAI,CAAC,UAAAoC,IAAA,EAAqB;IAAA,IAAlBC,WAAW,GAAAD,IAAA,CAAXC,WAAW;IAChB5D,MAAM,CAACL,IAAI,CAAC,CAAC;IACbE,MAAM,CAACgE,wBAAwB,CAACD,WAAW,CAAC;EAChD,CAAC,CAAC,CACDnB,KAAK,CAAC,YAAW;IACdzC,MAAM,CAACL,IAAI,CAAC,CAAC;EACjB,CAAC,CAAC;AACV;;AAEA;AACA;AACA;AACA;AACA;AACA,SAASmE,gBAAgBA,CAACC,iBAAiB,EAAE;EACzC,IAAIxN,GAAG,GAAGsJ,MAAM,CAACU,mBAAmB,CAACC,MAAM,CAACC,UAAU,CAACqD,gBAAgB,CAAC;EAExEvN,GAAG,GAAGwN,iBAAiB,GAAG,CAACxN,GAAG,EAAE,qBAAqB,EAAEiG,IAAI,CAACC,SAAS,CAACsH,iBAAiB,CAAC,CAAC,CAACzW,IAAI,CAAC,EAAE,CAAC,GAAGiJ,GAAG;EAExG,OAAOxL,CAAC,CAACkP,IAAI,CAAC;IACV1D,GAAG,EAAEA,GAAG;IACR5K,IAAI,EAAE,KAAK;IACX+V,WAAW,EAAEzB,iBAAiB;IAC9B+D,KAAK,EAAE;EACX,CAAC,CAAC,CAACC,YAAY,CAAC9N,EAAE;AACtB;;AAEA;AACA;AACA;AACA;AACA;AACA,SAAS+N,oBAAoBA,CAACC,WAAW,EAAE;EACvC,OAAOvB,KAAK,CAAC/C,MAAM,CAACU,mBAAmB,CAACC,MAAM,CAACC,UAAU,CAACyD,oBAAoB,CAAC,EAAE;IAC7EhK,MAAM,EAAE,MAAM;IACdS,IAAI,EAAE6B,IAAI,CAACC,SAAS,CAAC0H,WAAW,CAAC;IACjCrB,OAAO,EAAE;MAAE,cAAc,EAAE;IAAmB;EAClD,CAAC,CAAC;AACN;;;;;;;;;;;;;ACzNA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAa;;AAAA,SAAAR,eAAA8B,GAAA,EAAA9L,CAAA,WAAA+L,eAAA,CAAAD,GAAA,KAAAE,qBAAA,CAAAF,GAAA,EAAA9L,CAAA,KAAAiM,2BAAA,CAAAH,GAAA,EAAA9L,CAAA,KAAAkM,gBAAA;AAAA,SAAAA,iBAAA,cAAAC,SAAA;AAAA,SAAAF,4BAAAha,CAAA,EAAAma,MAAA,SAAAna,CAAA,qBAAAA,CAAA,sBAAAoa,iBAAA,CAAApa,CAAA,EAAAma,MAAA,OAAAE,CAAA,GAAA5S,MAAA,CAAArH,SAAA,CAAAka,QAAA,CAAAC,IAAA,CAAAva,CAAA,EAAAwa,KAAA,aAAAH,CAAA,iBAAAra,CAAA,CAAAG,WAAA,EAAAka,CAAA,GAAAra,CAAA,CAAAG,WAAA,CAAAsJ,IAAA,MAAA4Q,CAAA,cAAAA,CAAA,mBAAAI,KAAA,CAAAC,IAAA,CAAA1a,CAAA,OAAAqa,CAAA,+DAAAM,IAAA,CAAAN,CAAA,UAAAD,iBAAA,CAAApa,CAAA,EAAAma,MAAA;AAAA,SAAAC,kBAAAP,GAAA,EAAAe,GAAA,QAAAA,GAAA,YAAAA,GAAA,GAAAf,GAAA,CAAA/W,MAAA,EAAA8X,GAAA,GAAAf,GAAA,CAAA/W,MAAA,WAAAiL,CAAA,MAAA8M,IAAA,OAAAJ,KAAA,CAAAG,GAAA,GAAA7M,CAAA,GAAA6M,GAAA,EAAA7M,CAAA,IAAA8M,IAAA,CAAA9M,CAAA,IAAA8L,GAAA,CAAA9L,CAAA,UAAA8M,IAAA;AAAA,SAAAd,sBAAAe,CAAA,EAAAC,CAAA,QAAAC,CAAA,WAAAF,CAAA,gCAAA7a,MAAA,IAAA6a,CAAA,CAAA7a,MAAA,CAAAC,QAAA,KAAA4a,CAAA,4BAAAE,CAAA,QAAAnT,CAAA,EAAAwS,CAAA,EAAAtM,CAAA,EAAAkN,CAAA,EAAAC,CAAA,OAAAC,CAAA,OAAAnb,CAAA,iBAAA+N,CAAA,IAAAiN,CAAA,GAAAA,CAAA,CAAAT,IAAA,CAAAO,CAAA,GAAAM,IAAA,QAAAL,CAAA,QAAAtT,MAAA,CAAAuT,CAAA,MAAAA,CAAA,UAAAG,CAAA,uBAAAA,CAAA,IAAAtT,CAAA,GAAAkG,CAAA,CAAAwM,IAAA,CAAAS,CAAA,GAAAK,IAAA,MAAAH,CAAA,CAAA9Y,IAAA,CAAAyF,CAAA,CAAAxE,KAAA,GAAA6X,CAAA,CAAApY,MAAA,KAAAiY,CAAA,GAAAI,CAAA,iBAAAL,CAAA,IAAA9a,CAAA,OAAAqa,CAAA,GAAAS,CAAA,yBAAAK,CAAA,YAAAH,CAAA,CAAAM,MAAA,KAAAL,CAAA,GAAAD,CAAA,CAAAM,MAAA,IAAA7T,MAAA,CAAAwT,CAAA,MAAAA,CAAA,2BAAAjb,CAAA,QAAAqa,CAAA,aAAAa,CAAA;AAAA,SAAApB,gBAAAD,GAAA,QAAAY,KAAA,CAAAc,OAAA,CAAA1B,GAAA,UAAAA,GAAA;AAEb,IAAM2B,YAAY,GAAG;EACjBC,KAAK,EAAE,MAAM;EACbC,KAAK,EAAE,MAAM;EACbC,MAAM,EAAE,UAAU;EAClBnO,KAAK,EAAE,QAAQ;EACfoO,OAAO,EAAE;AACb,CAAC;AAED,IAAMC,UAAU,GAAG,MAAM;AACzB,IAAMC,oBAAoB,GAAG,iBAAiB;AAC9C,IAAMC,qBAAqB,GAAG,sBAAsB;AACpD,IAAMC,iBAAiB,GAAG,YAAY;AAEtC,IAAMC,IAAI,GAAGpX,mBAAO,CAAC,uGAAmB,CAAC;;AAEzC;AACA;AACA;AACA;AACA;AACA,SAASqX,oBAAoBA,CAACC,MAAM,EAAE;EAClC,IAAI;IACA,IAAMC,MAAM,GAAGD,MAAM,CAACxE,YAAY,CAAC,2BAA2B,CAAC;IAE/D,IAAIyE,MAAM,EAAE;MACR,IAAMC,aAAa,GAAGpK,IAAI,CAACqE,KAAK,CAAC8F,MAAM,CAAC;MAExC,OAAOC,aAAa,CAACnH,KAAK;IAC9B;IAEA,OAAO;MACHA,KAAK,EAAEsG;IACX,CAAC;EACL,CAAC,CAAC,OAAOzL,KAAK,EAAE;IACZ,OAAO;MACHmF,KAAK,EAAEsG;IACX,CAAC;EACL;AACJ;;AAEA;AACA;AACA;AACA;AACA;AACA,SAASc,iBAAiBA,CAAC3S,KAAK,EAAE;EAC9B,IAAMnG,IAAI,GAAGhD,CAAC,CAAC,QAAQ,CAAC,CACnB2N,QAAQ,CAACjG,QAAQ,CAACkI,IAAI,CAAC,CACvB1P,IAAI,CAAC;IACFiP,MAAM,EAAE,MAAM;IACd4M,MAAM,EAAE5S,KAAK,CAACqC;EAClB,CAAC,CAAC;EAENxL,CAAC,CAAC,SAAS,CAAC,CACP2N,QAAQ,CAAC3K,IAAI,CAAC,CACd9C,IAAI,CAAC;IACF+I,IAAI,EAAE,SAAS;IACfpG,KAAK,EAAEsG,KAAK,CAAC6S;EACjB,CAAC,CAAC;EAENhc,CAAC,CAAC,SAAS,CAAC,CACP2N,QAAQ,CAAC3K,IAAI,CAAC,CACd9C,IAAI,CAAC;IACF+I,IAAI,EAAE,YAAY;IAClBpG,KAAK,EAAEsG,KAAK,CAAC8S;EACjB,CAAC,CAAC;EAEN,OAAOjZ,IAAI;AACf;;AAEA;AACA;AACA;AACA;AACA,SAAS8V,wBAAwBA,CAACD,WAAW,EAAE;EAC3C,IAAMqD,QAAQ,GAAGrD,WAAW,CAACsD,KAAK,CAAC,GAAG,CAAC;EACvC,IAAM3Q,GAAG,GAAG0Q,QAAQ,CAAC,CAAC,CAAC;EACvB,IAAME,YAAY,GAAGF,QAAQ,CAAC,CAAC,CAAC;EAChC,IAAMG,YAAY,GAAG,IAAIC,eAAe,CAACF,YAAY,CAAC;EACtD,IAAMG,SAAS,GAAG;IACdP,OAAO,EAAEK,YAAY,CAAC9F,GAAG,CAAC,SAAS,CAAC;IACpC0F,UAAU,EAAEI,YAAY,CAAC9F,GAAG,CAAC,YAAY,CAAC;IAC1C/K,GAAG,EAAEA;EACT,CAAC;EAED,IAAMxI,IAAI,GAAG8Y,iBAAiB,CAACS,SAAS,CAAC;EAEzCvZ,IAAI,CAACwZ,MAAM,CAAC,CAAC;AACjB;;AAEA;AACA;AACA;AACA;AACA;AACA,SAASC,2BAA2BA,CAACC,iBAAiB,EAAE;EACpD,IAAMC,aAAa,GAAGD,iBAAiB,CAACP,KAAK,CAAC,GAAG,CAAC;EAElD,IAAIQ,aAAa,CAACra,MAAM,KAAK,CAAC,EAAE;IAC5B,OAAOoa,iBAAiB;EAC5B;EAEAC,aAAa,CAAC5X,OAAO,CAAC,UAASiC,OAAO,EAAE0G,KAAK,EAAE;IAC3CiP,aAAa,CAACjP,KAAK,CAAC,GAAG1G,OAAO,CAAC4V,MAAM,CAAC,CAAC,CAAC,GAAG5V,OAAO,CAACgT,KAAK,CAAC,CAAC,CAAC,CAAC6C,iBAAiB,CAAC,CAAC;EACnF,CAAC,CAAC;EAEF,OAAOF,aAAa,CAACra,MAAM,GAAGqa,aAAa,CAACpa,IAAI,CAAC,GAAG,CAAC,GAAGoa,aAAa,CAAC,CAAC,CAAC;AAC5E;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,SAASG,yBAAyBA,CAACC,GAAG,EAAE3c,IAAI,EAAE;EAC1C,IAAM4G,OAAO,GAAGU,QAAQ,CAACsV,aAAa,CAACD,GAAG,CAAC;EAE3C/V,OAAO,CAACiW,WAAW,GAAG7c,IAAI;EAE1B,OAAO4G,OAAO;AAClB;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,SAASkW,UAAUA,CAAC1c,KAAK,EAAEqM,IAAI,EAAE;EAC7B,IAAMrH,OAAO,GAAGhF,KAAK,CAACU,OAAO,CAACsE,OAAO;EAErCA,OAAO,CAACC,0BAA0B,CAACV,OAAO,CAAC,UAASoY,yBAAyB,EAAE;IAC3E,IAAMC,eAAe,GAAGD,yBAAyB,CAACR,aAAa;IAC/D,IAAMvE,aAAa,GAAG+E,yBAAyB,CAAC/E,aAAa;IAC7D,IAAMiF,WAAW,GAAGjF,aAAa,KAAK3C,MAAM,CAAC6H,eAAe,CAACC,uBAAuB,IAC7E7V,QAAQ,CAACuP,cAAc,CAAC,eAAe,CAAC,CAACuG,SAAS,CAACC,QAAQ,CAAC,QAAQ,CAAC;IAE5E,IAAMC,uBAAuB,GAAG,CAC5BjI,MAAM,CAAC6H,eAAe,CAACK,wBAAwB,EAC/ClI,MAAM,CAAC6H,eAAe,CAACC,uBAAuB,CACjD;IAED,IAAInF,aAAa,KAAK3C,MAAM,CAAC6H,eAAe,CAACM,4BAA4B,EAAE;MACvE/Q,IAAI,CAACjL,IAAI,CAACkb,yBAAyB,CAAC,KAAK,EAAErH,MAAM,CAAC6H,eAAe,CAACM,4BAA4B,CAAC,CAAC;IACpG,CAAC,MAAM,IAAIP,WAAW,EAAE;MACpBxQ,IAAI,CAACjL,IAAI,CAACkb,yBAAyB,CAAC,KAAK,EAAErH,MAAM,CAAC6H,eAAe,CAACC,uBAAuB,CAAC,CAAC;IAC/F,CAAC,MAAM;MACH1Q,IAAI,CAACjL,IAAI,CAACkb,yBAAyB,CAAC,KAAK,EAAEL,2BAA2B,CAACW,eAAe,CAAC,CAAC,CAAC;IAC7F;IAEA,IAAIA,eAAe,KAAK3H,MAAM,CAAC6H,eAAe,CAACK,wBAAwB,IAChER,yBAAyB,CAAC5W,sBAAsB,EAAE;MACrDsG,IAAI,CAACjL,IAAI,CAACkb,yBAAyB,CAAC,KAAK,EAAEK,yBAAyB,CAAC5W,sBAAsB,CAAC,CAAC;IACjG;IAEA,IAAImX,uBAAuB,CAACG,QAAQ,CAACT,eAAe,CAAC,EAAE;MACnD,IAAMhd,IAAI,GAAG,CAAC+c,yBAAyB,CAACW,qBAAqB,EAAEX,yBAAyB,CAACY,mBAAmB,CAAC,CAACxb,IAAI,CAAC,EAAE,CAAC;MAEtHsK,IAAI,CAACjL,IAAI,CAACkb,yBAAyB,CAAC,KAAK,EAAE1c,IAAI,CAAC,CAAC;IACrD;IAEA,IAAI+c,yBAAyB,CAACvc,IAAI,EAAE;MAChCiM,IAAI,CAACjL,IAAI,CAACkb,yBAAyB,CAAC,KAAK,EAAEK,yBAAyB,CAACvc,IAAI,CAAC,CAAC;IAC/E;IAEAiM,IAAI,CAACjL,IAAI,CAACkb,yBAAyB,CAAC,KAAK,EAAE,CAACtc,KAAK,CAACwd,UAAU,CAACpB,MAAM,CAAC,CAAC,CAAC,EAAEO,yBAAyB,CAACc,MAAM,CAAC,CAAC1b,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC;EACxH,CAAC,CAAC;EAEF,OAAOsK,IAAI;AACf;;AAEA;AACA;AACA;AACA;AACA,SAASqR,kBAAkBA,CAACrY,IAAI,EAAE;EAC9B,IAAMO,eAAe,GAAGsB,QAAQ,CAACsN,aAAa,CAAC,mCAAmC,CAAC,IAC5EtN,QAAQ,CAACsN,aAAa,CAAC,6CAA6C,CAAC;EAE5E,IAAMxU,KAAK,GAAGqF,IAAI,CAACrF,KAAK;EACxB,IAAMgF,OAAO,GAAGhF,KAAK,CAACU,OAAO,CAACsE,OAAO;EAErC,IAAIa,YAAY,GAAG,EAAE;EAErB,IAAID,eAAe,IAAIA,eAAe,CAACoX,SAAS,CAACC,QAAQ,CAAC,iBAAiB,CAAC,EAAE;IAC1E;IACArX,eAAe,CAACoX,SAAS,CAACvN,MAAM,CAAC,iBAAiB,CAAC;IACnD7J,eAAe,CAACoX,SAAS,CAACW,GAAG,CAAC,2BAA2B,CAAC;EAC9D;EAEA,IAAI3Y,OAAO,IAAIA,OAAO,CAACC,0BAA0B,IAAID,OAAO,CAACC,0BAA0B,CAACnD,MAAM,GAAG,CAAC,EAAE;IAChG+D,YAAY,GAAG6W,UAAU,CAAC1c,KAAK,EAAE6F,YAAY,CAAC;EAClD;EAEA,IAAID,eAAe,IAAIC,YAAY,CAAC/D,MAAM,GAAG,CAAC,EAAE;IAC5C8D,eAAe,CAACgY,SAAS,GAAG,EAAE;IAE9B/X,YAAY,CAACtB,OAAO,CAAC,UAAAiC,OAAO,EAAI;MAC5BZ,eAAe,CAACiY,WAAW,CAACrX,OAAO,CAAC;IACxC,CAAC,CAAC;EACN;AACJ;;AAEA;AACA;AACA;AACA;AACA,SAASsX,6BAA6BA,CAAC/O,KAAK,EAAE;EAC1C,IAAIA,KAAK,CAACgP,MAAM,KAAK,GAAG,IAAI,qBAAqB,CAACpE,IAAI,CAAC5K,KAAK,CAACwG,YAAY,CAAC,EAAE;IACxE,IAAMZ,iBAAiB,GAAG9Q,mBAAO,CAAC,0GAAwB,CAAC;IAC3D,IAAM+Q,YAAY,GAAG,IAAID,iBAAiB,CAAC,CAAC;IAE5CC,YAAY,CAACY,SAAS,CAACzG,KAAK,CAACwG,YAAY,CAAC;IAE1C,OAAO,IAAI;EACf;EAEA,OAAO,KAAK;AAChB;;AAEA;AACA;AACA;AACA;AACA,SAASyI,gBAAgBA,CAACC,YAAY,EAAE;EACpCA,YAAY,CAACjB,SAAS,CAACvN,MAAM,CAACoL,UAAU,CAAC;AAC7C;;AAEA;AACA;AACA;AACA;AACA,SAASqD,gBAAgBA,CAACD,YAAY,EAAE;EACpCA,YAAY,CAACjB,SAAS,CAACW,GAAG,CAAC9C,UAAU,CAAC;AAC1C;;AAEA;AACA;AACA;AACA;AACA,SAASsD,mBAAmBA,CAAA,EAAG;EAC3B,IAAMC,QAAQ,GAAGlX,QAAQ,CAACsN,aAAa,CAACuG,qBAAqB,CAAC;EAE9D,OAAOqD,QAAQ,IAAIA,QAAQ,CAACzH,YAAY,CAAC,SAAS,CAAC,KAAK,MAAM;AAClE;;AAEA;AACA;AACA;AACA;AACA,SAAS0H,mBAAmBA,CAAA,EAAG;EAC3B,IAAMD,QAAQ,GAAGlX,QAAQ,CAACsN,aAAa,CAAC,oBAAoB,CAAC;EAE7D,OAAO4J,QAAQ,GAAGnR,QAAQ,CAACmR,QAAQ,CAAC3B,WAAW,EAAE,CAAC,CAAC,GAAG,CAAC;AAC3D;;AAEA;AACA;AACA;AACA;AACA;AACA,SAAS6B,6BAA6BA,CAACL,YAAY,EAAE;EACjD,IAAMM,4BAA4B,GAAGrX,QAAQ,CAACsN,aAAa,CAAC,uBAAuB,CAAC;EACpF,IAAMgK,qBAAqB,GAAGD,4BAA4B,IAAIA,4BAA4B,CAAClc,KAAK,KAAK,MAAM;EAE3G,IAAMoc,eAAe,GAAGvX,QAAQ,CAACsN,aAAa,CAAC,mCAAmC,CAAC;;EAEnF;EACA,IAAI6J,mBAAmB,CAAC,CAAC,GAAG,CAAC,IAAIF,mBAAmB,CAAC,CAAC,EAAE;IAAE;IACtDD,gBAAgB,CAACD,YAAY,CAAC;EAClC;EAEA,IAAIQ,eAAe,CAACC,QAAQ,IAAI,CAACF,qBAAqB,EAAE;IACpDN,gBAAgB,CAACD,YAAY,CAAC;EAClC;EAEAze,CAAC,CAAC,MAAM,CAAC,CAACuD,EAAE,CAAC,sBAAsB,EAAE,YAAW;IAC5C,IAAIsb,mBAAmB,CAAC,CAAC,KAAK,CAAC,IAAI,CAACF,mBAAmB,CAAC,CAAC,EAAE;MACvD,IAAIM,eAAe,CAACC,QAAQ,EAAE;QAC1BR,gBAAgB,CAACD,YAAY,CAAC;MAClC;MAEA,IAAI,CAACQ,eAAe,CAACC,QAAQ,EAAE;QAC3BV,gBAAgB,CAACC,YAAY,CAAC;MAClC;IACJ,CAAC,MAAM;MACHC,gBAAgB,CAACD,YAAY,CAAC;IAClC;EACJ,CAAC,CAAC;AACN;;AAEA;AACA;AACA;AACA;AACA,SAASU,0BAA0BA,CAAA,EAAG;EAClC,IAAMC,uBAAuB,GAAG1X,QAAQ,CAACsN,aAAa,CAAC,oBAAoB,CAAC;EAC5E,IAAMqK,gBAAgB,GAAG3X,QAAQ,CAAC4X,gBAAgB,CAAC,mCAAmC,CAAC;EAEvF,IAAMC,gBAAgB,GAAG9R,QAAQ,CAAC2R,uBAAuB,CAACnC,WAAW,EAAE,CAAC,CAAC;EAEzEoC,gBAAgB,CAACta,OAAO,CAAC,UAACya,GAAG,EAAK;IAC9B,IAAMf,YAAY,GAAGe,GAAG,CAACC,aAAa,CACjCzK,aAAa,CAAC,8FAA8F,CAAC;IAElH,IAAM+J,4BAA4B,GAAGS,GAAG,CAACC,aAAa,CAACzK,aAAa,CAAC,uBAAuB,CAAC;IAC7F,IAAMgK,qBAAqB,GAAGD,4BAA4B,IAAIA,4BAA4B,CAAClc,KAAK,KAAK,MAAM;IAE3G,IAAM6c,MAAM,GAAGhY,QAAQ,CAAC4X,gBAAgB,CAAC/D,qBAAqB,CAAC;IAE/D,IAAMoE,aAAa,GAAGD,MAAM,IAAIzF,KAAK,CAACC,IAAI,CAACwF,MAAM,CAAC,CAACE,IAAI,CAAC,UAACpR,KAAK,EAAK;MAC/D,OAAOqR,UAAU,CAACrR,KAAK,CAAC2I,YAAY,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC;IACzD,CAAC,CAAC;IAEF,IAAIoI,gBAAgB,KAAK,CAAC,IAAI,CAACI,aAAa,IAAIX,qBAAqB,EAAE;MACnE,IAAIQ,GAAG,CAACN,QAAQ,EAAE;QACdR,gBAAgB,CAACD,YAAY,CAAC;MAClC;MAEA,IAAI,CAACe,GAAG,CAACN,QAAQ,EAAE;QACfV,gBAAgB,CAACC,YAAY,CAAC;MAClC;IACJ,CAAC,MAAM;MACHC,gBAAgB,CAACD,YAAY,CAAC;IAClC;EACJ,CAAC,CAAC;EAEFze,CAAC,CAAC,MAAM,CAAC,CAACuD,EAAE,CAAC,sBAAsB,EAAE,UAASiG,KAAK,EAAE;IACjD,IAAMyV,eAAe,GAAGzV,KAAK,CAACsW,MAAM;IAEpC,IAAMrB,YAAY,GAAGQ,eAAe,CAACQ,aAAa,CAC7CzK,aAAa,CAAC,8FAA8F,CAAC;IAElH,IAAM0K,MAAM,GAAGhY,QAAQ,CAAC4X,gBAAgB,CAAC/D,qBAAqB,CAAC;IAE/D,IAAMoE,aAAa,GAAGD,MAAM,IAAIzF,KAAK,CAACC,IAAI,CAACwF,MAAM,CAAC,CAACE,IAAI,CAAC,UAACpR,KAAK,EAAK;MAC/D,OAAOqR,UAAU,CAACrR,KAAK,CAAC2I,YAAY,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC;IACzD,CAAC,CAAC;IAEF,IAAIoI,gBAAgB,KAAK,CAAC,IAAI,CAACI,aAAa,EAAE;MAC1C,IAAIV,eAAe,CAACC,QAAQ,EAAE;QAC1BR,gBAAgB,CAACD,YAAY,CAAC;MAClC;MAEA,IAAI,CAACQ,eAAe,CAACC,QAAQ,EAAE;QAC3BV,gBAAgB,CAACC,YAAY,CAAC;MAClC;IACJ,CAAC,MAAM;MACHC,gBAAgB,CAACD,YAAY,CAAC;IAClC;EACJ,CAAC,CAAC;AACN;;AAEA;AACA;AACA;AACA;AACA;AACA,SAASsB,oBAAoBA,CAAC3H,aAAa,EAAE;EACzC,IAAIA,aAAa,KAAK,OAAO,EAAE;IAC3B,OAAO3C,MAAM,CAAC6H,eAAe,CAACC,uBAAuB;EACzD;EAEA,IAAInF,aAAa,KAAK,MAAM,EAAE;IAC1B,OAAO3C,MAAM,CAAC6H,eAAe,CAACM,4BAA4B;EAC9D;EAEA,OAAOxF,aAAa;AACxB;;AAEA;AACA;AACA;AACA;AACA,SAAS4H,YAAYA,CAAA,EAAG;EACpB,IAAIpB,QAAQ,GAAGlX,QAAQ,CAACsN,aAAa,CAAC,qBAAqB,CAAC;EAE5D,IAAI4J,QAAQ,IAAIA,QAAQ,CAAC/b,KAAK,KAAK,EAAE,EAAE;IACnC,OAAO+b,QAAQ,CAAC/b,KAAK;EACzB;EAEA+b,QAAQ,GAAGlX,QAAQ,CAACsN,aAAa,CAAC,+BAA+B,CAAC;EAElE,IAAI4J,QAAQ,IAAIA,QAAQ,CAACzH,YAAY,CAAC,YAAY,CAAC,KAAK,EAAE,EAAE;IACxD,OAAOyH,QAAQ,CAACzH,YAAY,CAAC,YAAY,CAAC;EAC9C;EAEA,OAAO,EAAE;AACb;;AAEA;AACA;AACA;AACA;AACA;AACA,SAAS3B,mBAAmBA,CAAChK,GAAG,EAAE;EAC9B,IAAMyU,WAAW,GAAG,IAAIC,GAAG,CAAC1U,GAAG,EAAE6I,QAAQ,CAAC8L,MAAM,CAAC;EAEjDF,WAAW,CAAC5D,YAAY,CAACxX,MAAM,CAAC,YAAY,EAAEmb,YAAY,CAAC,CAAC,CAAC;EAE7D,OAAOC,WAAW,CAACnG,QAAQ,CAAC,CAAC;AACjC;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAASsG,gBAAgBA,CAACC,aAAa,EAAE;EACrC;AACJ;AACA;AACA;AACA;EACI,SAAS1O,UAAUA,CAAC2O,gBAAgB,EAAE;IAClC,OAAO7O,IAAI,CAACC,SAAS,CAACuI,KAAK,CAACC,IAAI,CAACoG,gBAAgB,CAAChB,gBAAgB,CAAC,iBAAiB,CAAC,CAAC,CACjFzQ,GAAG,CAAC,UAAA0R,QAAQ,EAAI;MACb,IAAMC,aAAa,GAAGD,QAAQ,CAACvL,aAAa,CAAC,iBAAiB,CAAC,CAACnS,KAAK;MACrE,IAAMgE,cAAc,GAAG0Z,QAAQ,CAACvL,aAAa,mCAAAyL,MAAA,CAAkCD,aAAa,QAAI,CAAC;MAEjG,OAAO;QACHzO,QAAQ,EAAEwO,QAAQ,CAACpJ,YAAY,CAAC,gBAAgB,CAAC;QACjDrF,eAAe,EAAEjL,cAAc,CAACsQ,YAAY,CAAC,eAAe;MAChE,CAAC;IACL,CAAC,CAAC,CAAC;EACX;EAEA,IAAMuJ,KAAK,GAAGhZ,QAAQ,CAACsN,aAAa,CAACqL,aAAa,CAAC;EACnD,IAAMM,WAAW,GAAGjZ,QAAQ,CAAC4X,gBAAgB,CAAC,cAAc,CAAC;EAC7D,IAAMsB,QAAQ,GAAGlZ,QAAQ,CAAC4X,gBAAgB,CAAC,WAAW,CAAC;EAEvD,IAAMuB,cAAc,GAAGH,KAAK,CAACld,OAAO,CAAC,sDAAsD,CAAC,IACrFkd,KAAK,CAACld,OAAO,CAAC,wCAAwC,CAAC;EAE9D,IAAMsd,cAAc,GAAG,CAAC,0BAA0B,EAAE,0BAA0B,CAAC,CAAClB,IAAI,CAAC,UAAA/e,SAAS;IAAA,OAAIggB,cAAc,CAACrD,SAAS,CAACC,QAAQ,CAAC5c,SAAS,CAAC;EAAA,EAAC;EAE/I,IAAMyJ,GAAG,GAAGmR,IAAI,CAACpR,WAAW,CAACwW,cAAc,CAAC;EAE5C,IAAIP,gBAAgB;EACpB,IAAItd,IAAI,GAAG,CAAC,CAAC;EAEb,IAAI8d,cAAc,IAAI,CAACF,QAAQ,CAACte,MAAM,EAAE;IACpCge,gBAAgB,GAAG5Y,QAAQ,CAACsN,aAAa,CAACqL,aAAa,CAAC,CAAC7c,OAAO,CAAC8X,oBAAoB,CAAC,IAAI5T,QAAQ,CAACsN,aAAa,CAACsG,oBAAoB,CAAC;EAC1I,CAAC,MAAM;IACHgF,gBAAgB,GAAG5Y,QAAQ,CAACsN,aAAa,CAACqL,aAAa,CAAC,CAAC7c,OAAO,CAAC,WAAW,CAAC;EACjF;EAEA,IAAImd,WAAW,CAACre,MAAM,EAAE;IACpB,IAAMwM,QAAQ,GAAGpH,QAAQ,CAACsN,aAAa,CAAC,eAAe,CAAC,CAACA,aAAa,CAAC,kBAAkB,CAAC,CAACnS,KAAK;IAEhGG,IAAI,GAAG;MACHsH,GAAG,EAAEA,GAAG;MACRwE,QAAQ,EAAEA;IACd,CAAC;IAED,IAAMiS,KAAK,GAAG9G,KAAK,CAACC,IAAI,CAACyG,WAAW,CAAC,CAAC9R,GAAG,CAAC,UAAS7F,IAAI,EAAE;MACrD,OAAO;QACHsB,GAAG,EAAEtB,IAAI,CAACgM,aAAa,CAAC,aAAa,CAAC,CAACgM,SAAS;QAChDlS,QAAQ,EAAErB,QAAQ,CAACzE,IAAI,CAACgM,aAAa,CAAC,WAAW,CAAC,CAACmC,YAAY,CAAC,eAAe,CAAC,EAAE,EAAE;MACxF,CAAC;IACL,CAAC,CAAC;IAEFnU,IAAI,CAACwO,aAAa,GAAGC,IAAI,CAACC,SAAS,CAACqP,KAAK,CAAC;EAC9C,CAAC,MAAM,IAAIH,QAAQ,CAACte,MAAM,IAAIwe,cAAc,EAAE;IAC1C,IAAMC,MAAK,GAAG9G,KAAK,CAACC,IAAI,CAAC0G,QAAQ,CAAC,CAAC/R,GAAG,CAAC,UAAS7F,IAAI,EAAE;MAClD,OAAO;QACHsB,GAAG,EAAEmR,IAAI,CAACpR,WAAW,CAACrB,IAAI,CAAC;QAC3B4J,GAAG,EAAEnF,QAAQ,CAACgO,IAAI,CAAC5Q,mBAAmB,CAAC7B,IAAI,CAAC,EAAE,EAAE,CAAC;QACjDvI,OAAO,EAAEkR,UAAU,CAAC3I,IAAI;MAC5B,CAAC;IACL,CAAC,CAAC;IAEFhG,IAAI,CAAC0P,OAAO,GAAGjB,IAAI,CAACC,SAAS,CAACqP,MAAK,CAAC;EACxC,CAAC,MAAM;IACH/d,IAAI,GAAG;MACHsH,GAAG,EAAEA,GAAG;MACRwE,QAAQ,EAAE2M,IAAI,CAAC5Q,mBAAmB,CAACgW,cAAc,CAAC;MAClDpgB,OAAO,EAAEkR,UAAU,CAAC2O,gBAAgB;IACxC,CAAC;EACL;EAEA,OAAOtgB,CAAC,CAACkP,IAAI,CAAC;IACV1D,GAAG,EAAExL,CAAC,CAAC,kBAAkB,CAAC,CAACG,GAAG,CAAC,CAAC;IAChCgP,MAAM,EAAE,MAAM;IACd8J,KAAK,EAAE,KAAK;IACZpT,IAAI,EAAE7C;EACV,CAAC,CAAC,CAACkW,YAAY;AACnB;;AAEA;AACA;AACA;AACA,SAAS+H,yBAAyBA,CAAA,EAAG;EACjC,IAAMzV,GAAG,GAAGgK,mBAAmB,CAACC,MAAM,CAACC,UAAU,CAACuL,yBAAyB,CAAC;EAE5EpJ,KAAK,CAACrM,GAAG,EAAE;IACP2D,MAAM,EAAE,KAAK;IACb4I,OAAO,EAAE;MAAE,cAAc,EAAE;IAAmB;EAClD,CAAC,CAAC,CACGmJ,OAAO,CAAC,YAAM;IACXlhB,CAAC,CAACqP,OAAO,CAAC,CAAC,CAACC,IAAI,CAAC,CAAC;EACtB,CAAC,CAAC;AACV;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,SAASmI,cAAcA,CAAAmB,IAAA,EAA6C;EAAA,IAAAuI,KAAA;EAAA,IAA1C/V,EAAE,GAAAwN,IAAA,CAAFxN,EAAE;IAAEgW,KAAK,GAAAxI,IAAA,CAALwI,KAAK;EAAA,IAAI9L,mBAAmB,GAAAC,SAAA,CAAAjT,MAAA,QAAAiT,SAAA,QAAA3K,SAAA,GAAA2K,SAAA,MAAG,KAAK;EAC9D,IAAM8L,GAAG,GAAGhd,mBAAO,CAAC,iFAAO,CAAC;EAE5B,IAAMid,IAAI,GAAG,IAAI;EACjB,IAAI9V,GAAG,GAAGgK,mBAAmB,CAACC,MAAM,CAACC,UAAU,CAAC+B,cAAc,CAAC;EAC/D,IAAIV,mBAAmB;EAEvB,IAAIuK,IAAI,CAACC,qBAAqB,EAAE;IAC5BxK,mBAAmB,GAAGsK,GAAG,CAACzK,yBAAyB,CAAC;MAChD+B,iBAAiB,EAAE2I,IAAI,CAACC;IAC5B,CAAC,EAAED,IAAI,CAACE,mBAAmB,CAAC;EAChC,CAAC,MAAM,IAAIpW,EAAE,IAAIgW,KAAK,EAAE;IACpBrK,mBAAmB,GAAGsK,GAAG,CAACzK,yBAAyB,CAAC;MAChD6K,kBAAkB,EAAErW,EAAE;MACtBsW,0BAA0B,EAAEN,KAAK,CAACO,UAAU,CAAC3J;IACjD,CAAC,EAAEsJ,IAAI,CAACM,YAAY,CAAC;EACzB,CAAC,MAAM;IACHpW,GAAG,MAAAiV,MAAA,CAAMjV,GAAG,2BAAAiV,MAAA,CAAwBnL,mBAAmB,CAAE;IACzDyB,mBAAmB,GAAGsK,GAAG,CAACzK,yBAAyB,CAAC,CAAC;EACzD;EAEA,OAAOiB,KAAK,CAACrM,GAAG,EAAE;IACd2D,MAAM,EAAE,MAAM;IACdS,IAAI,EAAEmH;EACV,CAAC,CAAC,CACGP,IAAI,CAAC,UAACtK,QAAQ;IAAA,OAAKA,QAAQ,CAACgM,IAAI,CAAC,CAAC;EAAA,EAAC,CACnC1B,IAAI,CAAC,UAAC3Q,IAAI,EAAK;IACZ,IAAIsb,KAAI,CAAClM,MAAM,EAAE;MACbkM,KAAI,CAAClM,MAAM,CAACL,IAAI,CAAC,CAAC;IACtB;IAEA/O,IAAI,CAAC0J,KAAK,GACJkG,MAAM,CAACpB,QAAQ,CAACsB,IAAI,GAAG9P,IAAI,CAACgc,WAAW,GACvCpM,MAAM,CAACpB,QAAQ,CAACsB,IAAI,GAAGF,MAAM,CAACC,UAAU,CAACE,eAAe;EAClE,CAAC,CAAC;AACV;;AAEA;AACA;AACA;AACA;AACA;AACA,SAASkM,YAAYA,CAAC9a,OAAO,EAAE;EAC3B,IAAMmO,iBAAiB,GAAG9Q,mBAAO,CAAC,0GAAwB,CAAC;EAC3D,IAAM+Q,YAAY,GAAG,IAAID,iBAAiB,CAAC,CAAC;EAE5C,IAAI4M,MAAM,GAAG,IAAI;EAEjB,IAAI;IACAA,MAAM,GAAGtQ,IAAI,CAACqE,KAAK,CAAC9O,OAAO,CAAC;EAChC,CAAC,CAAC,OAAOuI,KAAK,EAAE;IACZ6F,YAAY,CAACY,SAAS,CAACP,MAAM,CAAC6H,eAAe,CAAC0E,mCAAmC,CAAC;EACtF;EAEA,OAAOD,MAAM;AACjB;;AAEA;AACA;AACA;AACA;AACA;AACA,SAASE,UAAUA,CAACpf,KAAK,EAAEqf,YAAY,EAAE;EACrC,OAAOrf,KAAK,IAAIqf,YAAY;AAChC;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,SAASC,yBAAyBA,CAAC/gB,cAAc,EAAEghB,eAAe,EAAE;EAChE,IAAMre,OAAO,GAAG2D,QAAQ,CAACsN,aAAa,KAAAyL,MAAA,CAAK2B,eAAe,CAAE,CAAC;EAE7Dnb,MAAM,CAACmQ,OAAO,CAAChW,cAAc,CAAC,CAAC2D,OAAO,CAAC,UAAAsd,KAAA,EAAgB;IAAA,IAAAC,KAAA,GAAA/K,cAAA,CAAA8K,KAAA;MAAd3f,GAAG,GAAA4f,KAAA;MAAEniB,GAAG,GAAAmiB,KAAA;IAC7C,IAAI5f,GAAG,KAAK,aAAa,EAAE;MACvBqB,OAAO,CAACwe,OAAO,CAAC7f,GAAG,CAAC,GAAGvC,GAAG,CAAC0C,KAAK;IACpC,CAAC,MAAM;MACHkB,OAAO,CAACwe,OAAO,CAAC7f,GAAG,CAAC,GAAGvC,GAAG;IAC9B;EACJ,CAAC,CAAC;AACN;;AAEA;AACA;AACA;AACA;AACA;AACA,SAASqiB,yBAAyBA,CAACphB,cAAc,EAAE;EAC/C,IAAIqhB,kCAAkC,GAAG,EAAE;EAE3C,IAAIxb,MAAM,CAACC,IAAI,CAAC9F,cAAc,CAAC,CAACkB,MAAM,EAAE;IACpC,IAAMX,SAAS,GAAGsgB,UAAU,CAAC7gB,cAAc,CAACO,SAAS,EAAE,EAAE,CAAC;IAC1D,IAAM+gB,QAAQ,GAAGT,UAAU,CAAC7gB,cAAc,CAACS,QAAQ,EAAE,EAAE,CAAC;IACxD,IAAMC,QAAQ,GAAGmgB,UAAU,CAAC7gB,cAAc,CAACU,QAAQ,EAAE,EAAE,CAAC;IACxD,IAAME,IAAI,GAAGigB,UAAU,CAAC7gB,cAAc,CAACY,IAAI,EAAE,EAAE,CAAC;IAChD,IAAMC,KAAK,GAAGggB,UAAU,CAAC7gB,cAAc,CAACc,SAAS,EAAE,EAAE,CAAC;IACtD,IAAMC,UAAU,GAAG8f,UAAU,CAACU,kBAAkB,CAACvhB,cAAc,CAACe,UAAU,CAAC,EAAE,EAAE,CAAC;IAEhFsgB,kCAAkC,MAAAhC,MAAA,CAAM9e,SAAS,OAAA8e,MAAA,CAAIiC,QAAQ,OAAAjC,MAAA,CAAI3e,QAAQ,OAAA2e,MAAA,CAAIze,IAAI,OAAAye,MAAA,CAAIxe,KAAK,OAAAwe,MAAA,CAAIte,UAAU,CAAE;EAC9G;EAEA,OAAOsgB,kCAAkC;AAC7C;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,SAASG,mCAAmCA,CAACxhB,cAAc,EAAEghB,eAAe,EAAE;EAC1E,IAAMS,sBAAsB,GAAGL,yBAAyB,CAACphB,cAAc,CAAC;EAExE,IAAIyhB,sBAAsB,KAAK,EAAE,EAAE;IAC/B,IAAMC,8BAA8B,GAAGpb,QAAQ,CAACsN,aAAa,KAAAyL,MAAA,CAAK2B,eAAe,CAAE,CAAC;IAEpF,IAAIU,8BAA8B,EAAE;MAChCA,8BAA8B,CAAC9B,SAAS,GAAG6B,sBAAsB;MACjEC,8BAA8B,CAACviB,QAAQ,GAAG,IAAI;MAC9CuiB,8BAA8B,CAACC,MAAM,GAAG,KAAK;IACjD,CAAC,MAAM;MACH,IAAM9O,MAAM,GAAGvM,QAAQ,CAACsV,aAAa,CAAC,QAAQ,CAAC;MAE/C/I,MAAM,CAACmK,SAAS,GAAGyE,sBAAsB;MACzC5O,MAAM,CAAC1T,QAAQ,GAAG,IAAI;MACtB0T,MAAM,CAACuJ,SAAS,CAACW,GAAG,CAACiE,eAAe,CAAC;MAErC1a,QAAQ,CAACuP,cAAc,CAAC,wBAAwB,CAAC,CAACpS,MAAM,CAACoP,MAAM,CAAC;IACpE;EACJ;AACJ;;AAEA;AACA;AACA;AACA;AACA;AACA,SAASrN,oBAAoBA,CAACoc,eAAe,EAAE;EAC3C,IAAMC,WAAW,GAAG5e,mBAAO,CAAC,+GAAuB,CAAC;EAEpD,IAAM6e,wBAAwB,GAAG,+BAA+B;EAChE,IAAM9hB,cAAc,GAAG0gB,YAAY,CAACkB,eAAe,CAACT,OAAO,CAACnhB,cAAc,CAAC;EAC3E,IAAMZ,KAAK,GAAG;IACVU,OAAO,EAAE;MACLE,cAAc,EAAE;QACZrB,OAAO,EAAEqB;MACb;IACJ;EACJ,CAAC;EAED6hB,WAAW,CAAC5f,OAAO,CAACgC,oBAAoB,CAAC7E,KAAK,CAAC;EAC/CoiB,mCAAmC,CAACxhB,cAAc,EAAE8hB,wBAAwB,CAAC;EAC7Ef,yBAAyB,CAAC/gB,cAAc,EAAE8hB,wBAAwB,CAAC;AACvE;;AAEA;AACA;AACA;AACA;AACA;AACA,SAASC,YAAYA,CAACngB,IAAI,EAAE;EACxB,IAAIA,IAAI,CAACogB,aAAa,IAAI,CAACpgB,IAAI,CAACogB,aAAa,CAAC,CAAC,EAAE;IAC7C,IAAMC,aAAa,GAAGpJ,KAAK,CAACC,IAAI,CAAClX,IAAI,CAACsc,gBAAgB,CAAC,eAAe,CAAC,CAAC,CAACgE,MAAM,CAAC,UAACC,KAAK,EAAEvc,OAAO,EAAK;MAChG,IAAI,CAACA,OAAO,CAACwc,QAAQ,CAACC,KAAK,EAAE;QACzBzc,OAAO,CAACwW,SAAS,CAACW,GAAG,CAAC3C,iBAAiB,CAAC;QACxC+H,KAAK,CAAC3hB,IAAI,CAACoF,OAAO,CAAC;MACvB;MAEA,OAAOuc,KAAK;IAChB,CAAC,EAAE,EAAE,CAAC;IAEN,OAAO;MACHG,OAAO,EAAE,KAAK;MACdL,aAAa,EAAEA;IACnB,CAAC;EACL;EAEA,OAAO;IACHK,OAAO,EAAE;EACb,CAAC;AACL;;;;;;;;;;;;;ACzrBa;;AAEb;AACA;AACA;AAFA,SAAAnkB,QAAAC,CAAA,sCAAAD,OAAA,wBAAAE,MAAA,uBAAAA,MAAA,CAAAC,QAAA,aAAAF,CAAA,kBAAAA,CAAA,gBAAAA,CAAA,WAAAA,CAAA,yBAAAC,MAAA,IAAAD,CAAA,CAAAG,WAAA,KAAAF,MAAA,IAAAD,CAAA,KAAAC,MAAA,CAAAG,SAAA,qBAAAJ,CAAA,KAAAD,OAAA,CAAAC,CAAA;AAAA,SAAAmkB,gBAAAC,QAAA,EAAApP,WAAA,UAAAoP,QAAA,YAAApP,WAAA,eAAAkF,SAAA;AAAA,SAAAmK,kBAAA/D,MAAA,EAAAgE,KAAA,aAAAvW,CAAA,MAAAA,CAAA,GAAAuW,KAAA,CAAAxhB,MAAA,EAAAiL,CAAA,UAAAwW,UAAA,GAAAD,KAAA,CAAAvW,CAAA,GAAAwW,UAAA,CAAAC,UAAA,GAAAD,UAAA,CAAAC,UAAA,WAAAD,UAAA,CAAAE,YAAA,wBAAAF,UAAA,EAAAA,UAAA,CAAAG,QAAA,SAAAjd,MAAA,CAAAkd,cAAA,CAAArE,MAAA,EAAAsE,cAAA,CAAAL,UAAA,CAAArhB,GAAA,GAAAqhB,UAAA;AAAA,SAAAM,aAAA7P,WAAA,EAAA8P,UAAA,EAAAC,WAAA,QAAAD,UAAA,EAAAT,iBAAA,CAAArP,WAAA,CAAA5U,SAAA,EAAA0kB,UAAA,OAAAC,WAAA,EAAAV,iBAAA,CAAArP,WAAA,EAAA+P,WAAA,GAAAtd,MAAA,CAAAkd,cAAA,CAAA3P,WAAA,iBAAA0P,QAAA,mBAAA1P,WAAA;AAAA,SAAA4P,eAAAI,GAAA,QAAA9hB,GAAA,GAAA+hB,YAAA,CAAAD,GAAA,oBAAAjlB,OAAA,CAAAmD,GAAA,iBAAAA,GAAA,GAAAgiB,MAAA,CAAAhiB,GAAA;AAAA,SAAA+hB,aAAAE,KAAA,EAAAC,IAAA,QAAArlB,OAAA,CAAAolB,KAAA,kBAAAA,KAAA,kBAAAA,KAAA,MAAAE,IAAA,GAAAF,KAAA,CAAAllB,MAAA,CAAAqlB,WAAA,OAAAD,IAAA,KAAAja,SAAA,QAAAma,GAAA,GAAAF,IAAA,CAAA9K,IAAA,CAAA4K,KAAA,EAAAC,IAAA,oBAAArlB,OAAA,CAAAwlB,GAAA,uBAAAA,GAAA,YAAArL,SAAA,4DAAAkL,IAAA,gBAAAF,MAAA,GAAAM,MAAA,EAAAL,KAAA;AAAA,IAGMxP,iBAAiB;EACnB,SAAAA,kBAAA,EAAc;IAAAwO,eAAA,OAAAxO,iBAAA;IACV,IAAI,CAAC8P,uBAAuB,GAAGvd,QAAQ,CAACsN,aAAa,CAAC,8BAA8B,CAAC;IACrF,IAAI,CAACkQ,cAAc,GAAGxd,QAAQ,CAACsN,aAAa,CAAC,oBAAoB,CAAC;EACtE;;EAEA;AACJ;AACA;AACA;AACA;EAJIqP,YAAA,CAAAlP,iBAAA;IAAAzS,GAAA;IAAAG,KAAA,EAKA,SAAAsiB,mBAAmBC,YAAY,EAAEC,SAAS,EAAE;MACxC,IAAMC,eAAe,GAAG,IAAI,CAACJ,cAAc,CAACK,SAAS,CAAC,IAAI,CAAC;MAE3DD,eAAe,CAAC9H,SAAS,CAACW,GAAG,UAAAsC,MAAA,CAAU4E,SAAS,GAAI,MAAM,CAAC;MAC3DC,eAAe,CAAC9H,SAAS,CAACvN,MAAM,CAAC,QAAQ,CAAC;MAE1CqV,eAAe,CAACzgB,MAAM,CAACugB,YAAY,CAAC;MACpC,IAAI,CAACH,uBAAuB,CAACpgB,MAAM,CAACygB,eAAe,CAAC;IACxD;;IAEA;AACJ;AACA;AACA;EAHI;IAAA5iB,GAAA;IAAAG,KAAA,EAIA,SAAAmT,UAAU7B,YAAY,EAAE;MACpB,IAAI,CAACgR,kBAAkB,CAAChR,YAAY,EAAEsB,MAAM,CAAC6H,eAAe,CAACkI,oBAAoB,CAAC;IACtF;;IAEA;AACJ;AACA;AACA;EAHI;IAAA9iB,GAAA;IAAAG,KAAA,EAIA,SAAA4iB,YAAYC,cAAc,EAAE;MACxB,IAAI,CAACP,kBAAkB,CAACO,cAAc,EAAEjQ,MAAM,CAAC6H,eAAe,CAACqI,qBAAqB,CAAC;IACzF;;IAEA;AACJ;AACA;AACA;EAHI;IAAAjjB,GAAA;IAAAG,KAAA,EAIA,SAAA+iB,SAASC,WAAW,EAAE;MAClB,IAAI,CAACV,kBAAkB,CAACU,WAAW,EAAEpQ,MAAM,CAAC6H,eAAe,CAACwI,kBAAkB,CAAC;IACnF;;IAEA;AACJ;AACA;EAFI;IAAApjB,GAAA;IAAAG,KAAA,EAGA,SAAAkjB,WAAA,EAAa;MACT,IAAMC,gBAAgB,GAAGte,QAAQ,CAAC4X,gBAAgB,CAAC,oBAAoB,CAAC;MAExE0G,gBAAgB,CAACjhB,OAAO,CAAC,UAACiC,OAAO;QAAA,OAAKA,OAAO,CAACwW,SAAS,CAACW,GAAG,CAAC,QAAQ,CAAC;MAAA,EAAC;IAC1E;EAAC;EAAA,OAAAhJ,iBAAA;AAAA;AAGLhS,MAAM,CAACC,OAAO,GAAG+R,iBAAiB,C;;;;;;;;;;;;AC5DrB;;AAAA,SAAA5V,QAAAC,CAAA,sCAAAD,OAAA,wBAAAE,MAAA,uBAAAA,MAAA,CAAAC,QAAA,aAAAF,CAAA,kBAAAA,CAAA,gBAAAA,CAAA,WAAAA,CAAA,yBAAAC,MAAA,IAAAD,CAAA,CAAAG,WAAA,KAAAF,MAAA,IAAAD,CAAA,KAAAC,MAAA,CAAAG,SAAA,qBAAAJ,CAAA,KAAAD,OAAA,CAAAC,CAAA;AAAA,SAAAmkB,gBAAAC,QAAA,EAAApP,WAAA,UAAAoP,QAAA,YAAApP,WAAA,eAAAkF,SAAA;AAAA,SAAAmK,kBAAA/D,MAAA,EAAAgE,KAAA,aAAAvW,CAAA,MAAAA,CAAA,GAAAuW,KAAA,CAAAxhB,MAAA,EAAAiL,CAAA,UAAAwW,UAAA,GAAAD,KAAA,CAAAvW,CAAA,GAAAwW,UAAA,CAAAC,UAAA,GAAAD,UAAA,CAAAC,UAAA,WAAAD,UAAA,CAAAE,YAAA,wBAAAF,UAAA,EAAAA,UAAA,CAAAG,QAAA,SAAAjd,MAAA,CAAAkd,cAAA,CAAArE,MAAA,EAAAsE,cAAA,CAAAL,UAAA,CAAArhB,GAAA,GAAAqhB,UAAA;AAAA,SAAAM,aAAA7P,WAAA,EAAA8P,UAAA,EAAAC,WAAA,QAAAD,UAAA,EAAAT,iBAAA,CAAArP,WAAA,CAAA5U,SAAA,EAAA0kB,UAAA,OAAAC,WAAA,EAAAV,iBAAA,CAAArP,WAAA,EAAA+P,WAAA,GAAAtd,MAAA,CAAAkd,cAAA,CAAA3P,WAAA,iBAAA0P,QAAA,mBAAA1P,WAAA;AAAA,SAAA4P,eAAAI,GAAA,QAAA9hB,GAAA,GAAA+hB,YAAA,CAAAD,GAAA,oBAAAjlB,OAAA,CAAAmD,GAAA,iBAAAA,GAAA,GAAAgiB,MAAA,CAAAhiB,GAAA;AAAA,SAAA+hB,aAAAE,KAAA,EAAAC,IAAA,QAAArlB,OAAA,CAAAolB,KAAA,kBAAAA,KAAA,kBAAAA,KAAA,MAAAE,IAAA,GAAAF,KAAA,CAAAllB,MAAA,CAAAqlB,WAAA,OAAAD,IAAA,KAAAja,SAAA,QAAAma,GAAA,GAAAF,IAAA,CAAA9K,IAAA,CAAA4K,KAAA,EAAAC,IAAA,oBAAArlB,OAAA,CAAAwlB,GAAA,uBAAAA,GAAA,YAAArL,SAAA,4DAAAkL,IAAA,gBAAAF,MAAA,GAAAM,MAAA,EAAAL,KAAA;AAEb,IAAMtD,GAAG,GAAGhd,mBAAO,CAAC,6FAAmB,CAAC;AACxC,IAAMyQ,MAAM,GAAGzQ,mBAAO,CAAC,mGAAsB,CAAC;AAC9C,IAAMwQ,cAAc,GAAGxQ,mBAAO,CAAC,yGAAyB,CAAC;AAEzD,IAAM0Q,gBAAgB,GAAGrN,QAAQ,CAACsN,aAAa,CAAC,eAAe,CAAC;AAAC,IAE3DiR,iBAAiB;EACnB,SAAAA,kBAAYC,QAAQ,EAAE;IAAAvC,eAAA,OAAAsC,iBAAA;IAClB,IAAM9Q,iBAAiB,GAAG9Q,mBAAO,CAAC,mGAAiB,CAAC;IAEpD,IAAI,CAAC6hB,QAAQ,GAAGA,QAAQ;IACxB,IAAI,CAAC9P,UAAU,GAAG,KAAK;IACvB,IAAI,CAAC+P,cAAc,GAAG,IAAI;IAC1B,IAAI,CAAClR,MAAM,GAAGJ,cAAc,CAACE,gBAAgB,CAAC;IAC9C,IAAI,CAACK,YAAY,GAAG,IAAID,iBAAiB,CAAC,CAAC;IAC3C,IAAI,CAACyM,YAAY,GAAGla,QAAQ,CAACsN,aAAa,CAAC,IAAI,CAACkR,QAAQ,CAAC;EAC7D;;EAEA;AACJ;AACA;AACA;EAHI7B,YAAA,CAAA4B,iBAAA;IAAAvjB,GAAA;IAAAG,KAAA,EAIA,SAAA6T,uBAAA,EAAyB;MACrB,IAAM4K,IAAI,GAAG,IAAI;MAEjBA,IAAI,CAACrM,MAAM,CAAC7P,IAAI,CAAC,CAAC;MAElB,OAAOic,GAAG,CAAClL,wBAAwB,CAACmL,IAAI,CAAClL,UAAU,CAAC,CAC/CI,IAAI,CAAC,UAAA3Q,IAAI;QAAA,OAAIA,IAAI,CAACugB,KAAK;MAAA,EAAC,CACxBC,IAAI,CAAC,UAAAxQ,GAAG,EAAI;QACTyL,IAAI,CAAC6E,cAAc,CAACG,KAAK,CAAC,CAAC;QAE3BhF,IAAI,CAAClM,YAAY,CAACY,SAAS,CAACH,GAAG,CAACE,YAAY,CAAC;MACjD,CAAC,CAAC;IACV;;IAEA;AACJ;AACA;AACA;AACA;EAJI;IAAArT,GAAA;IAAAG,KAAA,EAKA,SAAA0jB,UAAA,EAAY;MACR,OAAOlF,GAAG,CAAC5K,0BAA0B,CAAC,CAAC;IAC3C;;IAEA;AACJ;AACA;EAFI;IAAA/T,GAAA;IAAAG,KAAA,EAGA,SAAA2jB,SAAA,EAAW;MACP,IAAI,CAACvR,MAAM,CAACL,IAAI,CAAC,CAAC;IACtB;;IAEA;AACJ;AACA;EAFI;IAAAlS,GAAA;IAAAG,KAAA,EAGA,SAAA4jB,QAAA,EAAU;MACN,IAAI,CAACxR,MAAM,CAACL,IAAI,CAAC,CAAC;IACtB;;IAEA;AACJ;AACA;EAFI;IAAAlS,GAAA;IAAAG,KAAA,EAGA,SAAA6jB,QAAA,EAAU;MACN,IAAI,CAACzR,MAAM,CAACL,IAAI,CAAC,CAAC;MAClB,IAAI,CAAC+R,gBAAgB,CAAC,CAAC;IAC3B;;IAEA;AACJ;AACA;EAFI;IAAAjkB,GAAA;IAAAG,KAAA,EAGA,SAAA8jB,iBAAA,EAAmB;MACf,IAAMrF,IAAI,GAAG,IAAI;MAEjBA,IAAI,CAACrM,MAAM,CAAC7P,IAAI,CAAC,CAAC;MAElBkc,IAAI,CAAC6E,cAAc,GAAG1Q,MAAM,CAACmR,MAAM,CAACC,OAAO,CAAC;QACxCnQ,sBAAsB,EAAE4K,IAAI,CAAC5K,sBAAsB,CAACoQ,IAAI,CAACxF,IAAI,CAAC;QAC9DiF,SAAS,EAAEjF,IAAI,CAACiF,SAAS,CAACO,IAAI,CAACxF,IAAI,CAAC;QACpCkF,QAAQ,EAAElF,IAAI,CAACkF,QAAQ,CAACM,IAAI,CAACxF,IAAI,CAAC;QAClCmF,OAAO,EAAEnF,IAAI,CAACmF,OAAO,CAACK,IAAI,CAACxF,IAAI,CAAC;QAChCoF,OAAO,EAAEpF,IAAI,CAACoF,OAAO,CAACI,IAAI,CAACxF,IAAI,CAAC;QAChC5M,KAAK,EAAEI,MAAM,CAAC4G,oBAAoB,CAAC4F,IAAI,CAACM,YAAY;MACxD,CAAC,CAAC;IACN;EAAC;EAAA,OAAAqE,iBAAA;AAAA;AAGL9iB,MAAM,CAACC,OAAO,GAAG6iB,iBAAiB,C;;;;;;;;;;;;ACxFrB;;AAAA,SAAA1mB,QAAAC,CAAA,sCAAAD,OAAA,wBAAAE,MAAA,uBAAAA,MAAA,CAAAC,QAAA,aAAAF,CAAA,kBAAAA,CAAA,gBAAAA,CAAA,WAAAA,CAAA,yBAAAC,MAAA,IAAAD,CAAA,CAAAG,WAAA,KAAAF,MAAA,IAAAD,CAAA,KAAAC,MAAA,CAAAG,SAAA,qBAAAJ,CAAA,KAAAD,OAAA,CAAAC,CAAA;AAAA,SAAAmkB,gBAAAC,QAAA,EAAApP,WAAA,UAAAoP,QAAA,YAAApP,WAAA,eAAAkF,SAAA;AAAA,SAAAmK,kBAAA/D,MAAA,EAAAgE,KAAA,aAAAvW,CAAA,MAAAA,CAAA,GAAAuW,KAAA,CAAAxhB,MAAA,EAAAiL,CAAA,UAAAwW,UAAA,GAAAD,KAAA,CAAAvW,CAAA,GAAAwW,UAAA,CAAAC,UAAA,GAAAD,UAAA,CAAAC,UAAA,WAAAD,UAAA,CAAAE,YAAA,wBAAAF,UAAA,EAAAA,UAAA,CAAAG,QAAA,SAAAjd,MAAA,CAAAkd,cAAA,CAAArE,MAAA,EAAAsE,cAAA,CAAAL,UAAA,CAAArhB,GAAA,GAAAqhB,UAAA;AAAA,SAAAM,aAAA7P,WAAA,EAAA8P,UAAA,EAAAC,WAAA,QAAAD,UAAA,EAAAT,iBAAA,CAAArP,WAAA,CAAA5U,SAAA,EAAA0kB,UAAA,OAAAC,WAAA,EAAAV,iBAAA,CAAArP,WAAA,EAAA+P,WAAA,GAAAtd,MAAA,CAAAkd,cAAA,CAAA3P,WAAA,iBAAA0P,QAAA,mBAAA1P,WAAA;AAAA,SAAA4P,eAAAI,GAAA,QAAA9hB,GAAA,GAAA+hB,YAAA,CAAAD,GAAA,oBAAAjlB,OAAA,CAAAmD,GAAA,iBAAAA,GAAA,GAAAgiB,MAAA,CAAAhiB,GAAA;AAAA,SAAA+hB,aAAAE,KAAA,EAAAC,IAAA,QAAArlB,OAAA,CAAAolB,KAAA,kBAAAA,KAAA,kBAAAA,KAAA,MAAAE,IAAA,GAAAF,KAAA,CAAAllB,MAAA,CAAAqlB,WAAA,OAAAD,IAAA,KAAAja,SAAA,QAAAma,GAAA,GAAAF,IAAA,CAAA9K,IAAA,CAAA4K,KAAA,EAAAC,IAAA,oBAAArlB,OAAA,CAAAwlB,GAAA,uBAAAA,GAAA,YAAArL,SAAA,4DAAAkL,IAAA,gBAAAF,MAAA,GAAAM,MAAA,EAAAL,KAAA;AAAA,SAAAoC,KAAA,eAAAC,OAAA,oBAAAA,OAAA,CAAAzQ,GAAA,IAAAwQ,IAAA,GAAAC,OAAA,CAAAzQ,GAAA,CAAAuQ,IAAA,aAAAC,IAAA,YAAAA,KAAAjH,MAAA,EAAAmH,QAAA,EAAAC,QAAA,QAAAzL,IAAA,GAAA0L,cAAA,CAAArH,MAAA,EAAAmH,QAAA,QAAAxL,IAAA,cAAA2L,IAAA,GAAAngB,MAAA,CAAAogB,wBAAA,CAAA5L,IAAA,EAAAwL,QAAA,OAAAG,IAAA,CAAA7Q,GAAA,WAAA6Q,IAAA,CAAA7Q,GAAA,CAAAwD,IAAA,CAAAxE,SAAA,CAAAjT,MAAA,OAAAwd,MAAA,GAAAoH,QAAA,YAAAE,IAAA,CAAAvkB,KAAA,cAAAkkB,IAAA,CAAAO,KAAA,OAAA/R,SAAA;AAAA,SAAA4R,eAAAI,MAAA,EAAAN,QAAA,YAAAhgB,MAAA,CAAArH,SAAA,CAAA4nB,cAAA,CAAAzN,IAAA,CAAAwN,MAAA,EAAAN,QAAA,KAAAM,MAAA,GAAAE,eAAA,CAAAF,MAAA,OAAAA,MAAA,2BAAAA,MAAA;AAAA,SAAAG,UAAAC,QAAA,EAAAC,UAAA,eAAAA,UAAA,mBAAAA,UAAA,uBAAAlO,SAAA,0DAAAiO,QAAA,CAAA/nB,SAAA,GAAAqH,MAAA,CAAA4gB,MAAA,CAAAD,UAAA,IAAAA,UAAA,CAAAhoB,SAAA,IAAAD,WAAA,IAAAkD,KAAA,EAAA8kB,QAAA,EAAAzD,QAAA,QAAAD,YAAA,aAAAhd,MAAA,CAAAkd,cAAA,CAAAwD,QAAA,iBAAAzD,QAAA,gBAAA0D,UAAA,EAAAE,eAAA,CAAAH,QAAA,EAAAC,UAAA;AAAA,SAAAE,gBAAAtoB,CAAA,EAAAuoB,CAAA,IAAAD,eAAA,GAAA7gB,MAAA,CAAA+gB,cAAA,GAAA/gB,MAAA,CAAA+gB,cAAA,CAAAlB,IAAA,cAAAgB,gBAAAtoB,CAAA,EAAAuoB,CAAA,IAAAvoB,CAAA,CAAAyoB,SAAA,GAAAF,CAAA,SAAAvoB,CAAA,YAAAsoB,eAAA,CAAAtoB,CAAA,EAAAuoB,CAAA;AAAA,SAAAG,aAAAC,OAAA,QAAAC,yBAAA,GAAAC,yBAAA,oBAAAC,qBAAA,QAAAC,KAAA,GAAAd,eAAA,CAAAU,OAAA,GAAApG,MAAA,MAAAqG,yBAAA,QAAAI,SAAA,GAAAf,eAAA,OAAA9nB,WAAA,EAAAoiB,MAAA,GAAAiF,OAAA,CAAAyB,SAAA,CAAAF,KAAA,EAAAhT,SAAA,EAAAiT,SAAA,YAAAzG,MAAA,GAAAwG,KAAA,CAAAjB,KAAA,OAAA/R,SAAA,YAAAmT,0BAAA,OAAA3G,MAAA;AAAA,SAAA2G,2BAAAC,IAAA,EAAA5O,IAAA,QAAAA,IAAA,KAAAxa,OAAA,CAAAwa,IAAA,yBAAAA,IAAA,2BAAAA,IAAA,aAAAA,IAAA,yBAAAL,SAAA,uEAAAkP,sBAAA,CAAAD,IAAA;AAAA,SAAAC,uBAAAD,IAAA,QAAAA,IAAA,yBAAAE,cAAA,wEAAAF,IAAA;AAAA,SAAAN,0BAAA,eAAArB,OAAA,qBAAAA,OAAA,CAAAyB,SAAA,oBAAAzB,OAAA,CAAAyB,SAAA,CAAAK,IAAA,2BAAAC,KAAA,oCAAAC,OAAA,CAAAppB,SAAA,CAAAqpB,OAAA,CAAAlP,IAAA,CAAAiN,OAAA,CAAAyB,SAAA,CAAAO,OAAA,8CAAA3hB,CAAA;AAAA,SAAAogB,gBAAAjoB,CAAA,IAAAioB,eAAA,GAAAxgB,MAAA,CAAA+gB,cAAA,GAAA/gB,MAAA,CAAAiiB,cAAA,CAAApC,IAAA,cAAAW,gBAAAjoB,CAAA,WAAAA,CAAA,CAAAyoB,SAAA,IAAAhhB,MAAA,CAAAiiB,cAAA,CAAA1pB,CAAA,aAAAioB,eAAA,CAAAjoB,CAAA;AAEb,IAAMsV,MAAM,GAAGzQ,mBAAO,CAAC,mGAAsB,CAAC;AAE9C,IAAM4hB,iBAAiB,GAAG5hB,mBAAO,CAAC,+GAAc,CAAC;AAAC,IAE5C8kB,oBAAoB,0BAAAC,kBAAA;EAAA1B,SAAA,CAAAyB,oBAAA,EAAAC,kBAAA;EAAA,IAAAC,MAAA,GAAAnB,YAAA,CAAAiB,oBAAA;EACtB,SAAAA,qBAAYjD,QAAQ,EAAE;IAAA,IAAA/E,KAAA;IAAAwC,eAAA,OAAAwF,oBAAA;IAClBhI,KAAA,GAAAkI,MAAA,CAAAtP,IAAA,OAAMmM,QAAQ;IAEd/E,KAAA,CAAK/K,UAAU,GAAG,IAAI;IAAC,OAAA+K,KAAA;EAC3B;;EAEA;AACJ;AACA;AACA;EAHIkD,YAAA,CAAA8E,oBAAA;IAAAzmB,GAAA;IAAAG,KAAA,EAIA,SAAA6T,uBAAA,EAAyB;MACrB5B,MAAM,CAACsL,gBAAgB,CAAC,IAAI,CAAC8F,QAAQ,CAAC;MAEtC,OAAAa,IAAA,CAAAU,eAAA,CAAA0B,oBAAA,CAAAvpB,SAAA,mCAAAma,IAAA;IACJ;;IAEA;AACJ;AACA;AACA;EAHI;IAAArX,GAAA;IAAAG,KAAA,EAIA,SAAA0jB,UAAA,EAAY;MACR,IAAMjF,IAAI,GAAG,IAAI;MAEjB,OAAOyF,IAAA,CAAAU,eAAA,CAAA0B,oBAAA,CAAAvpB,SAAA,sBAAAma,IAAA,OACFvD,IAAI,CAAC,UAACuL,MAAM,EAAK;QACd,OAAOjN,MAAM,CAAC2C,cAAc,CAACsC,IAAI,CAACuH,IAAI,EAAES,MAAM,CAAC;MACnD,CAAC,CAAC,CACDsE,IAAI,CAAC,UAAC9W,KAAK,EAAK;QACb+R,IAAI,CAACrM,MAAM,CAACL,IAAI,CAAC,CAAC;QAElB,IAAM0U,aAAa,GAAG/Z,KAAK,CAAC2J,YAAY;QAExC,IAAIpE,MAAM,CAACwJ,6BAA6B,CAAC/O,KAAK,CAAC,IAAI+Z,aAAa,CAACC,SAAS,KAAK,0BAA0B,EAAE;UACvGzU,MAAM,CAACmM,yBAAyB,CAAC,CAAC;UAElCK,IAAI,CAAC6E,cAAc,CAACG,KAAK,CAAC,CAAC;UAE3B,IAAIgD,aAAa,CAAC5c,OAAO,EAAE;YACvB4U,IAAI,CAAClM,YAAY,CAACY,SAAS,CAACsT,aAAa,CAAC5c,OAAO,CAAC;UACtD;QACJ,CAAC,MAAM;UACH+I,MAAM,CAACpB,QAAQ,CAACsB,IAAI,GAAGF,MAAM,CAACC,UAAU,CAAC8T,QAAQ;QACrD;MACJ,CAAC,CAAC;IACV;;IAEA;AACJ;AACA;AACA;EAHI;IAAA9mB,GAAA;IAAAG,KAAA,EAIA,SAAA2jB,SAAA,EAAW;MACP1R,MAAM,CAACmM,yBAAyB,CAAC,CAAC;MAElC8F,IAAA,CAAAU,eAAA,CAAA0B,oBAAA,CAAAvpB,SAAA,qBAAAma,IAAA;IACJ;;IAEA;AACJ;AACA;AACA;EAHI;IAAArX,GAAA;IAAAG,KAAA,EAIA,SAAA4jB,QAAA,EAAU;MACN3R,MAAM,CAACmM,yBAAyB,CAAC,CAAC;MAElC8F,IAAA,CAAAU,eAAA,CAAA0B,oBAAA,CAAAvpB,SAAA,oBAAAma,IAAA;MACAtE,MAAM,CAACpB,QAAQ,CAACsB,IAAI,GAAGF,MAAM,CAACC,UAAU,CAAC8T,QAAQ;IACrD;;IAEA;AACJ;AACA;EAFI;IAAA9mB,GAAA;IAAAG,KAAA,EAGA,SAAA8jB,iBAAA,EAAmB;MACf,IAAMrF,IAAI,GAAG,IAAI;MAEjByF,IAAA,CAAAU,eAAA,CAAA0B,oBAAA,CAAAvpB,SAAA,6BAAAma,IAAA;MAEA,IAAI,CAACoM,cAAc,CAACsD,MAAM,CAAC,IAAI,CAACvD,QAAQ,CAAC,CACpC1P,IAAI,CAAC,YAAM;QACR8K,IAAI,CAACrM,MAAM,CAACL,IAAI,CAAC,CAAC;MACtB,CAAC,CAAC;IACV;EAAC;EAAA,OAAAuU,oBAAA;AAAA,EAhF8BlD,iBAAiB;AAmFpD9iB,MAAM,CAACC,OAAO,GAAG+lB,oBAAoB,C;;;;;;;;;;;;ACzFxB;;AAEb,IAAM9H,GAAG,GAAGhd,mBAAO,CAAC,6FAAmB,CAAC;AACxC,IAAMyQ,MAAM,GAAGzQ,mBAAO,CAAC,mGAAsB,CAAC;AAE9C,IAAMwQ,cAAc,GAAGxQ,mBAAO,CAAC,yGAAyB,CAAC;AACzD,IAAM0Q,gBAAgB,GAAGrN,QAAQ,CAACsN,aAAa,CAAC,eAAe,CAAC;AAChE,IAAM0U,sBAAsB,GAAGhiB,QAAQ,CAACuP,cAAc,CAAC,mBAAmB,CAAC;AAE3E,IAAM0S,YAAY,GAAG,CACjB,MAAM,EACN,YAAY,EACZ,KAAK,EACL,SAAS,EACT,OAAO,EACP,QAAQ,EACR,KAAK,EACL,QAAQ,EACR,OAAO,EACP,MAAM,CACT;AAED,IAAIrI,IAAI,GAAG,IAAI;;AAEf;AACA;AACA;AACA;AACA;AACA,IAAMsI,SAAS,GAAG,SAAZA,SAASA,CAAGjR,iBAAiB,EAAI;EACnC,OAAOgR,YAAY,CAAC9gB,OAAO,CAAC8P,iBAAiB,CAAC,KAAK,CAAC,CAAC;AACzD,CAAC;;AAED;AACA;AACA;AACA;AACA,SAASkR,eAAeA,CAACC,iBAAiB,EAAE;EACxC,IAAM3U,iBAAiB,GAAG9Q,mBAAO,CAAC,mGAAiB,CAAC;EAEpD,IAAI,CAACylB,iBAAiB,GAAGA,iBAAiB;EAC1C,IAAI,CAACtI,mBAAmB,GAAG9Z,QAAQ,CAACsN,aAAa,CAAC8U,iBAAiB,CAAC;EACpE,IAAI,CAACC,mBAAmB,GAAGtU,MAAM,CAACuU,iBAAiB,CAACD,mBAAmB;EACvE,IAAI,CAACxI,qBAAqB,GAAG,IAAI;EACjC,IAAI,CAACtM,MAAM,GAAGJ,cAAc,CAACE,gBAAgB,CAAC;EAC9C,IAAI,CAACK,YAAY,GAAG,IAAID,iBAAiB,CAAC,CAAC;EAE3C,IAAI,CAAC8U,aAAa,GAAG,IAAI;EACzB,IAAI,CAAC7R,aAAa,GAAG,IAAI;AAC7B;;AAEA;AACA;AACA;AACAyR,eAAe,CAACjqB,SAAS,CAACsqB,iBAAiB,GAAG,YAAW;EACrD,IAAMC,mBAAmB,GAAG9lB,mBAAO,CAAC,uGAAmB,CAAC;EACxD,IAAM+lB,sBAAsB,GAAG,IAAID,mBAAmB,CAAC,CAAC;EAExD9I,GAAG,CAAC3I,mBAAmB,CAAC,IAAI,CAAC6I,qBAAqB,CAAC;EAEnD6I,sBAAsB,CAACC,KAAK,CAAC,CAAC;AAClC,CAAC;;AAED;AACA;AACA;AACAR,eAAe,CAACjqB,SAAS,CAAC0qB,qBAAqB,GAAG,YAAW;EACzD,IAAMC,sBAAsB,GAAG7iB,QAAQ,CAACuP,cAAc,CAAC,sBAAsB,CAAC;EAC9E,IAAMuT,qBAAqB,GAAG9iB,QAAQ,CAACuP,cAAc,CAAC,qBAAqB,CAAC;EAE5E,IAAIqK,IAAI,CAACC,qBAAqB,KAAK9L,MAAM,CAAC6H,eAAe,CAACC,uBAAuB,IAAIgN,sBAAsB,EAAE;IACzG,IAAIA,sBAAsB,CAAC1nB,KAAK,KAAK,EAAE,EAAE;MACrC0nB,sBAAsB,CAAC1nB,KAAK,GAAG,EAAE;MACjC0nB,sBAAsB,CAACvJ,SAAS,GAAG,EAAE;IACzC;IAEAuJ,sBAAsB,CAAChqB,QAAQ,GAAG,IAAI;IACtCgqB,sBAAsB,CAAC7V,KAAK,CAACC,OAAO,GAAG,OAAO;EAClD,CAAC,MAAM,IAAI6V,qBAAqB,EAAE;IAC9BA,qBAAqB,CAACjqB,QAAQ,GAAG,IAAI;EACzC;EAEAmH,QAAQ,CAACsN,aAAa,CAAC,uBAAuB,CAAC,CAACyV,KAAK,CAAC,CAAC;EACvD,IAAI,CAACxV,MAAM,CAACL,IAAI,CAAC,CAAC;AACtB,CAAC;;AAED;AACA;AACA;AACA;AACAiV,eAAe,CAACjqB,SAAS,CAAC8qB,OAAO,GAAG,UAAS7kB,IAAI,EAAE;EAC/C,IAAIA,IAAI,CAACuS,aAAa,KAAK3C,MAAM,CAACmR,MAAM,CAAC+D,OAAO,CAACC,IAAI,EAAE;IACnDtJ,IAAI,CAACC,qBAAqB,GAAG,0BAA0B;EAC3D,CAAC,MAAM,IAAI1b,IAAI,CAACuS,aAAa,KAAK3C,MAAM,CAACmR,MAAM,CAAC+D,OAAO,CAACE,KAAK,EAAE;IAC3DvJ,IAAI,CAACC,qBAAqB,GAAG9L,MAAM,CAAC6H,eAAe,CAACC,uBAAuB;EAC/E,CAAC,MAAM,IAAI1X,IAAI,CAACuS,aAAa,KAAK3C,MAAM,CAACmR,MAAM,CAAC+D,OAAO,CAACG,MAAM,EAAE;IAC5DxJ,IAAI,CAACC,qBAAqB,GAAG9L,MAAM,CAAC6H,eAAe,CAACK,wBAAwB;EAChF,CAAC,MAAM;IACH2D,IAAI,CAACC,qBAAqB,GAAG1b,IAAI,CAACuS,aAAa;EACnD;EAEA,IAAIsR,sBAAsB,EAAE;IACxBA,sBAAsB,CAAC7mB,KAAK,GAAGye,IAAI,CAACC,qBAAqB;EAC7D;AACJ,CAAC;;AAED;AACA;AACA;AACA;AACAsI,eAAe,CAACjqB,SAAS,CAACmrB,WAAW,GAAG,YAAW;EAC/C,OAAO1J,GAAG,CAACtI,gBAAgB,CAAC,CAAC;AACjC,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA8Q,eAAe,CAACjqB,SAAS,CAAC2mB,SAAS,GAAG,YAAW;EAC7CjF,IAAI,CAACrM,MAAM,CAAC7P,IAAI,CAAC,CAAC;;EAElB;EACA,IAAIwkB,SAAS,CAACtI,IAAI,CAACC,qBAAqB,CAAC,IAAID,IAAI,CAACyI,mBAAmB,EAAE;IACnEzI,IAAI,CAAC4I,iBAAiB,CAAC,CAAC;EAC5B,CAAC,MAAM;IACH5I,IAAI,CAACgJ,qBAAqB,CAAC,CAAC;EAChC;AACJ,CAAC;;AAED;AACA;AACA;AACA;AACAT,eAAe,CAACjqB,SAAS,CAAC4mB,QAAQ,GAAG,YAAW;EAC5ClF,IAAI,CAACrM,MAAM,CAACL,IAAI,CAAC,CAAC;AACtB,CAAC;;AAED;AACA;AACA;AACA;AACAiV,eAAe,CAACjqB,SAAS,CAAC6mB,OAAO,GAAG,YAAW;EAC3CnF,IAAI,CAACrM,MAAM,CAACL,IAAI,CAAC,CAAC;EAClB0M,IAAI,CAAClM,YAAY,CAACY,SAAS,CAACP,MAAM,CAAC6H,eAAe,CAAC0E,mCAAmC,CAAC;AAC3F,CAAC;;AAED;AACA;AACA;AACA6H,eAAe,CAACjqB,SAAS,CAACorB,iBAAiB,GAAG,YAAW;EACrDvV,MAAM,CAACmR,MAAM,CAACqE,KAAK,CAAC;IAChB7S,aAAa,EAAE,IAAI,CAACA;EACxB,CAAC,CAAC,CAACqR,MAAM,QAAAhJ,MAAA,CAAQ,IAAI,CAACrI,aAAa,UAAO,CAAC;AAC/C,CAAC;;AAED;AACA;AACA;AACAyR,eAAe,CAACjqB,SAAS,CAACsrB,mBAAmB,GAAG,YAAW;EACvDzV,MAAM,CAACmR,MAAM,CAACuE,aAAa,CAAC;IACxB/S,aAAa,EAAE,IAAI,CAACA;EACxB,CAAC,CAAC,CAACqR,MAAM,CAAC,IAAI,CAACK,iBAAiB,CAAC;AACrC,CAAC;;AAED;AACA;AACA;AACA;AACAD,eAAe,CAACjqB,SAAS,CAACwrB,aAAa,GAAG,UAASC,EAAE,EAAE;EACnD3jB,QAAQ,CAACsN,aAAa,iBAAAyL,MAAA,CAAiB4K,EAAE,CAAE,CAAC,CAAC7N,SAAS,CAACvN,MAAM,CAAC,QAAQ,CAAC;AAC3E,CAAC;;AAED;AACA;AACA;AACA;AACA4Z,eAAe,CAACjqB,SAAS,CAAC0rB,sBAAsB,GAAG,YAAW;EAC1DhK,IAAI,GAAG,IAAI;EAEX,OAAO;IACHoJ,OAAO,EAAE,IAAI,CAACA,OAAO;IACrBK,WAAW,EAAE,IAAI,CAACA,WAAW,CAACjE,IAAI,CAAC,IAAI,EAAE,IAAI,CAACgD,iBAAiB,CAAC;IAChEvD,SAAS,EAAE,IAAI,CAACA,SAAS;IACzBC,QAAQ,EAAE,IAAI,CAACA,QAAQ;IACvBC,OAAO,EAAE,IAAI,CAACA,OAAO;IACrB/R,KAAK,EAAEI,MAAM,CAAC4G,oBAAoB,CAAC,IAAI,CAAC8F,mBAAmB;EAC/D,CAAC;AACL,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA,SAAS+J,oBAAoBA,CAACtE,QAAQ,EAAE7O,aAAa,EAAE;EACnD;EACA,IAAI,CAAC3C,MAAM,CAACmR,MAAM,CAAC+D,OAAO,CAACC,IAAI,EAAEnV,MAAM,CAACmR,MAAM,CAAC+D,OAAO,CAACa,MAAM,CAAC,CAAC3N,QAAQ,CAACzF,aAAa,CAAC,IACnF,CAAC,CAAC,OAAO,EAAE,OAAO,CAAC,CAACwH,IAAI,CAAC,UAAA6L,EAAE;IAAA,OAAIA,EAAE,KAAKxE,QAAQ,CAACvS,KAAK,CAACuG,KAAK;EAAA,EAAC,EAAE;IAC5D;IACA,IAAI7C,aAAa,KAAK3C,MAAM,CAACmR,MAAM,CAAC+D,OAAO,CAACa,MAAM,EAAE;MAChDvE,QAAQ,CAACvS,KAAK,CAACuG,KAAK,GAAG,UAAU;IACrC,CAAC,MAAM;MACHgM,QAAQ,CAACvS,KAAK,CAACuG,KAAK,GAAG,OAAO;IAClC;EACJ;AACJ;;AAEA;AACA;AACA;AACA;AACA4O,eAAe,CAACjqB,SAAS,CAAC8rB,oBAAoB,GAAG,UAASC,WAAW,EAAE;EAAA,IAAAxK,KAAA;EACnE,IAAMyK,sBAAsB,GAAGnW,MAAM,CAACmR,MAAM,CAACiF,iBAAiB,CAAC,CAAC,CAACC,MAAM,CAAC,UAAAT,EAAE;IAAA,OAAI5V,MAAM,CAACmR,MAAM,CAACC,OAAO,CAAC;MAChGzO,aAAa,EAAEiT;IACnB,CAAC,CAAC,CAACU,UAAU,CAAC,CAAC;EAAA,EAAC;EAEhB,IAAMC,SAAS,GAAGvW,MAAM,CAACmR,MAAM,CAAC+D,OAAO,CAACG,MAAM;EAE9C,IAAImB,UAAU,GAAG,KAAK;EAEtB,IAAIL,sBAAsB,CAACtpB,MAAM,EAAE;IAC/B,IAAI,CAAC0oB,iBAAiB,CAACjR,IAAI,CAAC;MACxB3B,aAAa,EAAE4T;IACnB,CAAC,CAAC;IAEFJ,sBAAsB,CAAC7mB,OAAO,CAAC,UAAAsmB,EAAE,EAAI;MACjC,IAAMa,SAAS,GAAG,CAACvC,YAAY,CAAC9L,QAAQ,CAACwN,EAAE,CAAC;MAE5C,IAAIa,SAAS,EAAE;QACXX,oBAAoB,CAACI,WAAW,EAAEN,EAAE,CAAC;QAErC5V,MAAM,CAACmR,MAAM,CAACC,OAAO,CAAC5f,MAAM,CAACklB,MAAM,CAACR,WAAW,EAAE;UAC7CvT,aAAa,EAAEiT;QACnB,CAAC,CAAC,CAAC,CAAC5B,MAAM,CAACtI,KAAI,CAAC2I,iBAAiB,CAAC;QAElC,IAAI,CAACmC,UAAU,EAAE;UACb;UACA9K,KAAI,CAACiK,aAAa,CAACY,SAAS,CAAC;UAC7BC,UAAU,GAAG,IAAI;QACrB;MACJ;IACJ,CAAC,CAAC;EACN;AACJ,CAAC;;AAED;AACA;AACA;AACA;AACA;AACApC,eAAe,CAACjqB,SAAS,CAACwsB,sBAAsB,GAAG,UAASf,EAAE,EAAEM,WAAW,EAAE;EACzE,IAAMU,aAAa,GAAG5W,MAAM,CAACmR,MAAM,CAACC,OAAO,CAAC5f,MAAM,CAACklB,MAAM,CAACR,WAAW,EAAE;IACnEvT,aAAa,EAAEiT;EACnB,CAAC,CAAC,CAAC;EAEH,IAAI,CAACpB,aAAa,GAAGoC,aAAa,CAACN,UAAU,CAAC,CAAC;EAE/C,IAAI,IAAI,CAAC9B,aAAa,EAAE;IACpB,IAAI,CAACe,iBAAiB,CAAC,CAAC;IAExBqB,aAAa,CAAC5C,MAAM,CAAC,IAAI,CAACK,iBAAiB,CAAC;IAE5C,IAAI,CAACsB,aAAa,CAACC,EAAE,CAAC;EAC1B;AACJ,CAAC;;AAED;AACA;AACA;AACA;AACA;AACAxB,eAAe,CAACjqB,SAAS,CAAC+mB,gBAAgB,GAAG,UAASvO,aAAa,EAAE;EACjE,IAAI,CAACnD,MAAM,CAAC7P,IAAI,CAAC,CAAC;EAClB,IAAI,CAACgT,aAAa,GAAGA,aAAa,IAAI3C,MAAM,CAACmR,MAAM,CAAC+D,OAAO,CAACG,MAAM;EAElE,IAAMa,WAAW,GAAG,IAAI,CAACL,sBAAsB,CAAC,CAAC;EAEjD,IAAIlT,aAAa,EAAE;IACf,IAAI,CAACgU,sBAAsB,CAAChU,aAAa,EAAEuT,WAAW,CAAC;EAC3D,CAAC,MAAM;IACH,IAAI,CAACD,oBAAoB,CAACC,WAAW,CAAC;EAC1C;EAEA,IAAI,CAAC1W,MAAM,CAACL,IAAI,CAAC,CAAC;AACtB,CAAC;AAEDzR,MAAM,CAACC,OAAO,GAAGymB,eAAe,C;;;;;;;;;;;;ACjSnB;;AAEb,IAAMA,eAAe,GAAGxlB,mBAAO,CAAC,sGAAc,CAAC;AAC/C,IAAMyQ,MAAM,GAAGzQ,mBAAO,CAAC,mGAAsB,CAAC;;AAE9C;AACA;AACA;AACA;AACA,SAASioB,kBAAkBA,CAACxC,iBAAiB,EAAE;EAC3CD,eAAe,CAAC9P,IAAI,CAAC,IAAI,EAAE+P,iBAAiB,CAAC;AACjD;AAEAwC,kBAAkB,CAAC1sB,SAAS,GAAGqH,MAAM,CAAC4gB,MAAM,CAACgC,eAAe,CAACjqB,SAAS,CAAC;;AAEvE;AACA;AACA;AACA0sB,kBAAkB,CAAC1sB,SAAS,CAAC0qB,qBAAqB,GAAG,YAAW;EAAA,IAAAnJ,KAAA;EAC5D,IAAMG,IAAI,GAAG,IAAI;EAEjBxM,MAAM,CAAC2C,cAAc,CAACsC,IAAI,CAACuH,IAAI,EAAE,CAAC,CAAC,CAAC,CAC/B5J,KAAK,CAAC,UAACnI,KAAK,EAAK;IACd4R,KAAI,CAAClM,MAAM,CAACL,IAAI,CAAC,CAAC;IAElB,IAAIuM,KAAI,CAAC2I,iBAAiB,KAAK,gCAAgC,EAAE;MAC7D3I,KAAI,CAACsF,OAAO,CAAClX,KAAK,CAAC;IACvB,CAAC,MAAM,IAAI,CAACuF,MAAM,CAACwJ,6BAA6B,CAAC/O,KAAK,CAAC,EAAE;MACrDkG,MAAM,CAACpB,QAAQ,CAACsB,IAAI,GAAGF,MAAM,CAACC,UAAU,CAAC8T,QAAQ;IACrD,CAAC,MAAM,IAAIrI,KAAI,CAAC2I,iBAAiB,CAACjM,QAAQ,CAAC,oBAAoB,CAAC,EAAE;MAC9D/I,MAAM,CAACmM,yBAAyB,CAAC,CAAC;IACtC;EACJ,CAAC,CAAC;AACV,CAAC;;AAED;AACA;AACA;AACA;AACAqL,kBAAkB,CAAC1sB,SAAS,CAAC+mB,gBAAgB,GAAG,YAAW;EACvD,IAAI,CAAC1R,MAAM,CAAC7P,IAAI,CAAC,CAAC;EAElB,IAAMinB,aAAa,GAAG5W,MAAM,CAACmR,MAAM,CAACC,OAAO,CAAC,IAAI,CAACyE,sBAAsB,CAAC,CAAC,CAAC;EAE1E,IAAIe,aAAa,CAACN,UAAU,CAAC,CAAC,EAAE;IAC5BM,aAAa,CAAC5C,MAAM,CAAC,IAAI,CAACK,iBAAiB,CAAC;IAE5C,IAAI,CAAC7U,MAAM,CAACL,IAAI,CAAC,CAAC;EACtB;AACJ,CAAC;AAEDzR,MAAM,CAACC,OAAO,GAAGkpB,kBAAkB,C;;;;;;;;;;;;ACnDtB;;AAEb,IAAMA,kBAAkB,GAAGjoB,mBAAO,CAAC,4GAAiB,CAAC;AACrD,IAAMyQ,MAAM,GAAGzQ,mBAAO,CAAC,mGAAsB,CAAC;;AAE9C;AACA;AACA;AACA;AACA,SAASkoB,kBAAkBA,CAACzC,iBAAiB,EAAE;EAC3CwC,kBAAkB,CAACvS,IAAI,CAAC,IAAI,EAAE+P,iBAAiB,CAAC;AACpD;AAEAyC,kBAAkB,CAAC3sB,SAAS,GAAGqH,MAAM,CAAC4gB,MAAM,CAACyE,kBAAkB,CAAC1sB,SAAS,CAAC;;AAE1E;AACA;AACA;AACA;AACA;AACA;AACA;AACA2sB,kBAAkB,CAAC3sB,SAAS,CAACmrB,WAAW,GAAG,UAAS7E,QAAQ,EAAE;EAC1DpR,MAAM,CAACsL,gBAAgB,CAAC8F,QAAQ,CAAC;EAEjC,OAAOoG,kBAAkB,CAAC1sB,SAAS,CAACmrB,WAAW,CAAChR,IAAI,CAAC,CAAC;AAC1D,CAAC;;AAED;AACA;AACA;AACA;AACAwS,kBAAkB,CAAC3sB,SAAS,CAAC6mB,OAAO,GAAG,YAAW;EAC9C3R,MAAM,CAACmM,yBAAyB,CAAC,CAAC;EAElCxL,MAAM,CAACpB,QAAQ,CAACsB,IAAI,GAAGF,MAAM,CAACC,UAAU,CAAC8T,QAAQ;EAEjD8C,kBAAkB,CAAC1sB,SAAS,CAAC6mB,OAAO,CAAC1M,IAAI,CAAC,IAAI,CAAC;AACnD,CAAC;;AAED;AACA;AACA;AACA;AACAwS,kBAAkB,CAAC3sB,SAAS,CAAC4mB,QAAQ,GAAG,YAAW;EAC/C1R,MAAM,CAACmM,yBAAyB,CAAC,CAAC;EAElCqL,kBAAkB,CAAC1sB,SAAS,CAAC4mB,QAAQ,CAACzM,IAAI,CAAC,CAAC;AAChD,CAAC;AAED5W,MAAM,CAACC,OAAO,GAAGmpB,kBAAkB,C;;;;;;;;;;;;AClDtB;;AAEb;AACA;AACA;AACA,SAASpC,mBAAmBA,CAAA,EAAG;EAC3B,IAAI,CAACqC,cAAc,GAAG/W,MAAM,CAAC+W,cAAc;AAC/C;;AAEA;AACA;AACA;AACA;AACArC,mBAAmB,CAACvqB,SAAS,CAAC2W,GAAG,GAAG,YAAW;EAC3C,OAAO,IAAI,CAACiW,cAAc;AAC9B,CAAC;;AAED;AACA;AACA;AACA;AACA;AACArC,mBAAmB,CAACvqB,SAAS,CAAC6sB,OAAO,GAAG,UAASxjB,IAAI,EAAEpG,KAAK,EAAE;EAC1D,IAAI,CAAC2pB,cAAc,CAACC,OAAO,CAACxjB,IAAI,EAAEpG,KAAK,CAAC;AAC5C,CAAC;;AAED;AACA;AACA;AACA;AACA;AACAsnB,mBAAmB,CAACvqB,SAAS,CAAC8sB,OAAO,GAAG,UAASzjB,IAAI,EAAE;EACnD,OAAO,IAAI,CAACujB,cAAc,CAACE,OAAO,CAACzjB,IAAI,CAAC;AAC5C,CAAC;;AAED;AACA;AACA;AACA;AACAkhB,mBAAmB,CAACvqB,SAAS,CAAC+sB,UAAU,GAAG,UAAS1jB,IAAI,EAAE;EACtD,IAAI,CAACujB,cAAc,CAACG,UAAU,CAAC1jB,IAAI,CAAC;AACxC,CAAC;;AAED;AACA;AACA;AACAkhB,mBAAmB,CAACvqB,SAAS,CAACyqB,KAAK,GAAG,YAAW;EAC7C,IAAI,CAACmC,cAAc,CAACnC,KAAK,CAAC,CAAC;AAC/B,CAAC;;AAED;AACA;AACA;AACA;AACAF,mBAAmB,CAACvqB,SAAS,CAACgtB,qBAAqB,GAAG,UAAS/pB,KAAK,EAAE;EAClE,IAAI,CAAC4pB,OAAO,CAAChX,MAAM,CAAC6H,eAAe,CAACuP,UAAU,EAAEhqB,KAAK,CAAC;AAC1D,CAAC;;AAED;AACA;AACA;AACA;AACAsnB,mBAAmB,CAACvqB,SAAS,CAACktB,qBAAqB,GAAG,YAAW;EAC7D,OAAO,IAAI,CAACJ,OAAO,CAACjX,MAAM,CAAC6H,eAAe,CAACuP,UAAU,CAAC;AAC1D,CAAC;AAED1pB,MAAM,CAACC,OAAO,GAAG+mB,mBAAmB,C;;;;;;;;;;;AClEpC;AACA;AACA;AACA,SAAS4C,yBAAyBA,CAAA,EAAG;EACjC,IAAAC,QAAA,GAAsE3oB,mBAAO,CAAC,+FAAkB,CAAC;IAAzFya,6BAA6B,GAAAkO,QAAA,CAA7BlO,6BAA6B;IAAEK,0BAA0B,GAAA6N,QAAA,CAA1B7N,0BAA0B;EAEjE,IAAMV,YAAY,GAAG/W,QAAQ,CAACsN,aAAa,CAAC,2BAA2B,CAAC;EACxE,IAAMiY,YAAY,GAAGjE,OAAO,CAACthB,QAAQ,CAACsN,aAAa,CAAC,YAAY,CAAC,CAAC;EAElE,IAAIiY,YAAY,EAAE;IACd9N,0BAA0B,CAAC,CAAC;EAChC,CAAC,MAAM,IAAIV,YAAY,EAAE;IACrBK,6BAA6B,CAACL,YAAY,CAAC;EAC/C;AACJ;;AAEA;AACA;AACA;AACA,SAASyO,4BAA4BA,CAAA,EAAG;EACpC,IAAAC,SAAA,GAA6B9oB,mBAAO,CAAC,+FAAkB,CAAC;IAAhD+b,gBAAgB,GAAA+M,SAAA,CAAhB/M,gBAAgB;EACxB,IAAAgN,SAAA,GAAuD/oB,mBAAO,CAAC,yFAAe,CAAC;IAAvEoT,cAAc,GAAA2V,SAAA,CAAd3V,cAAc;IAAEE,0BAA0B,GAAAyV,SAAA,CAA1BzV,0BAA0B;EAClD,IAAM9C,cAAc,GAAGxQ,mBAAO,CAAC,qGAAqB,CAAC;EAErD,IAAMgpB,2BAA2B,GAAG3lB,QAAQ,CAAC4X,gBAAgB,CAAC,gCAAgC,CAAC;EAE/F,IAAIhK,mBAAmB;EAEvBqC,0BAA0B,CAAC,CAAC,CAACnB,IAAI,CAAC,UAAA8W,MAAM,EAAI;IACxChY,mBAAmB,GAAGgY,MAAM;EAChC,CAAC,CAAC;EAEFD,2BAA2B,IAAIA,2BAA2B,CAACtoB,OAAO,CAAC,UAACkK,SAAS,EAAEvB,KAAK,EAAK;IACrF,IAAM6f,WAAW,GAAGte,SAAS,CAAC+F,aAAa,CAAC,sBAAsB,CAAC;IACnE,IAAMkR,QAAQ,MAAAzF,MAAA,CAAMxR,SAAS,CAACpO,SAAS,EAAA4f,MAAA,CAAG/S,KAAK,CAAE;IAEjD6f,WAAW,CAAC/P,SAAS,CAACW,GAAG,CAAC+H,QAAQ,CAAC;IAEnCqH,WAAW,CAACC,gBAAgB,CAAC,OAAO,EAAE,YAAW;MAC7C,IAAMC,eAAe,GAAG,IAAI,CAACjqB,OAAO,CAAC,8BAA8B,CAAC,CAACwR,aAAa,CAAC,eAAe,CAAC;MACnG,IAAMC,MAAM,GAAGJ,cAAc,CAAC4Y,eAAe,CAAC;MAE9CxY,MAAM,CAAC7P,IAAI,CAAC,CAAC;MAEb,IAAM2c,MAAM,GAAG3B,gBAAgB,KAAAK,MAAA,CAAK,IAAI,CAAC5f,SAAS,CAAE,CAAC;MAErD,IAAIkhB,MAAM,CAAC2L,IAAI,EAAE;QACbjW,cAAc,CAACnC,mBAAmB,CAAC;MACvC,CAAC,MAAM;QACHL,MAAM,CAACL,IAAI,CAAC,CAAC;QAEb,MAAM,IAAI+Y,KAAK,CAAC5L,MAAM,CAACrV,OAAO,IAAI,sDAAsD,CAAC;MAC7F;IACJ,CAAC,CAAC;EACN,CAAC,CAAC;EAEFqgB,yBAAyB,CAAC,CAAC;AAC/B;;AAEA;AACA;AACA;AACA,SAASa,uBAAuBA,CAAA,EAAG;EAC/B,IAAMrB,kBAAkB,GAAGloB,mBAAO,CAAC,2HAAgC,CAAC;EACpE,IAAM8kB,oBAAoB,GAAG9kB,mBAAO,CAAC,6IAAyC,CAAC;EAE/E,IAAMwpB,eAAe,GAAG,mCAAmC;EAC3D,IAAMC,WAAW,GAAGrY,MAAM,CAACuU,iBAAiB,CAAC+D,uBAAuB;EACpE,IAAMC,sBAAsB,GAAGtmB,QAAQ,CAAC4X,gBAAgB,CAAC,+CAA+C,CAAC;EAEzG0O,sBAAsB,IAAIA,sBAAsB,CAACjpB,OAAO,CAAC,UAACkK,SAAS,EAAEvB,KAAK,EAAK;IAC3E,IAAMugB,QAAQ,GAAGhf,SAAS,CAAC+F,aAAa,CAAC6Y,eAAe,CAAC;IAEzD,IAAII,QAAQ,EAAE;MACVA,QAAQ,CAACzQ,SAAS,CAACW,GAAG,IAAAsC,MAAA,CAAIwN,QAAQ,CAACzQ,SAAS,CAAC,CAAC,CAAC,OAAAiD,MAAA,CAAI/S,KAAK,SAAM,CAAC;MAE/D,IAAMwY,QAAQ,OAAAzF,MAAA,CAAOxG,KAAK,CAACC,IAAI,CAAC+T,QAAQ,CAACzQ,SAAS,CAAC,CAACjb,IAAI,CAAC,GAAG,CAAC,CAAE;MAE/D,IAAI2rB,qBAAqB;MAEzB,IAAIJ,WAAW,EAAE;QACbI,qBAAqB,GAAG,IAAI/E,oBAAoB,CAACjD,QAAQ,CAAC;MAC9D,CAAC,MAAM;QACHgI,qBAAqB,GAAG,IAAI3B,kBAAkB,CAACrG,QAAQ,CAAC;MAC5D;MAEAgI,qBAAqB,CAACvH,gBAAgB,CAAC,CAAC;IAC5C;EACJ,CAAC,CAAC;EAEFoG,yBAAyB,CAAC,CAAC;AAC/B;;AAEA;AACA;AACA;AACA;AACA,SAASoB,eAAeA,CAAA,EAAG;EACvB,IAAMC,IAAI,GAAG1mB,QAAQ,CAAC2mB,oBAAoB,CAAC,MAAM,CAAC,CAACrlB,IAAI,CAAC,CAAC,CAAC;EAC1D,IAAMslB,MAAM,GAAG5mB,QAAQ,CAACsV,aAAa,CAAC,QAAQ,CAAC;EAE/CsR,MAAM,CAAC1tB,IAAI,GAAG,iBAAiB;EAC/B0tB,MAAM,CAACC,GAAG,GAAG9Y,MAAM,CAAC+Y,SAAS,CAACC,UAAU;EACxCH,MAAM,CAACI,MAAM,GAAGd,uBAAuB;EACvCU,MAAM,CAACK,YAAY,CAAC,6BAA6B,EAAElZ,MAAM,CAACuU,iBAAiB,CAAC4E,oBAAoB,CAAC;EACjGR,IAAI,CAAC/P,WAAW,CAACiQ,MAAM,CAAC;AAC5B;AAEAtuB,CAAC,CAAC,MAAM,CAAC,CAACuD,EAAE,CAAC,iBAAiB,EAAE,YAAM;EAClC,IAAMsrB,mBAAmB,GAAG7F,OAAO,CAACthB,QAAQ,CAACuP,cAAc,CAAC,qBAAqB,CAAC,CAAC;EAEnF,IAAI4X,mBAAmB,EAAE;IACrB3B,4BAA4B,CAAC,CAAC;EAClC,CAAC,MAAM,IAAIzX,MAAM,CAACmR,MAAM,EAAE;IACtBgH,uBAAuB,CAAC,CAAC;EAC7B,CAAC,MAAM;IACHO,eAAe,CAAC,CAAC;EACrB;AACJ,CAAC,CAAC,C;;;;;;;;;;;;;;ACtHF,IAAIW,cAAc,GAAG,OAAOrZ,MAAM,KAAK,WAAW,GAAGA,MAAM,GAAG,OAAOsZ,MAAM,KAAK,WAAW,GAAGA,MAAM,GAAG,OAAOpG,IAAI,KAAK,WAAW,GAAGA,IAAI,GAAG,CAAC,CAAC;AAE9I,IAAIqG,gBAAgB,GAAG,SAAnBA,gBAAgBA,CAAaC,kBAAkB,EAClBC,mBAAmB,EACnBC,mBAAmB,EACnBC,0BAA0B,EAC1BC,mBAAmB,EACnBC,kBAAkB,EAClBC,MAAM,EACNC,gBAAgB,EAChBC,UAAU,EACVC,SAAS,EAAE;EACxC,IAAIC,KAAK,GAAG,IAAI;EAEhBA,KAAK,CAACV,kBAAkB,GAAGA,kBAAkB,IAAI,GAAG;EACpDU,KAAK,CAACT,mBAAmB,GAAGA,mBAAmB,GAAG,CAAC,GAAGA,mBAAmB,GAAG,CAAC;EAC7ES,KAAK,CAACR,mBAAmB,GAAGA,mBAAmB,IAAI,CAAC,GAAGA,mBAAmB,GAAG,CAAC;EAC9EQ,KAAK,CAACP,0BAA0B,GAAGA,0BAA0B,IAAIJ,gBAAgB,CAACY,UAAU,CAACC,QAAQ;EACrGF,KAAK,CAACN,mBAAmB,GAAG,CAAC,CAACA,mBAAmB;EACjDM,KAAK,CAACL,kBAAkB,GAAGA,kBAAkB,KAAK,KAAK;EACvDK,KAAK,CAACJ,MAAM,GAAIA,MAAM,IAAIA,MAAM,KAAK,EAAE,GAAIA,MAAM,GAAG,EAAE;EACtDI,KAAK,CAACH,gBAAgB,GAAG,CAAC,CAACA,gBAAgB;EAC3CG,KAAK,CAACF,UAAU,GAAG,CAAC,CAACA,UAAU;EAC/BE,KAAK,CAACD,SAAS,GAAIA,SAAS,IAAIA,SAAS,KAAK,EAAE,GAAIA,SAAS,GAAG,GAAG;EACnEC,KAAK,CAACG,WAAW,GAAGJ,SAAS,GAAG,IAAIK,MAAM,CAAC,IAAI,GAAGL,SAAS,EAAE,GAAG,CAAC,GAAG,EAAE;AAC1E,CAAC;AAEDV,gBAAgB,CAACY,UAAU,GAAG;EAC1BC,QAAQ,EAAE,UAAU;EACpBG,IAAI,EAAM,MAAM;EAChBC,GAAG,EAAO,KAAK;EACfC,IAAI,EAAM;AACd,CAAC;AAEDlB,gBAAgB,CAACpvB,SAAS,GAAG;EACzBsJ,WAAW,EAAE,SAAAA,YAAUrG,KAAK,EAAE;IAC1B,OAAOA,KAAK,CAACstB,OAAO,CAAC,IAAI,CAACL,WAAW,EAAE,EAAE,CAAC,CAACK,OAAO,CAAC,IAAI,CAAClB,kBAAkB,EAAE,GAAG,CAAC;EACpF,CAAC;EAEDmB,MAAM,EAAE,SAAAA,OAAUvtB,KAAK,EAAE;IACrB,IAAI8sB,KAAK,GAAG,IAAI;MAAEU,KAAK;MAAEC,QAAQ;MAAEC,iBAAiB;MAAEC,WAAW;MAAEC,WAAW,GAAG,EAAE;;IAEnF;IACA5tB,KAAK,GAAGA,KAAK,CAACstB,OAAO,CAAC,WAAW,EAAE,EAAE;IACjC;IAAA,CACCA,OAAO,CAACR,KAAK,CAACV,kBAAkB,EAAE,GAAG;;IAEtC;IACA;IAAA,CACCkB,OAAO,CAAC,UAAU,EAAE,EAAE;;IAEvB;IAAA,CACCA,OAAO,CAAC,KAAK,EAAE,GAAG;;IAEnB;IAAA,CACCA,OAAO,CAAC,KAAK,EAAE,EAAE;;IAElB;IAAA,CACCA,OAAO,CAAC,GAAG,EAAER,KAAK,CAACN,mBAAmB,GAAG,EAAE,GAAG,GAAG;;IAElD;IAAA,CACCc,OAAO,CAAC,GAAG,EAAER,KAAK,CAACV,kBAAkB,CAAC;;IAE3C;IACA,IAAIU,KAAK,CAACL,kBAAkB,EAAE;MAC1BzsB,KAAK,GAAGA,KAAK,CAACstB,OAAO,CAAC,eAAe,EAAE,IAAI,CAAC;IAChD;IAEAG,QAAQ,GAAGztB,KAAK,CAACmX,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,GAAG,GAAG,GAAG,GAAG,EAAE;IAC/C,IAAI,OAAO2V,KAAK,CAACJ,MAAM,IAAI,WAAW,EAAE;MACpC,IAAII,KAAK,CAACH,gBAAgB,EAAE;QACxBe,iBAAiB,GAAGD,QAAQ,GAAGX,KAAK,CAACJ,MAAM;MAC/C,CAAC,MAAM;QACHgB,iBAAiB,GAAGZ,KAAK,CAACJ,MAAM,GAAGe,QAAQ;MAC/C;IACJ,CAAC,MAAM;MACHC,iBAAiB,GAAGD,QAAQ;IAChC;IAEAE,WAAW,GAAG3tB,KAAK;IAEnB,IAAIA,KAAK,CAACgG,OAAO,CAAC8mB,KAAK,CAACV,kBAAkB,CAAC,IAAI,CAAC,EAAE;MAC9CoB,KAAK,GAAGxtB,KAAK,CAACsZ,KAAK,CAACwT,KAAK,CAACV,kBAAkB,CAAC;MAC7CuB,WAAW,GAAGH,KAAK,CAAC,CAAC,CAAC;MACtBI,WAAW,GAAGd,KAAK,CAACV,kBAAkB,GAAGoB,KAAK,CAAC,CAAC,CAAC,CAACrW,KAAK,CAAC,CAAC,EAAE2V,KAAK,CAACR,mBAAmB,CAAC;IACzF;IAEA,IAAGmB,QAAQ,KAAK,GAAG,EAAE;MACjBE,WAAW,GAAGA,WAAW,CAACxW,KAAK,CAAC,CAAC,CAAC;IACtC;IAEA,IAAI2V,KAAK,CAACT,mBAAmB,GAAG,CAAC,EAAE;MACjCsB,WAAW,GAAGA,WAAW,CAACxW,KAAK,CAAC,CAAC,EAAE2V,KAAK,CAACT,mBAAmB,CAAC;IAC/D;IAEA,QAAQS,KAAK,CAACP,0BAA0B;MACxC,KAAKJ,gBAAgB,CAACY,UAAU,CAACI,IAAI;QACjCQ,WAAW,GAAGA,WAAW,CAACL,OAAO,CAAC,qBAAqB,EAAE,IAAI,GAAGR,KAAK,CAACD,SAAS,CAAC;QAEhF;MAEJ,KAAKV,gBAAgB,CAACY,UAAU,CAACK,GAAG;QAChCO,WAAW,GAAGA,WAAW,CAACL,OAAO,CAAC,oBAAoB,EAAE,IAAI,GAAGR,KAAK,CAACD,SAAS,CAAC;QAE/E;MAEJ,KAAKV,gBAAgB,CAACY,UAAU,CAACC,QAAQ;QACrCW,WAAW,GAAGA,WAAW,CAACL,OAAO,CAAC,oBAAoB,EAAE,IAAI,GAAGR,KAAK,CAACD,SAAS,CAAC;QAE/E;IACJ;IAEA,IAAIC,KAAK,CAACF,UAAU,EAAE;MAClB,OAAOa,QAAQ,GAAGE,WAAW,CAAC1W,QAAQ,CAAC,CAAC,IAAI6V,KAAK,CAACR,mBAAmB,GAAG,CAAC,GAAGsB,WAAW,CAAC3W,QAAQ,CAAC,CAAC,GAAG,EAAE,CAAC,GAAG6V,KAAK,CAACJ,MAAM;IAC3H;IAEA,OAAOgB,iBAAiB,GAAGC,WAAW,CAAC1W,QAAQ,CAAC,CAAC,IAAI6V,KAAK,CAACR,mBAAmB,GAAG,CAAC,GAAGsB,WAAW,CAAC3W,QAAQ,CAAC,CAAC,GAAG,EAAE,CAAC;EACrH;AACJ,CAAC;AAED,IAAI4W,kBAAkB,GAAG1B,gBAAgB;AAEzC,IAAI2B,aAAa,GAAG,SAAhBA,aAAaA,CAAaC,WAAW,EAAEC,OAAO,EAAEC,OAAO,EAAE;EACzD,IAAInB,KAAK,GAAG,IAAI;EAEhBA,KAAK,CAACoB,IAAI,GAAG,EAAE;EACfpB,KAAK,CAACqB,MAAM,GAAG,EAAE;EACjBrB,KAAK,CAACiB,WAAW,GAAGA,WAAW;EAC/BjB,KAAK,CAACkB,OAAO,GAAGA,OAAO,CACpB1U,KAAK,CAAC,GAAG,CAAC,CACV8U,OAAO,CAAC,CAAC,CACTpiB,GAAG,CAAC,UAASqiB,CAAC,EAAE;IACf,OAAOzjB,QAAQ,CAACyjB,CAAC,EAAE,EAAE,CAAC;EACxB,CAAC,CAAC;EACJ,IAAIvB,KAAK,CAACkB,OAAO,CAACvuB,MAAM,KAAK,CAAC,EAAEqtB,KAAK,CAACkB,OAAO,CAACM,OAAO,CAAC,CAAC,CAAC;EAExDxB,KAAK,CAACmB,OAAO,GAAGA,OAAO,CACpB3U,KAAK,CAAC,GAAG,CAAC,CACV8U,OAAO,CAAC,CAAC,CACTpiB,GAAG,CAAC,UAASqiB,CAAC,EAAE;IACf,OAAOzjB,QAAQ,CAACyjB,CAAC,EAAE,EAAE,CAAC;EACxB,CAAC,CAAC;EACJ,IAAIvB,KAAK,CAACmB,OAAO,CAACxuB,MAAM,KAAK,CAAC,EAAEqtB,KAAK,CAACmB,OAAO,CAACK,OAAO,CAAC,CAAC,CAAC;EAExDxB,KAAK,CAACyB,UAAU,CAAC,CAAC;AACtB,CAAC;AAEDT,aAAa,CAAC/wB,SAAS,GAAG;EACtBwxB,UAAU,EAAE,SAAAA,WAAA,EAAY;IACpB,IAAIzB,KAAK,GAAG,IAAI;IAChBA,KAAK,CAACiB,WAAW,CAAC7rB,OAAO,CAAC,UAAUlC,KAAK,EAAE;MACvC,IAAIA,KAAK,KAAK,GAAG,EAAE;QACf8sB,KAAK,CAACqB,MAAM,CAACpvB,IAAI,CAAC,CAAC,CAAC;MACxB,CAAC,MAAM;QACH+tB,KAAK,CAACqB,MAAM,CAACpvB,IAAI,CAAC,CAAC,CAAC;MACxB;IACJ,CAAC,CAAC;EACN,CAAC;EAEDyvB,gBAAgB,EAAE,SAAAA,iBAAA,EAAY;IAC1B,IAAI1B,KAAK,GAAG,IAAI;MACZoB,IAAI,GAAGpB,KAAK,CAACoB,IAAI;IAErB,OAAOA,IAAI,CAAC,CAAC,CAAC,GACVA,IAAI,CAAC,CAAC,CAAC,GAAG,GAAG,GAAGpB,KAAK,CAAC2B,cAAc,CAACP,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG,GAAGpB,KAAK,CAAC2B,cAAc,CAACP,IAAI,CAAC,CAAC,CAAC,CAAC,GACnF,EAAE;EACV,CAAC;EAEDQ,SAAS,EAAE,SAAAA,UAAA,EAAY;IACnB,OAAO,IAAI,CAACP,MAAM;EACtB,CAAC;EAEDQ,gBAAgB,EAAE,SAAAA,iBAAU3uB,KAAK,EAAE;IAC/B,IAAI8sB,KAAK,GAAG,IAAI;MAAE5N,MAAM,GAAG,EAAE;IAE7Blf,KAAK,GAAGA,KAAK,CAACstB,OAAO,CAAC,QAAQ,EAAE,EAAE,CAAC;IAEnCR,KAAK,CAACqB,MAAM,CAACjsB,OAAO,CAAC,UAAUzC,MAAM,EAAEoL,KAAK,EAAE;MAC1C,IAAI7K,KAAK,CAACP,MAAM,GAAG,CAAC,EAAE;QAClB,IAAImvB,GAAG,GAAG5uB,KAAK,CAACmX,KAAK,CAAC,CAAC,EAAE1X,MAAM,CAAC;UAC5BovB,IAAI,GAAGD,GAAG,CAACzX,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC;UACtB2X,IAAI,GAAG9uB,KAAK,CAACmX,KAAK,CAAC1X,MAAM,CAAC;QAE9B,QAAQqtB,KAAK,CAACiB,WAAW,CAACljB,KAAK,CAAC;UAChC,KAAK,GAAG;YACJ,IAAI+jB,GAAG,KAAK,IAAI,EAAE;cACdA,GAAG,GAAG,IAAI;YACd,CAAC,MAAM,IAAIhkB,QAAQ,CAACikB,IAAI,EAAE,EAAE,CAAC,GAAG,CAAC,EAAE;cAC/BD,GAAG,GAAG,GAAG,GAAGC,IAAI;YACpB,CAAC,MAAM,IAAIjkB,QAAQ,CAACgkB,GAAG,EAAE,EAAE,CAAC,GAAG,EAAE,EAAE;cAC/BA,GAAG,GAAG,IAAI;YACd;YAEA;UAEJ,KAAK,GAAG;YACJ,IAAIA,GAAG,KAAK,IAAI,EAAE;cACdA,GAAG,GAAG,IAAI;YACd,CAAC,MAAM,IAAIhkB,QAAQ,CAACikB,IAAI,EAAE,EAAE,CAAC,GAAG,CAAC,EAAE;cAC/BD,GAAG,GAAG,GAAG,GAAGC,IAAI;YACpB,CAAC,MAAM,IAAIjkB,QAAQ,CAACgkB,GAAG,EAAE,EAAE,CAAC,GAAG,EAAE,EAAE;cAC/BA,GAAG,GAAG,IAAI;YACd;YAEA;QACJ;QAEA1P,MAAM,IAAI0P,GAAG;;QAEb;QACA5uB,KAAK,GAAG8uB,IAAI;MAChB;IACJ,CAAC,CAAC;IAEF,OAAO,IAAI,CAACC,kBAAkB,CAAC7P,MAAM,CAAC;EAC1C,CAAC;EAED6P,kBAAkB,EAAE,SAAAA,mBAAU/uB,KAAK,EAAE;IACjC,IAAI8sB,KAAK,GAAG,IAAI;MAAEiB,WAAW,GAAGjB,KAAK,CAACiB,WAAW;MAAEG,IAAI,GAAG,EAAE;MACxDc,QAAQ,GAAG,CAAC;MAAEC,UAAU,GAAG,CAAC;MAAEC,SAAS,GAAG,CAAC;MAC3CC,aAAa,GAAG,CAAC;MAAEC,eAAe,GAAG,CAAC;MAAEC,cAAc,GAAG,CAAC;MAC1DC,GAAG;MAAEC,KAAK;MAAEC,IAAI;MAAEC,YAAY,GAAG,KAAK;;IAE1C;IACA,IAAIzvB,KAAK,CAACP,MAAM,KAAK,CAAC,IAAIsuB,WAAW,CAAC,CAAC,CAAC,CAAC2B,WAAW,CAAC,CAAC,KAAK,GAAG,IAAI3B,WAAW,CAAC,CAAC,CAAC,CAAC2B,WAAW,CAAC,CAAC,KAAK,GAAG,EAAE;MACpGP,aAAa,GAAGpB,WAAW,CAAC,CAAC,CAAC,KAAK,GAAG,GAAG,CAAC,GAAG,CAAC;MAC9CqB,eAAe,GAAG,CAAC,GAAGD,aAAa;MACnCG,GAAG,GAAG1kB,QAAQ,CAAC5K,KAAK,CAACmX,KAAK,CAACgY,aAAa,EAAEA,aAAa,GAAG,CAAC,CAAC,EAAE,EAAE,CAAC;MACjEI,KAAK,GAAG3kB,QAAQ,CAAC5K,KAAK,CAACmX,KAAK,CAACiY,eAAe,EAAEA,eAAe,GAAG,CAAC,CAAC,EAAE,EAAE,CAAC;MAEvElB,IAAI,GAAG,IAAI,CAACyB,YAAY,CAACL,GAAG,EAAEC,KAAK,EAAE,CAAC,CAAC;IAC3C;;IAEA;IACA,IAAIvvB,KAAK,CAACP,MAAM,KAAK,CAAC,EAAE;MACpBsuB,WAAW,CAAC7rB,OAAO,CAAC,UAAUnE,IAAI,EAAE8M,KAAK,EAAE;QACvC,QAAQ9M,IAAI;UACZ,KAAK,GAAG;YACJixB,QAAQ,GAAGnkB,KAAK;YAChB;UACJ,KAAK,GAAG;YACJokB,UAAU,GAAGpkB,KAAK;YAClB;UACJ;YACIqkB,SAAS,GAAGrkB,KAAK;YACjB;QACJ;MACJ,CAAC,CAAC;MAEFwkB,cAAc,GAAGH,SAAS,GAAG,CAAC;MAC9BC,aAAa,GAAIH,QAAQ,IAAIE,SAAS,GAAIF,QAAQ,GAAG,CAAC,GAAIA,QAAQ,GAAG,CAAC,GAAG,CAAE;MAC3EI,eAAe,GAAIH,UAAU,IAAIC,SAAS,GAAID,UAAU,GAAG,CAAC,GAAIA,UAAU,GAAG,CAAC,GAAG,CAAE;MAEnFK,GAAG,GAAG1kB,QAAQ,CAAC5K,KAAK,CAACmX,KAAK,CAACgY,aAAa,EAAEA,aAAa,GAAG,CAAC,CAAC,EAAE,EAAE,CAAC;MACjEI,KAAK,GAAG3kB,QAAQ,CAAC5K,KAAK,CAACmX,KAAK,CAACiY,eAAe,EAAEA,eAAe,GAAG,CAAC,CAAC,EAAE,EAAE,CAAC;MACvEI,IAAI,GAAG5kB,QAAQ,CAAC5K,KAAK,CAACmX,KAAK,CAACkY,cAAc,EAAEA,cAAc,GAAG,CAAC,CAAC,EAAE,EAAE,CAAC;MAEpEI,YAAY,GAAGzvB,KAAK,CAACmX,KAAK,CAACkY,cAAc,EAAEA,cAAc,GAAG,CAAC,CAAC,CAAC5vB,MAAM,KAAK,CAAC;MAE3EyuB,IAAI,GAAG,IAAI,CAACyB,YAAY,CAACL,GAAG,EAAEC,KAAK,EAAEC,IAAI,CAAC;IAC9C;;IAEA;IACA,IAAIxvB,KAAK,CAACP,MAAM,KAAK,CAAC,KAAKsuB,WAAW,CAAC,CAAC,CAAC,KAAK,GAAG,IAAIA,WAAW,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,EAAE;MAC1EqB,eAAe,GAAGrB,WAAW,CAAC,CAAC,CAAC,KAAK,GAAG,GAAG,CAAC,GAAG,CAAC;MAChDsB,cAAc,GAAG,CAAC,GAAGD,eAAe;MACpCG,KAAK,GAAG3kB,QAAQ,CAAC5K,KAAK,CAACmX,KAAK,CAACiY,eAAe,EAAEA,eAAe,GAAG,CAAC,CAAC,EAAE,EAAE,CAAC;MACvEI,IAAI,GAAG5kB,QAAQ,CAAC5K,KAAK,CAACmX,KAAK,CAACkY,cAAc,EAAEA,cAAc,GAAG,CAAC,CAAC,EAAE,EAAE,CAAC;MAEpEI,YAAY,GAAGzvB,KAAK,CAACmX,KAAK,CAACkY,cAAc,EAAEA,cAAc,GAAG,CAAC,CAAC,CAAC5vB,MAAM,KAAK,CAAC;MAE3EyuB,IAAI,GAAG,CAAC,CAAC,EAAEqB,KAAK,EAAEC,IAAI,CAAC;IAC3B;;IAEA;IACA,IAAIxvB,KAAK,CAACP,MAAM,KAAK,CAAC,KAAKsuB,WAAW,CAAC,CAAC,CAAC,KAAK,GAAG,IAAIA,WAAW,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,EAAE;MAC1EqB,eAAe,GAAGrB,WAAW,CAAC,CAAC,CAAC,KAAK,GAAG,GAAG,CAAC,GAAG,CAAC;MAChDsB,cAAc,GAAG,CAAC,GAAG,GAAG,GAAGD,eAAe;MAC1CG,KAAK,GAAG3kB,QAAQ,CAAC5K,KAAK,CAACmX,KAAK,CAACiY,eAAe,EAAEA,eAAe,GAAG,CAAC,CAAC,EAAE,EAAE,CAAC;MACvEI,IAAI,GAAG5kB,QAAQ,CAAC5K,KAAK,CAACmX,KAAK,CAACkY,cAAc,EAAEA,cAAc,GAAG,CAAC,CAAC,EAAE,EAAE,CAAC;MAEpEI,YAAY,GAAGzvB,KAAK,CAACmX,KAAK,CAACkY,cAAc,EAAEA,cAAc,GAAG,CAAC,CAAC,CAAC5vB,MAAM,KAAK,CAAC;MAE3EyuB,IAAI,GAAG,CAAC,CAAC,EAAEqB,KAAK,EAAEC,IAAI,CAAC;IAC3B;IAEAtB,IAAI,GAAGpB,KAAK,CAAC8C,iBAAiB,CAAC1B,IAAI,CAAC;IACpCpB,KAAK,CAACoB,IAAI,GAAGA,IAAI;IAEjB,IAAIhP,MAAM,GAAGgP,IAAI,CAACzuB,MAAM,KAAK,CAAC,GAAGO,KAAK,GAAG+tB,WAAW,CAACtN,MAAM,CAAC,UAAUoP,QAAQ,EAAEC,OAAO,EAAE;MACrF,QAAQA,OAAO;QACf,KAAK,GAAG;UACJ,OAAOD,QAAQ,IAAI3B,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,GAAGpB,KAAK,CAAC2B,cAAc,CAACP,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;QAC1E,KAAK,GAAG;UACJ,OAAO2B,QAAQ,IAAI3B,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,GAAGpB,KAAK,CAAC2B,cAAc,CAACP,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;QAC1E,KAAK,GAAG;UACJ,OAAO2B,QAAQ,IAAIJ,YAAY,GAAG3C,KAAK,CAACiD,qBAAqB,CAAC7B,IAAI,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,GAAG,EAAE,CAAC;QACvF,KAAK,GAAG;UACJ,OAAO2B,QAAQ,IAAIJ,YAAY,GAAG3C,KAAK,CAACiD,qBAAqB,CAAC7B,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;MACtF;IACJ,CAAC,EAAE,EAAE,CAAC;IAEN,OAAOhP,MAAM;EACjB,CAAC;EAED0Q,iBAAiB,EAAE,SAAAA,kBAAU1B,IAAI,EAAE;IAC/B,IAAIpB,KAAK,GAAG,IAAI;MACZiB,WAAW,GAAGjB,KAAK,CAACiB,WAAW;MAC/BC,OAAO,GAAGlB,KAAK,CAACkB,OAAO,IAAI,EAAE;MAC7BC,OAAO,GAAGnB,KAAK,CAACmB,OAAO,IAAI,EAAE;IAEjC,IAAI,CAACC,IAAI,CAACzuB,MAAM,IAAKuuB,OAAO,CAACvuB,MAAM,GAAG,CAAC,IAAIwuB,OAAO,CAACxuB,MAAM,GAAG,CAAE,EAAE,OAAOyuB,IAAI;IAE3E,IACEH,WAAW,CAACntB,IAAI,CAAC,UAASytB,CAAC,EAAE;MAC3B,OAAOA,CAAC,CAACqB,WAAW,CAAC,CAAC,KAAK,GAAG;IAChC,CAAC,CAAC,IACFxB,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,EACb,OAAOA,IAAI;IAEb,IAAID,OAAO,CAACxuB,MAAM,KAAKwuB,OAAO,CAAC,CAAC,CAAC,GAAGC,IAAI,CAAC,CAAC,CAAC,IACzCD,OAAO,CAAC,CAAC,CAAC,KAAKC,IAAI,CAAC,CAAC,CAAC,KAAKD,OAAO,CAAC,CAAC,CAAC,GAAGC,IAAI,CAAC,CAAC,CAAC,IAC7CD,OAAO,CAAC,CAAC,CAAC,KAAKC,IAAI,CAAC,CAAC,CAAC,IAAID,OAAO,CAAC,CAAC,CAAC,GAAGC,IAAI,CAAC,CAAC,CAC9C,CACF,CAAC,EAAE,OAAOD,OAAO;IAElB,IAAID,OAAO,CAACvuB,MAAM,KAAKuuB,OAAO,CAAC,CAAC,CAAC,GAAGE,IAAI,CAAC,CAAC,CAAC,IACzCF,OAAO,CAAC,CAAC,CAAC,KAAKE,IAAI,CAAC,CAAC,CAAC,KAAKF,OAAO,CAAC,CAAC,CAAC,GAAGE,IAAI,CAAC,CAAC,CAAC,IAC7CF,OAAO,CAAC,CAAC,CAAC,KAAKE,IAAI,CAAC,CAAC,CAAC,IAAIF,OAAO,CAAC,CAAC,CAAC,GAAGE,IAAI,CAAC,CAAC,CAC9C,CACF,CAAC,EAAE,OAAOF,OAAO;IAElB,OAAOE,IAAI;EACf,CAAC;EAEDyB,YAAY,EAAE,SAAAA,aAAUL,GAAG,EAAEC,KAAK,EAAEC,IAAI,EAAE;IACtCF,GAAG,GAAGU,IAAI,CAACC,GAAG,CAACX,GAAG,EAAE,EAAE,CAAC;IACvBC,KAAK,GAAGS,IAAI,CAACC,GAAG,CAACV,KAAK,EAAE,EAAE,CAAC;IAC3BC,IAAI,GAAG5kB,QAAQ,CAAE4kB,IAAI,IAAI,CAAC,EAAG,EAAE,CAAC;IAEhC,IAAKD,KAAK,GAAG,CAAC,IAAIA,KAAK,GAAG,CAAC,KAAK,CAAC,IAAMA,KAAK,GAAG,CAAC,IAAIA,KAAK,GAAG,CAAC,KAAK,CAAE,EAAE;MAClED,GAAG,GAAGU,IAAI,CAACC,GAAG,CAACX,GAAG,EAAEC,KAAK,KAAK,CAAC,GAAI,IAAI,CAACW,UAAU,CAACV,IAAI,CAAC,GAAG,EAAE,GAAG,EAAE,GAAI,EAAE,CAAC;IAC7E;IAEA,OAAO,CAACF,GAAG,EAAEC,KAAK,EAAEC,IAAI,CAAC;EAC7B,CAAC;EAEDU,UAAU,EAAE,SAAAA,WAAUV,IAAI,EAAE;IACxB,OAASA,IAAI,GAAG,CAAC,KAAK,CAAC,IAAMA,IAAI,GAAG,GAAG,KAAK,CAAE,IAAMA,IAAI,GAAG,GAAG,KAAK,CAAE;EACzE,CAAC;EAEDf,cAAc,EAAE,SAAAA,eAAU0B,MAAM,EAAE;IAC9B,OAAO,CAACA,MAAM,GAAG,EAAE,GAAG,GAAG,GAAG,EAAE,IAAIA,MAAM;EAC5C,CAAC;EAEDJ,qBAAqB,EAAE,SAAAA,sBAAUI,MAAM,EAAEC,YAAY,EAAE;IACnD,IAAIA,YAAY,EAAE;MACd,OAAO,CAACD,MAAM,GAAG,EAAE,GAAG,KAAK,GAAIA,MAAM,GAAG,GAAG,GAAG,IAAI,GAAIA,MAAM,GAAG,IAAI,GAAG,GAAG,GAAG,EAAI,IAAIA,MAAM;IAC9F;IAEA,OAAO,CAACA,MAAM,GAAG,EAAE,GAAG,GAAG,GAAG,EAAE,IAAIA,MAAM;EAC5C;AACJ,CAAC;AAED,IAAIE,eAAe,GAAGvC,aAAa;AAEnC,IAAIwC,aAAa,GAAG,SAAhBA,aAAaA,CAAaC,WAAW,EAAEC,UAAU,EAAE;EACnD,IAAI1D,KAAK,GAAG,IAAI;EAEhBA,KAAK,CAAC2D,IAAI,GAAG,EAAE;EACf3D,KAAK,CAACqB,MAAM,GAAG,EAAE;EACjBrB,KAAK,CAACyD,WAAW,GAAGA,WAAW;EAC/BzD,KAAK,CAAC0D,UAAU,GAAGA,UAAU;EAC7B1D,KAAK,CAACyB,UAAU,CAAC,CAAC;AACtB,CAAC;AAED+B,aAAa,CAACvzB,SAAS,GAAG;EACtBwxB,UAAU,EAAE,SAAAA,WAAA,EAAY;IACpB,IAAIzB,KAAK,GAAG,IAAI;IAChBA,KAAK,CAACyD,WAAW,CAACruB,OAAO,CAAC,YAAY;MAClC4qB,KAAK,CAACqB,MAAM,CAACpvB,IAAI,CAAC,CAAC,CAAC;IACxB,CAAC,CAAC;EACN,CAAC;EAED2xB,gBAAgB,EAAE,SAAAA,iBAAA,EAAY;IAC1B,IAAI5D,KAAK,GAAG,IAAI;MACZ2D,IAAI,GAAG3D,KAAK,CAAC2D,IAAI;IAErB,OAAOA,IAAI,CAAC,CAAC,CAAC,GACV3D,KAAK,CAAC2B,cAAc,CAACgC,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG,GAAG3D,KAAK,CAAC2B,cAAc,CAACgC,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG,GAAG3D,KAAK,CAAC2B,cAAc,CAACgC,IAAI,CAAC,CAAC,CAAC,CAAC,GACzG,EAAE;EACV,CAAC;EAED/B,SAAS,EAAE,SAAAA,UAAA,EAAY;IACnB,OAAO,IAAI,CAACP,MAAM;EACtB,CAAC;EAEDwC,oBAAoB,EAAE,SAAAA,qBAAA,EAAY;IAC9B,IAAI7D,KAAK,GAAG,IAAI;IAChB,IAAIjL,MAAM,CAACiL,KAAK,CAAC0D,UAAU,CAAC,KAAK,IAAI,EAAE;MACnC,OAAO;QACHI,iBAAiB,EAAE,CAAC;QACpBC,QAAQ,EAAE,EAAE;QACZC,oBAAoB,EAAE,CAAC;QACvBC,UAAU,EAAE;MAChB,CAAC;IACL;IAEA,OAAO;MACHH,iBAAiB,EAAE,CAAC;MACpBC,QAAQ,EAAE,EAAE;MACZC,oBAAoB,EAAE,CAAC;MACvBC,UAAU,EAAE;IAChB,CAAC;EACL,CAAC;EAEDC,gBAAgB,EAAE,SAAAA,iBAAUhxB,KAAK,EAAE;IAC/B,IAAI8sB,KAAK,GAAG,IAAI;MAAE5N,MAAM,GAAG,EAAE;IAE7Blf,KAAK,GAAGA,KAAK,CAACstB,OAAO,CAAC,QAAQ,EAAE,EAAE,CAAC;IAEnC,IAAI2D,iBAAiB,GAAGnE,KAAK,CAAC6D,oBAAoB,CAAC,CAAC;IAEpD7D,KAAK,CAACqB,MAAM,CAACjsB,OAAO,CAAC,UAAUzC,MAAM,EAAEoL,KAAK,EAAE;MAC1C,IAAI7K,KAAK,CAACP,MAAM,GAAG,CAAC,EAAE;QAClB,IAAImvB,GAAG,GAAG5uB,KAAK,CAACmX,KAAK,CAAC,CAAC,EAAE1X,MAAM,CAAC;UAC5BovB,IAAI,GAAGD,GAAG,CAACzX,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC;UACtB2X,IAAI,GAAG9uB,KAAK,CAACmX,KAAK,CAAC1X,MAAM,CAAC;QAE9B,QAAQqtB,KAAK,CAACyD,WAAW,CAAC1lB,KAAK,CAAC;UAEhC,KAAK,GAAG;YACJ,IAAID,QAAQ,CAACikB,IAAI,EAAE,EAAE,CAAC,GAAGoC,iBAAiB,CAACL,iBAAiB,EAAE;cAC1DhC,GAAG,GAAG,GAAG,GAAGC,IAAI;YACpB,CAAC,MAAM,IAAIjkB,QAAQ,CAACgkB,GAAG,EAAE,EAAE,CAAC,GAAGqC,iBAAiB,CAACJ,QAAQ,EAAE;cACvDjC,GAAG,GAAGqC,iBAAiB,CAACJ,QAAQ,GAAG,EAAE;YACzC;YAEA;UAEJ,KAAK,GAAG;UACR,KAAK,GAAG;YACJ,IAAIjmB,QAAQ,CAACikB,IAAI,EAAE,EAAE,CAAC,GAAGoC,iBAAiB,CAACH,oBAAoB,EAAE;cAC7DlC,GAAG,GAAG,GAAG,GAAGC,IAAI;YACpB,CAAC,MAAM,IAAIjkB,QAAQ,CAACgkB,GAAG,EAAE,EAAE,CAAC,GAAGqC,iBAAiB,CAACF,UAAU,EAAE;cACzDnC,GAAG,GAAGqC,iBAAiB,CAACF,UAAU,GAAG,EAAE;YAC3C;YACA;QACJ;QAEA7R,MAAM,IAAI0P,GAAG;;QAEb;QACA5uB,KAAK,GAAG8uB,IAAI;MAChB;IACJ,CAAC,CAAC;IAEF,OAAO,IAAI,CAACoC,kBAAkB,CAAChS,MAAM,CAAC;EAC1C,CAAC;EAEDgS,kBAAkB,EAAE,SAAAA,mBAAUlxB,KAAK,EAAE;IACjC,IAAI8sB,KAAK,GAAG,IAAI;MAAEyD,WAAW,GAAGzD,KAAK,CAACyD,WAAW;MAAEE,IAAI,GAAG,EAAE;MACxDU,WAAW,GAAG,CAAC;MAAEC,WAAW,GAAG,CAAC;MAAEC,SAAS,GAAG,CAAC;MAC/CC,gBAAgB,GAAG,CAAC;MAAEC,gBAAgB,GAAG,CAAC;MAAEC,cAAc,GAAG,CAAC;MAC9DC,MAAM;MAAEC,MAAM;MAAEC,IAAI;IAExB,IAAI3xB,KAAK,CAACP,MAAM,KAAK,CAAC,EAAE;MACpB8wB,WAAW,CAACruB,OAAO,CAAC,UAAUnE,IAAI,EAAE8M,KAAK,EAAE;QACvC,QAAQ9M,IAAI;UACZ,KAAK,GAAG;YACJozB,WAAW,GAAGtmB,KAAK,GAAG,CAAC;YACvB;UACJ,KAAK,GAAG;YACJumB,WAAW,GAAGvmB,KAAK,GAAG,CAAC;YACvB;UACJ,KAAK,GAAG;YACJwmB,SAAS,GAAGxmB,KAAK,GAAG,CAAC;YACrB;QACJ;MACJ,CAAC,CAAC;MAEF2mB,cAAc,GAAGH,SAAS;MAC1BE,gBAAgB,GAAGH,WAAW;MAC9BE,gBAAgB,GAAGH,WAAW;MAE9BM,MAAM,GAAG7mB,QAAQ,CAAC5K,KAAK,CAACmX,KAAK,CAACma,gBAAgB,EAAEA,gBAAgB,GAAG,CAAC,CAAC,EAAE,EAAE,CAAC;MAC1EI,MAAM,GAAG9mB,QAAQ,CAAC5K,KAAK,CAACmX,KAAK,CAACoa,gBAAgB,EAAEA,gBAAgB,GAAG,CAAC,CAAC,EAAE,EAAE,CAAC;MAC1EI,IAAI,GAAG/mB,QAAQ,CAAC5K,KAAK,CAACmX,KAAK,CAACqa,cAAc,EAAEA,cAAc,GAAG,CAAC,CAAC,EAAE,EAAE,CAAC;MAEpEf,IAAI,GAAG,IAAI,CAACmB,YAAY,CAACD,IAAI,EAAED,MAAM,EAAED,MAAM,CAAC;IAClD;IAEA,IAAIzxB,KAAK,CAACP,MAAM,KAAK,CAAC,IAAIqtB,KAAK,CAACyD,WAAW,CAACvqB,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE;MAC1DuqB,WAAW,CAACruB,OAAO,CAAC,UAAUnE,IAAI,EAAE8M,KAAK,EAAE;QACvC,QAAQ9M,IAAI;UACZ,KAAK,GAAG;YACJqzB,WAAW,GAAGvmB,KAAK,GAAG,CAAC;YACvB;UACJ,KAAK,GAAG;YACJwmB,SAAS,GAAGxmB,KAAK,GAAG,CAAC;YACrB;QACJ;MACJ,CAAC,CAAC;MAEF2mB,cAAc,GAAGH,SAAS;MAC1BE,gBAAgB,GAAGH,WAAW;MAE9BK,MAAM,GAAG,CAAC;MACVC,MAAM,GAAG9mB,QAAQ,CAAC5K,KAAK,CAACmX,KAAK,CAACoa,gBAAgB,EAAEA,gBAAgB,GAAG,CAAC,CAAC,EAAE,EAAE,CAAC;MAC1EI,IAAI,GAAG/mB,QAAQ,CAAC5K,KAAK,CAACmX,KAAK,CAACqa,cAAc,EAAEA,cAAc,GAAG,CAAC,CAAC,EAAE,EAAE,CAAC;MAEpEf,IAAI,GAAG,IAAI,CAACmB,YAAY,CAACD,IAAI,EAAED,MAAM,EAAED,MAAM,CAAC;IAClD;IAEA3E,KAAK,CAAC2D,IAAI,GAAGA,IAAI;IAEjB,OAAOA,IAAI,CAAChxB,MAAM,KAAK,CAAC,GAAGO,KAAK,GAAGuwB,WAAW,CAAC9P,MAAM,CAAC,UAAUoP,QAAQ,EAAEC,OAAO,EAAE;MAC/E,QAAQA,OAAO;QACf,KAAK,GAAG;UACJ,OAAOD,QAAQ,GAAG/C,KAAK,CAAC2B,cAAc,CAACgC,IAAI,CAAC,CAAC,CAAC,CAAC;QACnD,KAAK,GAAG;UACJ,OAAOZ,QAAQ,GAAG/C,KAAK,CAAC2B,cAAc,CAACgC,IAAI,CAAC,CAAC,CAAC,CAAC;QACnD,KAAK,GAAG;UACJ,OAAOZ,QAAQ,GAAG/C,KAAK,CAAC2B,cAAc,CAACgC,IAAI,CAAC,CAAC,CAAC,CAAC;MACnD;IACJ,CAAC,EAAE,EAAE,CAAC;EACV,CAAC;EAEDmB,YAAY,EAAE,SAAAA,aAAUD,IAAI,EAAED,MAAM,EAAED,MAAM,EAAE;IAC1CA,MAAM,GAAGzB,IAAI,CAACC,GAAG,CAACrlB,QAAQ,CAAC6mB,MAAM,IAAI,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC;IAChDC,MAAM,GAAG1B,IAAI,CAACC,GAAG,CAACyB,MAAM,EAAE,EAAE,CAAC;IAC7BC,IAAI,GAAG3B,IAAI,CAACC,GAAG,CAAC0B,IAAI,EAAE,EAAE,CAAC;IAEzB,OAAO,CAACA,IAAI,EAAED,MAAM,EAAED,MAAM,CAAC;EACjC,CAAC;EAEDhD,cAAc,EAAE,SAAAA,eAAU0B,MAAM,EAAE;IAC9B,OAAO,CAACA,MAAM,GAAG,EAAE,GAAG,GAAG,GAAG,EAAE,IAAIA,MAAM;EAC5C;AACJ,CAAC;AAED,IAAI0B,eAAe,GAAGvB,aAAa;AAEnC,IAAIwB,cAAc,GAAG,SAAjBA,cAAcA,CAAaC,SAAS,EAAElF,SAAS,EAAE;EACjD,IAAIC,KAAK,GAAG,IAAI;EAEhBA,KAAK,CAACD,SAAS,GAAIA,SAAS,IAAIA,SAAS,KAAK,EAAE,GAAIA,SAAS,GAAG,GAAG;EACnEC,KAAK,CAACG,WAAW,GAAGJ,SAAS,GAAG,IAAIK,MAAM,CAAC,IAAI,GAAGL,SAAS,EAAE,GAAG,CAAC,GAAG,EAAE;EAEtEC,KAAK,CAACiF,SAAS,GAAGA,SAAS;AAC/B,CAAC;AAEDD,cAAc,CAAC/0B,SAAS,GAAG;EACvBi1B,YAAY,EAAE,SAAAA,aAAUD,SAAS,EAAE;IAC/B,IAAI,CAACA,SAAS,GAAGA,SAAS;EAC9B,CAAC;EAEDxE,MAAM,EAAE,SAAAA,OAAU0E,WAAW,EAAE;IAC3B,IAAInF,KAAK,GAAG,IAAI;IAEhBA,KAAK,CAACiF,SAAS,CAACvK,KAAK,CAAC,CAAC;;IAEvB;IACAyK,WAAW,GAAGA,WAAW,CAAC3E,OAAO,CAAC,SAAS,EAAE,EAAE,CAAC;;IAEhD;IACA2E,WAAW,GAAGA,WAAW,CAAC3E,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAACA,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAACA,OAAO,CAAC,GAAG,EAAE,GAAG,CAAC;;IAElF;IACA2E,WAAW,GAAGA,WAAW,CAAC3E,OAAO,CAACR,KAAK,CAACG,WAAW,EAAE,EAAE,CAAC;IAExD,IAAI/N,MAAM,GAAG,EAAE;MAAE4Q,OAAO;MAAEoC,SAAS,GAAG,KAAK;IAE3C,KAAK,IAAIxnB,CAAC,GAAG,CAAC,EAAEynB,IAAI,GAAGF,WAAW,CAACxyB,MAAM,EAAEiL,CAAC,GAAGynB,IAAI,EAAEznB,CAAC,EAAE,EAAE;MACtDolB,OAAO,GAAGhD,KAAK,CAACiF,SAAS,CAACK,UAAU,CAACH,WAAW,CAAClY,MAAM,CAACrP,CAAC,CAAC,CAAC;;MAE3D;MACA,IAAI,UAAU,CAAC4M,IAAI,CAACwY,OAAO,CAAC,EAAE;QAC1B5Q,MAAM,GAAG4Q,OAAO;QAEhBoC,SAAS,GAAG,IAAI;MACpB,CAAC,MAAM;QACH,IAAI,CAACA,SAAS,EAAE;UACZhT,MAAM,GAAG4Q,OAAO;QACpB;QACA;QACA;MACJ;IACJ;;IAEA;IACA;IACA5Q,MAAM,GAAGA,MAAM,CAACoO,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC;IACpC;IACApO,MAAM,GAAGA,MAAM,CAACoO,OAAO,CAAC,QAAQ,EAAER,KAAK,CAACD,SAAS,CAAC;IAElD,OAAO3N,MAAM;EACjB;AACJ,CAAC;AAED,IAAImT,gBAAgB,GAAGP,cAAc;AAErC,IAAIQ,kBAAkB,GAAG;EACrBnE,MAAM,EAAE;IACJoE,IAAI,EAAW,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;IACxB1sB,IAAI,EAAW,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;IACxB2sB,MAAM,EAAS,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;IACxB1sB,QAAQ,EAAO,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;IAC3BF,UAAU,EAAK,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;IAC3B6sB,OAAO,EAAQ,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;IAC3BC,YAAY,EAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;IAC3BC,KAAK,EAAU,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;IACxBC,GAAG,EAAY,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;IAC3BC,OAAO,EAAQ,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;IAC3BltB,IAAI,EAAW,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;IAC3BmtB,GAAG,EAAY,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;IAC3BC,QAAQ,EAAO,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;IAC3BC,OAAO,EAAQ,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC;EAC9B,CAAC;EAEDC,EAAE,EAAE;IACA;IACAV,IAAI,EAAE,oBAAoB;IAE1B;IACA1sB,IAAI,EAAE,gBAAgB;IAEtB;IACAC,QAAQ,EAAE,wCAAwC;IAElD;IACA0sB,MAAM,EAAE,mCAAmC;IAE3C;IACA5sB,UAAU,EAAE,uDAAuD;IAEnE;IACA6sB,OAAO,EAAE,2BAA2B;IAEpC;IACAC,YAAY,EAAE,kBAAkB;IAEhC;IACAC,KAAK,EAAE,wBAAwB;IAE/B;IACAC,GAAG,EAAE,wBAAwB;IAE7B;IACAC,OAAO,EAAE,4CAA4C;IAErD;IACAC,GAAG,EAAE,mBAAmB;IAExB;IACAntB,IAAI,EAAE,YAAY;IAElB;IACAotB,QAAQ,EAAE;EACd,CAAC;EAEDG,eAAe,EAAE,SAAAA,gBAAUC,KAAK,EAAE;IAChC,IAAIC,KAAK,GAAGD,KAAK,CAAC1S,MAAM,CAAC,UAAU4S,IAAI,EAAEvD,OAAO,EAAE;MAChD,OAAOuD,IAAI,GAAGvD,OAAO;IACvB,CAAC,EAAE,CAAC,CAAC;IAEL,OAAOqD,KAAK,CAACvV,MAAM,CAAC,EAAE,GAAGwV,KAAK,CAAC;EACjC,CAAC;EAEDE,OAAO,EAAE,SAAAA,QAAUtzB,KAAK,EAAEuzB,UAAU,EAAE;IAClC,IAAIpF,MAAM,GAAGmE,kBAAkB,CAACnE,MAAM;MAClC8E,EAAE,GAAGX,kBAAkB,CAACW,EAAE;;IAE9B;IACA;IACA;IACA;IACAM,UAAU,GAAG,CAAC,CAACA,UAAU;IAEzB,KAAK,IAAI1zB,GAAG,IAAIozB,EAAE,EAAE;MAChB,IAAIA,EAAE,CAACpzB,GAAG,CAAC,CAACyX,IAAI,CAACtX,KAAK,CAAC,EAAE;QACrB,IAAIwzB,aAAa,GAAGrF,MAAM,CAACtuB,GAAG,CAAC;QAC/B,OAAO;UACH9B,IAAI,EAAE8B,GAAG;UACTsuB,MAAM,EAAEoF,UAAU,GAAG,IAAI,CAACL,eAAe,CAACM,aAAa,CAAC,GAAGA;QAC/D,CAAC;MACL;IACJ;IAEA,OAAO;MACHz1B,IAAI,EAAE,SAAS;MACfowB,MAAM,EAAEoF,UAAU,GAAG,IAAI,CAACL,eAAe,CAAC/E,MAAM,CAAC6E,OAAO,CAAC,GAAG7E,MAAM,CAAC6E;IACvE,CAAC;EACL;AACJ,CAAC;AAED,IAAIS,oBAAoB,GAAGnB,kBAAkB;AAE7C,IAAIoB,IAAI,GAAG;EACPC,IAAI,EAAE,SAAAA,KAAA,EAAY,CAClB,CAAC;EAEDC,KAAK,EAAE,SAAAA,MAAU5zB,KAAK,EAAEizB,EAAE,EAAE;IACxB,OAAOjzB,KAAK,CAACstB,OAAO,CAAC2F,EAAE,EAAE,EAAE,CAAC;EAChC,CAAC;EAEDY,gBAAgB,EAAE,SAAAA,iBAAU7zB,KAAK,EAAE6sB,SAAS,EAAEiH,UAAU,EAAE;IACtD;IACA,IAAIA,UAAU,CAACr0B,MAAM,KAAK,CAAC,EAAE;MACzB,OAAOO,KAAK,CAACmX,KAAK,CAAC,CAAC0V,SAAS,CAACptB,MAAM,CAAC,KAAKotB,SAAS,GAAGA,SAAS,GAAG,EAAE;IACxE;;IAEA;IACA,IAAIkH,gBAAgB,GAAG,EAAE;IACzBD,UAAU,CAAC5xB,OAAO,CAAC,UAAU4tB,OAAO,EAAE;MAClC,IAAI9vB,KAAK,CAACmX,KAAK,CAAC,CAAC2Y,OAAO,CAACrwB,MAAM,CAAC,KAAKqwB,OAAO,EAAE;QAC1CiE,gBAAgB,GAAGjE,OAAO;MAC9B;IACJ,CAAC,CAAC;IAEF,OAAOiE,gBAAgB;EAC3B,CAAC;EAEDC,yBAAyB,EAAE,SAAAA,0BAAUnH,SAAS,EAAE;IAC5C,OAAO,IAAIK,MAAM,CAACL,SAAS,CAACS,OAAO,CAAC,wBAAwB,EAAE,MAAM,CAAC,EAAE,GAAG,CAAC;EAC/E,CAAC;EAED2G,qBAAqB,EAAE,SAAAA,sBAAUC,OAAO,EAAEC,QAAQ,EAAEC,QAAQ,EAAEvH,SAAS,EAAEiH,UAAU,EAAE;IACnF;IACA;IACA,IAAIK,QAAQ,CAAC10B,MAAM,KAAKy0B,OAAO,EAAE;MAC7B,OAAOE,QAAQ,CAAC30B,MAAM;IAC1B;IAEA,OAAOy0B,OAAO,GAAG,IAAI,CAACG,iBAAiB,CAACH,OAAO,EAAEC,QAAQ,EAAEC,QAAQ,EAAEvH,SAAS,EAAEiH,UAAU,CAAC;EAC7F,CAAC;EAEDO,iBAAiB,EAAE,SAAAA,kBAAUH,OAAO,EAAEC,QAAQ,EAAEC,QAAQ,EAAEvH,SAAS,EAAEiH,UAAU,EAAE;IAC7E,IAAIQ,WAAW,EAAEC,WAAW,EAAEC,YAAY;IAE1CF,WAAW,GAAG,IAAI,CAACG,eAAe,CAACN,QAAQ,CAAChd,KAAK,CAAC,CAAC,EAAE+c,OAAO,CAAC,EAAErH,SAAS,EAAEiH,UAAU,CAAC;IACrFS,WAAW,GAAG,IAAI,CAACE,eAAe,CAACL,QAAQ,CAACjd,KAAK,CAAC,CAAC,EAAE+c,OAAO,CAAC,EAAErH,SAAS,EAAEiH,UAAU,CAAC;IACrFU,YAAY,GAAGF,WAAW,CAAC70B,MAAM,GAAG80B,WAAW,CAAC90B,MAAM;IAEtD,OAAQ+0B,YAAY,KAAK,CAAC,GAAKA,YAAY,GAAGxE,IAAI,CAAC0E,GAAG,CAACF,YAAY,CAAC,GAAI,CAAC;EAC7E,CAAC;EAEDC,eAAe,EAAE,SAAAA,gBAAUz0B,KAAK,EAAE6sB,SAAS,EAAEiH,UAAU,EAAE;IACrD,IAAIhH,KAAK,GAAG,IAAI;;IAEhB;IACA,IAAIgH,UAAU,CAACr0B,MAAM,KAAK,CAAC,EAAE;MACzB,IAAIwtB,WAAW,GAAGJ,SAAS,GAAGC,KAAK,CAACkH,yBAAyB,CAACnH,SAAS,CAAC,GAAG,EAAE;MAE7E,OAAO7sB,KAAK,CAACstB,OAAO,CAACL,WAAW,EAAE,EAAE,CAAC;IACzC;;IAEA;IACA6G,UAAU,CAAC5xB,OAAO,CAAC,UAAU4tB,OAAO,EAAE;MAClCA,OAAO,CAACxW,KAAK,CAAC,EAAE,CAAC,CAACpX,OAAO,CAAC,UAAUyyB,MAAM,EAAE;QACxC30B,KAAK,GAAGA,KAAK,CAACstB,OAAO,CAACR,KAAK,CAACkH,yBAAyB,CAACW,MAAM,CAAC,EAAE,EAAE,CAAC;MACtE,CAAC,CAAC;IACN,CAAC,CAAC;IAEF,OAAO30B,KAAK;EAChB,CAAC;EAED40B,OAAO,EAAE,SAAAA,QAAUC,GAAG,EAAEp1B,MAAM,EAAE;IAC5B,OAAOo1B,GAAG,CAAC1d,KAAK,CAAC,CAAC,EAAE1X,MAAM,CAAC;EAC/B,CAAC;EAEDq1B,YAAY,EAAE,SAAAA,aAAU3G,MAAM,EAAE;IAC5B,OAAOA,MAAM,CAAC1N,MAAM,CAAC,UAAUoP,QAAQ,EAAEC,OAAO,EAAE;MAC9C,OAAOD,QAAQ,GAAGC,OAAO;IAC7B,CAAC,EAAE,CAAC,CAAC;EACT,CAAC;EAED;EACA;EACA;EACA;EACA;EACA;EACAiF,sBAAsB,EAAE,SAAAA,uBAAU/0B,KAAK,EAAE0sB,MAAM,EAAEsI,YAAY,EAAEC,UAAU,EAAEpI,SAAS,EAAEiH,UAAU,EAAEoB,iBAAiB,EAAEtI,UAAU,EAAED,gBAAgB,EAAE;IAC/I;IACA,IAAIqI,YAAY,KAAK,CAAC,EAAE;MACtB,OAAOh1B,KAAK;IACd;;IAEA;IACA,IAAIA,KAAK,KAAK0sB,MAAM,IAAI1sB,KAAK,KAAK,EAAE,EAAE;MACpC,OAAO,EAAE;IACX;IAEA,IAAI2sB,gBAAgB,IAAK3sB,KAAK,CAACmX,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,GAAI,EAAE;MAChD,IAAIkc,IAAI,GAAI4B,UAAU,CAAC9d,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,GAAG,GAAI8d,UAAU,CAAC9d,KAAK,CAAC,CAAC,CAAC,GAAG8d,UAAU;MAC7E,OAAO,GAAG,GAAG,IAAI,CAACF,sBAAsB,CAAC/0B,KAAK,CAACmX,KAAK,CAAC,CAAC,CAAC,EAAEuV,MAAM,EAAEsI,YAAY,EAAE3B,IAAI,EAAExG,SAAS,EAAEiH,UAAU,EAAEoB,iBAAiB,EAAEtI,UAAU,EAAED,gBAAgB,CAAC;IAChK;;IAEA;IACA,IAAIsI,UAAU,CAAC9d,KAAK,CAAC,CAAC,EAAE6d,YAAY,CAAC,KAAKtI,MAAM,IAAI,CAACE,UAAU,EAAE;MAC7D;MACA,IAAIsI,iBAAiB,IAAI,CAACD,UAAU,IAAIj1B,KAAK,EAAE,OAAOA,KAAK;MAC3D,OAAO,EAAE;IACb,CAAC,MAAM,IAAIi1B,UAAU,CAAC9d,KAAK,CAAC,CAAC6d,YAAY,CAAC,KAAKtI,MAAM,IAAIE,UAAU,EAAE;MACjE;MACA,IAAIsI,iBAAiB,IAAI,CAACD,UAAU,IAAIj1B,KAAK,EAAE,OAAOA,KAAK;MAC3D,OAAO,EAAE;IACb;IAEA,IAAIm1B,SAAS,GAAG,IAAI,CAACV,eAAe,CAACQ,UAAU,EAAEpI,SAAS,EAAEiH,UAAU,CAAC;;IAEvE;IACA;IACA,IAAI9zB,KAAK,CAACmX,KAAK,CAAC,CAAC,EAAE6d,YAAY,CAAC,KAAKtI,MAAM,IAAI,CAACE,UAAU,EAAE;MACxD,OAAOuI,SAAS,CAAChe,KAAK,CAAC6d,YAAY,CAAC;IACxC,CAAC,MAAM,IAAIh1B,KAAK,CAACmX,KAAK,CAAC,CAAC6d,YAAY,CAAC,KAAKtI,MAAM,IAAIE,UAAU,EAAE;MAC5D,OAAOuI,SAAS,CAAChe,KAAK,CAAC,CAAC,EAAE,CAAC6d,YAAY,GAAG,CAAC,CAAC;IAChD;;IAEA;IACA,OAAOpI,UAAU,GAAG5sB,KAAK,CAACmX,KAAK,CAAC,CAAC,EAAE,CAAC6d,YAAY,CAAC,GAAGh1B,KAAK,CAACmX,KAAK,CAAC6d,YAAY,CAAC;EACjF,CAAC;EAEDI,iBAAiB,EAAE,SAAAA,kBAAU/B,IAAI,EAAEvD,OAAO,EAAE;IACxC,IAAIjlB,KAAK,GAAG,CAAC;IAEb,OAAOwoB,IAAI,CAACtZ,MAAM,CAAClP,KAAK,CAAC,KAAKilB,OAAO,CAAC/V,MAAM,CAAClP,KAAK,CAAC,EAAE;MACjD,IAAIwoB,IAAI,CAACtZ,MAAM,CAAClP,KAAK,EAAE,CAAC,KAAK,EAAE,EAAE;QAC7B,OAAO,CAAC,CAAC;MACb;IACJ;IAEA,OAAOA,KAAK;EAChB,CAAC;EAEDwqB,iBAAiB,EAAE,SAAAA,kBAAUr1B,KAAK,EAAEmuB,MAAM,EAAEmH,YAAY,EAAEzI,SAAS,EAAEiH,UAAU,EAAEyB,iBAAiB,EAAE;IAChG,IAAIrW,MAAM,GAAG,EAAE;MACXsW,kBAAkB,GAAG1B,UAAU,CAACr0B,MAAM,GAAG,CAAC;MAC1Cg2B,gBAAgB,GAAG,EAAE;;IAEzB;IACA,IAAIH,YAAY,KAAK,CAAC,EAAE;MACpB,OAAOt1B,KAAK;IAChB;IAEAmuB,MAAM,CAACjsB,OAAO,CAAC,UAAUzC,MAAM,EAAEoL,KAAK,EAAE;MACpC,IAAI7K,KAAK,CAACP,MAAM,GAAG,CAAC,EAAE;QAClB,IAAImvB,GAAG,GAAG5uB,KAAK,CAACmX,KAAK,CAAC,CAAC,EAAE1X,MAAM,CAAC;UAC5BqvB,IAAI,GAAG9uB,KAAK,CAACmX,KAAK,CAAC1X,MAAM,CAAC;QAE9B,IAAI+1B,kBAAkB,EAAE;UACpBC,gBAAgB,GAAG3B,UAAU,CAACyB,iBAAiB,GAAI1qB,KAAK,GAAG,CAAC,GAAIA,KAAK,CAAC,IAAI4qB,gBAAgB;QAC9F,CAAC,MAAM;UACHA,gBAAgB,GAAG5I,SAAS;QAChC;QAEA,IAAI0I,iBAAiB,EAAE;UACnB,IAAI1qB,KAAK,GAAG,CAAC,EAAE;YACXqU,MAAM,IAAIuW,gBAAgB;UAC9B;UAEAvW,MAAM,IAAI0P,GAAG;QACjB,CAAC,MAAM;UACH1P,MAAM,IAAI0P,GAAG;UAEb,IAAIA,GAAG,CAACnvB,MAAM,KAAKA,MAAM,IAAIoL,KAAK,GAAGyqB,YAAY,GAAG,CAAC,EAAE;YACnDpW,MAAM,IAAIuW,gBAAgB;UAC9B;QACJ;;QAEA;QACAz1B,KAAK,GAAG8uB,IAAI;MAChB;IACJ,CAAC,CAAC;IAEF,OAAO5P,MAAM;EACjB,CAAC;EAED;EACA;EACAwW,eAAe,EAAE,SAAAA,gBAAU9M,EAAE,EAAE8D,MAAM,EAAEG,SAAS,EAAEiH,UAAU,EAAE;IAC1D,IAAI,CAAClL,EAAE,EAAE;MACL;IACJ;IAEA,IAAItrB,GAAG,GAAGsrB,EAAE,CAAC5oB,KAAK;MACd21B,QAAQ,GAAG9I,SAAS,IAAKiH,UAAU,CAAC,CAAC,CAAC,IAAI,GAAI;IAElD,IAAI,CAAClL,EAAE,CAACgN,iBAAiB,IAAI,CAAClJ,MAAM,IAAKA,MAAM,CAACjtB,MAAM,GAAGk2B,QAAQ,CAACl2B,MAAM,IAAKnC,GAAG,CAACmC,MAAM,EAAE;MACrF;IACJ;IAEA,IAAI8X,GAAG,GAAGja,GAAG,CAACmC,MAAM,GAAG,CAAC;;IAExB;IACAgP,UAAU,CAAC,YAAY;MACnBma,EAAE,CAACgN,iBAAiB,CAACre,GAAG,EAAEA,GAAG,CAAC;IAClC,CAAC,EAAE,CAAC,CAAC;EACT,CAAC;EAED;EACAse,kBAAkB,EAAE,SAAAA,mBAAS71B,KAAK,EAAE;IAClC,IAAI;MACF,IAAI81B,SAAS,GAAGljB,MAAM,CAACmjB,YAAY,CAAC,CAAC,IAAIlxB,QAAQ,CAACkxB,YAAY,CAAC,CAAC,IAAI,CAAC,CAAC;MACtE,OAAOD,SAAS,CAAC7e,QAAQ,CAAC,CAAC,CAACxX,MAAM,KAAKO,KAAK,CAACP,MAAM;IACrD,CAAC,CAAC,OAAOu2B,EAAE,EAAE;MACX;IAAA;IAGF,OAAO,KAAK;EACd,CAAC;EAEDC,YAAY,EAAE,SAAAA,aAAU9xB,OAAO,EAAE+xB,QAAQ,EAAEC,GAAG,EAAE;IAC5C,IAAIhyB,OAAO,KAAK,IAAI,CAACiyB,gBAAgB,CAACD,GAAG,CAAC,EAAE;MACxC;IACJ;;IAEA;IACA,IAAIhyB,OAAO,IAAIA,OAAO,CAACnE,KAAK,CAACP,MAAM,IAAIy2B,QAAQ,EAAE;MAC/C;IACF;IAEA,IAAI/xB,OAAO,CAACkyB,eAAe,EAAE;MACzB,IAAIC,KAAK,GAAGnyB,OAAO,CAACkyB,eAAe,CAAC,CAAC;MAErCC,KAAK,CAACC,IAAI,CAAC,WAAW,EAAEL,QAAQ,CAAC;MACjCI,KAAK,CAACE,MAAM,CAAC,CAAC;IAClB,CAAC,MAAM;MACH,IAAI;QACAryB,OAAO,CAACyxB,iBAAiB,CAACM,QAAQ,EAAEA,QAAQ,CAAC;MACjD,CAAC,CAAC,OAAO1xB,CAAC,EAAE;QACR;QACAiyB,OAAO,CAACC,IAAI,CAAC,mDAAmD,CAAC;MACrE;IACJ;EACJ,CAAC;EAEDN,gBAAgB,EAAE,SAAAA,iBAAS90B,MAAM,EAAE;IAC/B,IAAIq1B,aAAa,GAAGr1B,MAAM,CAACq1B,aAAa;IACxC,IAAIA,aAAa,IAAIA,aAAa,CAACC,UAAU,EAAE;MAC3C,OAAO,IAAI,CAACR,gBAAgB,CAACO,aAAa,CAACC,UAAU,CAAC;IAC1D;IACA,OAAOD,aAAa;EACxB,CAAC;EAEDE,SAAS,EAAE,SAAAA,UAAA,EAAY;IACnB,OAAOC,SAAS,IAAI,UAAU,CAACxf,IAAI,CAACwf,SAAS,CAACC,SAAS,CAAC;EAC5D,CAAC;EAED;EACA;EACA;EACA;EACAC,yBAAyB,EAAE,SAAAA,0BAAUC,cAAc,EAAEC,iBAAiB,EAAE;IACpE,IAAI,CAAC,IAAI,CAACL,SAAS,CAAC,CAAC,IAAI,CAACI,cAAc,IAAI,CAACC,iBAAiB,EAAE;MAC5D,OAAO,KAAK;IAChB;IAEA,OAAOA,iBAAiB,KAAKD,cAAc,CAAC9f,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;EAC5D;AACJ,CAAC;AAED,IAAIggB,MAAM,GAAGzD,IAAI;;AAEjB;AACA;AACA;AACA;AACA;AACA,IAAI0D,iBAAiB,GAAG;EACpB;EACA;EACA9N,MAAM,EAAE,SAAAA,OAAUrM,MAAM,EAAEoa,IAAI,EAAE;IAC5Bpa,MAAM,GAAGA,MAAM,IAAI,CAAC,CAAC;IACrBoa,IAAI,GAAGA,IAAI,IAAI,CAAC,CAAC;;IAEjB;IACApa,MAAM,CAACzX,UAAU,GAAG,CAAC,CAAC6xB,IAAI,CAAC7xB,UAAU;IACrCyX,MAAM,CAACqa,oBAAoB,GAAG,CAAC,CAACD,IAAI,CAACC,oBAAoB;IACzDra,MAAM,CAACsa,cAAc,GAAG,EAAE;IAC1Bta,MAAM,CAACxX,uBAAuB,GAAG4xB,IAAI,CAAC5xB,uBAAuB,IAAK,YAAY,CAAC,CAAE;;IAEjF;IACAwX,MAAM,CAAC5c,KAAK,GAAG,CAAC,CAACg3B,IAAI,CAACh3B,KAAK;IAC3B4c,MAAM,CAACua,eAAe,GAAGH,IAAI,CAACG,eAAe,IAAI,IAAI;IACrDva,MAAM,CAACwa,cAAc,GAAG,CAAC,CAAC;;IAE1B;IACAxa,MAAM,CAACwT,IAAI,GAAG,CAAC,CAAC4G,IAAI,CAAC5G,IAAI;IACzBxT,MAAM,CAACsT,WAAW,GAAG8G,IAAI,CAAC9G,WAAW,IAAI,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC;IACxDtT,MAAM,CAACuT,UAAU,GAAG6G,IAAI,CAAC7G,UAAU,IAAI,IAAI;IAC3CvT,MAAM,CAACya,aAAa,GAAG,CAAC,CAAC;;IAEzB;IACAza,MAAM,CAACiR,IAAI,GAAG,CAAC,CAACmJ,IAAI,CAACnJ,IAAI;IACzBjR,MAAM,CAAC8Q,WAAW,GAAGsJ,IAAI,CAACtJ,WAAW,IAAI,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC;IACxD9Q,MAAM,CAAC+Q,OAAO,GAAGqJ,IAAI,CAACrJ,OAAO,IAAI,EAAE;IACnC/Q,MAAM,CAACgR,OAAO,GAAGoJ,IAAI,CAACpJ,OAAO,IAAI,EAAE;IACnChR,MAAM,CAAC0a,aAAa,GAAG,CAAC,CAAC;;IAEzB;IACA1a,MAAM,CAAC2a,OAAO,GAAG,CAAC,CAACP,IAAI,CAACO,OAAO;IAC/B3a,MAAM,CAACoP,mBAAmB,GAAGgL,IAAI,CAAChL,mBAAmB,GAAG,CAAC,GAAGgL,IAAI,CAAChL,mBAAmB,GAAG,CAAC;IACxFpP,MAAM,CAACqP,mBAAmB,GAAG+K,IAAI,CAAC/K,mBAAmB,IAAI,CAAC,GAAG+K,IAAI,CAAC/K,mBAAmB,GAAG,CAAC;IACzFrP,MAAM,CAACmP,kBAAkB,GAAGiL,IAAI,CAACjL,kBAAkB,IAAI,GAAG;IAC1DnP,MAAM,CAACsP,0BAA0B,GAAG8K,IAAI,CAAC9K,0BAA0B,IAAI,UAAU;IACjFtP,MAAM,CAACuP,mBAAmB,GAAG,CAAC,CAAC6K,IAAI,CAAC7K,mBAAmB;IACvDvP,MAAM,CAACwP,kBAAkB,GAAG4K,IAAI,CAAC5K,kBAAkB,KAAK,KAAK;IAC7DxP,MAAM,CAAC0P,gBAAgB,GAAG,CAAC,CAAC0K,IAAI,CAAC1K,gBAAgB;IACjD1P,MAAM,CAAC2P,UAAU,GAAG,CAAC,CAACyK,IAAI,CAACzK,UAAU;;IAErC;IACA3P,MAAM,CAAC4a,eAAe,GAAG,CAAC,CAACR,IAAI,CAACQ,eAAe;IAE/C5a,MAAM,CAAC6a,WAAW,GAAG7a,MAAM,CAACzX,UAAU,IAAIyX,MAAM,CAACiR,IAAI,IAAI,CAAC,CAACmJ,IAAI,CAACS,WAAW;IAE3E7a,MAAM,CAAC8a,SAAS,GAAG,CAAC,CAACV,IAAI,CAACU,SAAS;IACnC9a,MAAM,CAAC+a,SAAS,GAAG,CAAC,CAACX,IAAI,CAACW,SAAS;IAEnC/a,MAAM,CAACyP,MAAM,GAAIzP,MAAM,CAACzX,UAAU,IAAIyX,MAAM,CAACiR,IAAI,GAAI,EAAE,GAAImJ,IAAI,CAAC3K,MAAM,IAAI,EAAG;IAC7EzP,MAAM,CAACiY,iBAAiB,GAAG,CAAC,CAACmC,IAAI,CAACnC,iBAAiB;IACnDjY,MAAM,CAAC+X,YAAY,GAAG/X,MAAM,CAACyP,MAAM,CAACjtB,MAAM;IAC1Cwd,MAAM,CAACgb,kBAAkB,GAAG,CAAC,CAACZ,IAAI,CAACY,kBAAkB;IACrDhb,MAAM,CAACib,aAAa,GAAG,CAAC,CAACb,IAAI,CAACa,aAAa;IAE3Cjb,MAAM,CAACkb,SAAS,GAAId,IAAI,CAACc,SAAS,KAAKpwB,SAAS,IAAIsvB,IAAI,CAACc,SAAS,KAAK,IAAI,GAAId,IAAI,CAACc,SAAS,CAAClhB,QAAQ,CAAC,CAAC,GAAG,EAAE;IAE7GgG,MAAM,CAAC4P,SAAS,GACXwK,IAAI,CAACxK,SAAS,IAAIwK,IAAI,CAACxK,SAAS,KAAK,EAAE,GAAIwK,IAAI,CAACxK,SAAS,GACrDwK,IAAI,CAACnJ,IAAI,GAAG,GAAG,GACXmJ,IAAI,CAAC5G,IAAI,GAAG,GAAG,GACX4G,IAAI,CAACO,OAAO,GAAG,GAAG,GACdP,IAAI,CAACh3B,KAAK,GAAG,GAAG,GACb,GAAO;IAC/B4c,MAAM,CAACmb,eAAe,GAAGnb,MAAM,CAAC4P,SAAS,CAACptB,MAAM;IAChDwd,MAAM,CAACsY,iBAAiB,GAAG,CAAC,CAAC8B,IAAI,CAAC9B,iBAAiB;IACnDtY,MAAM,CAAC6W,UAAU,GAAGuD,IAAI,CAACvD,UAAU,IAAI,EAAE;IAEzC7W,MAAM,CAACkR,MAAM,GAAGkJ,IAAI,CAAClJ,MAAM,IAAI,EAAE;IACjClR,MAAM,CAACqY,YAAY,GAAGrY,MAAM,CAACkR,MAAM,CAAC1uB,MAAM;IAE1Cwd,MAAM,CAACob,IAAI,GAAI37B,OAAA,CAAOuvB,cAAc,MAAK,QAAQ,IAAIA,cAAc,GAAIA,cAAc,GAAGrZ,MAAM;IAC9FqK,MAAM,CAACpY,QAAQ,GAAGwyB,IAAI,CAACxyB,QAAQ,IAAIoY,MAAM,CAACob,IAAI,CAACxzB,QAAQ;IAEvDoY,MAAM,CAACqb,SAAS,GAAG,CAAC;IAEpBrb,MAAM,CAACsb,SAAS,GAAG,KAAK;IACxBtb,MAAM,CAACiC,MAAM,GAAG,EAAE;IAElBjC,MAAM,CAACub,cAAc,GAAGnB,IAAI,CAACmB,cAAc,IAAK,YAAY,CAAC,CAAE;IAE/D,OAAOvb,MAAM;EACjB;AACJ,CAAC;AAED,IAAIwb,mBAAmB,GAAGrB,iBAAiB;;AAE3C;AACA;AACA;AACA;AACA;AACA;AACA,IAAIhyB,MAAM,GAAG,SAATA,MAAMA,CAAajB,OAAO,EAAEkzB,IAAI,EAAE;EAClC,IAAIvK,KAAK,GAAG,IAAI;EAChB,IAAI4L,mBAAmB,GAAG,KAAK;EAE/B,IAAI,OAAOv0B,OAAO,KAAK,QAAQ,EAAE;IAC7B2oB,KAAK,CAAC3oB,OAAO,GAAGU,QAAQ,CAACsN,aAAa,CAAChO,OAAO,CAAC;IAC/Cu0B,mBAAmB,GAAG7zB,QAAQ,CAAC4X,gBAAgB,CAACtY,OAAO,CAAC,CAAC1E,MAAM,GAAG,CAAC;EACvE,CAAC,MAAM;IACL,IAAI,OAAO0E,OAAO,CAAC1E,MAAM,KAAK,WAAW,IAAI0E,OAAO,CAAC1E,MAAM,GAAG,CAAC,EAAE;MAC/DqtB,KAAK,CAAC3oB,OAAO,GAAGA,OAAO,CAAC,CAAC,CAAC;MAC1Bu0B,mBAAmB,GAAGv0B,OAAO,CAAC1E,MAAM,GAAG,CAAC;IAC1C,CAAC,MAAM;MACLqtB,KAAK,CAAC3oB,OAAO,GAAGA,OAAO;IACzB;EACF;EAEA,IAAI,CAAC2oB,KAAK,CAAC3oB,OAAO,EAAE;IAChB,MAAM,IAAI2mB,KAAK,CAAC,sCAAsC,CAAC;EAC3D;EAEA,IAAI4N,mBAAmB,EAAE;IACvB,IAAI;MACF;MACAjC,OAAO,CAACC,IAAI,CAAC,oFAAoF,CAAC;IACpG,CAAC,CAAC,OAAOlyB,CAAC,EAAE;MACV;IAAA;EAEJ;EAEA6yB,IAAI,CAACc,SAAS,GAAGrL,KAAK,CAAC3oB,OAAO,CAACnE,KAAK;EAEpC8sB,KAAK,CAAC6L,UAAU,GAAGvzB,MAAM,CAACgyB,iBAAiB,CAAC9N,MAAM,CAAC,CAAC,CAAC,EAAE+N,IAAI,CAAC;EAE5DvK,KAAK,CAAC8L,IAAI,CAAC,CAAC;AAChB,CAAC;AAEDxzB,MAAM,CAACrI,SAAS,GAAG;EACf67B,IAAI,EAAE,SAAAA,KAAA,EAAY;IACd,IAAI9L,KAAK,GAAG,IAAI;MAAE+L,GAAG,GAAG/L,KAAK,CAAC6L,UAAU;;IAExC;IACA,IAAI,CAACE,GAAG,CAACjB,OAAO,IAAI,CAACiB,GAAG,CAACx4B,KAAK,IAAI,CAACw4B,GAAG,CAACrzB,UAAU,IAAI,CAACqzB,GAAG,CAACpI,IAAI,IAAI,CAACoI,GAAG,CAAC3K,IAAI,IAAK2K,GAAG,CAACvD,YAAY,KAAK,CAAC,IAAI,CAACuD,GAAG,CAACnM,MAAO,EAAE;MACpHI,KAAK,CAACgM,OAAO,CAACD,GAAG,CAACV,SAAS,CAAC;MAE5B;IACJ;IAEAU,GAAG,CAACP,SAAS,GAAGlzB,MAAM,CAACsuB,IAAI,CAACoB,YAAY,CAAC+D,GAAG,CAAC1K,MAAM,CAAC;IAEpDrB,KAAK,CAAC+J,SAAS,GAAGzxB,MAAM,CAACsuB,IAAI,CAACmD,SAAS,CAAC,CAAC;IACzC/J,KAAK,CAACmK,cAAc,GAAG,EAAE;IACzBnK,KAAK,CAACiM,UAAU,GAAG,EAAE;IAErBjM,KAAK,CAACkM,gBAAgB,GAAGlM,KAAK,CAACmM,QAAQ,CAAChV,IAAI,CAAC6I,KAAK,CAAC;IACnDA,KAAK,CAACoM,iBAAiB,GAAGpM,KAAK,CAACqM,SAAS,CAAClV,IAAI,CAAC6I,KAAK,CAAC;IACrDA,KAAK,CAACsM,eAAe,GAAGtM,KAAK,CAACuM,OAAO,CAACpV,IAAI,CAAC6I,KAAK,CAAC;IACjDA,KAAK,CAACwM,aAAa,GAAGxM,KAAK,CAACyM,KAAK,CAACtV,IAAI,CAAC6I,KAAK,CAAC;IAC7CA,KAAK,CAAC0M,cAAc,GAAG1M,KAAK,CAAC2M,MAAM,CAACxV,IAAI,CAAC6I,KAAK,CAAC;IAE/CA,KAAK,CAAC4M,mBAAmB,CAAC,CAAC;IAE3B5M,KAAK,CAAC3oB,OAAO,CAACwmB,gBAAgB,CAAC,OAAO,EAAEmC,KAAK,CAACkM,gBAAgB,CAAC;IAC/DlM,KAAK,CAAC3oB,OAAO,CAACwmB,gBAAgB,CAAC,SAAS,EAAEmC,KAAK,CAACoM,iBAAiB,CAAC;IAClEpM,KAAK,CAAC3oB,OAAO,CAACwmB,gBAAgB,CAAC,OAAO,EAAEmC,KAAK,CAACsM,eAAe,CAAC;IAC9DtM,KAAK,CAAC3oB,OAAO,CAACwmB,gBAAgB,CAAC,KAAK,EAAEmC,KAAK,CAACwM,aAAa,CAAC;IAC1DxM,KAAK,CAAC3oB,OAAO,CAACwmB,gBAAgB,CAAC,MAAM,EAAEmC,KAAK,CAAC0M,cAAc,CAAC;IAG5D1M,KAAK,CAAC6M,kBAAkB,CAAC,CAAC;IAC1B7M,KAAK,CAAC8M,iBAAiB,CAAC,CAAC;IACzB9M,KAAK,CAAC+M,iBAAiB,CAAC,CAAC;IACzB/M,KAAK,CAACgN,oBAAoB,CAAC,CAAC;;IAE5B;IACA;IACA,IAAIjB,GAAG,CAACV,SAAS,IAAKU,GAAG,CAACnM,MAAM,IAAI,CAACmM,GAAG,CAAC3D,iBAAkB,EAAE;MACzDpI,KAAK,CAACgM,OAAO,CAACD,GAAG,CAACV,SAAS,CAAC;IAChC;EACJ,CAAC;EAEDuB,mBAAmB,EAAE,SAAAA,oBAAA,EAAY;IAC7B,IAAI5M,KAAK,GAAG,IAAI;MAAE+L,GAAG,GAAG/L,KAAK,CAAC6L,UAAU;IACxC,IAAI,CAACE,GAAG,CAAChB,eAAe,EAAE;IAE1B,IAAIkC,cAAc,GAAGjN,KAAK,CAAC3oB,OAAO,CAACue,SAAS,CAAC,IAAI,CAAC;IAClDoK,KAAK,CAAC3oB,OAAO,CAAC61B,UAAU,CAACC,YAAY,CAACF,cAAc,EAAEjN,KAAK,CAAC3oB,OAAO,CAAC;IAEpE2oB,KAAK,CAACoN,iBAAiB,GAAGpN,KAAK,CAAC3oB,OAAO;IACvC2oB,KAAK,CAACoN,iBAAiB,CAACn8B,IAAI,GAAG,QAAQ;IAEvC+uB,KAAK,CAAC3oB,OAAO,GAAG41B,cAAc;IAC9BjN,KAAK,CAAC3oB,OAAO,CAACoE,EAAE,GAAG,EAAE;EACzB,CAAC;EAEDuxB,oBAAoB,EAAE,SAAAA,qBAAA,EAAY;IAC9B,IAAIhN,KAAK,GAAG,IAAI;MAAE+L,GAAG,GAAG/L,KAAK,CAAC6L,UAAU;IAExC,IAAI,CAACE,GAAG,CAACjB,OAAO,EAAE;MACd;IACJ;IAEAiB,GAAG,CAACsB,gBAAgB,GAAG,IAAI/0B,MAAM,CAAC+mB,gBAAgB,CAC9C0M,GAAG,CAACzM,kBAAkB,EACtByM,GAAG,CAACxM,mBAAmB,EACvBwM,GAAG,CAACvM,mBAAmB,EACvBuM,GAAG,CAACtM,0BAA0B,EAC9BsM,GAAG,CAACrM,mBAAmB,EACvBqM,GAAG,CAACpM,kBAAkB,EACtBoM,GAAG,CAACnM,MAAM,EACVmM,GAAG,CAAClM,gBAAgB,EACpBkM,GAAG,CAACjM,UAAU,EACdiM,GAAG,CAAChM,SACR,CAAC;EACL,CAAC;EAEDgN,iBAAiB,EAAE,SAAAA,kBAAA,EAAW;IAC1B,IAAI/M,KAAK,GAAG,IAAI;MAAE+L,GAAG,GAAG/L,KAAK,CAAC6L,UAAU;IAExC,IAAI,CAACE,GAAG,CAACpI,IAAI,EAAE;MACX;IACJ;IAEAoI,GAAG,CAACnB,aAAa,GAAG,IAAItyB,MAAM,CAACkrB,aAAa,CAACuI,GAAG,CAACtI,WAAW,EAAEsI,GAAG,CAACrI,UAAU,CAAC;IAC7EqI,GAAG,CAAC1K,MAAM,GAAG0K,GAAG,CAACnB,aAAa,CAAChJ,SAAS,CAAC,CAAC;IAC1CmK,GAAG,CAACvD,YAAY,GAAGuD,GAAG,CAAC1K,MAAM,CAAC1uB,MAAM;IACpCo5B,GAAG,CAACP,SAAS,GAAGlzB,MAAM,CAACsuB,IAAI,CAACoB,YAAY,CAAC+D,GAAG,CAAC1K,MAAM,CAAC;EACxD,CAAC;EAEDyL,iBAAiB,EAAE,SAAAA,kBAAA,EAAY;IAC3B,IAAI9M,KAAK,GAAG,IAAI;MAAE+L,GAAG,GAAG/L,KAAK,CAAC6L,UAAU;IAExC,IAAI,CAACE,GAAG,CAAC3K,IAAI,EAAE;MACX;IACJ;IAEA2K,GAAG,CAAClB,aAAa,GAAG,IAAIvyB,MAAM,CAAC0oB,aAAa,CAAC+K,GAAG,CAAC9K,WAAW,EAAE8K,GAAG,CAAC7K,OAAO,EAAE6K,GAAG,CAAC5K,OAAO,CAAC;IACvF4K,GAAG,CAAC1K,MAAM,GAAG0K,GAAG,CAAClB,aAAa,CAACjJ,SAAS,CAAC,CAAC;IAC1CmK,GAAG,CAACvD,YAAY,GAAGuD,GAAG,CAAC1K,MAAM,CAAC1uB,MAAM;IACpCo5B,GAAG,CAACP,SAAS,GAAGlzB,MAAM,CAACsuB,IAAI,CAACoB,YAAY,CAAC+D,GAAG,CAAC1K,MAAM,CAAC;EACxD,CAAC;EAEDwL,kBAAkB,EAAE,SAAAA,mBAAA,EAAY;IAC5B,IAAI7M,KAAK,GAAG,IAAI;MAAE+L,GAAG,GAAG/L,KAAK,CAAC6L,UAAU;IAExC,IAAI,CAACE,GAAG,CAACx4B,KAAK,EAAE;MACZ;IACJ;;IAEA;IACA;IACA,IAAI;MACAw4B,GAAG,CAACpB,cAAc,GAAG,IAAIryB,MAAM,CAAC0sB,cAAc,CAC1C,IAAI+G,GAAG,CAACR,IAAI,CAACjzB,MAAM,CAACg1B,kBAAkB,CAACvB,GAAG,CAACrB,eAAe,CAAC,EAC3DqB,GAAG,CAAChM,SACR,CAAC;IACL,CAAC,CAAC,OAAOmJ,EAAE,EAAE;MACT,MAAM,IAAIlL,KAAK,CAAC,kEAAkE,CAAC;IACvF;EACJ,CAAC;EAEDqO,SAAS,EAAE,SAAAA,UAAUxyB,KAAK,EAAE;IACxB,IAAImmB,KAAK,GAAG,IAAI;MACZuN,QAAQ,GAAG1zB,KAAK,CAAC2zB,KAAK,IAAI3zB,KAAK,CAACC,OAAO;IAE3CkmB,KAAK,CAACmK,cAAc,GAAGnK,KAAK,CAAC3oB,OAAO,CAACnE,KAAK;IAC1C8sB,KAAK,CAACiM,UAAU,GAAGsB,QAAQ,KAAK,CAAC;EACrC,CAAC;EAEDpB,QAAQ,EAAE,SAAAA,SAAUtyB,KAAK,EAAE;IACvB,IAAImmB,KAAK,GAAG,IAAI;MAAE+L,GAAG,GAAG/L,KAAK,CAAC6L,UAAU;MACpCjF,IAAI,GAAGtuB,MAAM,CAACsuB,IAAI;IAEtB5G,KAAK,CAACiM,UAAU,GAAGjM,KAAK,CAACiM,UAAU,IAAIpyB,KAAK,CAAC4zB,SAAS,KAAK,uBAAuB;IAElF,IAAIC,aAAa,GAAG9G,IAAI,CAACG,gBAAgB,CAAC/G,KAAK,CAACmK,cAAc,EAAE4B,GAAG,CAAChM,SAAS,EAAEgM,GAAG,CAAC/E,UAAU,CAAC;IAE9F,IAAIhH,KAAK,CAACiM,UAAU,IAAIyB,aAAa,EAAE;MACnC3B,GAAG,CAAC4B,sBAAsB,GAAGD,aAAa;IAC9C,CAAC,MAAM;MACH3B,GAAG,CAAC4B,sBAAsB,GAAG,KAAK;IACtC;IAEA,IAAI,CAAC3B,OAAO,CAAC,IAAI,CAAC30B,OAAO,CAACnE,KAAK,CAAC;EACpC,CAAC;EAEDq5B,OAAO,EAAE,SAAAA,QAAA,EAAY;IACjB,IAAIvM,KAAK,GAAG,IAAI;MACZ+L,GAAG,GAAG/L,KAAK,CAAC6L,UAAU;IAC1B7L,KAAK,CAACmK,cAAc,GAAGnK,KAAK,CAAC3oB,OAAO,CAACnE,KAAK;IAE1C,IAAI64B,GAAG,CAACnM,MAAM,IAAImM,GAAG,CAAC3D,iBAAiB,IAAI,CAACpI,KAAK,CAAC3oB,OAAO,CAACnE,KAAK,EAAE;MAC7D,IAAI,CAAC84B,OAAO,CAACD,GAAG,CAACnM,MAAM,CAAC;IAC5B;IAEAtnB,MAAM,CAACsuB,IAAI,CAACgC,eAAe,CAAC5I,KAAK,CAAC3oB,OAAO,EAAE00B,GAAG,CAACnM,MAAM,EAAEmM,GAAG,CAAChM,SAAS,EAAEgM,GAAG,CAAC/E,UAAU,CAAC;EACzF,CAAC;EAEDyF,KAAK,EAAE,SAAAA,MAAU/0B,CAAC,EAAE;IAChB,IAAI,CAACY,MAAM,CAACsuB,IAAI,CAACmC,kBAAkB,CAAC,IAAI,CAAC1xB,OAAO,CAACnE,KAAK,CAAC,EAAE;IACzD,IAAI,CAAC06B,iBAAiB,CAACl2B,CAAC,CAAC;IACzB,IAAI,CAACs0B,OAAO,CAAC,EAAE,CAAC;EACpB,CAAC;EAEDW,MAAM,EAAE,SAAAA,OAAUj1B,CAAC,EAAE;IACjB,IAAI,CAACY,MAAM,CAACsuB,IAAI,CAACmC,kBAAkB,CAAC,IAAI,CAAC1xB,OAAO,CAACnE,KAAK,CAAC,EAAE;IACzD,IAAI,CAAC06B,iBAAiB,CAACl2B,CAAC,CAAC;EAC7B,CAAC;EAEDk2B,iBAAiB,EAAE,SAAAA,kBAAUl2B,CAAC,EAAE;IAC5B,IAAIsoB,KAAK,GAAG,IAAI;MACZ+L,GAAG,GAAG/L,KAAK,CAAC6L,UAAU;MACtBjF,IAAI,GAAGtuB,MAAM,CAACsuB,IAAI;MAClBiH,UAAU,GAAG7N,KAAK,CAAC3oB,OAAO,CAACnE,KAAK;MAChC46B,UAAU,GAAG,EAAE;IAEnB,IAAI,CAAC/B,GAAG,CAACX,aAAa,EAAE;MACpB0C,UAAU,GAAGlH,IAAI,CAACe,eAAe,CAACkG,UAAU,EAAE9B,GAAG,CAAChM,SAAS,EAAEgM,GAAG,CAAC/E,UAAU,CAAC;IAChF,CAAC,MAAM;MACH8G,UAAU,GAAGD,UAAU;IAC3B;IAEA,IAAI;MACA,IAAIn2B,CAAC,CAACq2B,aAAa,EAAE;QACjBr2B,CAAC,CAACq2B,aAAa,CAACC,OAAO,CAAC,MAAM,EAAEF,UAAU,CAAC;MAC/C,CAAC,MAAM;QACHhoB,MAAM,CAACioB,aAAa,CAACC,OAAO,CAAC,MAAM,EAAEF,UAAU,CAAC;MACpD;MAEAp2B,CAAC,CAACM,cAAc,CAAC,CAAC;IACtB,CAAC,CAAC,OAAOkxB,EAAE,EAAE;MACT;IAAA;EAER,CAAC;EAED8C,OAAO,EAAE,SAAAA,QAAU94B,KAAK,EAAE;IACtB,IAAI8sB,KAAK,GAAG,IAAI;MAAE+L,GAAG,GAAG/L,KAAK,CAAC6L,UAAU;MACpCjF,IAAI,GAAGtuB,MAAM,CAACsuB,IAAI;;IAEtB;IACA;IACA;IACA;IACA;IACA,IAAIqH,kBAAkB,GAAGrH,IAAI,CAACG,gBAAgB,CAAC7zB,KAAK,EAAE64B,GAAG,CAAChM,SAAS,EAAEgM,GAAG,CAAC/E,UAAU,CAAC;IACpF,IAAI,CAAC+E,GAAG,CAACjB,OAAO,IAAIiB,GAAG,CAAC4B,sBAAsB,IAAI,CAACM,kBAAkB,EAAE;MACnE/6B,KAAK,GAAG0zB,IAAI,CAACkB,OAAO,CAAC50B,KAAK,EAAEA,KAAK,CAACP,MAAM,GAAGo5B,GAAG,CAAC4B,sBAAsB,CAACh7B,MAAM,CAAC;IACjF;;IAEA;IACA,IAAIo5B,GAAG,CAACx4B,KAAK,EAAE;MACX,IAAIw4B,GAAG,CAACnM,MAAM,KAAK,CAACmM,GAAG,CAAC3D,iBAAiB,IAAIl1B,KAAK,CAACP,MAAM,CAAC,EAAE;QACxDo5B,GAAG,CAAC3Z,MAAM,GAAG2Z,GAAG,CAACnM,MAAM,GAAGmM,GAAG,CAACpB,cAAc,CAAClK,MAAM,CAACvtB,KAAK,CAAC,CAACmX,KAAK,CAAC0hB,GAAG,CAACnM,MAAM,CAACjtB,MAAM,CAAC;MACvF,CAAC,MAAM;QACHo5B,GAAG,CAAC3Z,MAAM,GAAG2Z,GAAG,CAACpB,cAAc,CAAClK,MAAM,CAACvtB,KAAK,CAAC;MACjD;MACA8sB,KAAK,CAACkO,gBAAgB,CAAC,CAAC;MAExB;IACJ;;IAEA;IACA,IAAInC,GAAG,CAACjB,OAAO,EAAE;MACb;MACA;MACA,IAAIiB,GAAG,CAACnM,MAAM,IAAImM,GAAG,CAAC3D,iBAAiB,IAAIl1B,KAAK,CAACP,MAAM,KAAK,CAAC,EAAE;QAC3Do5B,GAAG,CAAC3Z,MAAM,GAAG,EAAE;MACnB,CAAC,MAAM;QACH2Z,GAAG,CAAC3Z,MAAM,GAAG2Z,GAAG,CAACsB,gBAAgB,CAAC5M,MAAM,CAACvtB,KAAK,CAAC;MACnD;MACA8sB,KAAK,CAACkO,gBAAgB,CAAC,CAAC;MAExB;IACJ;;IAEA;IACA,IAAInC,GAAG,CAAC3K,IAAI,EAAE;MACVluB,KAAK,GAAG64B,GAAG,CAAClB,aAAa,CAAChJ,gBAAgB,CAAC3uB,KAAK,CAAC;IACrD;;IAEA;IACA,IAAI64B,GAAG,CAACpI,IAAI,EAAE;MACVzwB,KAAK,GAAG64B,GAAG,CAACnB,aAAa,CAAC1G,gBAAgB,CAAChxB,KAAK,CAAC;IACrD;;IAEA;IACAA,KAAK,GAAG0zB,IAAI,CAACe,eAAe,CAACz0B,KAAK,EAAE64B,GAAG,CAAChM,SAAS,EAAEgM,GAAG,CAAC/E,UAAU,CAAC;;IAElE;IACA9zB,KAAK,GAAG0zB,IAAI,CAACqB,sBAAsB,CAAC/0B,KAAK,EAAE64B,GAAG,CAACnM,MAAM,EAAEmM,GAAG,CAAC7D,YAAY,EAAE6D,GAAG,CAAC3Z,MAAM,EAAE2Z,GAAG,CAAChM,SAAS,EAAEgM,GAAG,CAAC/E,UAAU,EAAE+E,GAAG,CAAC3D,iBAAiB,EAAE2D,GAAG,CAACjM,UAAU,EAAEiM,GAAG,CAAClM,gBAAgB,CAAC;;IAEhL;IACA3sB,KAAK,GAAG64B,GAAG,CAACf,WAAW,GAAGpE,IAAI,CAACE,KAAK,CAAC5zB,KAAK,EAAE,QAAQ,CAAC,GAAGA,KAAK;;IAE7D;IACAA,KAAK,GAAG64B,GAAG,CAACd,SAAS,GAAG/3B,KAAK,CAACi7B,WAAW,CAAC,CAAC,GAAGj7B,KAAK;IACnDA,KAAK,GAAG64B,GAAG,CAACb,SAAS,GAAGh4B,KAAK,CAAC0vB,WAAW,CAAC,CAAC,GAAG1vB,KAAK;;IAEnD;IACA,IAAI64B,GAAG,CAACnM,MAAM,EAAE;MACZ,IAAImM,GAAG,CAACjM,UAAU,EAAE;QAChB5sB,KAAK,GAAGA,KAAK,GAAG64B,GAAG,CAACnM,MAAM;MAC9B,CAAC,MAAM;QACH1sB,KAAK,GAAG64B,GAAG,CAACnM,MAAM,GAAG1sB,KAAK;MAC9B;;MAGA;MACA,IAAI64B,GAAG,CAACvD,YAAY,KAAK,CAAC,EAAE;QACxBuD,GAAG,CAAC3Z,MAAM,GAAGlf,KAAK;QAClB8sB,KAAK,CAACkO,gBAAgB,CAAC,CAAC;QAExB;MACJ;IACJ;;IAEA;IACA,IAAInC,GAAG,CAACrzB,UAAU,EAAE;MAChBsnB,KAAK,CAACoO,4BAA4B,CAACl7B,KAAK,CAAC;IAC7C;;IAEA;IACAA,KAAK,GAAG0zB,IAAI,CAACkB,OAAO,CAAC50B,KAAK,EAAE64B,GAAG,CAACP,SAAS,CAAC;;IAE1C;IACAO,GAAG,CAAC3Z,MAAM,GAAGwU,IAAI,CAAC2B,iBAAiB,CAC/Br1B,KAAK,EACL64B,GAAG,CAAC1K,MAAM,EAAE0K,GAAG,CAACvD,YAAY,EAC5BuD,GAAG,CAAChM,SAAS,EAAEgM,GAAG,CAAC/E,UAAU,EAAE+E,GAAG,CAACtD,iBACvC,CAAC;IAEDzI,KAAK,CAACkO,gBAAgB,CAAC,CAAC;EAC5B,CAAC;EAEDE,4BAA4B,EAAE,SAAAA,6BAAUl7B,KAAK,EAAE;IAC3C,IAAI8sB,KAAK,GAAG,IAAI;MAAE+L,GAAG,GAAG/L,KAAK,CAAC6L,UAAU;MACpCjF,IAAI,GAAGtuB,MAAM,CAACsuB,IAAI;MAClByH,cAAc;;IAElB;IACA,IAAIzH,IAAI,CAACkB,OAAO,CAACiE,GAAG,CAAC3Z,MAAM,EAAE,CAAC,CAAC,KAAKwU,IAAI,CAACkB,OAAO,CAAC50B,KAAK,EAAE,CAAC,CAAC,EAAE;MACxD;IACJ;IAEAm7B,cAAc,GAAG/1B,MAAM,CAACktB,kBAAkB,CAACgB,OAAO,CAACtzB,KAAK,EAAE64B,GAAG,CAACvB,oBAAoB,CAAC;IAEnFuB,GAAG,CAAC1K,MAAM,GAAGgN,cAAc,CAAChN,MAAM;IAClC0K,GAAG,CAACvD,YAAY,GAAGuD,GAAG,CAAC1K,MAAM,CAAC1uB,MAAM;IACpCo5B,GAAG,CAACP,SAAS,GAAG5E,IAAI,CAACoB,YAAY,CAAC+D,GAAG,CAAC1K,MAAM,CAAC;;IAE7C;IACA,IAAI0K,GAAG,CAACtB,cAAc,KAAK4D,cAAc,CAACp9B,IAAI,EAAE;MAC5C86B,GAAG,CAACtB,cAAc,GAAG4D,cAAc,CAACp9B,IAAI;MAExC86B,GAAG,CAACpzB,uBAAuB,CAACyR,IAAI,CAAC4V,KAAK,EAAE+L,GAAG,CAACtB,cAAc,CAAC;IAC/D;EACJ,CAAC;EAEDyD,gBAAgB,EAAE,SAAAA,iBAAA,EAAY;IAC1B,IAAIlO,KAAK,GAAG,IAAI;MACZ4G,IAAI,GAAGtuB,MAAM,CAACsuB,IAAI;MAClBmF,GAAG,GAAG/L,KAAK,CAAC6L,UAAU;IAE1B,IAAI,CAAC7L,KAAK,CAAC3oB,OAAO,EAAE;MAChB;IACJ;IAEA,IAAIi3B,MAAM,GAAGtO,KAAK,CAAC3oB,OAAO,CAACk3B,YAAY;IACvC,IAAIlH,QAAQ,GAAGrH,KAAK,CAAC3oB,OAAO,CAACnE,KAAK;IAClC,IAAIo0B,QAAQ,GAAGyE,GAAG,CAAC3Z,MAAM;IAEzBkc,MAAM,GAAG1H,IAAI,CAACO,qBAAqB,CAACmH,MAAM,EAAEjH,QAAQ,EAAEC,QAAQ,EAAEyE,GAAG,CAAChM,SAAS,EAAEgM,GAAG,CAAC/E,UAAU,CAAC;;IAE9F;IACA;IACA,IAAIhH,KAAK,CAAC+J,SAAS,EAAE;MACjBjkB,MAAM,CAACnE,UAAU,CAAC,YAAY;QAC1Bqe,KAAK,CAAC3oB,OAAO,CAACnE,KAAK,GAAGo0B,QAAQ;QAC9BV,IAAI,CAACuC,YAAY,CAACnJ,KAAK,CAAC3oB,OAAO,EAAEi3B,MAAM,EAAEvC,GAAG,CAACh0B,QAAQ,EAAE,KAAK,CAAC;QAC7DioB,KAAK,CAACwO,kBAAkB,CAAC,CAAC;MAC9B,CAAC,EAAE,CAAC,CAAC;MAEL;IACJ;IAEAxO,KAAK,CAAC3oB,OAAO,CAACnE,KAAK,GAAGo0B,QAAQ;IAC9B,IAAIyE,GAAG,CAAChB,eAAe,EAAE/K,KAAK,CAACoN,iBAAiB,CAACl6B,KAAK,GAAG8sB,KAAK,CAACzmB,WAAW,CAAC,CAAC;IAE5EqtB,IAAI,CAACuC,YAAY,CAACnJ,KAAK,CAAC3oB,OAAO,EAAEi3B,MAAM,EAAEvC,GAAG,CAACh0B,QAAQ,EAAE,KAAK,CAAC;IAC7DioB,KAAK,CAACwO,kBAAkB,CAAC,CAAC;EAC9B,CAAC;EAEDA,kBAAkB,EAAE,SAAAA,mBAAA,EAAY;IAC5B,IAAIxO,KAAK,GAAG,IAAI;MACZ+L,GAAG,GAAG/L,KAAK,CAAC6L,UAAU;IAE1BE,GAAG,CAACL,cAAc,CAACthB,IAAI,CAAC4V,KAAK,EAAE;MAC3B7P,MAAM,EAAE;QACJ7W,IAAI,EAAE0mB,KAAK,CAAC3oB,OAAO,CAACiC,IAAI;QACxBpG,KAAK,EAAE64B,GAAG,CAAC3Z,MAAM;QACjBqc,QAAQ,EAAEzO,KAAK,CAACzmB,WAAW,CAAC;MAChC;IACJ,CAAC,CAAC;EACN,CAAC;EAEDm1B,kBAAkB,EAAE,SAAAA,mBAAUhE,eAAe,EAAE;IAC3C,IAAI1K,KAAK,GAAG,IAAI;MAAE+L,GAAG,GAAG/L,KAAK,CAAC6L,UAAU;IAExCE,GAAG,CAACrB,eAAe,GAAGA,eAAe;IACrC1K,KAAK,CAAC6M,kBAAkB,CAAC,CAAC;IAC1B7M,KAAK,CAACmM,QAAQ,CAAC,CAAC;EACpB,CAAC;EAEDh2B,WAAW,EAAE,SAAAA,YAAUjD,KAAK,EAAE;IAC1B,IAAI8sB,KAAK,GAAG,IAAI;MAAE+L,GAAG,GAAG/L,KAAK,CAAC6L,UAAU;IAExC34B,KAAK,GAAGA,KAAK,KAAK+H,SAAS,IAAI/H,KAAK,KAAK,IAAI,GAAGA,KAAK,CAACiX,QAAQ,CAAC,CAAC,GAAG,EAAE;IAErE,IAAI4hB,GAAG,CAACjB,OAAO,EAAE;MACb53B,KAAK,GAAGA,KAAK,CAACstB,OAAO,CAAC,GAAG,EAAEuL,GAAG,CAACzM,kBAAkB,CAAC;IACtD;IAEAyM,GAAG,CAAC4B,sBAAsB,GAAG,KAAK;IAElC3N,KAAK,CAAC3oB,OAAO,CAACnE,KAAK,GAAGA,KAAK;IAC3B8sB,KAAK,CAACgM,OAAO,CAAC94B,KAAK,CAAC;EACxB,CAAC;EAEDqG,WAAW,EAAE,SAAAA,YAAA,EAAY;IACrB,IAAIymB,KAAK,GAAG,IAAI;MACZ+L,GAAG,GAAG/L,KAAK,CAAC6L,UAAU;MACtBjF,IAAI,GAAGtuB,MAAM,CAACsuB,IAAI;MAClB6H,QAAQ,GAAGzO,KAAK,CAAC3oB,OAAO,CAACnE,KAAK;IAElC,IAAI64B,GAAG,CAACZ,kBAAkB,EAAE;MACxBsD,QAAQ,GAAG7H,IAAI,CAACqB,sBAAsB,CAACwG,QAAQ,EAAE1C,GAAG,CAACnM,MAAM,EAAEmM,GAAG,CAAC7D,YAAY,EAAE6D,GAAG,CAAC3Z,MAAM,EAAE2Z,GAAG,CAAChM,SAAS,EAAEgM,GAAG,CAAC/E,UAAU,EAAE+E,GAAG,CAAC3D,iBAAiB,EAAE2D,GAAG,CAACjM,UAAU,EAAEiM,GAAG,CAAClM,gBAAgB,CAAC;IAC1L;IAEA,IAAIkM,GAAG,CAACjB,OAAO,EAAE;MACb2D,QAAQ,GAAG1C,GAAG,CAACsB,gBAAgB,CAAC9zB,WAAW,CAACk1B,QAAQ,CAAC;IACzD,CAAC,MAAM;MACHA,QAAQ,GAAG7H,IAAI,CAACe,eAAe,CAAC8G,QAAQ,EAAE1C,GAAG,CAAChM,SAAS,EAAEgM,GAAG,CAAC/E,UAAU,CAAC;IAC5E;IAEA,OAAOyH,QAAQ;EACnB,CAAC;EAED/M,gBAAgB,EAAE,SAAAA,iBAAA,EAAY;IAC1B,IAAI1B,KAAK,GAAG,IAAI;MACZ+L,GAAG,GAAG/L,KAAK,CAAC6L,UAAU;IAE1B,OAAOE,GAAG,CAAC3K,IAAI,GAAG2K,GAAG,CAAClB,aAAa,CAACnJ,gBAAgB,CAAC,CAAC,GAAG,EAAE;EAC/D,CAAC;EAEDkC,gBAAgB,EAAE,SAAAA,iBAAA,EAAY;IAC1B,IAAI5D,KAAK,GAAG,IAAI;MACZ+L,GAAG,GAAG/L,KAAK,CAAC6L,UAAU;IAE1B,OAAOE,GAAG,CAACpI,IAAI,GAAGoI,GAAG,CAACnB,aAAa,CAAChH,gBAAgB,CAAC,CAAC,GAAG,EAAE;EAC/D,CAAC;EAED2E,iBAAiB,EAAE,SAAAA,kBAAA,EAAY;IAC3B,OAAO,IAAI,CAAClxB,OAAO,CAACnE,KAAK;EAC7B,CAAC;EAEDy7B,OAAO,EAAE,SAAAA,QAAA,EAAY;IACjB,IAAI3O,KAAK,GAAG,IAAI;IAEhBA,KAAK,CAAC3oB,OAAO,CAACu3B,mBAAmB,CAAC,OAAO,EAAE5O,KAAK,CAACkM,gBAAgB,CAAC;IAClElM,KAAK,CAAC3oB,OAAO,CAACu3B,mBAAmB,CAAC,SAAS,EAAE5O,KAAK,CAACoM,iBAAiB,CAAC;IACrEpM,KAAK,CAAC3oB,OAAO,CAACu3B,mBAAmB,CAAC,OAAO,EAAE5O,KAAK,CAACsM,eAAe,CAAC;IACjEtM,KAAK,CAAC3oB,OAAO,CAACu3B,mBAAmB,CAAC,KAAK,EAAE5O,KAAK,CAACwM,aAAa,CAAC;IAC7DxM,KAAK,CAAC3oB,OAAO,CAACu3B,mBAAmB,CAAC,MAAM,EAAE5O,KAAK,CAAC0M,cAAc,CAAC;EACnE,CAAC;EAEDviB,QAAQ,EAAE,SAAAA,SAAA,EAAY;IAClB,OAAO,iBAAiB;EAC5B;AACJ,CAAC;AAED7R,MAAM,CAAC+mB,gBAAgB,GAAG0B,kBAAkB;AAC5CzoB,MAAM,CAAC0oB,aAAa,GAAGuC,eAAe;AACtCjrB,MAAM,CAACkrB,aAAa,GAAGuB,eAAe;AACtCzsB,MAAM,CAAC0sB,cAAc,GAAGO,gBAAgB;AACxCjtB,MAAM,CAACktB,kBAAkB,GAAGmB,oBAAoB;AAChDruB,MAAM,CAACsuB,IAAI,GAAGyD,MAAM;AACpB/xB,MAAM,CAACgyB,iBAAiB,GAAGqB,mBAAmB;;AAE9C;AACA,CAAE/7B,OAAA,CAAOuvB,cAAc,MAAK,QAAQ,IAAIA,cAAc,GAAIA,cAAc,GAAGrZ,MAAM,EAAE,QAAQ,CAAC,GAAGxN,MAAM;;AAErG;AACA,IAAIu2B,QAAQ,GAAGv2B,MAAM;AAENu2B,uEAAQ,E;;;;;;;;;;;;;ACrhDvB,IAAIC,CAAC;;AAEL;AACAA,CAAC,GAAI,YAAW;EACf,OAAO,IAAI;AACZ,CAAC,CAAE,CAAC;AAEJ,IAAI;EACH;EACAA,CAAC,GAAGA,CAAC,IAAI,IAAIC,QAAQ,CAAC,aAAa,CAAC,CAAC,CAAC;AACvC,CAAC,CAAC,OAAOr3B,CAAC,EAAE;EACX;EACA,IAAI,QAAOoO,MAAM,iCAAAlW,OAAA,CAANkW,MAAM,OAAK,QAAQ,EAAEgpB,CAAC,GAAGhpB,MAAM;AAC3C;;AAEA;AACA;AACA;;AAEAtS,MAAM,CAACC,OAAO,GAAGq7B,CAAC,C","file":"cartridges/int_paypal/cartridge/static/default/js/int_paypal_pvp.js","sourcesContent":[" \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = \"./cartridges/int_paypal/cartridge/client/default/js/pvp.js\");\n","'use strict';\n\n/**\n * Populate the Billing Address Summary View\n * @param {string} parentSelector - the top level DOM selector for a unique address summary\n * @param {Object} address - the address data\n */\nfunction populateAddressSummary(parentSelector, address) {\n $.each(address, function (attr) {\n var val = address[attr];\n $('.' + attr, parentSelector).text(val || '');\n });\n}\n\n/**\n * returns a formed ');\n }\n var safeShipping = shipping || {};\n var shippingAddress = safeShipping.shippingAddress || {};\n\n if (isBilling && isNew && !order.billing.matchingAddressId) {\n shippingAddress = order.billing.billingAddress.address || {};\n isNew = false;\n isSelected = true;\n safeShipping.UUID = 'manual-entry';\n }\n\n var uuid = safeShipping.UUID ? safeShipping.UUID : 'new';\n var optionEl = $('';\n }).join('');\n getQuantitySelector($productContainer).empty().html(optionsHtml);\n }\n}\n\n/**\n * updates the product view when a product attribute is selected or deselected or when\n * changing quantity\n * @param {string} selectedValueUrl - the Url for the selected variation value\n * @param {jQuery} $productContainer - DOM element for current product\n */\nfunction attributeSelect(selectedValueUrl, $productContainer) {\n if (selectedValueUrl) {\n $('body').trigger('product:beforeAttributeSelect',\n { url: selectedValueUrl, container: $productContainer });\n\n $.ajax({\n url: selectedValueUrl,\n method: 'GET',\n success: function (data) {\n handleVariantResponse(data, $productContainer);\n updateOptions(data.product.optionsHtml, $productContainer);\n updateQuantities(data.product.quantities, $productContainer);\n $('body').trigger('product:afterAttributeSelect',\n { data: data, container: $productContainer });\n $.spinner().stop();\n },\n error: function () {\n $.spinner().stop();\n }\n });\n }\n}\n\n/**\n * Retrieves url to use when adding a product to the cart\n *\n * @return {string} - The provided URL to use when adding a product to the cart\n */\nfunction getAddToCartUrl() {\n return $('.add-to-cart-url').val();\n}\n\n/**\n * Parses the html for a modal window\n * @param {string} html - representing the body and footer of the modal window\n *\n * @return {Object} - Object with properties body and footer.\n */\nfunction parseHtml(html) {\n var $html = $('
').append($.parseHTML(html));\n\n var body = $html.find('.choice-of-bonus-product');\n var footer = $html.find('.modal-footer').children();\n\n return { body: body, footer: footer };\n}\n\n/**\n * Retrieves url to use when adding a product to the cart\n *\n * @param {Object} data - data object used to fill in dynamic portions of the html\n */\nfunction chooseBonusProducts(data) {\n $('.modal-body').spinner().start();\n\n if ($('#chooseBonusProductModal').length !== 0) {\n $('#chooseBonusProductModal').remove();\n }\n var bonusUrl;\n if (data.bonusChoiceRuleBased) {\n bonusUrl = data.showProductsUrlRuleBased;\n } else {\n bonusUrl = data.showProductsUrlListBased;\n }\n\n var htmlString = ''\n + '
'\n + ''\n + '
'\n + ''\n + '
'\n + '
'\n + ' ' + data.labels.selectprods + ''\n + ' '\n + '
'\n + '
'\n + '
'\n + '
'\n + '
'\n + '
';\n $('body').append(htmlString);\n $('.modal-body').spinner().start();\n\n $.ajax({\n url: bonusUrl,\n method: 'GET',\n dataType: 'json',\n success: function (response) {\n var parsedHtml = parseHtml(response.renderedTemplate);\n $('#chooseBonusProductModal .modal-body').empty();\n $('#chooseBonusProductModal .enter-message').text(response.enterDialogMessage);\n $('#chooseBonusProductModal .modal-header .close .sr-only').text(response.closeButtonText);\n $('#chooseBonusProductModal .modal-body').html(parsedHtml.body);\n $('#chooseBonusProductModal .modal-footer').html(parsedHtml.footer);\n $('#chooseBonusProductModal').modal('show');\n $.spinner().stop();\n },\n error: function () {\n $.spinner().stop();\n }\n });\n}\n\n/**\n * Updates the Mini-Cart quantity value after the customer has pressed the \"Add to Cart\" button\n * @param {string} response - ajax response from clicking the add to cart button\n */\nfunction handlePostCartAdd(response) {\n $('.minicart').trigger('count:update', response);\n var messageType = response.error ? 'alert-danger' : 'alert-success';\n // show add to cart toast\n if (response.newBonusDiscountLineItem\n && Object.keys(response.newBonusDiscountLineItem).length !== 0) {\n chooseBonusProducts(response.newBonusDiscountLineItem);\n } else {\n if ($('.add-to-cart-messages').length === 0) {\n $('body').append(\n '
'\n );\n }\n\n $('.add-to-cart-messages').append(\n '
'\n + response.message\n + '
'\n );\n\n setTimeout(function () {\n $('.add-to-basket-alert').remove();\n }, 5000);\n }\n}\n\n/**\n * Retrieves the bundle product item ID's for the Controller to replace bundle master product\n * items with their selected variants\n *\n * @return {string[]} - List of selected bundle product item ID's\n */\nfunction getChildProducts() {\n var childProducts = [];\n $('.bundle-item').each(function () {\n childProducts.push({\n pid: $(this).find('.product-id').text(),\n quantity: parseInt($(this).find('label.quantity').data('quantity'), 10)\n });\n });\n\n return childProducts.length ? JSON.stringify(childProducts) : [];\n}\n\n/**\n * Retrieve product options\n *\n * @param {jQuery} $productContainer - DOM element for current product\n * @return {string} - Product options and their selected values\n */\nfunction getOptions($productContainer) {\n var options = $productContainer\n .find('.product-option')\n .map(function () {\n var $elOption = $(this).find('.options-select');\n var urlValue = $elOption.val();\n var selectedValueId = $elOption.find('option[value=\"' + urlValue + '\"]')\n .data('value-id');\n return {\n optionId: $(this).data('option-id'),\n selectedValueId: selectedValueId\n };\n }).toArray();\n\n return JSON.stringify(options);\n}\n\n/**\n * Makes a call to the server to report the event of adding an item to the cart\n *\n * @param {string | boolean} url - a string representing the end point to hit so that the event can be recorded, or false\n */\nfunction miniCartReportingUrl(url) {\n if (url) {\n $.ajax({\n url: url,\n method: 'GET',\n success: function () {\n // reporting urls hit on the server\n },\n error: function () {\n // no reporting urls hit on the server\n }\n });\n }\n}\n\nmodule.exports = {\n attributeSelect: attributeSelect,\n methods: {\n editBonusProducts: function (data) {\n chooseBonusProducts(data);\n }\n },\n\n focusChooseBonusProductModal: function () {\n $('body').on('shown.bs.modal', '#chooseBonusProductModal', function () {\n $('#chooseBonusProductModal').siblings().attr('aria-hidden', 'true');\n $('#chooseBonusProductModal .close').focus();\n });\n },\n\n onClosingChooseBonusProductModal: function () {\n $('body').on('hidden.bs.modal', '#chooseBonusProductModal', function () {\n $('#chooseBonusProductModal').siblings().attr('aria-hidden', 'false');\n });\n },\n\n trapChooseBonusProductModalFocus: function () {\n $('body').on('keydown', '#chooseBonusProductModal', function (e) {\n var focusParams = {\n event: e,\n containerSelector: '#chooseBonusProductModal',\n firstElementSelector: '.close',\n lastElementSelector: '.add-bonus-products'\n };\n focusHelper.setTabNextFocus(focusParams);\n });\n },\n\n colorAttribute: function () {\n $(document).on('click', '[data-attr=\"color\"] button', function (e) {\n e.preventDefault();\n\n if ($(this).attr('disabled')) {\n return;\n }\n var $productContainer = $(this).closest('.set-item');\n if (!$productContainer.length) {\n $productContainer = $(this).closest('.product-detail');\n }\n\n attributeSelect($(this).attr('data-url'), $productContainer);\n });\n },\n\n selectAttribute: function () {\n $(document).on('change', 'select[class*=\"select-\"], .options-select', function (e) {\n e.preventDefault();\n\n var $productContainer = $(this).closest('.set-item');\n if (!$productContainer.length) {\n $productContainer = $(this).closest('.product-detail');\n }\n attributeSelect(e.currentTarget.value, $productContainer);\n });\n },\n\n availability: function () {\n $(document).on('change', '.quantity-select', function (e) {\n e.preventDefault();\n\n var $productContainer = $(this).closest('.product-detail');\n if (!$productContainer.length) {\n $productContainer = $(this).closest('.modal-content').find('.product-quickview');\n }\n\n if ($('.bundle-items', $productContainer).length === 0) {\n attributeSelect($(e.currentTarget).find('option:selected').data('url'),\n $productContainer);\n }\n });\n },\n\n addToCart: function () {\n $(document).on('click', 'button.add-to-cart, button.add-to-cart-global', function () {\n var addToCartUrl;\n var pid;\n var pidsObj;\n var setPids;\n\n $('body').trigger('product:beforeAddToCart', this);\n\n if ($('.set-items').length && $(this).hasClass('add-to-cart-global')) {\n setPids = [];\n\n $('.product-detail').each(function () {\n if (!$(this).hasClass('product-set-detail')) {\n setPids.push({\n pid: $(this).find('.product-id').text(),\n qty: $(this).find('.quantity-select').val(),\n options: getOptions($(this))\n });\n }\n });\n pidsObj = JSON.stringify(setPids);\n }\n\n pid = getPidValue($(this));\n\n var $productContainer = $(this).closest('.product-detail');\n if (!$productContainer.length) {\n $productContainer = $(this).closest('.quick-view-dialog').find('.product-detail');\n }\n\n addToCartUrl = getAddToCartUrl();\n\n var form = {\n pid: pid,\n pidsObj: pidsObj,\n childProducts: getChildProducts(),\n quantity: getQuantitySelected($(this))\n };\n\n if (!$('.bundle-item').length) {\n form.options = getOptions($productContainer);\n }\n\n $(this).trigger('updateAddToCartFormData', form);\n if (addToCartUrl) {\n $.ajax({\n url: addToCartUrl,\n method: 'POST',\n data: form,\n success: function (data) {\n handlePostCartAdd(data);\n $('body').trigger('product:afterAddToCart', data);\n $.spinner().stop();\n miniCartReportingUrl(data.reportingURL);\n },\n error: function () {\n $.spinner().stop();\n }\n });\n }\n });\n },\n selectBonusProduct: function () {\n $(document).on('click', '.select-bonus-product', function () {\n var $choiceOfBonusProduct = $(this).parents('.choice-of-bonus-product');\n var pid = $(this).data('pid');\n var maxPids = $('.choose-bonus-product-dialog').data('total-qty');\n var submittedQty = parseInt($choiceOfBonusProduct.find('.bonus-quantity-select').val(), 10);\n var totalQty = 0;\n $.each($('#chooseBonusProductModal .selected-bonus-products .selected-pid'), function () {\n totalQty += $(this).data('qty');\n });\n totalQty += submittedQty;\n var optionID = $choiceOfBonusProduct.find('.product-option').data('option-id');\n var valueId = $choiceOfBonusProduct.find('.options-select option:selected').data('valueId');\n if (totalQty <= maxPids) {\n var selectedBonusProductHtml = ''\n + '
'\n + '
'\n + $choiceOfBonusProduct.find('.product-name').html()\n + '
'\n + '
'\n + '
'\n ;\n $('#chooseBonusProductModal .selected-bonus-products').append(selectedBonusProductHtml);\n $('.pre-cart-products').html(totalQty);\n $('.selected-bonus-products .bonus-summary').removeClass('alert-danger');\n } else {\n $('.selected-bonus-products .bonus-summary').addClass('alert-danger');\n }\n });\n },\n removeBonusProduct: function () {\n $(document).on('click', '.selected-pid', function () {\n $(this).remove();\n var $selected = $('#chooseBonusProductModal .selected-bonus-products .selected-pid');\n var count = 0;\n if ($selected.length) {\n $selected.each(function () {\n count += parseInt($(this).data('qty'), 10);\n });\n }\n\n $('.pre-cart-products').html(count);\n $('.selected-bonus-products .bonus-summary').removeClass('alert-danger');\n });\n },\n enableBonusProductSelection: function () {\n $('body').on('bonusproduct:updateSelectButton', function (e, response) {\n $('button.select-bonus-product', response.$productContainer).attr('disabled',\n (!response.product.readyToOrder || !response.product.available));\n var pid = response.product.id;\n $('button.select-bonus-product', response.$productContainer).data('pid', pid);\n });\n },\n showMoreBonusProducts: function () {\n $(document).on('click', '.show-more-bonus-products', function () {\n var url = $(this).data('url');\n $('.modal-content').spinner().start();\n $.ajax({\n url: url,\n method: 'GET',\n success: function (html) {\n var parsedHtml = parseHtml(html);\n $('.modal-body').append(parsedHtml.body);\n $('.show-more-bonus-products:first').remove();\n $('.modal-content').spinner().stop();\n },\n error: function () {\n $('.modal-content').spinner().stop();\n }\n });\n });\n },\n addBonusProductsToCart: function () {\n $(document).on('click', '.add-bonus-products', function () {\n var $readyToOrderBonusProducts = $('.choose-bonus-product-dialog .selected-pid');\n var queryString = '?pids=';\n var url = $('.choose-bonus-product-dialog').data('addtocarturl');\n var pidsObject = {\n bonusProducts: []\n };\n\n $.each($readyToOrderBonusProducts, function () {\n var qtyOption =\n parseInt($(this)\n .data('qty'), 10);\n\n var option = null;\n if (qtyOption > 0) {\n if ($(this).data('optionid') && $(this).data('option-selected-value')) {\n option = {};\n option.optionId = $(this).data('optionid');\n option.productId = $(this).data('pid');\n option.selectedValueId = $(this).data('option-selected-value');\n }\n pidsObject.bonusProducts.push({\n pid: $(this).data('pid'),\n qty: qtyOption,\n options: [option]\n });\n pidsObject.totalQty = parseInt($('.pre-cart-products').html(), 10);\n }\n });\n queryString += JSON.stringify(pidsObject);\n queryString = queryString + '&uuid=' + $('.choose-bonus-product-dialog').data('uuid');\n queryString = queryString + '&pliuuid=' + $('.choose-bonus-product-dialog').data('pliuuid');\n $.spinner().start();\n $.ajax({\n url: url + queryString,\n method: 'POST',\n success: function (data) {\n $.spinner().stop();\n if (data.error) {\n $('#chooseBonusProductModal').modal('hide');\n if ($('.add-to-cart-messages').length === 0) {\n $('body').append('
');\n }\n $('.add-to-cart-messages').append(\n '
'\n + data.errorMessage + '
'\n );\n setTimeout(function () {\n $('.add-to-basket-alert').remove();\n }, 3000);\n } else {\n $('.configure-bonus-product-attributes').html(data);\n $('.bonus-products-step2').removeClass('hidden-xl-down');\n $('#chooseBonusProductModal').modal('hide');\n\n if ($('.add-to-cart-messages').length === 0) {\n $('body').append('
');\n }\n $('.minicart-quantity').html(data.totalQty);\n $('.add-to-cart-messages').append(\n '
'\n + data.msgSuccess + '
'\n );\n setTimeout(function () {\n $('.add-to-basket-alert').remove();\n if ($('.cart-page').length) {\n location.reload();\n }\n }, 1500);\n }\n },\n error: function () {\n $.spinner().stop();\n }\n });\n });\n },\n\n getPidValue: getPidValue,\n getQuantitySelected: getQuantitySelected,\n miniCartReportingUrl: miniCartReportingUrl\n};\n","/* eslint-disable require-jsdoc */\nmodule.exports = function(containerElement) {\n function Constructor() {\n this.containerEl = containerElement;\n }\n\n Constructor.prototype.show = function() {\n this.containerEl.style.display = 'block';\n };\n\n Constructor.prototype.hide = function() {\n this.containerEl.style.display = 'none';\n };\n\n return new Constructor();\n};\n","const loaderInstance = require('../components/loader');\nconst helper = require('./helper');\nconst $loaderContainer = document.querySelector('.paypalLoader');\nconst loader = loaderInstance($loaderContainer);\nconst CONTENT_TYPE_JSON = 'application/json';\n\nconst AlertHandlerModel = require('../models/alertHandler');\nconst alertHandler = new AlertHandlerModel();\n\n/**\n * Updates information about an order\n * @param {boolean} isAddressNeedChange - if we need to change shipping address\n * @returns {Object} Call handling result\n */\nfunction updateOrderData(isAddressNeedChange = false) {\n loader.show();\n\n return $.ajax({\n url: helper.getUrlWithCsrfToken([window.paypalUrls.updateOrderData,\n '?isCartFlow=true', '&isAddressNeedChange=', isAddressNeedChange].join('')),\n type: 'PATCH',\n success: () => {\n loader.hide();\n window.location.href = window.paypalUrls.placeOrderStage;\n },\n error: (err) => {\n const error = JSON.parse(err.responseText);\n\n loader.hide();\n alertHandler.showError(error.errorMsg);\n\n if (error.transactionExpired) {\n location.reload();\n }\n }\n });\n}\n\n/**\n * Gets Billing Agreement Token\n *\n * @param {boolean} isCartFlow - billing agreement flow from cart\n * @param {boolean} isSkipShippingAddress - whether skip or add possibility to edit the shipping address in PayPal window\n * @returns {string} billingToken - returns a JSON response that includes token, an approval URL\n */\nfunction getBillingAgreementToken(isCartFlow, isSkipShippingAddress = false) {\n const url = helper.getUrlWithCsrfToken([window.paypalUrls.createBillingAgreementToken,\n '?isCartFlow=', isCartFlow, '&isSkipShippingAddress=', isSkipShippingAddress].join(''));\n\n return $.get(url)\n .then((data) => data);\n}\n\n/**\n * Gets Billing Agreement\n * After buyer approval, you use a billing agreement token to create the agreement.\n * @returns {Object} JSON response body that includes the billing agreement ID,\n * the state of the agreement, which is ACTIVE, and information about the payer\n */\nfunction createBillingAgreementCall() {\n return $.ajax({\n url: helper.getUrlWithCsrfToken(window.paypalUrls.createBillingAgreement),\n type: 'POST',\n contentType: CONTENT_TYPE_JSON\n });\n}\n\n/**\n * Create billing formData from fields data\n *\n * @param {Object} fieldsData - fields data values\n * @param {Element} $paypalButton - paypal button selector\n * @returns {Object} cart billing form data\n */\nfunction createCartBillingFormData(fieldsData, $paypalButton) {\n const cartBillingFormData = new FormData();\n\n if (!$paypalButton) {\n $paypalButton = document.getElementById('paypal-static-image')\n || document.getElementById('paypal-image')\n || document.getElementById('venmo-image');\n }\n\n const cartBillingFields = $paypalButton && JSON.parse($paypalButton.getAttribute('data-paypal-billing-form-fields'));\n\n Object.entries(cartBillingFields)\n .forEach(entry => {\n const [key, field] = entry;\n\n if (typeof field === 'object') {\n cartBillingFormData.append(field.name, fieldsData && fieldsData[key] ? fieldsData[key] : field.value);\n }\n });\n\n return cartBillingFormData;\n}\n\n/**\n * Calls to returnFromCart endpoint for Static image button, redirects to place order stage or shows error if it exists\n * @param {boolean} isAddressNeedChange - true if static image address same as BA\n * @returns {Object} Call handling result\n */\nfunction returnFromCart(isAddressNeedChange = false) {\n loader.show();\n\n return helper.returnFromCart(isAddressNeedChange)\n .catch((error) => {\n loader.hide();\n alertHandler.showError(error.responseText);\n });\n}\n\n/**\n * Calls to Paypal-ValidateStaticImage endpoint\n * @returns {Promise} promise from fetch with response from Paypal-ValidateStaticImage endpoint\n */\nfunction validateStaticImageAddress() {\n const paypalStaticImage = document.getElementById('paypal-static-image')\n || document.getElementById('paypal-image');\n\n return fetch(helper.getUrlWithCsrfToken(window.paypalUrls.validateStaticImage), {\n method: 'POST',\n headers: {\n 'Content-Type': CONTENT_TYPE_JSON\n },\n body: JSON.stringify({\n email: paypalStaticImage.getAttribute('data-paypal-default-ba-email'),\n formFields: paypalStaticImage.getAttribute('data-paypal-billing-form-fields')\n })\n })\n .then(response => response.json())\n .then(data => {\n return data.isAddressNeedChange;\n })\n .catch(() => {\n return false;\n });\n}\n\n/**\n * Call finishPayNow endpoint\n * @param {string} fundingSource The current paypal funding source\n * @returns {Promise} ajax call\n */\nfunction finishPayNowFlow(fundingSource) {\n const $usedPaymentMethod = document.querySelector('#usedPaymentMethod');\n const pmName = $usedPaymentMethod ? $usedPaymentMethod.value : fundingSource;\n\n return $.ajax({\n url: helper.getUrlWithCsrfToken(window.paypalUrls.finishPayNowFlow),\n type: 'POST',\n contentType: CONTENT_TYPE_JSON,\n data: JSON.stringify({\n pmName\n })\n });\n}\n\n/**\n * Makes call on saving a PayPal default address to the storefront customer.\n * @param {Object} addressObject PayPal address information.\n * @param {boolean} isAccountPage Identifies whether the source page is account.\n * @returns {Object} Whether a success or failed JSON response body.\n */\nfunction savePaypalDefaultAddress(addressObject, isAccountPage) {\n return $.ajax({\n url: window.paypalUrls.savePaypalDefaultAddress,\n type: 'POST',\n contentType: CONTENT_TYPE_JSON,\n data: JSON.stringify({ addressObject, isAccountPage })\n });\n}\n\n/**\n * Finish a PayPal payment by PayPal Pay Now flow\n * @param {string} usedPaymentMethod Current payment method name\n */\nfunction finishPayNowPayment(usedPaymentMethod) {\n finishPayNowFlow(usedPaymentMethod)\n .then(({ redirectUrl }) => {\n loader.hide();\n helper.processPayNowConfirmForm(redirectUrl);\n })\n .catch(function() {\n loader.hide();\n });\n}\n\n/**\n * Creates and sets a payPal order id\n * @param {Object} paymentSourceData The payment source data (card, apple_pay...))\n * @returns {string} paypal order id\n */\nfunction getPaypalOrderId(paymentSourceData) {\n let url = helper.getUrlWithCsrfToken(window.paypalUrls.getPaypalOrderId);\n\n url = paymentSourceData ? [url, '&paymentSourceData=', JSON.stringify(paymentSourceData)].join('') : url;\n\n return $.ajax({\n url: url,\n type: 'GET',\n contentType: CONTENT_TYPE_JSON,\n async: false\n }).responseJSON.id;\n}\n\n/**\n * Validates the hosted fields\n * @param {Object} fieldsState contains fields and validation from PP side\n * @returns {Promise} call from server with validation result\n */\nfunction validateHostedFields(fieldsState) {\n return fetch(helper.getUrlWithCsrfToken(window.paypalUrls.validateHostedFields), {\n method: 'POST',\n body: JSON.stringify(fieldsState),\n headers: { 'Content-Type': 'application/json' }\n });\n}\n\nexport {\n updateOrderData,\n getBillingAgreementToken,\n createBillingAgreementCall,\n returnFromCart,\n finishPayNowFlow,\n createCartBillingFormData,\n savePaypalDefaultAddress,\n finishPayNowPayment,\n getPaypalOrderId,\n validateStaticImageAddress,\n validateHostedFields\n};\n","'use strict';\n\nconst defaultStyle = {\n color: 'gold',\n shape: 'rect',\n layout: 'vertical',\n label: 'paypal',\n tagline: false\n};\n\nconst HIDE_CLASS = 'none';\nconst PRODUCT_DETAIL_CLASS = '.product-detail';\nconst PDP_PRICE_VALUE_CLASS = '.price .sales .value';\nconst INVALID_CLASSNAME = 'is-invalid';\n\nconst base = require('base/product/base');\n\n/**\n * Gets paypal button styles\n * @param {Element} button - button element\n * @returns {Object} with button styles or if error appears with default styles\n */\nfunction getPaypalButtonStyle(button) {\n try {\n const config = button.getAttribute('data-paypal-button-config');\n\n if (config) {\n const buttonConfigs = JSON.parse(config);\n\n return buttonConfigs.style;\n }\n\n return {\n style: defaultStyle\n };\n } catch (error) {\n return {\n style: defaultStyle\n };\n }\n}\n\n/**\n * Creates a redirecting form to Order-Confirm endpoint\n * @param {Object} param The helping object for creating a from\n * @returns {Object} form element\n */\nfunction createConfirmForm(param) {\n const form = $('
')\n .appendTo(document.body)\n .attr({\n method: 'POST',\n action: param.url\n });\n\n $('')\n .appendTo(form)\n .attr({\n name: 'orderID',\n value: param.orderID\n });\n\n $('')\n .appendTo(form)\n .attr({\n name: 'orderToken',\n value: param.orderToken\n });\n\n return form;\n}\n\n/**\n * Prepare and submits form in order to confirm order with Lpm\n * @param {string} redirectUrl Redirect Url\n */\nfunction processPayNowConfirmForm(redirectUrl) {\n const splitUrl = redirectUrl.split('?');\n const url = splitUrl[0];\n const paramsString = splitUrl[1];\n const searchParams = new URLSearchParams(paramsString);\n const formParam = {\n orderID: searchParams.get('orderID'),\n orderToken: searchParams.get('orderToken'),\n url: url\n };\n\n const form = createConfirmForm(formParam);\n\n form.submit();\n}\n\n/**\n * Return payment method name in lovercase\n * @param {string} paymentMethodName Payment method name\n * @returns {string} Paymnet method name\n */\nfunction getPaymentMethodToLowerCase(paymentMethodName) {\n const paymentMethod = paymentMethodName.split('_');\n\n if (paymentMethod.length === 1) {\n return paymentMethodName;\n }\n\n paymentMethod.forEach(function(element, index) {\n paymentMethod[index] = element.charAt(0) + element.slice(1).toLocaleLowerCase();\n });\n\n return paymentMethod.length ? paymentMethod.join(' ') : paymentMethod[0];\n}\n\n/**\n * Creates an HTML element with the specified tag and text.\n * @param {string} tag - The tag name for the new element.\n * @param {string} text - The text content for the new element.\n * @returns {HTMLElement} A new HTML element with the specified tag and text.\n */\nfunction createHTMLElementWithText(tag, text) {\n const element = document.createElement(tag);\n\n element.textContent = text;\n\n return element;\n}\n\n/**\n * Updates html div view\n * @param {Object} order Order object\n * @param {Array} html Array of HTML elements\n * @returns {Array} Updated array of HTML elements\n */\nfunction appendHtml(order, html) {\n const payment = order.billing.payment;\n\n payment.selectedPaymentInstruments.forEach(function(selectedPaymentInstrument) {\n const paymentMethodId = selectedPaymentInstrument.paymentMethod;\n const fundingSource = selectedPaymentInstrument.fundingSource;\n const isVenmoUsed = fundingSource === window.paypalConstants.PAYMENT_METHOD_ID_VENMO\n && document.getElementById('venmo-content').classList.contains('active');\n\n const availablePaymentMethods = [\n window.paypalConstants.PAYMENT_METHOD_ID_PAYPAL,\n window.paypalConstants.PAYMENT_METHOD_ID_VENMO\n ];\n\n if (fundingSource === window.paypalConstants.PP_DEBIT_CREDIT_PAYMENT_TYPE) {\n html.push(createHTMLElementWithText('div', window.paypalConstants.PP_DEBIT_CREDIT_PAYMENT_TYPE));\n } else if (isVenmoUsed) {\n html.push(createHTMLElementWithText('div', window.paypalConstants.PAYMENT_METHOD_ID_VENMO));\n } else {\n html.push(createHTMLElementWithText('div', getPaymentMethodToLowerCase(paymentMethodId)));\n }\n\n if (paymentMethodId !== window.paypalConstants.PAYMENT_METHOD_ID_PAYPAL\n && selectedPaymentInstrument.maskedCreditCardNumber) {\n html.push(createHTMLElementWithText('div', selectedPaymentInstrument.maskedCreditCardNumber));\n }\n\n if (availablePaymentMethods.includes(paymentMethodId)) {\n const text = [selectedPaymentInstrument.accountHolderResource, selectedPaymentInstrument.paypalAccountHolder].join('');\n\n html.push(createHTMLElementWithText('div', text));\n }\n\n if (selectedPaymentInstrument.type) {\n html.push(createHTMLElementWithText('div', selectedPaymentInstrument.type));\n }\n\n html.push(createHTMLElementWithText('div', [order.priceTotal.charAt(0), selectedPaymentInstrument.amount].join('')));\n });\n\n return html;\n}\n\n/**\n * Updates checkout view\n * @param {Object} data Data object\n */\nfunction updateCheckoutView(data) {\n const $paymentSummary = document.querySelector('.summary-details .payment-details')\n || document.querySelector('.summary-details .js-paypal-payment-details');\n\n const order = data.order;\n const payment = order.billing.payment;\n\n let htmlToAppend = [];\n\n if ($paymentSummary && $paymentSummary.classList.contains('payment-details')) {\n // Overwrites a basic class to show a correct payment PayPal related data for buyer\n $paymentSummary.classList.remove('payment-details');\n $paymentSummary.classList.add('js-paypal-payment-details');\n }\n\n if (payment && payment.selectedPaymentInstruments && payment.selectedPaymentInstruments.length > 0) {\n htmlToAppend = appendHtml(order, htmlToAppend);\n }\n\n if ($paymentSummary && htmlToAppend.length > 0) {\n $paymentSummary.innerHTML = '';\n\n htmlToAppend.forEach(element => {\n $paymentSummary.appendChild(element);\n });\n }\n}\n\n/**\n * @param {Object} error - an error object data\n * @returns {boolean} - if an error message is displayed then true otherwise false\n */\nfunction handleValidationAddressResult(error) {\n if (error.status === 422 && /(sh|b)i(p|l){2}ing/i.test(error.responseText)) {\n const AlertHandlerModel = require('../models/alertHandler');\n const alertHandler = new AlertHandlerModel();\n\n alertHandler.showError(error.responseText);\n\n return true;\n }\n\n return false;\n}\n\n/**\n * Shows paypal button\n * @param {Object} paypalButton - paypal button element\n */\nfunction showPaypalButton(paypalButton) {\n paypalButton.classList.remove(HIDE_CLASS);\n}\n\n/**\n * Hides paypal button\n * @param {Object} paypalButton - paypal button element\n */\nfunction hidePaypalButton(paypalButton) {\n paypalButton.classList.add(HIDE_CLASS);\n}\n\n/**\n * Check if product price value is equal to zero (0.00)\n * @returns {boolean} - a true for zero value or false\n */\nfunction isProductZeroAmount() {\n const $element = document.querySelector(PDP_PRICE_VALUE_CLASS);\n\n return $element && $element.getAttribute('content') === '0.00';\n}\n\n/**\n * Get minicart qualtity\n * @returns {number} - a quantity\n */\nfunction getMiniCartQuantity() {\n const $element = document.querySelector('.minicart-quantity');\n\n return $element ? parseInt($element.textContent, 0) : 0;\n}\n\n/**\n * Handling PVP button behavior on Quick View\n * @param {Object} paypalButton - paypal button element\n * @returns {void}\n */\nfunction initPaypalButtonBehaviorOnPvp(paypalButton) {\n const isProductReadyToOrderElement = document.querySelector('.js-is-show-pp-button');\n const isProductReadyToOrder = isProductReadyToOrderElement && isProductReadyToOrderElement.value === 'true';\n\n const addToCartButton = document.querySelector('.add-to-cart, .add-to-cart-global');\n\n // Check minicart quantity and hide Paypal button if it is not empty\n if (getMiniCartQuantity() > 0 || isProductZeroAmount()) { // Check if product price is zero\n hidePaypalButton(paypalButton);\n }\n\n if (addToCartButton.disabled || !isProductReadyToOrder) {\n hidePaypalButton(paypalButton);\n }\n\n $('body').on('product:statusUpdate', function() {\n if (getMiniCartQuantity() === 0 && !isProductZeroAmount()) {\n if (addToCartButton.disabled) {\n hidePaypalButton(paypalButton);\n }\n\n if (!addToCartButton.disabled) {\n showPaypalButton(paypalButton);\n }\n } else {\n hidePaypalButton(paypalButton);\n }\n });\n}\n\n/**\n * Handling PVP/PDP button behavior on Product Set\n * @returns {void}\n */\nfunction initPayPalBtnBehaviorOnSet() {\n const miniCartQuantityElement = document.querySelector('.minicart-quantity');\n const addToCartButtons = document.querySelectorAll('.add-to-cart, .add-to-cart-global');\n\n const miniCartQuantity = parseInt(miniCartQuantityElement.textContent, 0);\n\n addToCartButtons.forEach((btn) => {\n const paypalButton = btn.parentElement\n .querySelector('.paypal-pvp-button, .paypal-pvp-button-global, .paypal-pdp-button, .paypal-pdp-button-global');\n\n const isProductReadyToOrderElement = btn.parentElement.querySelector('.js-is-show-pp-button');\n const isProductReadyToOrder = isProductReadyToOrderElement && isProductReadyToOrderElement.value === 'true';\n\n const prices = document.querySelectorAll(PDP_PRICE_VALUE_CLASS);\n\n const isWrongAmount = prices && Array.from(prices).some((price) => {\n return parseFloat(price.getAttribute('content')) <= 0;\n });\n\n if (miniCartQuantity === 0 && !isWrongAmount && isProductReadyToOrder) {\n if (btn.disabled) {\n hidePaypalButton(paypalButton);\n }\n\n if (!btn.disabled) {\n showPaypalButton(paypalButton);\n }\n } else {\n hidePaypalButton(paypalButton);\n }\n });\n\n $('body').on('product:statusUpdate', function(event) {\n const addToCartButton = event.target;\n\n const paypalButton = addToCartButton.parentElement\n .querySelector('.paypal-pvp-button, .paypal-pvp-button-global, .paypal-pdp-button, .paypal-pdp-button-global');\n\n const prices = document.querySelectorAll(PDP_PRICE_VALUE_CLASS);\n\n const isWrongAmount = prices && Array.from(prices).some((price) => {\n return parseFloat(price.getAttribute('content')) <= 0;\n });\n\n if (miniCartQuantity === 0 && !isWrongAmount) {\n if (addToCartButton.disabled) {\n hidePaypalButton(paypalButton);\n }\n\n if (!addToCartButton.disabled) {\n showPaypalButton(paypalButton);\n }\n } else {\n hidePaypalButton(paypalButton);\n }\n });\n}\n\n/**\n * Returns a payment method name by the Paypal funding source\n * @param {string} fundingSource PayPal funding source\n * @returns {string} A payment method name\n */\nfunction getPaymentMethodName(fundingSource) {\n if (fundingSource === 'venmo') {\n return window.paypalConstants.PAYMENT_METHOD_ID_VENMO;\n }\n\n if (fundingSource === 'card') {\n return window.paypalConstants.PP_DEBIT_CREDIT_PAYMENT_TYPE;\n }\n\n return fundingSource;\n}\n\n/**\n * Get CSRF Token\n * @returns {string} - csrf token value\n */\nfunction getCsrfToken() {\n let $element = document.querySelector('[name=\"csrf_token\"]');\n\n if ($element && $element.value !== '') {\n return $element.value;\n }\n\n $element = document.querySelector('[data-tokenname=\"csrf_token\"]');\n\n if ($element && $element.getAttribute('data-token') !== '') {\n return $element.getAttribute('data-token');\n }\n\n return '';\n}\n\n/**\n * Add csrf token param to url\n * @param {string} url - source url\n * @returns {string} - url with csrf_token param\n */\nfunction getUrlWithCsrfToken(url) {\n const urlInstance = new URL(url, location.origin);\n\n urlInstance.searchParams.append('csrf_token', getCsrfToken());\n\n return urlInstance.toString();\n}\n\n/**\n * It takes a selector for a PayPal button, and returns an object with the product ID and quantity of\n * the product that the button is for.\n *\n * @param {string} ppBtnSelector - PayPal button container selector.\n * @returns {void}\n */\nfunction addProductToCart(ppBtnSelector) {\n /**\n * Gets options\n * @param {Object} productContainer - product container\n * @returns {string} options\n */\n function getOptions(productContainer) {\n return JSON.stringify(Array.from(productContainer.querySelectorAll('.product-option'))\n .map(elOption => {\n const selectedValue = elOption.querySelector('.options-select').value;\n const selectedOption = elOption.querySelector(`.options-select option[value=\"${selectedValue}\"]`);\n\n return {\n optionId: elOption.getAttribute('data-option-id'),\n selectedValueId: selectedOption.getAttribute('data-value-id')\n };\n }));\n }\n\n const ppBtn = document.querySelector(ppBtnSelector);\n const bundleItems = document.querySelectorAll('.bundle-item');\n const setItems = document.querySelectorAll('.set-item');\n\n const ppBtnContainer = ppBtn.closest('.paypal-pvp-button-global, .paypal-pdp-button-global')\n || ppBtn.closest('.paypal-pdp-button, .paypal-pvp-button');\n\n const isGlobalButton = ['paypal-pvp-button-global', 'paypal-pdp-button-global'].some(className => ppBtnContainer.classList.contains(className));\n\n const pid = base.getPidValue(ppBtnContainer);\n\n let productContainer;\n let form = {};\n\n if (isGlobalButton || !setItems.length) {\n productContainer = document.querySelector(ppBtnSelector).closest(PRODUCT_DETAIL_CLASS) || document.querySelector(PRODUCT_DETAIL_CLASS);\n } else {\n productContainer = document.querySelector(ppBtnSelector).closest('.set-item');\n }\n\n if (bundleItems.length) {\n const quantity = document.querySelector('.modal-footer').querySelector('.quantity-select').value;\n\n form = {\n pid: pid,\n quantity: quantity\n };\n\n const items = Array.from(bundleItems).map(function(item) {\n return {\n pid: item.querySelector('.product-id').innerText,\n quantity: parseInt(item.querySelector('.quantity').getAttribute('data-quantity'), 10)\n };\n });\n\n form.childProducts = JSON.stringify(items);\n } else if (setItems.length && isGlobalButton) {\n const items = Array.from(setItems).map(function(item) {\n return {\n pid: base.getPidValue(item),\n qty: parseInt(base.getQuantitySelected(item), 10),\n options: getOptions(item)\n };\n });\n\n form.pidsObj = JSON.stringify(items);\n } else {\n form = {\n pid: pid,\n quantity: base.getQuantitySelected(ppBtnContainer),\n options: getOptions(productContainer)\n };\n }\n\n return $.ajax({\n url: $('.add-to-cart-url').val(),\n method: 'POST',\n async: false,\n data: form\n }).responseJSON;\n}\n\n/**\n * Removes all products from the cart in case if an error occurred\n */\nfunction removeAllProductsFromCart() {\n const url = getUrlWithCsrfToken(window.paypalUrls.removeAllProductsFromCart);\n\n fetch(url, {\n method: 'GET',\n headers: { 'Content-Type': 'application/json' }\n })\n .finally(() => {\n $.spinner().stop();\n });\n}\n\n/**\n * The function calls ReturnFromCart route and redirects the user to the place order stage.\n * @param {Object} - object from onApprove function.\n * @param {boolean} isAddressNeedChange whether address should be updated or not in case of static image button\n * @returns {Promise} object that resolves to undefined.\n */\nfunction returnFromCart({ id, payer }, isAddressNeedChange = false) {\n const api = require('./api');\n\n const that = this;\n let url = getUrlWithCsrfToken(window.paypalUrls.returnFromCart);\n let cartBillingFormData;\n\n if (that.usedPaymentMethodName) {\n cartBillingFormData = api.createCartBillingFormData({\n usedPaymentMethod: that.usedPaymentMethodName\n }, that.$payPalBtnContainer);\n } else if (id && payer) {\n cartBillingFormData = api.createCartBillingFormData({\n billingAgreementID: id,\n billingAgreementPayerEmail: payer.payer_info.email\n }, that.payPalButton);\n } else {\n url = `${url}&isAddressNeedChange=${isAddressNeedChange}`;\n cartBillingFormData = api.createCartBillingFormData();\n }\n\n return fetch(url, {\n method: 'POST',\n body: cartBillingFormData\n })\n .then((response) => response.json())\n .then((data) => {\n if (this.loader) {\n this.loader.hide();\n }\n\n data.error\n ? window.location.href = data.redirectURL\n : window.location.href = window.paypalUrls.placeOrderStage;\n });\n}\n\n/**\n * function to proceed a save parsing\n * @param {string} element string what should be parsed\n * @returns {Object} result of parsing\n */\nfunction tryParseJSON(element) {\n const AlertHandlerModel = require('../models/alertHandler');\n const alertHandler = new AlertHandlerModel();\n\n let result = null;\n\n try {\n result = JSON.parse(element);\n } catch (error) {\n alertHandler.showError(window.paypalConstants.FLASH_MESSAGE_ERROR_INTERNAL_SERVER);\n }\n\n return result;\n}\n\n/**\n * @param {mixed} value object key\n * @param {mixed} defaultValue default value\n * @returns {mixed} return current or default value\n */\nfunction getValueOr(value, defaultValue) {\n return value || defaultValue;\n}\n\n/**\n * The function updates the data attributes of a DOM element with the values from a billing address object.\n * @param {Object} billingAddress - an object that contains information about a billing address.\n * @param {string} optionClassName - a class name of option to update the attributes.\n * @returns {void}\n */\nfunction updateOptionDataAttribute(billingAddress, optionClassName) {\n const $option = document.querySelector(`.${optionClassName}`);\n\n Object.entries(billingAddress).forEach(([key, val]) => {\n if (key === 'countryCode') {\n $option.dataset[key] = val.value;\n } else {\n $option.dataset[key] = val;\n }\n });\n}\n\n/**\n * The function takes a billing address object and returns a string representation of the address.\n * @param {Object} billingAddress - an object that contains information about a billing address.\n * @returns {string} - a billing address converted to a string in specific format.\n */\nfunction getBillingAddressAsString(billingAddress) {\n let billingAddressStringRepresentation = '';\n\n if (Object.keys(billingAddress).length) {\n const firstName = getValueOr(billingAddress.firstName, '');\n const lastname = getValueOr(billingAddress.lastName, '');\n const address1 = getValueOr(billingAddress.address1, '');\n const city = getValueOr(billingAddress.city, '');\n const state = getValueOr(billingAddress.stateCode, '');\n const postalCode = getValueOr(decodeURIComponent(billingAddress.postalCode), '');\n\n billingAddressStringRepresentation = `${firstName} ${lastname} ${address1} ${city} ${state} ${postalCode}`;\n }\n\n return billingAddressStringRepresentation;\n}\n\n/**\n * The function is used to display a selected stored billing address in a dropdown menu.\n * @param {Object} billingAddress - an object that contains information about a billing address.\n * @param {string} optionClassName - a class name of the option that will display the selected billing address.\n * @returns {void}\n */\nfunction displaySelectedStoredBillingAddress(billingAddress, optionClassName) {\n const billingAddressAsString = getBillingAddressAsString(billingAddress);\n\n if (billingAddressAsString !== '') {\n const $storedCreditCardAddressOption = document.querySelector(`.${optionClassName}`);\n\n if ($storedCreditCardAddressOption) {\n $storedCreditCardAddressOption.innerText = billingAddressAsString;\n $storedCreditCardAddressOption.selected = true;\n $storedCreditCardAddressOption.hidden = false;\n } else {\n const option = document.createElement('option');\n\n option.innerHTML = billingAddressAsString;\n option.selected = true;\n option.classList.add(optionClassName);\n\n document.getElementById('billingAddressSelector').append(option);\n }\n }\n}\n\n/**\n * The function updates the billing address form and displays the stored billing address.\n * @param {Element} $selectedOption - the selected option from a saved credit cards list.\n * @returns {void}\n */\nfunction selectBillingAddress($selectedOption) {\n const baseBilling = require('base/checkout/billing');\n\n const storedCcAddressClassName = 'js-stored-credit-card-address';\n const billingAddress = tryParseJSON($selectedOption.dataset.billingAddress);\n const order = {\n billing: {\n billingAddress: {\n address: billingAddress\n }\n }\n };\n\n baseBilling.methods.updateBillingAddress(order);\n displaySelectedStoredBillingAddress(billingAddress, storedCcAddressClassName);\n updateOptionDataAttribute(billingAddress, storedCcAddressClassName);\n}\n\n/**\n * Validate whole form.\n * @param {HTMLElement} form - form to be validated.\n * @returns {Object} - with flag to indicate if form is valid and with an array of invalid fields\n */\nfunction validateForm(form) {\n if (form.checkValidity && !form.checkValidity()) {\n const invalidFields = Array.from(form.querySelectorAll('input, select')).reduce((accum, element) => {\n if (!element.validity.valid) {\n element.classList.add(INVALID_CLASSNAME);\n accum.push(element);\n }\n\n return accum;\n }, []);\n\n return {\n isValid: false,\n invalidFields: invalidFields\n };\n }\n\n return {\n isValid: true\n };\n}\n\nexport {\n getPaypalButtonStyle,\n processPayNowConfirmForm,\n updateCheckoutView,\n handleValidationAddressResult,\n initPaypalButtonBehaviorOnPvp,\n initPayPalBtnBehaviorOnSet,\n getPaymentMethodName,\n getCsrfToken,\n getUrlWithCsrfToken,\n addProductToCart,\n removeAllProductsFromCart,\n returnFromCart,\n tryParseJSON,\n selectBillingAddress,\n validateForm\n};\n","'use strict';\n\n/**\n * Alert Handling model\n */\nclass AlertHandlerModel {\n constructor() {\n this.$flashMessagesContainer = document.querySelector('.js-flash-messages-container');\n this.$alertTemplate = document.querySelector('.js-alert-template');\n }\n\n /**\n * Creates an alert message\n * @param {string} alertMessage alert message\n * @param {string} alertType alert type, i.e. danger, info, warning etc\n */\n createAlertMessage(alertMessage, alertType) {\n const $alertContainer = this.$alertTemplate.cloneNode(true);\n\n $alertContainer.classList.add(`alert-${alertType}`, 'show');\n $alertContainer.classList.remove('d-none');\n\n $alertContainer.append(alertMessage);\n this.$flashMessagesContainer.append($alertContainer);\n }\n\n /**\n * Shows an error message\n * @param {string} errorMessage error message\n */\n showError(errorMessage) {\n this.createAlertMessage(errorMessage, window.paypalConstants.FLASH_MESSAGE_DANGER);\n }\n\n /**\n * Shows a warning message\n * @param {string} warningMessage warning message\n */\n showWarning(warningMessage) {\n this.createAlertMessage(warningMessage, window.paypalConstants.FLASH_MESSAGE_WARNING);\n }\n\n /**\n * Shows an info message\n * @param {string} infoMessage info message\n */\n showInfo(infoMessage) {\n this.createAlertMessage(infoMessage, window.paypalConstants.FLASH_MESSAGE_INFO);\n }\n\n /**\n * Hides alert messages that are created by AlertHandler model\n */\n hideAlerts() {\n const $alertContainers = document.querySelectorAll('.js-alert-template');\n\n $alertContainers.forEach((element) => element.classList.add('d-none'));\n }\n}\n\nmodule.exports = AlertHandlerModel;\n","'use strict';\n\nconst api = require('../../helpers/api');\nconst helper = require('../../helpers/helper');\nconst loaderInstance = require('../../components/loader');\n\nconst $loaderContainer = document.querySelector('.paypalLoader');\n\nclass PayPalBaseBAModel {\n constructor(selector) {\n const AlertHandlerModel = require('../alertHandler');\n\n this.selector = selector;\n this.isCartFlow = false;\n this.payPalInstance = null;\n this.loader = loaderInstance($loaderContainer);\n this.alertHandler = new AlertHandlerModel();\n this.payPalButton = document.querySelector(this.selector);\n }\n\n /**\n * Create's Billing Agreement\n * @returns {string} returns BA token\n */\n createBillingAgreement() {\n const that = this;\n\n that.loader.show();\n\n return api.getBillingAgreementToken(that.isCartFlow)\n .then(data => data.token)\n .fail(err => {\n that.payPalInstance.close();\n\n that.alertHandler.showError(err.responseText);\n });\n }\n\n /**\n * Makes call to create a BA token\n * @returns {Object} JSON response body that includes the billing agreement ID,\n * the state of the agreement, which is ACTIVE, and information about the payer\n */\n onApprove() {\n return api.createBillingAgreementCall();\n }\n\n /**\n * Hides loader on paypal widget closing without errors\n */\n onCancel() {\n this.loader.hide();\n }\n\n /**\n * Shows errors if paypal widget was closed with errors\n */\n onError() {\n this.loader.hide();\n }\n\n /**\n * Hides loader on paypal widget and reinitiates the PP button\n */\n onClose() {\n this.loader.hide();\n this.initPayPalButton();\n }\n\n /**\n * Inits paypal Billing Agreement button\n */\n initPayPalButton() {\n const that = this;\n\n that.loader.show();\n\n that.payPalInstance = window.paypal.Buttons({\n createBillingAgreement: that.createBillingAgreement.bind(that),\n onApprove: that.onApprove.bind(that),\n onCancel: that.onCancel.bind(that),\n onError: that.onError.bind(that),\n onClose: that.onClose.bind(that),\n style: helper.getPaypalButtonStyle(that.payPalButton)\n });\n }\n}\n\nmodule.exports = PayPalBaseBAModel;\n","'use strict';\n\nconst helper = require('../../helpers/helper');\n\nconst PayPalBaseBAModel = require('./payPalBase');\n\nclass PayPalProductBAModel extends PayPalBaseBAModel {\n constructor(selector) {\n super(selector);\n\n this.isCartFlow = true;\n }\n\n /**\n * Adds product to the cart and creates Billing Agreement\n * @returns {string} returns JSON response that includes a data token\n */\n createBillingAgreement() {\n helper.addProductToCart(this.selector);\n\n return super.createBillingAgreement();\n }\n\n /**\n * Makes post call to create a BA and calls the returnFromCart endpoint, triggers checkout (stage = place order)\n * @returns {Object} JSON response that includes the billing agreement token\n */\n onApprove() {\n const that = this;\n\n return super.onApprove()\n .then((result) => {\n return helper.returnFromCart.call(that, result);\n })\n .fail((error) => {\n that.loader.hide();\n\n const errorResponse = error.responseJSON;\n\n if (helper.handleValidationAddressResult(error) || errorResponse.errorName === 'shipping.address.invalid') {\n helper.removeAllProductsFromCart();\n\n that.payPalInstance.close();\n\n if (errorResponse.message) {\n that.alertHandler.showError(errorResponse.message);\n }\n } else {\n window.location.href = window.paypalUrls.cartPage;\n }\n });\n }\n\n /**\n * Hides loader on paypal widget closing without errors.\n * Removes product from basket on cancel\n */\n onCancel() {\n helper.removeAllProductsFromCart();\n\n super.onCancel();\n }\n\n /**\n * Shows errors if paypal widget was closed with errors.\n * Removes product from basket on error\n */\n onError() {\n helper.removeAllProductsFromCart();\n\n super.onError();\n window.location.href = window.paypalUrls.cartPage;\n }\n\n /**\n * Inits paypal Billing Agreement button on PDP/PVP pages\n */\n initPayPalButton() {\n const that = this;\n\n super.initPayPalButton();\n\n this.payPalInstance.render(this.selector)\n .then(() => {\n that.loader.hide();\n });\n }\n}\n\nmodule.exports = PayPalProductBAModel;\n","'use strict';\n\nconst api = require('../../helpers/api');\nconst helper = require('../../helpers/helper');\n\nconst loaderInstance = require('../../components/loader');\nconst $loaderContainer = document.querySelector('.paypalLoader');\nconst $usedPaymentMethodName = document.getElementById('usedPaymentMethod');\n\nconst disableFunds = [\n 'sepa',\n 'bancontact',\n 'eps',\n 'giropay',\n 'ideal',\n 'mybank',\n 'p24',\n 'sofort',\n 'venmo',\n 'blik'\n];\n\nlet that = null;\n\n/**\n * Returns value whether LPM was used or not\n * @param {string} usedPaymentMethod - The payment method name\n * @returns {boolean} value whether LPM was used\n */\nconst isLpmUsed = usedPaymentMethod => {\n return disableFunds.indexOf(usedPaymentMethod) !== -1;\n};\n\n/**\n * Initiates a PayPalButtonBase model\n * @param {string} payPalBtnSelector A container class where PayPal button will be initiated\n */\nfunction PayPalBaseModel(payPalBtnSelector) {\n const AlertHandlerModel = require('../alertHandler');\n\n this.payPalBtnSelector = payPalBtnSelector;\n this.$payPalBtnContainer = document.querySelector(payPalBtnSelector);\n this.isPayNowFlowEnabled = window.paypalPreferences.isPayNowFlowEnabled;\n this.usedPaymentMethodName = null;\n this.loader = loaderInstance($loaderContainer);\n this.alertHandler = new AlertHandlerModel();\n\n this.isBtnEligible = null;\n this.fundingSource = null;\n}\n\n/**\n * Process the Pay Now flow\n */\nPayPalBaseModel.prototype.processPayNowFlow = function() {\n const SessionStorageModel = require('../sessionStorage');\n const sessionStorageInstance = new SessionStorageModel();\n\n api.finishPayNowPayment(this.usedPaymentMethodName);\n\n sessionStorageInstance.clear();\n};\n\n/**\n * Process the generic (not Ba) Paypal button flow\n */\nPayPalBaseModel.prototype.processGenericBtnFlow = function() {\n const $selectedPaypalAccount = document.getElementById('sessionPaypalAccount');\n const $selectedVenmoAccount = document.getElementById('sessionVenmoAccount');\n\n if (that.usedPaymentMethodName !== window.paypalConstants.PAYMENT_METHOD_ID_VENMO && $selectedPaypalAccount) {\n if ($selectedPaypalAccount.value !== '') {\n $selectedPaypalAccount.value = '';\n $selectedPaypalAccount.innerText = '';\n }\n\n $selectedPaypalAccount.selected = true;\n $selectedPaypalAccount.style.display = 'block';\n } else if ($selectedVenmoAccount) {\n $selectedVenmoAccount.selected = true;\n }\n\n document.querySelector('button.submit-payment').click();\n this.loader.hide();\n};\n\n/**\n * Saves a used payment method to hidden input\n * @param {Object} data - object with data\n */\nPayPalBaseModel.prototype.onClick = function(data) {\n if (data.fundingSource === window.paypal.FUNDING.CARD) {\n that.usedPaymentMethodName = 'PayPal Debit/Credit Card';\n } else if (data.fundingSource === window.paypal.FUNDING.VENMO) {\n that.usedPaymentMethodName = window.paypalConstants.PAYMENT_METHOD_ID_VENMO;\n } else if (data.fundingSource === window.paypal.FUNDING.PAYPAL) {\n that.usedPaymentMethodName = window.paypalConstants.PAYMENT_METHOD_ID_PAYPAL;\n } else {\n that.usedPaymentMethodName = data.fundingSource;\n }\n\n if ($usedPaymentMethodName) {\n $usedPaymentMethodName.value = that.usedPaymentMethodName;\n }\n};\n\n/**\n * Gets purchase units object, creates order and returns object with data\n * @returns {Object} With purchase units, payer and application context\n */\nPayPalBaseModel.prototype.createOrder = function() {\n return api.getPaypalOrderId();\n};\n\n/**\n * Clears session account if it exists and irrelevant errors,\n * and clicks submit payment button OR\n * Finish PayNow flow\n * Is used with adjacent instances (cart, pdp)\n */\nPayPalBaseModel.prototype.onApprove = function() {\n that.loader.show();\n\n // Pay Now flow. Using whether when an appropriate site preference is enabled or in case of LPM\n if (isLpmUsed(that.usedPaymentMethodName) || that.isPayNowFlowEnabled) {\n that.processPayNowFlow();\n } else {\n that.processGenericBtnFlow();\n }\n};\n\n/**\n * Hides loader on paypal widget closing without errors\n * Is used with adjacent instances (cart, pdp)\n */\nPayPalBaseModel.prototype.onCancel = function() {\n that.loader.hide();\n};\n\n/**\n * Shows errors if paypal widget was closed with errors\n * Is used with adjacent instances (cart, pdp)\n */\nPayPalBaseModel.prototype.onError = function() {\n that.loader.hide();\n that.alertHandler.showError(window.paypalConstants.FLASH_MESSAGE_ERROR_INTERNAL_SERVER);\n};\n\n/**\n * Renders a button mark(tab)\n */\nPayPalBaseModel.prototype.renderButtonMarks = function() {\n window.paypal.Marks({\n fundingSource: this.fundingSource\n }).render(`.js-${this.fundingSource}-mark`);\n};\n\n/**\n * Renders the payment fields for LPM\n */\nPayPalBaseModel.prototype.renderPaymentFields = function() {\n window.paypal.PaymentFields({\n fundingSource: this.fundingSource\n }).render(this.payPalBtnSelector);\n};\n\n/**\n * Shows a tab by funding source\n * @param {string} fs The funding source\n */\nPayPalBaseModel.prototype.showButtonTab = function(fs) {\n document.querySelector(`.js-nav-item-${fs}`).classList.remove('d-none');\n};\n\n/**\n * Returns a generic PayPal's button parameter object\n * @returns {Object} A generic button parameters object\n */\nPayPalBaseModel.prototype.createBtnGeneralOption = function() {\n that = this;\n\n return {\n onClick: this.onClick,\n createOrder: this.createOrder.bind(this, this.payPalBtnSelector),\n onApprove: this.onApprove,\n onCancel: this.onCancel,\n onError: this.onError,\n style: helper.getPaypalButtonStyle(this.$payPalBtnContainer)\n };\n};\n\n/**\n * Set color white or black for button (Debit/Credit Card and PayPal Credit)\n * @param {Object} property - PayPal general options (option style)\n * @param {string} fundingSource - Funding Source\n * @returns {void}\n */\nfunction setPayPalButtonColor(property, fundingSource) {\n // Only white and black colors are available for both Debit/Credit Card and PayPal Credit btn\n if ([window.paypal.FUNDING.CARD, window.paypal.FUNDING.CREDIT].includes(fundingSource)\n && !['white', 'black'].some(el => el === property.style.color)) {\n // Sets the default color in case if color is not available for both Debit/Credit Card or PayPal Credit btn\n if (fundingSource === window.paypal.FUNDING.CREDIT) {\n property.style.color = 'darkblue';\n } else {\n property.style.color = 'black';\n }\n }\n}\n\n/**\n * Initiates buttons for the PayPal tab\n * @param {Object} btnProperty The button property\n */\nPayPalBaseModel.prototype.initBtnsForPayPalTab = function(btnProperty) {\n const eligibleFundingSources = window.paypal.getFundingSources().filter(fs => window.paypal.Buttons({\n fundingSource: fs\n }).isEligible());\n\n const PAYPAL_FS = window.paypal.FUNDING.PAYPAL;\n\n let isTabShown = false;\n\n if (eligibleFundingSources.length) {\n this.renderButtonMarks.call({\n fundingSource: PAYPAL_FS\n });\n\n eligibleFundingSources.forEach(fs => {\n const isEnabled = !disableFunds.includes(fs);\n\n if (isEnabled) {\n setPayPalButtonColor(btnProperty, fs);\n\n window.paypal.Buttons(Object.assign(btnProperty, {\n fundingSource: fs\n })).render(this.payPalBtnSelector);\n\n if (!isTabShown) {\n // Shows the PayPal tab\n this.showButtonTab(PAYPAL_FS);\n isTabShown = true;\n }\n }\n });\n }\n};\n\n/**\n * Initiates a button by the provided funding source\n * @param {string} fs The function source(venmo, mybank...)\n * @param {Object} btnProperty The button property\n */\nPayPalBaseModel.prototype.initBtnByFundingSource = function(fs, btnProperty) {\n const btnInitResult = window.paypal.Buttons(Object.assign(btnProperty, {\n fundingSource: fs\n }));\n\n this.isBtnEligible = btnInitResult.isEligible();\n\n if (this.isBtnEligible) {\n this.renderButtonMarks();\n\n btnInitResult.render(this.payPalBtnSelector);\n\n this.showButtonTab(fs);\n }\n};\n\n/**\n * Initiates a Paypal button on billing checkout page\n * Is used with adjacent instances (cart, pdp, pvp)\n * @param {string} fundingSource The funding source of payment method\n */\nPayPalBaseModel.prototype.initPayPalButton = function(fundingSource) {\n this.loader.show();\n this.fundingSource = fundingSource || window.paypal.FUNDING.PAYPAL;\n\n const btnProperty = this.createBtnGeneralOption();\n\n if (fundingSource) {\n this.initBtnByFundingSource(fundingSource, btnProperty);\n } else {\n this.initBtnsForPayPalTab(btnProperty);\n }\n\n this.loader.hide();\n};\n\nmodule.exports = PayPalBaseModel;\n","'use strict';\n\nconst PayPalBaseModel = require('./payPalBase');\nconst helper = require('../../helpers/helper');\n\n/**\n * Initiates a PayPalButtonExpress model (pvp, pdp, cart, mini-cart)\n * @param {string} payPalBtnSelector A container class where PayPal button will be initiated\n */\nfunction PayPalExpressModel(payPalBtnSelector) {\n PayPalBaseModel.call(this, payPalBtnSelector);\n}\n\nPayPalExpressModel.prototype = Object.create(PayPalBaseModel.prototype);\n\n/**\n * Process the generic (not Ba) Paypal button flow (cart, pdp, mini-cart)\n */\nPayPalExpressModel.prototype.processGenericBtnFlow = function() {\n const that = this;\n\n helper.returnFromCart.call(that, {})\n .catch((error) => {\n this.loader.hide();\n\n if (this.payPalBtnSelector === '.js-paypal-button-on-cart-page') {\n this.onError(error);\n } else if (!helper.handleValidationAddressResult(error)) {\n window.location.href = window.paypalUrls.cartPage;\n } else if (this.payPalBtnSelector.includes('.paypal-pdp-button')) {\n helper.removeAllProductsFromCart();\n }\n });\n};\n\n/**\n * Initiates a Paypal button on express checkout page (Cart, mini-cart, pdp)\n * Is used with adjacent instances (cart, pdp, pvp)\n */\nPayPalExpressModel.prototype.initPayPalButton = function() {\n this.loader.show();\n\n const btnInitResult = window.paypal.Buttons(this.createBtnGeneralOption());\n\n if (btnInitResult.isEligible()) {\n btnInitResult.render(this.payPalBtnSelector);\n\n this.loader.hide();\n }\n};\n\nmodule.exports = PayPalExpressModel;\n","'use strict';\n\nconst PayPalExpressModel = require('./payPalExpress');\nconst helper = require('../../helpers/helper');\n\n/**\n * Initiates a PayPalButtonProduct model\n * @param {string} payPalBtnSelector A container class where PayPal button will be initiated\n */\nfunction PayPalProductModel(payPalBtnSelector) {\n PayPalExpressModel.call(this, payPalBtnSelector);\n}\n\nPayPalProductModel.prototype = Object.create(PayPalExpressModel.prototype);\n\n/**\n * Adds a product to the basket\n * Inherits functionality from base model\n *\n * @param {string} selector PayPal button container selector\n * @returns {Object} With purchase units, payer and application context\n */\nPayPalProductModel.prototype.createOrder = function(selector) {\n helper.addProductToCart(selector);\n\n return PayPalExpressModel.prototype.createOrder.call();\n};\n\n/**\n * Removes a product from the basket and relocates to the Cart page\n * Inherits functionality from base model\n */\nPayPalProductModel.prototype.onError = function() {\n helper.removeAllProductsFromCart();\n\n window.location.href = window.paypalUrls.cartPage;\n\n PayPalExpressModel.prototype.onError.call(this);\n};\n\n/**\n * Removes a product from the basket and relocates to the Cart page\n * Inherits functionality from base model\n */\nPayPalProductModel.prototype.onCancel = function() {\n helper.removeAllProductsFromCart();\n\n PayPalExpressModel.prototype.onCancel.call();\n};\n\nmodule.exports = PayPalProductModel;\n","'use strict';\n\n/**\n * Constructor of SessionStorageModel\n */\nfunction SessionStorageModel() {\n this.sessionStorage = window.sessionStorage;\n}\n\n/**\n * Returns a current session storage\n * @returns {Storage} An object of type storage\n */\nSessionStorageModel.prototype.get = function() {\n return this.sessionStorage;\n};\n\n/**\n * Set a new item to the session storage\n * @param {string} name A name of the item to set\n * @param {stinrg} value A value of the item to set\n */\nSessionStorageModel.prototype.setItem = function(name, value) {\n this.sessionStorage.setItem(name, value);\n};\n\n/**\n * Returns a value of session storage item\n * @param {string} name A name of the item to get\n * @returns {string} A value of session storage item\n */\nSessionStorageModel.prototype.getItem = function(name) {\n return this.sessionStorage.getItem(name);\n};\n\n/**\n * Removes an item from the session storage\n * @param {string} name A name of item to remove\n */\nSessionStorageModel.prototype.removeItem = function(name) {\n this.sessionStorage.removeItem(name);\n};\n\n/**\n * Completely clears a session storage\n */\nSessionStorageModel.prototype.clear = function() {\n this.sessionStorage.clear();\n};\n\n/**\n * Sets an active payment method tab name to the session storage\n * @param {string} value A name of the tab\n */\nSessionStorageModel.prototype.setActiveBillingPmTab = function(value) {\n this.setItem(window.paypalConstants.ACTIVE_TAB, value);\n};\n\n/**\n * Returns a name of active payment method tab\n * @returns {string} A name of the payment tab\n */\nSessionStorageModel.prototype.getActiveBillingPmTab = function() {\n return this.getItem(window.paypalConstants.ACTIVE_TAB);\n};\n\nmodule.exports = SessionStorageModel;\n","/**\n * Applies PayPal button behavior\n */\nfunction applyPaypalButtonBehavior() {\n const { initPaypalButtonBehaviorOnPvp, initPayPalBtnBehaviorOnSet } = require('./helpers/helper');\n\n const paypalButton = document.querySelector('.paypal-pvp-button-global');\n const isProductSet = Boolean(document.querySelector('.set-items'));\n\n if (isProductSet) {\n initPayPalBtnBehaviorOnSet();\n } else if (paypalButton) {\n initPaypalButtonBehaviorOnPvp(paypalButton);\n }\n}\n\n/**\n * Inits PayPal static image functionality on PVP\n */\nfunction initStaticImageFunctionality() {\n const { addProductToCart } = require('./helpers/helper');\n const { returnFromCart, validateStaticImageAddress } = require('./helpers/api');\n const loaderInstance = require('./components/loader');\n\n const paypalStaticImageContainers = document.querySelectorAll('.paypal-static-image-container');\n\n let isAddressNeedChange;\n\n validateStaticImageAddress().then(isNeed => {\n isAddressNeedChange = isNeed;\n });\n\n paypalStaticImageContainers && paypalStaticImageContainers.forEach((container, index) => {\n const staticImage = container.querySelector('#paypal-static-image');\n const selector = `${container.className}${index}`;\n\n staticImage.classList.add(selector);\n\n staticImage.addEventListener('click', function() {\n const loaderContainer = this.closest('.pdp-paypal-button-container').querySelector('.paypalLoader');\n const loader = loaderInstance(loaderContainer);\n\n loader.show();\n\n const result = addProductToCart(`.${this.className}`);\n\n if (result.cart) {\n returnFromCart(isAddressNeedChange);\n } else {\n loader.hide();\n\n throw new Error(result.message || 'Error occurs while trying to add product to the cart');\n }\n });\n });\n\n applyPaypalButtonBehavior();\n}\n\n/**\n * Inits PayPal functionality on PVP\n */\nfunction initPaypalFunctionality() {\n const PayPalProductModel = require('./models/buttons/payPalProduct');\n const PayPalProductBAModel = require('./models/billingAgreement/payPalProduct');\n\n const PP_BTN_SELECTOR = '.js-paypal-button-on-product-page';\n const isBAEnabled = window.paypalPreferences.billingAgreementEnabled;\n const paypalButtonContainers = document.querySelectorAll('.paypal-pvp-button, .paypal-pvp-button-global');\n\n paypalButtonContainers && paypalButtonContainers.forEach((container, index) => {\n const ppButton = container.querySelector(PP_BTN_SELECTOR);\n\n if (ppButton) {\n ppButton.classList.add(`${ppButton.classList[1]}-${index}-pvp`);\n\n const selector = `.${Array.from(ppButton.classList).join('.')}`;\n\n let payPalProductInstance;\n\n if (isBAEnabled) {\n payPalProductInstance = new PayPalProductBAModel(selector);\n } else {\n payPalProductInstance = new PayPalProductModel(selector);\n }\n\n payPalProductInstance.initPayPalButton();\n }\n });\n\n applyPaypalButtonBehavior();\n}\n\n/**\n * When the page loads, inject the PayPal SDK into the page and then call the initPaypalFunctionality\n * function.\n */\nfunction injectPaypalSDK() {\n const head = document.getElementsByTagName('head').item(0);\n const script = document.createElement('script');\n\n script.type = 'text/javascript';\n script.src = window.paypalSDK.cartSdkUrl;\n script.onload = initPaypalFunctionality;\n script.setAttribute('data-partner-attribution-id', window.paypalPreferences.partnerAttributionId);\n head.appendChild(script);\n}\n\n$('body').on('quickview:ready', () => {\n const isPaypalStaticImage = Boolean(document.getElementById('paypal-static-image'));\n\n if (isPaypalStaticImage) {\n initStaticImageFunctionality();\n } else if (window.paypal) {\n initPaypalFunctionality();\n } else {\n injectPaypalSDK();\n }\n});\n","var commonjsGlobal = typeof window !== 'undefined' ? window : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {};\n\nvar NumeralFormatter = function (numeralDecimalMark,\n numeralIntegerScale,\n numeralDecimalScale,\n numeralThousandsGroupStyle,\n numeralPositiveOnly,\n stripLeadingZeroes,\n prefix,\n signBeforePrefix,\n tailPrefix,\n delimiter) {\n var owner = this;\n\n owner.numeralDecimalMark = numeralDecimalMark || '.';\n owner.numeralIntegerScale = numeralIntegerScale > 0 ? numeralIntegerScale : 0;\n owner.numeralDecimalScale = numeralDecimalScale >= 0 ? numeralDecimalScale : 2;\n owner.numeralThousandsGroupStyle = numeralThousandsGroupStyle || NumeralFormatter.groupStyle.thousand;\n owner.numeralPositiveOnly = !!numeralPositiveOnly;\n owner.stripLeadingZeroes = stripLeadingZeroes !== false;\n owner.prefix = (prefix || prefix === '') ? prefix : '';\n owner.signBeforePrefix = !!signBeforePrefix;\n owner.tailPrefix = !!tailPrefix;\n owner.delimiter = (delimiter || delimiter === '') ? delimiter : ',';\n owner.delimiterRE = delimiter ? new RegExp('\\\\' + delimiter, 'g') : '';\n};\n\nNumeralFormatter.groupStyle = {\n thousand: 'thousand',\n lakh: 'lakh',\n wan: 'wan',\n none: 'none' \n};\n\nNumeralFormatter.prototype = {\n getRawValue: function (value) {\n return value.replace(this.delimiterRE, '').replace(this.numeralDecimalMark, '.');\n },\n\n format: function (value) {\n var owner = this, parts, partSign, partSignAndPrefix, partInteger, partDecimal = '';\n\n // strip alphabet letters\n value = value.replace(/[A-Za-z]/g, '')\n // replace the first decimal mark with reserved placeholder\n .replace(owner.numeralDecimalMark, 'M')\n\n // strip non numeric letters except minus and \"M\"\n // this is to ensure prefix has been stripped\n .replace(/[^\\dM-]/g, '')\n\n // replace the leading minus with reserved placeholder\n .replace(/^\\-/, 'N')\n\n // strip the other minus sign (if present)\n .replace(/\\-/g, '')\n\n // replace the minus sign (if present)\n .replace('N', owner.numeralPositiveOnly ? '' : '-')\n\n // replace decimal mark\n .replace('M', owner.numeralDecimalMark);\n\n // strip any leading zeros\n if (owner.stripLeadingZeroes) {\n value = value.replace(/^(-)?0+(?=\\d)/, '$1');\n }\n\n partSign = value.slice(0, 1) === '-' ? '-' : '';\n if (typeof owner.prefix != 'undefined') {\n if (owner.signBeforePrefix) {\n partSignAndPrefix = partSign + owner.prefix;\n } else {\n partSignAndPrefix = owner.prefix + partSign;\n }\n } else {\n partSignAndPrefix = partSign;\n }\n \n partInteger = value;\n\n if (value.indexOf(owner.numeralDecimalMark) >= 0) {\n parts = value.split(owner.numeralDecimalMark);\n partInteger = parts[0];\n partDecimal = owner.numeralDecimalMark + parts[1].slice(0, owner.numeralDecimalScale);\n }\n\n if(partSign === '-') {\n partInteger = partInteger.slice(1);\n }\n\n if (owner.numeralIntegerScale > 0) {\n partInteger = partInteger.slice(0, owner.numeralIntegerScale);\n }\n\n switch (owner.numeralThousandsGroupStyle) {\n case NumeralFormatter.groupStyle.lakh:\n partInteger = partInteger.replace(/(\\d)(?=(\\d\\d)+\\d$)/g, '$1' + owner.delimiter);\n\n break;\n\n case NumeralFormatter.groupStyle.wan:\n partInteger = partInteger.replace(/(\\d)(?=(\\d{4})+$)/g, '$1' + owner.delimiter);\n\n break;\n\n case NumeralFormatter.groupStyle.thousand:\n partInteger = partInteger.replace(/(\\d)(?=(\\d{3})+$)/g, '$1' + owner.delimiter);\n\n break;\n }\n\n if (owner.tailPrefix) {\n return partSign + partInteger.toString() + (owner.numeralDecimalScale > 0 ? partDecimal.toString() : '') + owner.prefix;\n }\n\n return partSignAndPrefix + partInteger.toString() + (owner.numeralDecimalScale > 0 ? partDecimal.toString() : '');\n }\n};\n\nvar NumeralFormatter_1 = NumeralFormatter;\n\nvar DateFormatter = function (datePattern, dateMin, dateMax) {\n var owner = this;\n\n owner.date = [];\n owner.blocks = [];\n owner.datePattern = datePattern;\n owner.dateMin = dateMin\n .split('-')\n .reverse()\n .map(function(x) {\n return parseInt(x, 10);\n });\n if (owner.dateMin.length === 2) owner.dateMin.unshift(0);\n\n owner.dateMax = dateMax\n .split('-')\n .reverse()\n .map(function(x) {\n return parseInt(x, 10);\n });\n if (owner.dateMax.length === 2) owner.dateMax.unshift(0);\n \n owner.initBlocks();\n};\n\nDateFormatter.prototype = {\n initBlocks: function () {\n var owner = this;\n owner.datePattern.forEach(function (value) {\n if (value === 'Y') {\n owner.blocks.push(4);\n } else {\n owner.blocks.push(2);\n }\n });\n },\n\n getISOFormatDate: function () {\n var owner = this,\n date = owner.date;\n\n return date[2] ? (\n date[2] + '-' + owner.addLeadingZero(date[1]) + '-' + owner.addLeadingZero(date[0])\n ) : '';\n },\n\n getBlocks: function () {\n return this.blocks;\n },\n\n getValidatedDate: function (value) {\n var owner = this, result = '';\n\n value = value.replace(/[^\\d]/g, '');\n\n owner.blocks.forEach(function (length, index) {\n if (value.length > 0) {\n var sub = value.slice(0, length),\n sub0 = sub.slice(0, 1),\n rest = value.slice(length);\n\n switch (owner.datePattern[index]) {\n case 'd':\n if (sub === '00') {\n sub = '01';\n } else if (parseInt(sub0, 10) > 3) {\n sub = '0' + sub0;\n } else if (parseInt(sub, 10) > 31) {\n sub = '31';\n }\n\n break;\n\n case 'm':\n if (sub === '00') {\n sub = '01';\n } else if (parseInt(sub0, 10) > 1) {\n sub = '0' + sub0;\n } else if (parseInt(sub, 10) > 12) {\n sub = '12';\n }\n\n break;\n }\n\n result += sub;\n\n // update remaining string\n value = rest;\n }\n });\n\n return this.getFixedDateString(result);\n },\n\n getFixedDateString: function (value) {\n var owner = this, datePattern = owner.datePattern, date = [],\n dayIndex = 0, monthIndex = 0, yearIndex = 0,\n dayStartIndex = 0, monthStartIndex = 0, yearStartIndex = 0,\n day, month, year, fullYearDone = false;\n\n // mm-dd || dd-mm\n if (value.length === 4 && datePattern[0].toLowerCase() !== 'y' && datePattern[1].toLowerCase() !== 'y') {\n dayStartIndex = datePattern[0] === 'd' ? 0 : 2;\n monthStartIndex = 2 - dayStartIndex;\n day = parseInt(value.slice(dayStartIndex, dayStartIndex + 2), 10);\n month = parseInt(value.slice(monthStartIndex, monthStartIndex + 2), 10);\n\n date = this.getFixedDate(day, month, 0);\n }\n\n // yyyy-mm-dd || yyyy-dd-mm || mm-dd-yyyy || dd-mm-yyyy || dd-yyyy-mm || mm-yyyy-dd\n if (value.length === 8) {\n datePattern.forEach(function (type, index) {\n switch (type) {\n case 'd':\n dayIndex = index;\n break;\n case 'm':\n monthIndex = index;\n break;\n default:\n yearIndex = index;\n break;\n }\n });\n\n yearStartIndex = yearIndex * 2;\n dayStartIndex = (dayIndex <= yearIndex) ? dayIndex * 2 : (dayIndex * 2 + 2);\n monthStartIndex = (monthIndex <= yearIndex) ? monthIndex * 2 : (monthIndex * 2 + 2);\n\n day = parseInt(value.slice(dayStartIndex, dayStartIndex + 2), 10);\n month = parseInt(value.slice(monthStartIndex, monthStartIndex + 2), 10);\n year = parseInt(value.slice(yearStartIndex, yearStartIndex + 4), 10);\n\n fullYearDone = value.slice(yearStartIndex, yearStartIndex + 4).length === 4;\n\n date = this.getFixedDate(day, month, year);\n }\n\n // mm-yy || yy-mm\n if (value.length === 4 && (datePattern[0] === 'y' || datePattern[1] === 'y')) {\n monthStartIndex = datePattern[0] === 'm' ? 0 : 2;\n yearStartIndex = 2 - monthStartIndex;\n month = parseInt(value.slice(monthStartIndex, monthStartIndex + 2), 10);\n year = parseInt(value.slice(yearStartIndex, yearStartIndex + 2), 10);\n\n fullYearDone = value.slice(yearStartIndex, yearStartIndex + 2).length === 2;\n\n date = [0, month, year];\n }\n\n // mm-yyyy || yyyy-mm\n if (value.length === 6 && (datePattern[0] === 'Y' || datePattern[1] === 'Y')) {\n monthStartIndex = datePattern[0] === 'm' ? 0 : 4;\n yearStartIndex = 2 - 0.5 * monthStartIndex;\n month = parseInt(value.slice(monthStartIndex, monthStartIndex + 2), 10);\n year = parseInt(value.slice(yearStartIndex, yearStartIndex + 4), 10);\n\n fullYearDone = value.slice(yearStartIndex, yearStartIndex + 4).length === 4;\n\n date = [0, month, year];\n }\n\n date = owner.getRangeFixedDate(date);\n owner.date = date;\n\n var result = date.length === 0 ? value : datePattern.reduce(function (previous, current) {\n switch (current) {\n case 'd':\n return previous + (date[0] === 0 ? '' : owner.addLeadingZero(date[0]));\n case 'm':\n return previous + (date[1] === 0 ? '' : owner.addLeadingZero(date[1]));\n case 'y':\n return previous + (fullYearDone ? owner.addLeadingZeroForYear(date[2], false) : '');\n case 'Y':\n return previous + (fullYearDone ? owner.addLeadingZeroForYear(date[2], true) : '');\n }\n }, '');\n\n return result;\n },\n\n getRangeFixedDate: function (date) {\n var owner = this,\n datePattern = owner.datePattern,\n dateMin = owner.dateMin || [],\n dateMax = owner.dateMax || [];\n\n if (!date.length || (dateMin.length < 3 && dateMax.length < 3)) return date;\n\n if (\n datePattern.find(function(x) {\n return x.toLowerCase() === 'y';\n }) &&\n date[2] === 0\n ) return date;\n\n if (dateMax.length && (dateMax[2] < date[2] || (\n dateMax[2] === date[2] && (dateMax[1] < date[1] || (\n dateMax[1] === date[1] && dateMax[0] < date[0]\n ))\n ))) return dateMax;\n\n if (dateMin.length && (dateMin[2] > date[2] || (\n dateMin[2] === date[2] && (dateMin[1] > date[1] || (\n dateMin[1] === date[1] && dateMin[0] > date[0]\n ))\n ))) return dateMin;\n\n return date;\n },\n\n getFixedDate: function (day, month, year) {\n day = Math.min(day, 31);\n month = Math.min(month, 12);\n year = parseInt((year || 0), 10);\n\n if ((month < 7 && month % 2 === 0) || (month > 8 && month % 2 === 1)) {\n day = Math.min(day, month === 2 ? (this.isLeapYear(year) ? 29 : 28) : 30);\n }\n\n return [day, month, year];\n },\n\n isLeapYear: function (year) {\n return ((year % 4 === 0) && (year % 100 !== 0)) || (year % 400 === 0);\n },\n\n addLeadingZero: function (number) {\n return (number < 10 ? '0' : '') + number;\n },\n\n addLeadingZeroForYear: function (number, fullYearMode) {\n if (fullYearMode) {\n return (number < 10 ? '000' : (number < 100 ? '00' : (number < 1000 ? '0' : ''))) + number;\n }\n\n return (number < 10 ? '0' : '') + number;\n }\n};\n\nvar DateFormatter_1 = DateFormatter;\n\nvar TimeFormatter = function (timePattern, timeFormat) {\n var owner = this;\n\n owner.time = [];\n owner.blocks = [];\n owner.timePattern = timePattern;\n owner.timeFormat = timeFormat;\n owner.initBlocks();\n};\n\nTimeFormatter.prototype = {\n initBlocks: function () {\n var owner = this;\n owner.timePattern.forEach(function () {\n owner.blocks.push(2);\n });\n },\n\n getISOFormatTime: function () {\n var owner = this,\n time = owner.time;\n\n return time[2] ? (\n owner.addLeadingZero(time[0]) + ':' + owner.addLeadingZero(time[1]) + ':' + owner.addLeadingZero(time[2])\n ) : '';\n },\n\n getBlocks: function () {\n return this.blocks;\n },\n\n getTimeFormatOptions: function () {\n var owner = this;\n if (String(owner.timeFormat) === '12') {\n return {\n maxHourFirstDigit: 1,\n maxHours: 12,\n maxMinutesFirstDigit: 5,\n maxMinutes: 60\n };\n }\n\n return {\n maxHourFirstDigit: 2,\n maxHours: 23,\n maxMinutesFirstDigit: 5,\n maxMinutes: 60\n };\n },\n\n getValidatedTime: function (value) {\n var owner = this, result = '';\n\n value = value.replace(/[^\\d]/g, '');\n\n var timeFormatOptions = owner.getTimeFormatOptions();\n\n owner.blocks.forEach(function (length, index) {\n if (value.length > 0) {\n var sub = value.slice(0, length),\n sub0 = sub.slice(0, 1),\n rest = value.slice(length);\n\n switch (owner.timePattern[index]) {\n\n case 'h':\n if (parseInt(sub0, 10) > timeFormatOptions.maxHourFirstDigit) {\n sub = '0' + sub0;\n } else if (parseInt(sub, 10) > timeFormatOptions.maxHours) {\n sub = timeFormatOptions.maxHours + '';\n }\n\n break;\n\n case 'm':\n case 's':\n if (parseInt(sub0, 10) > timeFormatOptions.maxMinutesFirstDigit) {\n sub = '0' + sub0;\n } else if (parseInt(sub, 10) > timeFormatOptions.maxMinutes) {\n sub = timeFormatOptions.maxMinutes + '';\n }\n break;\n }\n\n result += sub;\n\n // update remaining string\n value = rest;\n }\n });\n\n return this.getFixedTimeString(result);\n },\n\n getFixedTimeString: function (value) {\n var owner = this, timePattern = owner.timePattern, time = [],\n secondIndex = 0, minuteIndex = 0, hourIndex = 0,\n secondStartIndex = 0, minuteStartIndex = 0, hourStartIndex = 0,\n second, minute, hour;\n\n if (value.length === 6) {\n timePattern.forEach(function (type, index) {\n switch (type) {\n case 's':\n secondIndex = index * 2;\n break;\n case 'm':\n minuteIndex = index * 2;\n break;\n case 'h':\n hourIndex = index * 2;\n break;\n }\n });\n\n hourStartIndex = hourIndex;\n minuteStartIndex = minuteIndex;\n secondStartIndex = secondIndex;\n\n second = parseInt(value.slice(secondStartIndex, secondStartIndex + 2), 10);\n minute = parseInt(value.slice(minuteStartIndex, minuteStartIndex + 2), 10);\n hour = parseInt(value.slice(hourStartIndex, hourStartIndex + 2), 10);\n\n time = this.getFixedTime(hour, minute, second);\n }\n\n if (value.length === 4 && owner.timePattern.indexOf('s') < 0) {\n timePattern.forEach(function (type, index) {\n switch (type) {\n case 'm':\n minuteIndex = index * 2;\n break;\n case 'h':\n hourIndex = index * 2;\n break;\n }\n });\n\n hourStartIndex = hourIndex;\n minuteStartIndex = minuteIndex;\n\n second = 0;\n minute = parseInt(value.slice(minuteStartIndex, minuteStartIndex + 2), 10);\n hour = parseInt(value.slice(hourStartIndex, hourStartIndex + 2), 10);\n\n time = this.getFixedTime(hour, minute, second);\n }\n\n owner.time = time;\n\n return time.length === 0 ? value : timePattern.reduce(function (previous, current) {\n switch (current) {\n case 's':\n return previous + owner.addLeadingZero(time[2]);\n case 'm':\n return previous + owner.addLeadingZero(time[1]);\n case 'h':\n return previous + owner.addLeadingZero(time[0]);\n }\n }, '');\n },\n\n getFixedTime: function (hour, minute, second) {\n second = Math.min(parseInt(second || 0, 10), 60);\n minute = Math.min(minute, 60);\n hour = Math.min(hour, 60);\n\n return [hour, minute, second];\n },\n\n addLeadingZero: function (number) {\n return (number < 10 ? '0' : '') + number;\n }\n};\n\nvar TimeFormatter_1 = TimeFormatter;\n\nvar PhoneFormatter = function (formatter, delimiter) {\n var owner = this;\n\n owner.delimiter = (delimiter || delimiter === '') ? delimiter : ' ';\n owner.delimiterRE = delimiter ? new RegExp('\\\\' + delimiter, 'g') : '';\n\n owner.formatter = formatter;\n};\n\nPhoneFormatter.prototype = {\n setFormatter: function (formatter) {\n this.formatter = formatter;\n },\n\n format: function (phoneNumber) {\n var owner = this;\n\n owner.formatter.clear();\n\n // only keep number and +\n phoneNumber = phoneNumber.replace(/[^\\d+]/g, '');\n\n // strip non-leading +\n phoneNumber = phoneNumber.replace(/^\\+/, 'B').replace(/\\+/g, '').replace('B', '+');\n\n // strip delimiter\n phoneNumber = phoneNumber.replace(owner.delimiterRE, '');\n\n var result = '', current, validated = false;\n\n for (var i = 0, iMax = phoneNumber.length; i < iMax; i++) {\n current = owner.formatter.inputDigit(phoneNumber.charAt(i));\n\n // has ()- or space inside\n if (/[\\s()-]/g.test(current)) {\n result = current;\n\n validated = true;\n } else {\n if (!validated) {\n result = current;\n }\n // else: over length input\n // it turns to invalid number again\n }\n }\n\n // strip ()\n // e.g. US: 7161234567 returns (716) 123-4567\n result = result.replace(/[()]/g, '');\n // replace library delimiter with user customized delimiter\n result = result.replace(/[\\s-]/g, owner.delimiter);\n\n return result;\n }\n};\n\nvar PhoneFormatter_1 = PhoneFormatter;\n\nvar CreditCardDetector = {\n blocks: {\n uatp: [4, 5, 6],\n amex: [4, 6, 5],\n diners: [4, 6, 4],\n discover: [4, 4, 4, 4],\n mastercard: [4, 4, 4, 4],\n dankort: [4, 4, 4, 4],\n instapayment: [4, 4, 4, 4],\n jcb15: [4, 6, 5],\n jcb: [4, 4, 4, 4],\n maestro: [4, 4, 4, 4],\n visa: [4, 4, 4, 4],\n mir: [4, 4, 4, 4],\n unionPay: [4, 4, 4, 4],\n general: [4, 4, 4, 4]\n },\n\n re: {\n // starts with 1; 15 digits, not starts with 1800 (jcb card)\n uatp: /^(?!1800)1\\d{0,14}/,\n\n // starts with 34/37; 15 digits\n amex: /^3[47]\\d{0,13}/,\n\n // starts with 6011/65/644-649; 16 digits\n discover: /^(?:6011|65\\d{0,2}|64[4-9]\\d?)\\d{0,12}/,\n\n // starts with 300-305/309 or 36/38/39; 14 digits\n diners: /^3(?:0([0-5]|9)|[689]\\d?)\\d{0,11}/,\n\n // starts with 51-55/2221–2720; 16 digits\n mastercard: /^(5[1-5]\\d{0,2}|22[2-9]\\d{0,1}|2[3-7]\\d{0,2})\\d{0,12}/,\n\n // starts with 5019/4175/4571; 16 digits\n dankort: /^(5019|4175|4571)\\d{0,12}/,\n\n // starts with 637-639; 16 digits\n instapayment: /^63[7-9]\\d{0,13}/,\n\n // starts with 2131/1800; 15 digits\n jcb15: /^(?:2131|1800)\\d{0,11}/,\n\n // starts with 2131/1800/35; 16 digits\n jcb: /^(?:35\\d{0,2})\\d{0,12}/,\n\n // starts with 50/56-58/6304/67; 16 digits\n maestro: /^(?:5[0678]\\d{0,2}|6304|67\\d{0,2})\\d{0,12}/,\n\n // starts with 22; 16 digits\n mir: /^220[0-4]\\d{0,12}/,\n\n // starts with 4; 16 digits\n visa: /^4\\d{0,15}/,\n\n // starts with 62/81; 16 digits\n unionPay: /^(62|81)\\d{0,14}/\n },\n\n getStrictBlocks: function (block) {\n var total = block.reduce(function (prev, current) {\n return prev + current;\n }, 0);\n\n return block.concat(19 - total);\n },\n\n getInfo: function (value, strictMode) {\n var blocks = CreditCardDetector.blocks,\n re = CreditCardDetector.re;\n\n // Some credit card can have up to 19 digits number.\n // Set strictMode to true will remove the 16 max-length restrain,\n // however, I never found any website validate card number like\n // this, hence probably you don't want to enable this option.\n strictMode = !!strictMode;\n\n for (var key in re) {\n if (re[key].test(value)) {\n var matchedBlocks = blocks[key];\n return {\n type: key,\n blocks: strictMode ? this.getStrictBlocks(matchedBlocks) : matchedBlocks\n };\n }\n }\n\n return {\n type: 'unknown',\n blocks: strictMode ? this.getStrictBlocks(blocks.general) : blocks.general\n };\n }\n};\n\nvar CreditCardDetector_1 = CreditCardDetector;\n\nvar Util = {\n noop: function () {\n },\n\n strip: function (value, re) {\n return value.replace(re, '');\n },\n\n getPostDelimiter: function (value, delimiter, delimiters) {\n // single delimiter\n if (delimiters.length === 0) {\n return value.slice(-delimiter.length) === delimiter ? delimiter : '';\n }\n\n // multiple delimiters\n var matchedDelimiter = '';\n delimiters.forEach(function (current) {\n if (value.slice(-current.length) === current) {\n matchedDelimiter = current;\n }\n });\n\n return matchedDelimiter;\n },\n\n getDelimiterREByDelimiter: function (delimiter) {\n return new RegExp(delimiter.replace(/([.?*+^$[\\]\\\\(){}|-])/g, '\\\\$1'), 'g');\n },\n\n getNextCursorPosition: function (prevPos, oldValue, newValue, delimiter, delimiters) {\n // If cursor was at the end of value, just place it back.\n // Because new value could contain additional chars.\n if (oldValue.length === prevPos) {\n return newValue.length;\n }\n\n return prevPos + this.getPositionOffset(prevPos, oldValue, newValue, delimiter ,delimiters);\n },\n\n getPositionOffset: function (prevPos, oldValue, newValue, delimiter, delimiters) {\n var oldRawValue, newRawValue, lengthOffset;\n\n oldRawValue = this.stripDelimiters(oldValue.slice(0, prevPos), delimiter, delimiters);\n newRawValue = this.stripDelimiters(newValue.slice(0, prevPos), delimiter, delimiters);\n lengthOffset = oldRawValue.length - newRawValue.length;\n\n return (lengthOffset !== 0) ? (lengthOffset / Math.abs(lengthOffset)) : 0;\n },\n\n stripDelimiters: function (value, delimiter, delimiters) {\n var owner = this;\n\n // single delimiter\n if (delimiters.length === 0) {\n var delimiterRE = delimiter ? owner.getDelimiterREByDelimiter(delimiter) : '';\n\n return value.replace(delimiterRE, '');\n }\n\n // multiple delimiters\n delimiters.forEach(function (current) {\n current.split('').forEach(function (letter) {\n value = value.replace(owner.getDelimiterREByDelimiter(letter), '');\n });\n });\n\n return value;\n },\n\n headStr: function (str, length) {\n return str.slice(0, length);\n },\n\n getMaxLength: function (blocks) {\n return blocks.reduce(function (previous, current) {\n return previous + current;\n }, 0);\n },\n\n // strip prefix\n // Before type | After type | Return value\n // PEFIX-... | PEFIX-... | ''\n // PREFIX-123 | PEFIX-123 | 123\n // PREFIX-123 | PREFIX-23 | 23\n // PREFIX-123 | PREFIX-1234 | 1234\n getPrefixStrippedValue: function (value, prefix, prefixLength, prevResult, delimiter, delimiters, noImmediatePrefix, tailPrefix, signBeforePrefix) {\n // No prefix\n if (prefixLength === 0) {\n return value;\n }\n\n // Value is prefix\n if (value === prefix && value !== '') {\n return '';\n }\n\n if (signBeforePrefix && (value.slice(0, 1) == '-')) {\n var prev = (prevResult.slice(0, 1) == '-') ? prevResult.slice(1) : prevResult;\n return '-' + this.getPrefixStrippedValue(value.slice(1), prefix, prefixLength, prev, delimiter, delimiters, noImmediatePrefix, tailPrefix, signBeforePrefix);\n }\n\n // Pre result prefix string does not match pre-defined prefix\n if (prevResult.slice(0, prefixLength) !== prefix && !tailPrefix) {\n // Check if the first time user entered something\n if (noImmediatePrefix && !prevResult && value) return value;\n return '';\n } else if (prevResult.slice(-prefixLength) !== prefix && tailPrefix) {\n // Check if the first time user entered something\n if (noImmediatePrefix && !prevResult && value) return value;\n return '';\n }\n\n var prevValue = this.stripDelimiters(prevResult, delimiter, delimiters);\n\n // New value has issue, someone typed in between prefix letters\n // Revert to pre value\n if (value.slice(0, prefixLength) !== prefix && !tailPrefix) {\n return prevValue.slice(prefixLength);\n } else if (value.slice(-prefixLength) !== prefix && tailPrefix) {\n return prevValue.slice(0, -prefixLength - 1);\n }\n\n // No issue, strip prefix for new value\n return tailPrefix ? value.slice(0, -prefixLength) : value.slice(prefixLength);\n },\n\n getFirstDiffIndex: function (prev, current) {\n var index = 0;\n\n while (prev.charAt(index) === current.charAt(index)) {\n if (prev.charAt(index++) === '') {\n return -1;\n }\n }\n\n return index;\n },\n\n getFormattedValue: function (value, blocks, blocksLength, delimiter, delimiters, delimiterLazyShow) {\n var result = '',\n multipleDelimiters = delimiters.length > 0,\n currentDelimiter = '';\n\n // no options, normal input\n if (blocksLength === 0) {\n return value;\n }\n\n blocks.forEach(function (length, index) {\n if (value.length > 0) {\n var sub = value.slice(0, length),\n rest = value.slice(length);\n\n if (multipleDelimiters) {\n currentDelimiter = delimiters[delimiterLazyShow ? (index - 1) : index] || currentDelimiter;\n } else {\n currentDelimiter = delimiter;\n }\n\n if (delimiterLazyShow) {\n if (index > 0) {\n result += currentDelimiter;\n }\n\n result += sub;\n } else {\n result += sub;\n\n if (sub.length === length && index < blocksLength - 1) {\n result += currentDelimiter;\n }\n }\n\n // update remaining string\n value = rest;\n }\n });\n\n return result;\n },\n\n // move cursor to the end\n // the first time user focuses on an input with prefix\n fixPrefixCursor: function (el, prefix, delimiter, delimiters) {\n if (!el) {\n return;\n }\n\n var val = el.value,\n appendix = delimiter || (delimiters[0] || ' ');\n\n if (!el.setSelectionRange || !prefix || (prefix.length + appendix.length) <= val.length) {\n return;\n }\n\n var len = val.length * 2;\n\n // set timeout to avoid blink\n setTimeout(function () {\n el.setSelectionRange(len, len);\n }, 1);\n },\n\n // Check if input field is fully selected\n checkFullSelection: function(value) {\n try {\n var selection = window.getSelection() || document.getSelection() || {};\n return selection.toString().length === value.length;\n } catch (ex) {\n // Ignore\n }\n\n return false;\n },\n\n setSelection: function (element, position, doc) {\n if (element !== this.getActiveElement(doc)) {\n return;\n }\n\n // cursor is already in the end\n if (element && element.value.length <= position) {\n return;\n }\n\n if (element.createTextRange) {\n var range = element.createTextRange();\n\n range.move('character', position);\n range.select();\n } else {\n try {\n element.setSelectionRange(position, position);\n } catch (e) {\n // eslint-disable-next-line\n console.warn('The input element type does not support selection');\n }\n }\n },\n\n getActiveElement: function(parent) {\n var activeElement = parent.activeElement;\n if (activeElement && activeElement.shadowRoot) {\n return this.getActiveElement(activeElement.shadowRoot);\n }\n return activeElement;\n },\n\n isAndroid: function () {\n return navigator && /android/i.test(navigator.userAgent);\n },\n\n // On Android chrome, the keyup and keydown events\n // always return key code 229 as a composition that\n // buffers the user’s keystrokes\n // see https://github.com/nosir/cleave.js/issues/147\n isAndroidBackspaceKeydown: function (lastInputValue, currentInputValue) {\n if (!this.isAndroid() || !lastInputValue || !currentInputValue) {\n return false;\n }\n\n return currentInputValue === lastInputValue.slice(0, -1);\n }\n};\n\nvar Util_1 = Util;\n\n/**\n * Props Assignment\n *\n * Separate this, so react module can share the usage\n */\nvar DefaultProperties = {\n // Maybe change to object-assign\n // for now just keep it as simple\n assign: function (target, opts) {\n target = target || {};\n opts = opts || {};\n\n // credit card\n target.creditCard = !!opts.creditCard;\n target.creditCardStrictMode = !!opts.creditCardStrictMode;\n target.creditCardType = '';\n target.onCreditCardTypeChanged = opts.onCreditCardTypeChanged || (function () {});\n\n // phone\n target.phone = !!opts.phone;\n target.phoneRegionCode = opts.phoneRegionCode || 'AU';\n target.phoneFormatter = {};\n\n // time\n target.time = !!opts.time;\n target.timePattern = opts.timePattern || ['h', 'm', 's'];\n target.timeFormat = opts.timeFormat || '24';\n target.timeFormatter = {};\n\n // date\n target.date = !!opts.date;\n target.datePattern = opts.datePattern || ['d', 'm', 'Y'];\n target.dateMin = opts.dateMin || '';\n target.dateMax = opts.dateMax || '';\n target.dateFormatter = {};\n\n // numeral\n target.numeral = !!opts.numeral;\n target.numeralIntegerScale = opts.numeralIntegerScale > 0 ? opts.numeralIntegerScale : 0;\n target.numeralDecimalScale = opts.numeralDecimalScale >= 0 ? opts.numeralDecimalScale : 2;\n target.numeralDecimalMark = opts.numeralDecimalMark || '.';\n target.numeralThousandsGroupStyle = opts.numeralThousandsGroupStyle || 'thousand';\n target.numeralPositiveOnly = !!opts.numeralPositiveOnly;\n target.stripLeadingZeroes = opts.stripLeadingZeroes !== false;\n target.signBeforePrefix = !!opts.signBeforePrefix;\n target.tailPrefix = !!opts.tailPrefix;\n\n // others\n target.swapHiddenInput = !!opts.swapHiddenInput;\n \n target.numericOnly = target.creditCard || target.date || !!opts.numericOnly;\n\n target.uppercase = !!opts.uppercase;\n target.lowercase = !!opts.lowercase;\n\n target.prefix = (target.creditCard || target.date) ? '' : (opts.prefix || '');\n target.noImmediatePrefix = !!opts.noImmediatePrefix;\n target.prefixLength = target.prefix.length;\n target.rawValueTrimPrefix = !!opts.rawValueTrimPrefix;\n target.copyDelimiter = !!opts.copyDelimiter;\n\n target.initValue = (opts.initValue !== undefined && opts.initValue !== null) ? opts.initValue.toString() : '';\n\n target.delimiter =\n (opts.delimiter || opts.delimiter === '') ? opts.delimiter :\n (opts.date ? '/' :\n (opts.time ? ':' :\n (opts.numeral ? ',' :\n (opts.phone ? ' ' :\n ' '))));\n target.delimiterLength = target.delimiter.length;\n target.delimiterLazyShow = !!opts.delimiterLazyShow;\n target.delimiters = opts.delimiters || [];\n\n target.blocks = opts.blocks || [];\n target.blocksLength = target.blocks.length;\n\n target.root = (typeof commonjsGlobal === 'object' && commonjsGlobal) ? commonjsGlobal : window;\n target.document = opts.document || target.root.document;\n\n target.maxLength = 0;\n\n target.backspace = false;\n target.result = '';\n\n target.onValueChanged = opts.onValueChanged || (function () {});\n\n return target;\n }\n};\n\nvar DefaultProperties_1 = DefaultProperties;\n\n/**\n * Construct a new Cleave instance by passing the configuration object\n *\n * @param {String | HTMLElement} element\n * @param {Object} opts\n */\nvar Cleave = function (element, opts) {\n var owner = this;\n var hasMultipleElements = false;\n\n if (typeof element === 'string') {\n owner.element = document.querySelector(element);\n hasMultipleElements = document.querySelectorAll(element).length > 1;\n } else {\n if (typeof element.length !== 'undefined' && element.length > 0) {\n owner.element = element[0];\n hasMultipleElements = element.length > 1;\n } else {\n owner.element = element;\n }\n }\n\n if (!owner.element) {\n throw new Error('[cleave.js] Please check the element');\n }\n\n if (hasMultipleElements) {\n try {\n // eslint-disable-next-line\n console.warn('[cleave.js] Multiple input fields matched, cleave.js will only take the first one.');\n } catch (e) {\n // Old IE\n }\n }\n\n opts.initValue = owner.element.value;\n\n owner.properties = Cleave.DefaultProperties.assign({}, opts);\n\n owner.init();\n};\n\nCleave.prototype = {\n init: function () {\n var owner = this, pps = owner.properties;\n\n // no need to use this lib\n if (!pps.numeral && !pps.phone && !pps.creditCard && !pps.time && !pps.date && (pps.blocksLength === 0 && !pps.prefix)) {\n owner.onInput(pps.initValue);\n\n return;\n }\n\n pps.maxLength = Cleave.Util.getMaxLength(pps.blocks);\n\n owner.isAndroid = Cleave.Util.isAndroid();\n owner.lastInputValue = '';\n owner.isBackward = '';\n\n owner.onChangeListener = owner.onChange.bind(owner);\n owner.onKeyDownListener = owner.onKeyDown.bind(owner);\n owner.onFocusListener = owner.onFocus.bind(owner);\n owner.onCutListener = owner.onCut.bind(owner);\n owner.onCopyListener = owner.onCopy.bind(owner);\n\n owner.initSwapHiddenInput();\n\n owner.element.addEventListener('input', owner.onChangeListener);\n owner.element.addEventListener('keydown', owner.onKeyDownListener);\n owner.element.addEventListener('focus', owner.onFocusListener);\n owner.element.addEventListener('cut', owner.onCutListener);\n owner.element.addEventListener('copy', owner.onCopyListener);\n\n\n owner.initPhoneFormatter();\n owner.initDateFormatter();\n owner.initTimeFormatter();\n owner.initNumeralFormatter();\n\n // avoid touch input field if value is null\n // otherwise Firefox will add red box-shadow for \n if (pps.initValue || (pps.prefix && !pps.noImmediatePrefix)) {\n owner.onInput(pps.initValue);\n }\n },\n\n initSwapHiddenInput: function () {\n var owner = this, pps = owner.properties;\n if (!pps.swapHiddenInput) return;\n\n var inputFormatter = owner.element.cloneNode(true);\n owner.element.parentNode.insertBefore(inputFormatter, owner.element);\n\n owner.elementSwapHidden = owner.element;\n owner.elementSwapHidden.type = 'hidden';\n\n owner.element = inputFormatter;\n owner.element.id = '';\n },\n\n initNumeralFormatter: function () {\n var owner = this, pps = owner.properties;\n\n if (!pps.numeral) {\n return;\n }\n\n pps.numeralFormatter = new Cleave.NumeralFormatter(\n pps.numeralDecimalMark,\n pps.numeralIntegerScale,\n pps.numeralDecimalScale,\n pps.numeralThousandsGroupStyle,\n pps.numeralPositiveOnly,\n pps.stripLeadingZeroes,\n pps.prefix,\n pps.signBeforePrefix,\n pps.tailPrefix,\n pps.delimiter\n );\n },\n\n initTimeFormatter: function() {\n var owner = this, pps = owner.properties;\n\n if (!pps.time) {\n return;\n }\n\n pps.timeFormatter = new Cleave.TimeFormatter(pps.timePattern, pps.timeFormat);\n pps.blocks = pps.timeFormatter.getBlocks();\n pps.blocksLength = pps.blocks.length;\n pps.maxLength = Cleave.Util.getMaxLength(pps.blocks);\n },\n\n initDateFormatter: function () {\n var owner = this, pps = owner.properties;\n\n if (!pps.date) {\n return;\n }\n\n pps.dateFormatter = new Cleave.DateFormatter(pps.datePattern, pps.dateMin, pps.dateMax);\n pps.blocks = pps.dateFormatter.getBlocks();\n pps.blocksLength = pps.blocks.length;\n pps.maxLength = Cleave.Util.getMaxLength(pps.blocks);\n },\n\n initPhoneFormatter: function () {\n var owner = this, pps = owner.properties;\n\n if (!pps.phone) {\n return;\n }\n\n // Cleave.AsYouTypeFormatter should be provided by\n // external google closure lib\n try {\n pps.phoneFormatter = new Cleave.PhoneFormatter(\n new pps.root.Cleave.AsYouTypeFormatter(pps.phoneRegionCode),\n pps.delimiter\n );\n } catch (ex) {\n throw new Error('[cleave.js] Please include phone-type-formatter.{country}.js lib');\n }\n },\n\n onKeyDown: function (event) {\n var owner = this,\n charCode = event.which || event.keyCode;\n\n owner.lastInputValue = owner.element.value;\n owner.isBackward = charCode === 8;\n },\n\n onChange: function (event) {\n var owner = this, pps = owner.properties,\n Util = Cleave.Util;\n\n owner.isBackward = owner.isBackward || event.inputType === 'deleteContentBackward';\n\n var postDelimiter = Util.getPostDelimiter(owner.lastInputValue, pps.delimiter, pps.delimiters);\n\n if (owner.isBackward && postDelimiter) {\n pps.postDelimiterBackspace = postDelimiter;\n } else {\n pps.postDelimiterBackspace = false;\n }\n\n this.onInput(this.element.value);\n },\n\n onFocus: function () {\n var owner = this,\n pps = owner.properties;\n owner.lastInputValue = owner.element.value;\n\n if (pps.prefix && pps.noImmediatePrefix && !owner.element.value) {\n this.onInput(pps.prefix);\n }\n\n Cleave.Util.fixPrefixCursor(owner.element, pps.prefix, pps.delimiter, pps.delimiters);\n },\n\n onCut: function (e) {\n if (!Cleave.Util.checkFullSelection(this.element.value)) return;\n this.copyClipboardData(e);\n this.onInput('');\n },\n\n onCopy: function (e) {\n if (!Cleave.Util.checkFullSelection(this.element.value)) return;\n this.copyClipboardData(e);\n },\n\n copyClipboardData: function (e) {\n var owner = this,\n pps = owner.properties,\n Util = Cleave.Util,\n inputValue = owner.element.value,\n textToCopy = '';\n\n if (!pps.copyDelimiter) {\n textToCopy = Util.stripDelimiters(inputValue, pps.delimiter, pps.delimiters);\n } else {\n textToCopy = inputValue;\n }\n\n try {\n if (e.clipboardData) {\n e.clipboardData.setData('Text', textToCopy);\n } else {\n window.clipboardData.setData('Text', textToCopy);\n }\n\n e.preventDefault();\n } catch (ex) {\n // empty\n }\n },\n\n onInput: function (value) {\n var owner = this, pps = owner.properties,\n Util = Cleave.Util;\n\n // case 1: delete one more character \"4\"\n // 1234*| -> hit backspace -> 123|\n // case 2: last character is not delimiter which is:\n // 12|34* -> hit backspace -> 1|34*\n // note: no need to apply this for numeral mode\n var postDelimiterAfter = Util.getPostDelimiter(value, pps.delimiter, pps.delimiters);\n if (!pps.numeral && pps.postDelimiterBackspace && !postDelimiterAfter) {\n value = Util.headStr(value, value.length - pps.postDelimiterBackspace.length);\n }\n\n // phone formatter\n if (pps.phone) {\n if (pps.prefix && (!pps.noImmediatePrefix || value.length)) {\n pps.result = pps.prefix + pps.phoneFormatter.format(value).slice(pps.prefix.length);\n } else {\n pps.result = pps.phoneFormatter.format(value);\n }\n owner.updateValueState();\n\n return;\n }\n\n // numeral formatter\n if (pps.numeral) {\n // Do not show prefix when noImmediatePrefix is specified\n // This mostly because we need to show user the native input placeholder\n if (pps.prefix && pps.noImmediatePrefix && value.length === 0) {\n pps.result = '';\n } else {\n pps.result = pps.numeralFormatter.format(value);\n }\n owner.updateValueState();\n\n return;\n }\n\n // date\n if (pps.date) {\n value = pps.dateFormatter.getValidatedDate(value);\n }\n\n // time\n if (pps.time) {\n value = pps.timeFormatter.getValidatedTime(value);\n }\n\n // strip delimiters\n value = Util.stripDelimiters(value, pps.delimiter, pps.delimiters);\n\n // strip prefix\n value = Util.getPrefixStrippedValue(value, pps.prefix, pps.prefixLength, pps.result, pps.delimiter, pps.delimiters, pps.noImmediatePrefix, pps.tailPrefix, pps.signBeforePrefix);\n\n // strip non-numeric characters\n value = pps.numericOnly ? Util.strip(value, /[^\\d]/g) : value;\n\n // convert case\n value = pps.uppercase ? value.toUpperCase() : value;\n value = pps.lowercase ? value.toLowerCase() : value;\n\n // prevent from showing prefix when no immediate option enabled with empty input value\n if (pps.prefix) {\n if (pps.tailPrefix) {\n value = value + pps.prefix;\n } else {\n value = pps.prefix + value;\n }\n\n\n // no blocks specified, no need to do formatting\n if (pps.blocksLength === 0) {\n pps.result = value;\n owner.updateValueState();\n\n return;\n }\n }\n\n // update credit card props\n if (pps.creditCard) {\n owner.updateCreditCardPropsByValue(value);\n }\n\n // strip over length characters\n value = Util.headStr(value, pps.maxLength);\n\n // apply blocks\n pps.result = Util.getFormattedValue(\n value,\n pps.blocks, pps.blocksLength,\n pps.delimiter, pps.delimiters, pps.delimiterLazyShow\n );\n\n owner.updateValueState();\n },\n\n updateCreditCardPropsByValue: function (value) {\n var owner = this, pps = owner.properties,\n Util = Cleave.Util,\n creditCardInfo;\n\n // At least one of the first 4 characters has changed\n if (Util.headStr(pps.result, 4) === Util.headStr(value, 4)) {\n return;\n }\n\n creditCardInfo = Cleave.CreditCardDetector.getInfo(value, pps.creditCardStrictMode);\n\n pps.blocks = creditCardInfo.blocks;\n pps.blocksLength = pps.blocks.length;\n pps.maxLength = Util.getMaxLength(pps.blocks);\n\n // credit card type changed\n if (pps.creditCardType !== creditCardInfo.type) {\n pps.creditCardType = creditCardInfo.type;\n\n pps.onCreditCardTypeChanged.call(owner, pps.creditCardType);\n }\n },\n\n updateValueState: function () {\n var owner = this,\n Util = Cleave.Util,\n pps = owner.properties;\n\n if (!owner.element) {\n return;\n }\n\n var endPos = owner.element.selectionEnd;\n var oldValue = owner.element.value;\n var newValue = pps.result;\n\n endPos = Util.getNextCursorPosition(endPos, oldValue, newValue, pps.delimiter, pps.delimiters);\n\n // fix Android browser type=\"text\" input field\n // cursor not jumping issue\n if (owner.isAndroid) {\n window.setTimeout(function () {\n owner.element.value = newValue;\n Util.setSelection(owner.element, endPos, pps.document, false);\n owner.callOnValueChanged();\n }, 1);\n\n return;\n }\n\n owner.element.value = newValue;\n if (pps.swapHiddenInput) owner.elementSwapHidden.value = owner.getRawValue();\n\n Util.setSelection(owner.element, endPos, pps.document, false);\n owner.callOnValueChanged();\n },\n\n callOnValueChanged: function () {\n var owner = this,\n pps = owner.properties;\n\n pps.onValueChanged.call(owner, {\n target: {\n name: owner.element.name,\n value: pps.result,\n rawValue: owner.getRawValue()\n }\n });\n },\n\n setPhoneRegionCode: function (phoneRegionCode) {\n var owner = this, pps = owner.properties;\n\n pps.phoneRegionCode = phoneRegionCode;\n owner.initPhoneFormatter();\n owner.onChange();\n },\n\n setRawValue: function (value) {\n var owner = this, pps = owner.properties;\n\n value = value !== undefined && value !== null ? value.toString() : '';\n\n if (pps.numeral) {\n value = value.replace('.', pps.numeralDecimalMark);\n }\n\n pps.postDelimiterBackspace = false;\n\n owner.element.value = value;\n owner.onInput(value);\n },\n\n getRawValue: function () {\n var owner = this,\n pps = owner.properties,\n Util = Cleave.Util,\n rawValue = owner.element.value;\n\n if (pps.rawValueTrimPrefix) {\n rawValue = Util.getPrefixStrippedValue(rawValue, pps.prefix, pps.prefixLength, pps.result, pps.delimiter, pps.delimiters, pps.noImmediatePrefix, pps.tailPrefix, pps.signBeforePrefix);\n }\n\n if (pps.numeral) {\n rawValue = pps.numeralFormatter.getRawValue(rawValue);\n } else {\n rawValue = Util.stripDelimiters(rawValue, pps.delimiter, pps.delimiters);\n }\n\n return rawValue;\n },\n\n getISOFormatDate: function () {\n var owner = this,\n pps = owner.properties;\n\n return pps.date ? pps.dateFormatter.getISOFormatDate() : '';\n },\n\n getISOFormatTime: function () {\n var owner = this,\n pps = owner.properties;\n\n return pps.time ? pps.timeFormatter.getISOFormatTime() : '';\n },\n\n getFormattedValue: function () {\n return this.element.value;\n },\n\n destroy: function () {\n var owner = this;\n\n owner.element.removeEventListener('input', owner.onChangeListener);\n owner.element.removeEventListener('keydown', owner.onKeyDownListener);\n owner.element.removeEventListener('focus', owner.onFocusListener);\n owner.element.removeEventListener('cut', owner.onCutListener);\n owner.element.removeEventListener('copy', owner.onCopyListener);\n },\n\n toString: function () {\n return '[Cleave Object]';\n }\n};\n\nCleave.NumeralFormatter = NumeralFormatter_1;\nCleave.DateFormatter = DateFormatter_1;\nCleave.TimeFormatter = TimeFormatter_1;\nCleave.PhoneFormatter = PhoneFormatter_1;\nCleave.CreditCardDetector = CreditCardDetector_1;\nCleave.Util = Util_1;\nCleave.DefaultProperties = DefaultProperties_1;\n\n// for angular directive\n((typeof commonjsGlobal === 'object' && commonjsGlobal) ? commonjsGlobal : window)['Cleave'] = Cleave;\n\n// CommonJS\nvar Cleave_1 = Cleave;\n\nexport default Cleave_1;\n","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"],"sourceRoot":""}