{"version":3,"sources":["node_modules/@angular/material/fesm2022/progress-bar.mjs","node_modules/@angular/material/fesm2022/menu.mjs","node_modules/@angular/material/fesm2022/divider.mjs","libs/galaxy/page/src/page.component.ts","libs/galaxy/page/src/page.component.html","libs/billing/src/lib/core/sort-direction.ts","libs/billing/src/lib/core/paged-response.ts","libs/billing/src/lib/core/index.ts","node_modules/@vendasta/billing/fesm2022/vendasta-billing.mjs","libs/billing/src/lib/payment/dispute.ts","libs/billing/src/lib/pricing/billing-strategy.ts","libs/billing/src/lib/pricing/currency.ts","libs/billing/src/lib/pricing/frequency.ts","libs/billing/src/lib/pricing/product-pricing-rules.ts","libs/billing/src/lib/pricing/product-pricing-type.ts","libs/billing/src/lib/pricing/commitment.ts","libs/billing/src/lib/pricing/fee.ts","libs/billing/src/lib/pricing/pricing-plan-product.ts","libs/billing/src/lib/pricing/product-pricing.ts","libs/billing/src/lib/pricing/wholesale-pricing.service.ts","libs/billing/src/lib/pricing/retail-pricing.service.ts","libs/billing/src/lib/pricing/pricing-plan.ts","libs/billing/src/lib/pricing/pricing-plan.service.ts","libs/billing/src/lib/pricing/list-pricing-plan-product-filter.ts","libs/billing/src/lib/pricing/status.ts","libs/billing/src/lib/pricing/source.ts","libs/billing/src/lib/pricing/index.ts","libs/billing/src/lib/payment/payment-source.ts","libs/billing/src/lib/payment/payment-status.ts","libs/billing/src/lib/payment/payment-allocation-type.ts","libs/billing/src/lib/payment/payment.ts","libs/billing/src/lib/payment-card/payment-card.ts","libs/billing/src/lib/payment-card/index.ts","libs/billing/src/lib/payment/retail-payment.ts","libs/billing/src/lib/payment/retail-status.ts","libs/billing/src/lib/payment/provider-determinant.ts","libs/billing/src/lib/payment/payment.service.ts","libs/billing/src/lib/payment/index.ts","libs/billing/src/lib/stripe.service.ts","libs/billing/src/lib/applied_bundle/applied_bundle.ts","libs/billing/src/lib/applied_bundle/index.ts","libs/billing/src/lib/discount/discount_type.ts","libs/billing/src/lib/discount/discount.ts","libs/billing/src/lib/discount/discount_consumer.ts","libs/billing/src/lib/discount/discount.service.ts","libs/billing/src/lib/discount/index.ts","libs/billing/src/lib/applied_discount/applied_discount.ts","libs/billing/src/lib/applied_discount/index.ts","libs/billing/src/lib/note/note.ts","libs/billing/src/lib/retail-customer-configuration/retail-customer-configuration.ts","libs/billing/src/lib/retail-customer-configuration/index.ts","libs/billing/src/lib/tax-rate/tax-rate.ts","libs/billing/src/lib/tax-rate/tax-rate.service.ts","libs/billing/src/lib/tax-rate/index.ts","libs/billing/src/lib/invoice/invoice.ts","node_modules/@vendasta/sso/fesm2020/vendasta-sso.mjs","node_modules/@vendasta/url-shortener/fesm2020/vendasta-url-shortener.mjs","libs/billing/src/lib/invoice/invoice.service.ts","libs/billing/src/lib/recurring_invoice/index.ts","libs/billing/src/lib/invoice/index.ts","libs/billing/src/lib/bank_account/index.ts","libs/billing/src/lib/bank_reconciliation/index.ts","libs/billing/src/lib/billable-item/billable-item.ts","libs/billing/src/lib/billable-item/index.ts","libs/billing/src/lib/http-shared/error-handlers.ts","libs/billing/src/lib/revenue/revenue.service.ts","libs/billing/src/lib/merchant-report/merchant-report.service.ts","libs/billing/src/lib/purchase/purchase_status.ts","libs/billing/src/lib/purchase/purchase.ts","libs/billing/src/lib/customer_summary/customer-summary.ts","libs/billing/src/lib/contract/dimension.ts","libs/billing/src/lib/contract/contract.ts","libs/billing/src/lib/contract/contract.service.ts","libs/billing/src/lib/contract/mutations.ts","libs/billing/src/lib/contract/index.ts","libs/billing/src/lib/product/product.ts","libs/billing/src/lib/product/list-products.ts","libs/billing/src/lib/billing.service.ts","libs/billing/src/lib/bundle/index.ts","libs/billing/src/lib/contract-document/index.ts","libs/billing/src/lib/credit/index.ts","libs/billing/src/lib/merchant/merchant.ts","libs/billing/src/lib/merchant/payout-summary.ts","libs/billing/src/lib/merchant/retail-configuration.ts","libs/billing/src/lib/merchant/merchant.service.ts","libs/billing/src/lib/merchant/index.ts","libs/billing/src/lib/merchant-report/index.ts","libs/billing/src/lib/payment-method/payment-method.service.ts","libs/billing/src/lib/payment-method/index.ts","libs/billing/src/lib/product/index.ts","libs/billing/src/lib/product-summary/subscription-retention.ts","libs/billing/src/lib/product-summary/index.ts","libs/billing/src/lib/purchase/index.ts","libs/billing/src/lib/refund/refund.ts","libs/billing/src/lib/refund/refund.service.ts","libs/billing/src/lib/refund/index.ts","libs/billing/src/lib/revenue/index.ts","libs/billing/src/lib/sales-credit-note/index.ts","libs/billing/src/lib/sales-invoice/index.ts","libs/billing/src/lib/sku.ts","libs/billing/src/lib/stripe-file/index.ts","libs/billing/src/lib/subscription/index.ts","libs/billing/src/lib/interval-mapping.service.ts","libs/billing/src/lib/index.ts","libs/billing/src/index.ts","libs/shared/src/lib/display-price.service.ts","libs/shared/src/lib/display-price.pipe.ts","libs/shared/src/lib/display.price.ts","libs/shared/src/lib/assets/i18n/en.json","libs/shared/src/lib/remove-google-translated-content.ts","libs/shared/src/lib/remove-google-translated-content.pipe.ts","libs/shared/src/lib/shared.module.ts","libs/shared/src/lib/validator.ts","libs/shared/src/lib/verrors.ts","libs/shared/src/lib/contract-pricing/billing-model.ts","libs/shared/src/lib/contract-pricing/billed-product.ts","libs/shared/src/lib/contract-pricing/index.ts","libs/shared/src/lib/url-helper.ts","libs/shared/src/lib/index.ts","libs/shared/src/index.ts","libs/galaxy/page/src/tokens.ts","libs/galaxy/page/src/page.service.ts","libs/galaxy/page/src/page-toolbar/page-toolbar.component.ts","libs/galaxy/page/src/page-toolbar/page-toolbar.component.html","libs/galaxy/page/src/directives/page-title.directive.ts","libs/galaxy/page/src/directives/page-actions.directive.ts","libs/galaxy/page/src/directives/page-wrapper.directive.ts","libs/galaxy/page/src/page-nav-button/page-nav-button.component.ts","libs/galaxy/page/src/page-nav-button/page-nav-button.component.html","libs/galaxy/page/src/directives/page-nav.directive.ts","libs/galaxy/page/src/directives/page-title-actions.directive.ts","libs/galaxy/page/src/directives/page-extended-toolbar.directive.ts","libs/galaxy/page/src/page.module.ts","libs/galaxy/page/public_api.ts","libs/galaxy/page/index.ts"],"sourcesContent":["import * as i0 from '@angular/core';\nimport { InjectionToken, inject, EventEmitter, ANIMATION_MODULE_TYPE, numberAttribute, Component, ChangeDetectionStrategy, ViewEncapsulation, Optional, Inject, Input, Output, NgModule } from '@angular/core';\nimport { DOCUMENT } from '@angular/common';\nimport { MatCommonModule } from '@angular/material/core';\n\n/** Injection token to be used to override the default options for `mat-progress-bar`. */\nconst MAT_PROGRESS_BAR_DEFAULT_OPTIONS = /*#__PURE__*/new InjectionToken('MAT_PROGRESS_BAR_DEFAULT_OPTIONS');\n/**\n * Injection token used to provide the current location to `MatProgressBar`.\n * Used to handle server-side rendering and to stub out during unit tests.\n * @docs-private\n */\nconst MAT_PROGRESS_BAR_LOCATION = /*#__PURE__*/new InjectionToken('mat-progress-bar-location', {\n providedIn: 'root',\n factory: MAT_PROGRESS_BAR_LOCATION_FACTORY\n});\n/** @docs-private */\nfunction MAT_PROGRESS_BAR_LOCATION_FACTORY() {\n const _document = inject(DOCUMENT);\n const _location = _document ? _document.location : null;\n return {\n // Note that this needs to be a function, rather than a property, because Angular\n // will only resolve it once, but we want the current path on each call.\n getPathname: () => _location ? _location.pathname + _location.search : ''\n };\n}\nlet MatProgressBar = /*#__PURE__*/(() => {\n class MatProgressBar {\n constructor(_elementRef, _ngZone, _changeDetectorRef, _animationMode, defaults) {\n this._elementRef = _elementRef;\n this._ngZone = _ngZone;\n this._changeDetectorRef = _changeDetectorRef;\n this._animationMode = _animationMode;\n /** Flag that indicates whether NoopAnimations mode is set to true. */\n this._isNoopAnimation = false;\n this._defaultColor = 'primary';\n this._value = 0;\n this._bufferValue = 0;\n /**\n * Event emitted when animation of the primary progress bar completes. This event will not\n * be emitted when animations are disabled, nor will it be emitted for modes with continuous\n * animations (indeterminate and query).\n */\n this.animationEnd = new EventEmitter();\n this._mode = 'determinate';\n /** Event handler for `transitionend` events. */\n this._transitionendHandler = event => {\n if (this.animationEnd.observers.length === 0 || !event.target || !event.target.classList.contains('mdc-linear-progress__primary-bar')) {\n return;\n }\n if (this.mode === 'determinate' || this.mode === 'buffer') {\n this._ngZone.run(() => this.animationEnd.next({\n value: this.value\n }));\n }\n };\n this._isNoopAnimation = _animationMode === 'NoopAnimations';\n if (defaults) {\n if (defaults.color) {\n this.color = this._defaultColor = defaults.color;\n }\n this.mode = defaults.mode || this.mode;\n }\n }\n // TODO: should be typed as `ThemePalette` but internal apps pass in arbitrary strings.\n /** Theme palette color of the progress bar. */\n get color() {\n return this._color || this._defaultColor;\n }\n set color(value) {\n this._color = value;\n }\n /** Value of the progress bar. Defaults to zero. Mirrored to aria-valuenow. */\n get value() {\n return this._value;\n }\n set value(v) {\n this._value = clamp(v || 0);\n this._changeDetectorRef.markForCheck();\n }\n /** Buffer value of the progress bar. Defaults to zero. */\n get bufferValue() {\n return this._bufferValue || 0;\n }\n set bufferValue(v) {\n this._bufferValue = clamp(v || 0);\n this._changeDetectorRef.markForCheck();\n }\n /**\n * Mode of the progress bar.\n *\n * Input must be one of these values: determinate, indeterminate, buffer, query, defaults to\n * 'determinate'.\n * Mirrored to mode attribute.\n */\n get mode() {\n return this._mode;\n }\n set mode(value) {\n // Note that we don't technically need a getter and a setter here,\n // but we use it to match the behavior of the existing mat-progress-bar.\n this._mode = value;\n this._changeDetectorRef.markForCheck();\n }\n ngAfterViewInit() {\n // Run outside angular so change detection didn't get triggered on every transition end\n // instead only on the animation that we care about (primary value bar's transitionend)\n this._ngZone.runOutsideAngular(() => {\n this._elementRef.nativeElement.addEventListener('transitionend', this._transitionendHandler);\n });\n }\n ngOnDestroy() {\n this._elementRef.nativeElement.removeEventListener('transitionend', this._transitionendHandler);\n }\n /** Gets the transform style that should be applied to the primary bar. */\n _getPrimaryBarTransform() {\n return `scaleX(${this._isIndeterminate() ? 1 : this.value / 100})`;\n }\n /** Gets the `flex-basis` value that should be applied to the buffer bar. */\n _getBufferBarFlexBasis() {\n return `${this.mode === 'buffer' ? this.bufferValue : 100}%`;\n }\n /** Returns whether the progress bar is indeterminate. */\n _isIndeterminate() {\n return this.mode === 'indeterminate' || this.mode === 'query';\n }\n static {\n this.ɵfac = function MatProgressBar_Factory(t) {\n return new (t || MatProgressBar)(i0.ɵɵdirectiveInject(i0.ElementRef), i0.ɵɵdirectiveInject(i0.NgZone), i0.ɵɵdirectiveInject(i0.ChangeDetectorRef), i0.ɵɵdirectiveInject(ANIMATION_MODULE_TYPE, 8), i0.ɵɵdirectiveInject(MAT_PROGRESS_BAR_DEFAULT_OPTIONS, 8));\n };\n }\n static {\n this.ɵcmp = /* @__PURE__ */i0.ɵɵdefineComponent({\n type: MatProgressBar,\n selectors: [[\"mat-progress-bar\"]],\n hostAttrs: [\"role\", \"progressbar\", \"aria-valuemin\", \"0\", \"aria-valuemax\", \"100\", \"tabindex\", \"-1\", 1, \"mat-mdc-progress-bar\", \"mdc-linear-progress\"],\n hostVars: 10,\n hostBindings: function MatProgressBar_HostBindings(rf, ctx) {\n if (rf & 2) {\n i0.ɵɵattribute(\"aria-valuenow\", ctx._isIndeterminate() ? null : ctx.value)(\"mode\", ctx.mode);\n i0.ɵɵclassMap(\"mat-\" + ctx.color);\n i0.ɵɵclassProp(\"_mat-animation-noopable\", ctx._isNoopAnimation)(\"mdc-linear-progress--animation-ready\", !ctx._isNoopAnimation)(\"mdc-linear-progress--indeterminate\", ctx._isIndeterminate());\n }\n },\n inputs: {\n color: \"color\",\n value: [i0.ɵɵInputFlags.HasDecoratorInputTransform, \"value\", \"value\", numberAttribute],\n bufferValue: [i0.ɵɵInputFlags.HasDecoratorInputTransform, \"bufferValue\", \"bufferValue\", numberAttribute],\n mode: \"mode\"\n },\n outputs: {\n animationEnd: \"animationEnd\"\n },\n exportAs: [\"matProgressBar\"],\n standalone: true,\n features: [i0.ɵɵInputTransformsFeature, i0.ɵɵStandaloneFeature],\n decls: 7,\n vars: 4,\n consts: [[\"aria-hidden\", \"true\", 1, \"mdc-linear-progress__buffer\"], [1, \"mdc-linear-progress__buffer-bar\"], [1, \"mdc-linear-progress__buffer-dots\"], [\"aria-hidden\", \"true\", 1, \"mdc-linear-progress__bar\", \"mdc-linear-progress__primary-bar\"], [1, \"mdc-linear-progress__bar-inner\"], [\"aria-hidden\", \"true\", 1, \"mdc-linear-progress__bar\", \"mdc-linear-progress__secondary-bar\"]],\n template: function MatProgressBar_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelementStart(0, \"div\", 0);\n i0.ɵɵelement(1, \"div\", 1)(2, \"div\", 2);\n i0.ɵɵelementEnd();\n i0.ɵɵelementStart(3, \"div\", 3);\n i0.ɵɵelement(4, \"span\", 4);\n i0.ɵɵelementEnd();\n i0.ɵɵelementStart(5, \"div\", 5);\n i0.ɵɵelement(6, \"span\", 4);\n i0.ɵɵelementEnd();\n }\n if (rf & 2) {\n i0.ɵɵadvance();\n i0.ɵɵstyleProp(\"flex-basis\", ctx._getBufferBarFlexBasis());\n i0.ɵɵadvance(2);\n i0.ɵɵstyleProp(\"transform\", ctx._getPrimaryBarTransform());\n }\n },\n styles: [\"@keyframes mdc-linear-progress-primary-indeterminate-translate{0%{transform:translateX(0)}20%{animation-timing-function:cubic-bezier(0.5, 0, 0.701732, 0.495819);transform:translateX(0)}59.15%{animation-timing-function:cubic-bezier(0.302435, 0.381352, 0.55, 0.956352);transform:translateX(var(--mdc-linear-progress-primary-half))}100%{transform:translateX(var(--mdc-linear-progress-primary-full))}}@keyframes mdc-linear-progress-primary-indeterminate-scale{0%{transform:scaleX(0.08)}36.65%{animation-timing-function:cubic-bezier(0.334731, 0.12482, 0.785844, 1);transform:scaleX(0.08)}69.15%{animation-timing-function:cubic-bezier(0.06, 0.11, 0.6, 1);transform:scaleX(0.661479)}100%{transform:scaleX(0.08)}}@keyframes mdc-linear-progress-secondary-indeterminate-translate{0%{animation-timing-function:cubic-bezier(0.15, 0, 0.515058, 0.409685);transform:translateX(0)}25%{animation-timing-function:cubic-bezier(0.31033, 0.284058, 0.8, 0.733712);transform:translateX(var(--mdc-linear-progress-secondary-quarter))}48.35%{animation-timing-function:cubic-bezier(0.4, 0.627035, 0.6, 0.902026);transform:translateX(var(--mdc-linear-progress-secondary-half))}100%{transform:translateX(var(--mdc-linear-progress-secondary-full))}}@keyframes mdc-linear-progress-secondary-indeterminate-scale{0%{animation-timing-function:cubic-bezier(0.205028, 0.057051, 0.57661, 0.453971);transform:scaleX(0.08)}19.15%{animation-timing-function:cubic-bezier(0.152313, 0.196432, 0.648374, 1.004315);transform:scaleX(0.457104)}44.15%{animation-timing-function:cubic-bezier(0.257759, -0.003163, 0.211762, 1.38179);transform:scaleX(0.72796)}100%{transform:scaleX(0.08)}}@keyframes mdc-linear-progress-primary-indeterminate-translate-reverse{0%{transform:translateX(0)}20%{animation-timing-function:cubic-bezier(0.5, 0, 0.701732, 0.495819);transform:translateX(0)}59.15%{animation-timing-function:cubic-bezier(0.302435, 0.381352, 0.55, 0.956352);transform:translateX(var(--mdc-linear-progress-primary-half-neg))}100%{transform:translateX(var(--mdc-linear-progress-primary-full-neg))}}@keyframes mdc-linear-progress-secondary-indeterminate-translate-reverse{0%{animation-timing-function:cubic-bezier(0.15, 0, 0.515058, 0.409685);transform:translateX(0)}25%{animation-timing-function:cubic-bezier(0.31033, 0.284058, 0.8, 0.733712);transform:translateX(var(--mdc-linear-progress-secondary-quarter-neg))}48.35%{animation-timing-function:cubic-bezier(0.4, 0.627035, 0.6, 0.902026);transform:translateX(var(--mdc-linear-progress-secondary-half-neg))}100%{transform:translateX(var(--mdc-linear-progress-secondary-full-neg))}}@keyframes mdc-linear-progress-buffering-reverse{from{transform:translateX(-10px)}}.mdc-linear-progress{position:relative;width:100%;transform:translateZ(0);outline:1px solid rgba(0,0,0,0);overflow-x:hidden;transition:opacity 250ms 0ms cubic-bezier(0.4, 0, 0.6, 1)}@media screen and (forced-colors: active){.mdc-linear-progress{outline-color:CanvasText}}.mdc-linear-progress__bar{position:absolute;top:0;bottom:0;margin:auto 0;width:100%;animation:none;transform-origin:top left;transition:transform 250ms 0ms cubic-bezier(0.4, 0, 0.6, 1)}.mdc-linear-progress__bar-inner{display:inline-block;position:absolute;width:100%;animation:none;border-top-style:solid}.mdc-linear-progress__buffer{display:flex;position:absolute;top:0;bottom:0;margin:auto 0;width:100%;overflow:hidden}.mdc-linear-progress__buffer-dots{background-repeat:repeat-x;flex:auto;transform:rotate(180deg);-webkit-mask-image:url(\\\"data:image/svg+xml,%3Csvg version='1.1' xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink' x='0px' y='0px' enable-background='new 0 0 5 2' xml:space='preserve' viewBox='0 0 5 2' preserveAspectRatio='xMinYMin slice'%3E%3Ccircle cx='1' cy='1' r='1'/%3E%3C/svg%3E\\\");mask-image:url(\\\"data:image/svg+xml,%3Csvg version='1.1' xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink' x='0px' y='0px' enable-background='new 0 0 5 2' xml:space='preserve' viewBox='0 0 5 2' preserveAspectRatio='xMinYMin slice'%3E%3Ccircle cx='1' cy='1' r='1'/%3E%3C/svg%3E\\\");animation:mdc-linear-progress-buffering 250ms infinite linear}.mdc-linear-progress__buffer-bar{flex:0 1 100%;transition:flex-basis 250ms 0ms cubic-bezier(0.4, 0, 0.6, 1)}.mdc-linear-progress__primary-bar{transform:scaleX(0)}.mdc-linear-progress__secondary-bar{display:none}.mdc-linear-progress--indeterminate .mdc-linear-progress__bar{transition:none}.mdc-linear-progress--indeterminate .mdc-linear-progress__primary-bar{left:-145.166611%}.mdc-linear-progress--indeterminate .mdc-linear-progress__secondary-bar{left:-54.888891%;display:block}.mdc-linear-progress--indeterminate.mdc-linear-progress--animation-ready .mdc-linear-progress__primary-bar{animation:mdc-linear-progress-primary-indeterminate-translate 2s infinite linear}.mdc-linear-progress--indeterminate.mdc-linear-progress--animation-ready .mdc-linear-progress__primary-bar>.mdc-linear-progress__bar-inner{animation:mdc-linear-progress-primary-indeterminate-scale 2s infinite linear}.mdc-linear-progress--indeterminate.mdc-linear-progress--animation-ready .mdc-linear-progress__secondary-bar{animation:mdc-linear-progress-secondary-indeterminate-translate 2s infinite linear}.mdc-linear-progress--indeterminate.mdc-linear-progress--animation-ready .mdc-linear-progress__secondary-bar>.mdc-linear-progress__bar-inner{animation:mdc-linear-progress-secondary-indeterminate-scale 2s infinite linear}[dir=rtl] .mdc-linear-progress:not([dir=ltr]) .mdc-linear-progress__bar,.mdc-linear-progress[dir=rtl]:not([dir=ltr]) .mdc-linear-progress__bar{right:0;-webkit-transform-origin:center right;transform-origin:center right}[dir=rtl] .mdc-linear-progress:not([dir=ltr]).mdc-linear-progress--animation-ready .mdc-linear-progress__primary-bar,.mdc-linear-progress[dir=rtl]:not([dir=ltr]).mdc-linear-progress--animation-ready .mdc-linear-progress__primary-bar{animation-name:mdc-linear-progress-primary-indeterminate-translate-reverse}[dir=rtl] .mdc-linear-progress:not([dir=ltr]).mdc-linear-progress--animation-ready .mdc-linear-progress__secondary-bar,.mdc-linear-progress[dir=rtl]:not([dir=ltr]).mdc-linear-progress--animation-ready .mdc-linear-progress__secondary-bar{animation-name:mdc-linear-progress-secondary-indeterminate-translate-reverse}[dir=rtl] .mdc-linear-progress:not([dir=ltr]) .mdc-linear-progress__buffer-dots,.mdc-linear-progress[dir=rtl]:not([dir=ltr]) .mdc-linear-progress__buffer-dots{animation:mdc-linear-progress-buffering-reverse 250ms infinite linear;transform:rotate(0)}[dir=rtl] .mdc-linear-progress:not([dir=ltr]).mdc-linear-progress--indeterminate .mdc-linear-progress__primary-bar,.mdc-linear-progress[dir=rtl]:not([dir=ltr]).mdc-linear-progress--indeterminate .mdc-linear-progress__primary-bar{right:-145.166611%;left:auto}[dir=rtl] .mdc-linear-progress:not([dir=ltr]).mdc-linear-progress--indeterminate .mdc-linear-progress__secondary-bar,.mdc-linear-progress[dir=rtl]:not([dir=ltr]).mdc-linear-progress--indeterminate .mdc-linear-progress__secondary-bar{right:-54.888891%;left:auto}.mdc-linear-progress--closed{opacity:0}.mdc-linear-progress--closed-animation-off .mdc-linear-progress__buffer-dots{animation:none}.mdc-linear-progress--closed-animation-off.mdc-linear-progress--indeterminate .mdc-linear-progress__bar,.mdc-linear-progress--closed-animation-off.mdc-linear-progress--indeterminate .mdc-linear-progress__bar .mdc-linear-progress__bar-inner{animation:none}@keyframes mdc-linear-progress-buffering{from{transform:rotate(180deg) translateX(calc(var(--mdc-linear-progress-track-height) * -2.5))}}.mdc-linear-progress__bar-inner{border-color:var(--mdc-linear-progress-active-indicator-color)}.mdc-linear-progress__buffer-dots{background-color:var(--mdc-linear-progress-track-color)}@media(forced-colors: active){.mdc-linear-progress__buffer-dots{background-color:ButtonBorder}}@media all and (-ms-high-contrast: none),(-ms-high-contrast: active){.mdc-linear-progress__buffer-dots{background-color:rgba(0,0,0,0);background-image:url(\\\"data:image/svg+xml,%3Csvg version='1.1' xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink' x='0px' y='0px' enable-background='new 0 0 5 2' xml:space='preserve' viewBox='0 0 5 2' preserveAspectRatio='none slice'%3E%3Ccircle cx='1' cy='1' r='1' fill='rgba(244, 67, 54, 0.25)'/%3E%3C/svg%3E\\\")}}.mdc-linear-progress__buffer-bar{background-color:var(--mdc-linear-progress-track-color)}.mdc-linear-progress{height:max(var(--mdc-linear-progress-track-height), var(--mdc-linear-progress-active-indicator-height))}@media all and (-ms-high-contrast: none),(-ms-high-contrast: active){.mdc-linear-progress{height:4px}}.mdc-linear-progress__bar{height:var(--mdc-linear-progress-active-indicator-height)}.mdc-linear-progress__bar-inner{border-top-width:var(--mdc-linear-progress-active-indicator-height)}.mdc-linear-progress__buffer{height:var(--mdc-linear-progress-track-height)}@media all and (-ms-high-contrast: none),(-ms-high-contrast: active){.mdc-linear-progress__buffer-dots{background-size:10px var(--mdc-linear-progress-track-height)}}.mdc-linear-progress__buffer{border-radius:var(--mdc-linear-progress-track-shape)}.mat-mdc-progress-bar{display:block;text-align:start;--mdc-linear-progress-primary-half: 83.67142%;--mdc-linear-progress-primary-full: 200.611057%;--mdc-linear-progress-secondary-quarter: 37.651913%;--mdc-linear-progress-secondary-half: 84.386165%;--mdc-linear-progress-secondary-full: 160.277782%;--mdc-linear-progress-primary-half-neg: -83.67142%;--mdc-linear-progress-primary-full-neg: -200.611057%;--mdc-linear-progress-secondary-quarter-neg: -37.651913%;--mdc-linear-progress-secondary-half-neg: -84.386165%;--mdc-linear-progress-secondary-full-neg: -160.277782%}.mat-mdc-progress-bar[mode=query]{transform:scaleX(-1)}.mat-mdc-progress-bar._mat-animation-noopable .mdc-linear-progress__buffer-dots,.mat-mdc-progress-bar._mat-animation-noopable .mdc-linear-progress__primary-bar,.mat-mdc-progress-bar._mat-animation-noopable .mdc-linear-progress__secondary-bar,.mat-mdc-progress-bar._mat-animation-noopable .mdc-linear-progress__bar-inner.mdc-linear-progress__bar-inner{animation:none}.mat-mdc-progress-bar._mat-animation-noopable .mdc-linear-progress__primary-bar,.mat-mdc-progress-bar._mat-animation-noopable .mdc-linear-progress__buffer-bar{transition:transform 1ms}\"],\n encapsulation: 2,\n changeDetection: 0\n });\n }\n }\n return MatProgressBar;\n})();\n/*#__PURE__*/(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n/** Clamps a value to be between two numbers, by default 0 and 100. */\nfunction clamp(v, min = 0, max = 100) {\n return Math.max(min, Math.min(max, v));\n}\nlet MatProgressBarModule = /*#__PURE__*/(() => {\n class MatProgressBarModule {\n static {\n this.ɵfac = function MatProgressBarModule_Factory(t) {\n return new (t || MatProgressBarModule)();\n };\n }\n static {\n this.ɵmod = /* @__PURE__ */i0.ɵɵdefineNgModule({\n type: MatProgressBarModule\n });\n }\n static {\n this.ɵinj = /* @__PURE__ */i0.ɵɵdefineInjector({\n imports: [MatCommonModule]\n });\n }\n }\n return MatProgressBarModule;\n})();\n/*#__PURE__*/(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { MAT_PROGRESS_BAR_DEFAULT_OPTIONS, MAT_PROGRESS_BAR_LOCATION, MAT_PROGRESS_BAR_LOCATION_FACTORY, MatProgressBar, MatProgressBarModule };\n","import * as i0 from '@angular/core';\nimport { InjectionToken, booleanAttribute, Component, ChangeDetectionStrategy, ViewEncapsulation, Inject, Optional, Input, Directive, QueryList, EventEmitter, TemplateRef, ContentChildren, ViewChild, ContentChild, Output, inject, ChangeDetectorRef, Self, NgModule } from '@angular/core';\nimport * as i1 from '@angular/cdk/a11y';\nimport { FocusKeyManager, isFakeTouchstartFromScreenReader, isFakeMousedownFromScreenReader } from '@angular/cdk/a11y';\nimport { UP_ARROW, DOWN_ARROW, RIGHT_ARROW, LEFT_ARROW, ESCAPE, hasModifierKey, ENTER, SPACE } from '@angular/cdk/keycodes';\nimport { Subject, merge, Subscription, of, asapScheduler } from 'rxjs';\nimport { startWith, switchMap, take, takeUntil, filter, delay } from 'rxjs/operators';\nimport { DOCUMENT, NgClass, CommonModule } from '@angular/common';\nimport { MatRipple, MatRippleModule, MatCommonModule } from '@angular/material/core';\nimport { TemplatePortal, DomPortalOutlet } from '@angular/cdk/portal';\nimport { trigger, state, style, transition, animate } from '@angular/animations';\nimport * as i3 from '@angular/cdk/bidi';\nimport * as i1$1 from '@angular/cdk/overlay';\nimport { Overlay, OverlayConfig, OverlayModule } from '@angular/cdk/overlay';\nimport { normalizePassiveListenerOptions } from '@angular/cdk/platform';\nimport { CdkScrollableModule } from '@angular/cdk/scrolling';\n\n/**\n * Injection token used to provide the parent menu to menu-specific components.\n * @docs-private\n */\nconst _c0 = [\"mat-menu-item\", \"\"];\nconst _c1 = [[[\"mat-icon\"], [\"\", \"matMenuItemIcon\", \"\"]], \"*\"];\nconst _c2 = [\"mat-icon, [matMenuItemIcon]\", \"*\"];\nfunction MatMenuItem_Conditional_4_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵnamespaceSVG();\n i0.ɵɵelementStart(0, \"svg\", 2);\n i0.ɵɵelement(1, \"polygon\", 3);\n i0.ɵɵelementEnd();\n }\n}\nconst _c3 = [\"*\"];\nfunction MatMenu_ng_template_0_Template(rf, ctx) {\n if (rf & 1) {\n const _r1 = i0.ɵɵgetCurrentView();\n i0.ɵɵelementStart(0, \"div\", 0);\n i0.ɵɵlistener(\"keydown\", function MatMenu_ng_template_0_Template_div_keydown_0_listener($event) {\n i0.ɵɵrestoreView(_r1);\n const ctx_r1 = i0.ɵɵnextContext();\n return i0.ɵɵresetView(ctx_r1._handleKeydown($event));\n })(\"click\", function MatMenu_ng_template_0_Template_div_click_0_listener() {\n i0.ɵɵrestoreView(_r1);\n const ctx_r1 = i0.ɵɵnextContext();\n return i0.ɵɵresetView(ctx_r1.closed.emit(\"click\"));\n })(\"@transformMenu.start\", function MatMenu_ng_template_0_Template_div_animation_transformMenu_start_0_listener($event) {\n i0.ɵɵrestoreView(_r1);\n const ctx_r1 = i0.ɵɵnextContext();\n return i0.ɵɵresetView(ctx_r1._onAnimationStart($event));\n })(\"@transformMenu.done\", function MatMenu_ng_template_0_Template_div_animation_transformMenu_done_0_listener($event) {\n i0.ɵɵrestoreView(_r1);\n const ctx_r1 = i0.ɵɵnextContext();\n return i0.ɵɵresetView(ctx_r1._onAnimationDone($event));\n });\n i0.ɵɵelementStart(1, \"div\", 1);\n i0.ɵɵprojection(2);\n i0.ɵɵelementEnd()();\n }\n if (rf & 2) {\n const ctx_r1 = i0.ɵɵnextContext();\n i0.ɵɵproperty(\"id\", ctx_r1.panelId)(\"ngClass\", ctx_r1._classList)(\"@transformMenu\", ctx_r1._panelAnimationState);\n i0.ɵɵattribute(\"aria-label\", ctx_r1.ariaLabel || null)(\"aria-labelledby\", ctx_r1.ariaLabelledby || null)(\"aria-describedby\", ctx_r1.ariaDescribedby || null);\n }\n}\nconst MAT_MENU_PANEL = /*#__PURE__*/new InjectionToken('MAT_MENU_PANEL');\n\n/**\n * Single item inside a `mat-menu`. Provides the menu item styling and accessibility treatment.\n */\nlet MatMenuItem = /*#__PURE__*/(() => {\n class MatMenuItem {\n constructor(_elementRef, _document, _focusMonitor, _parentMenu, _changeDetectorRef) {\n this._elementRef = _elementRef;\n this._document = _document;\n this._focusMonitor = _focusMonitor;\n this._parentMenu = _parentMenu;\n this._changeDetectorRef = _changeDetectorRef;\n /** ARIA role for the menu item. */\n this.role = 'menuitem';\n /** Whether the menu item is disabled. */\n this.disabled = false;\n /** Whether ripples are disabled on the menu item. */\n this.disableRipple = false;\n /** Stream that emits when the menu item is hovered. */\n this._hovered = new Subject();\n /** Stream that emits when the menu item is focused. */\n this._focused = new Subject();\n /** Whether the menu item is highlighted. */\n this._highlighted = false;\n /** Whether the menu item acts as a trigger for a sub-menu. */\n this._triggersSubmenu = false;\n _parentMenu?.addItem?.(this);\n }\n /** Focuses the menu item. */\n focus(origin, options) {\n if (this._focusMonitor && origin) {\n this._focusMonitor.focusVia(this._getHostElement(), origin, options);\n } else {\n this._getHostElement().focus(options);\n }\n this._focused.next(this);\n }\n ngAfterViewInit() {\n if (this._focusMonitor) {\n // Start monitoring the element, so it gets the appropriate focused classes. We want\n // to show the focus style for menu items only when the focus was not caused by a\n // mouse or touch interaction.\n this._focusMonitor.monitor(this._elementRef, false);\n }\n }\n ngOnDestroy() {\n if (this._focusMonitor) {\n this._focusMonitor.stopMonitoring(this._elementRef);\n }\n if (this._parentMenu && this._parentMenu.removeItem) {\n this._parentMenu.removeItem(this);\n }\n this._hovered.complete();\n this._focused.complete();\n }\n /** Used to set the `tabindex`. */\n _getTabIndex() {\n return this.disabled ? '-1' : '0';\n }\n /** Returns the host DOM element. */\n _getHostElement() {\n return this._elementRef.nativeElement;\n }\n /** Prevents the default element actions if it is disabled. */\n _checkDisabled(event) {\n if (this.disabled) {\n event.preventDefault();\n event.stopPropagation();\n }\n }\n /** Emits to the hover stream. */\n _handleMouseEnter() {\n this._hovered.next(this);\n }\n /** Gets the label to be used when determining whether the option should be focused. */\n getLabel() {\n const clone = this._elementRef.nativeElement.cloneNode(true);\n const icons = clone.querySelectorAll('mat-icon, .material-icons');\n // Strip away icons, so they don't show up in the text.\n for (let i = 0; i < icons.length; i++) {\n icons[i].remove();\n }\n return clone.textContent?.trim() || '';\n }\n _setHighlighted(isHighlighted) {\n // We need to mark this for check for the case where the content is coming from a\n // `matMenuContent` whose change detection tree is at the declaration position,\n // not the insertion position. See #23175.\n // @breaking-change 12.0.0 Remove null check for `_changeDetectorRef`.\n this._highlighted = isHighlighted;\n this._changeDetectorRef?.markForCheck();\n }\n _setTriggersSubmenu(triggersSubmenu) {\n // @breaking-change 12.0.0 Remove null check for `_changeDetectorRef`.\n this._triggersSubmenu = triggersSubmenu;\n this._changeDetectorRef?.markForCheck();\n }\n _hasFocus() {\n return this._document && this._document.activeElement === this._getHostElement();\n }\n static {\n this.ɵfac = function MatMenuItem_Factory(t) {\n return new (t || MatMenuItem)(i0.ɵɵdirectiveInject(i0.ElementRef), i0.ɵɵdirectiveInject(DOCUMENT), i0.ɵɵdirectiveInject(i1.FocusMonitor), i0.ɵɵdirectiveInject(MAT_MENU_PANEL, 8), i0.ɵɵdirectiveInject(i0.ChangeDetectorRef));\n };\n }\n static {\n this.ɵcmp = /* @__PURE__ */i0.ɵɵdefineComponent({\n type: MatMenuItem,\n selectors: [[\"\", \"mat-menu-item\", \"\"]],\n hostAttrs: [1, \"mat-mdc-menu-item\", \"mat-mdc-focus-indicator\"],\n hostVars: 8,\n hostBindings: function MatMenuItem_HostBindings(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵlistener(\"click\", function MatMenuItem_click_HostBindingHandler($event) {\n return ctx._checkDisabled($event);\n })(\"mouseenter\", function MatMenuItem_mouseenter_HostBindingHandler() {\n return ctx._handleMouseEnter();\n });\n }\n if (rf & 2) {\n i0.ɵɵattribute(\"role\", ctx.role)(\"tabindex\", ctx._getTabIndex())(\"aria-disabled\", ctx.disabled)(\"disabled\", ctx.disabled || null);\n i0.ɵɵclassProp(\"mat-mdc-menu-item-highlighted\", ctx._highlighted)(\"mat-mdc-menu-item-submenu-trigger\", ctx._triggersSubmenu);\n }\n },\n inputs: {\n role: \"role\",\n disabled: [i0.ɵɵInputFlags.HasDecoratorInputTransform, \"disabled\", \"disabled\", booleanAttribute],\n disableRipple: [i0.ɵɵInputFlags.HasDecoratorInputTransform, \"disableRipple\", \"disableRipple\", booleanAttribute]\n },\n exportAs: [\"matMenuItem\"],\n standalone: true,\n features: [i0.ɵɵInputTransformsFeature, i0.ɵɵStandaloneFeature],\n attrs: _c0,\n ngContentSelectors: _c2,\n decls: 5,\n vars: 3,\n consts: [[1, \"mat-mdc-menu-item-text\"], [\"matRipple\", \"\", 1, \"mat-mdc-menu-ripple\", 3, \"matRippleDisabled\", \"matRippleTrigger\"], [\"viewBox\", \"0 0 5 10\", \"focusable\", \"false\", \"aria-hidden\", \"true\", 1, \"mat-mdc-menu-submenu-icon\"], [\"points\", \"0,0 5,5 0,10\"]],\n template: function MatMenuItem_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵprojectionDef(_c1);\n i0.ɵɵprojection(0);\n i0.ɵɵelementStart(1, \"span\", 0);\n i0.ɵɵprojection(2, 1);\n i0.ɵɵelementEnd();\n i0.ɵɵelement(3, \"div\", 1);\n i0.ɵɵtemplate(4, MatMenuItem_Conditional_4_Template, 2, 0, \":svg:svg\", 2);\n }\n if (rf & 2) {\n i0.ɵɵadvance(3);\n i0.ɵɵproperty(\"matRippleDisabled\", ctx.disableRipple || ctx.disabled)(\"matRippleTrigger\", ctx._getHostElement());\n i0.ɵɵadvance();\n i0.ɵɵconditional(4, ctx._triggersSubmenu ? 4 : -1);\n }\n },\n dependencies: [MatRipple],\n encapsulation: 2,\n changeDetection: 0\n });\n }\n }\n return MatMenuItem;\n})();\n/*#__PURE__*/(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n\n/**\n * Throws an exception for the case when menu's x-position value isn't valid.\n * In other words, it doesn't match 'before' or 'after'.\n * @docs-private\n */\nfunction throwMatMenuInvalidPositionX() {\n throw Error(`xPosition value must be either 'before' or after'.\n Example: `);\n}\n/**\n * Throws an exception for the case when menu's y-position value isn't valid.\n * In other words, it doesn't match 'above' or 'below'.\n * @docs-private\n */\nfunction throwMatMenuInvalidPositionY() {\n throw Error(`yPosition value must be either 'above' or below'.\n Example: `);\n}\n/**\n * Throws an exception for the case when a menu is assigned\n * to a trigger that is placed inside the same menu.\n * @docs-private\n */\nfunction throwMatMenuRecursiveError() {\n throw Error(`matMenuTriggerFor: menu cannot contain its own trigger. Assign a menu that is ` + `not a parent of the trigger or move the trigger outside of the menu.`);\n}\n\n/**\n * Injection token that can be used to reference instances of `MatMenuContent`. It serves\n * as alternative token to the actual `MatMenuContent` class which could cause unnecessary\n * retention of the class and its directive metadata.\n */\nconst MAT_MENU_CONTENT = /*#__PURE__*/new InjectionToken('MatMenuContent');\n/** Menu content that will be rendered lazily once the menu is opened. */\nlet MatMenuContent = /*#__PURE__*/(() => {\n class MatMenuContent {\n constructor(_template, _componentFactoryResolver, _appRef, _injector, _viewContainerRef, _document, _changeDetectorRef) {\n this._template = _template;\n this._componentFactoryResolver = _componentFactoryResolver;\n this._appRef = _appRef;\n this._injector = _injector;\n this._viewContainerRef = _viewContainerRef;\n this._document = _document;\n this._changeDetectorRef = _changeDetectorRef;\n /** Emits when the menu content has been attached. */\n this._attached = new Subject();\n }\n /**\n * Attaches the content with a particular context.\n * @docs-private\n */\n attach(context = {}) {\n if (!this._portal) {\n this._portal = new TemplatePortal(this._template, this._viewContainerRef);\n }\n this.detach();\n if (!this._outlet) {\n this._outlet = new DomPortalOutlet(this._document.createElement('div'), this._componentFactoryResolver, this._appRef, this._injector);\n }\n const element = this._template.elementRef.nativeElement;\n // Because we support opening the same menu from different triggers (which in turn have their\n // own `OverlayRef` panel), we have to re-insert the host element every time, otherwise we\n // risk it staying attached to a pane that's no longer in the DOM.\n element.parentNode.insertBefore(this._outlet.outletElement, element);\n // When `MatMenuContent` is used in an `OnPush` component, the insertion of the menu\n // content via `createEmbeddedView` does not cause the content to be seen as \"dirty\"\n // by Angular. This causes the `@ContentChildren` for menu items within the menu to\n // not be updated by Angular. By explicitly marking for check here, we tell Angular that\n // it needs to check for new menu items and update the `@ContentChild` in `MatMenu`.\n // @breaking-change 9.0.0 Make change detector ref required\n this._changeDetectorRef?.markForCheck();\n this._portal.attach(this._outlet, context);\n this._attached.next();\n }\n /**\n * Detaches the content.\n * @docs-private\n */\n detach() {\n if (this._portal.isAttached) {\n this._portal.detach();\n }\n }\n ngOnDestroy() {\n if (this._outlet) {\n this._outlet.dispose();\n }\n }\n static {\n this.ɵfac = function MatMenuContent_Factory(t) {\n return new (t || MatMenuContent)(i0.ɵɵdirectiveInject(i0.TemplateRef), i0.ɵɵdirectiveInject(i0.ComponentFactoryResolver), i0.ɵɵdirectiveInject(i0.ApplicationRef), i0.ɵɵdirectiveInject(i0.Injector), i0.ɵɵdirectiveInject(i0.ViewContainerRef), i0.ɵɵdirectiveInject(DOCUMENT), i0.ɵɵdirectiveInject(i0.ChangeDetectorRef));\n };\n }\n static {\n this.ɵdir = /* @__PURE__ */i0.ɵɵdefineDirective({\n type: MatMenuContent,\n selectors: [[\"ng-template\", \"matMenuContent\", \"\"]],\n standalone: true,\n features: [i0.ɵɵProvidersFeature([{\n provide: MAT_MENU_CONTENT,\n useExisting: MatMenuContent\n }])]\n });\n }\n }\n return MatMenuContent;\n})();\n/*#__PURE__*/(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n\n/**\n * Animations used by the mat-menu component.\n * Animation duration and timing values are based on:\n * https://material.io/guidelines/components/menus.html#menus-usage\n * @docs-private\n */\nconst matMenuAnimations = {\n /**\n * This animation controls the menu panel's entry and exit from the page.\n *\n * When the menu panel is added to the DOM, it scales in and fades in its border.\n *\n * When the menu panel is removed from the DOM, it simply fades out after a brief\n * delay to display the ripple.\n */\n transformMenu: /*#__PURE__*/trigger('transformMenu', [/*#__PURE__*/state('void', /*#__PURE__*/style({\n opacity: 0,\n transform: 'scale(0.8)'\n })), /*#__PURE__*/transition('void => enter', /*#__PURE__*/animate('120ms cubic-bezier(0, 0, 0.2, 1)', /*#__PURE__*/style({\n opacity: 1,\n transform: 'scale(1)'\n }))), /*#__PURE__*/transition('* => void', /*#__PURE__*/animate('100ms 25ms linear', /*#__PURE__*/style({\n opacity: 0\n })))]),\n /**\n * This animation fades in the background color and content of the menu panel\n * after its containing element is scaled in.\n */\n fadeInItems: /*#__PURE__*/trigger('fadeInItems', [\n /*#__PURE__*/\n // TODO(crisbeto): this is inside the `transformMenu`\n // now. Remove next time we do breaking changes.\n state('showing', /*#__PURE__*/style({\n opacity: 1\n })), /*#__PURE__*/transition('void => *', [/*#__PURE__*/style({\n opacity: 0\n }), /*#__PURE__*/animate('400ms 100ms cubic-bezier(0.55, 0, 0.55, 0.2)')])])\n};\n/**\n * @deprecated\n * @breaking-change 8.0.0\n * @docs-private\n */\nconst fadeInItems = matMenuAnimations.fadeInItems;\n/**\n * @deprecated\n * @breaking-change 8.0.0\n * @docs-private\n */\nconst transformMenu = matMenuAnimations.transformMenu;\nlet menuPanelUid = 0;\n/** Injection token to be used to override the default options for `mat-menu`. */\nconst MAT_MENU_DEFAULT_OPTIONS = /*#__PURE__*/new InjectionToken('mat-menu-default-options', {\n providedIn: 'root',\n factory: MAT_MENU_DEFAULT_OPTIONS_FACTORY\n});\n/** @docs-private */\nfunction MAT_MENU_DEFAULT_OPTIONS_FACTORY() {\n return {\n overlapTrigger: false,\n xPosition: 'after',\n yPosition: 'below',\n backdropClass: 'cdk-overlay-transparent-backdrop'\n };\n}\nlet MatMenu = /*#__PURE__*/(() => {\n class MatMenu {\n /** Position of the menu in the X axis. */\n get xPosition() {\n return this._xPosition;\n }\n set xPosition(value) {\n if (value !== 'before' && value !== 'after' && (typeof ngDevMode === 'undefined' || ngDevMode)) {\n throwMatMenuInvalidPositionX();\n }\n this._xPosition = value;\n this.setPositionClasses();\n }\n /** Position of the menu in the Y axis. */\n get yPosition() {\n return this._yPosition;\n }\n set yPosition(value) {\n if (value !== 'above' && value !== 'below' && (typeof ngDevMode === 'undefined' || ngDevMode)) {\n throwMatMenuInvalidPositionY();\n }\n this._yPosition = value;\n this.setPositionClasses();\n }\n /**\n * This method takes classes set on the host mat-menu element and applies them on the\n * menu template that displays in the overlay container. Otherwise, it's difficult\n * to style the containing menu from outside the component.\n * @param classes list of class names\n */\n set panelClass(classes) {\n const previousPanelClass = this._previousPanelClass;\n if (previousPanelClass && previousPanelClass.length) {\n previousPanelClass.split(' ').forEach(className => {\n this._classList[className] = false;\n });\n }\n this._previousPanelClass = classes;\n if (classes && classes.length) {\n classes.split(' ').forEach(className => {\n this._classList[className] = true;\n });\n this._elementRef.nativeElement.className = '';\n }\n }\n /**\n * This method takes classes set on the host mat-menu element and applies them on the\n * menu template that displays in the overlay container. Otherwise, it's difficult\n * to style the containing menu from outside the component.\n * @deprecated Use `panelClass` instead.\n * @breaking-change 8.0.0\n */\n get classList() {\n return this.panelClass;\n }\n set classList(classes) {\n this.panelClass = classes;\n }\n constructor(_elementRef, _ngZone, defaultOptions,\n // @breaking-change 15.0.0 `_changeDetectorRef` to become a required parameter.\n _changeDetectorRef) {\n this._elementRef = _elementRef;\n this._ngZone = _ngZone;\n this._changeDetectorRef = _changeDetectorRef;\n this._elevationPrefix = 'mat-elevation-z';\n this._baseElevation = 8;\n /** Only the direct descendant menu items. */\n this._directDescendantItems = new QueryList();\n /** Config object to be passed into the menu's ngClass */\n this._classList = {};\n /** Current state of the panel animation. */\n this._panelAnimationState = 'void';\n /** Emits whenever an animation on the menu completes. */\n this._animationDone = new Subject();\n /** Event emitted when the menu is closed. */\n this.closed = new EventEmitter();\n /**\n * Event emitted when the menu is closed.\n * @deprecated Switch to `closed` instead\n * @breaking-change 8.0.0\n */\n this.close = this.closed;\n this.panelId = `mat-menu-panel-${menuPanelUid++}`;\n this.overlayPanelClass = defaultOptions.overlayPanelClass || '';\n this._xPosition = defaultOptions.xPosition;\n this._yPosition = defaultOptions.yPosition;\n this.backdropClass = defaultOptions.backdropClass;\n this.overlapTrigger = defaultOptions.overlapTrigger;\n this.hasBackdrop = defaultOptions.hasBackdrop;\n }\n ngOnInit() {\n this.setPositionClasses();\n }\n ngAfterContentInit() {\n this._updateDirectDescendants();\n this._keyManager = new FocusKeyManager(this._directDescendantItems).withWrap().withTypeAhead().withHomeAndEnd();\n this._keyManager.tabOut.subscribe(() => this.closed.emit('tab'));\n // If a user manually (programmatically) focuses a menu item, we need to reflect that focus\n // change back to the key manager. Note that we don't need to unsubscribe here because _focused\n // is internal and we know that it gets completed on destroy.\n this._directDescendantItems.changes.pipe(startWith(this._directDescendantItems), switchMap(items => merge(...items.map(item => item._focused)))).subscribe(focusedItem => this._keyManager.updateActiveItem(focusedItem));\n this._directDescendantItems.changes.subscribe(itemsList => {\n // Move focus to another item, if the active item is removed from the list.\n // We need to debounce the callback, because multiple items might be removed\n // in quick succession.\n const manager = this._keyManager;\n if (this._panelAnimationState === 'enter' && manager.activeItem?._hasFocus()) {\n const items = itemsList.toArray();\n const index = Math.max(0, Math.min(items.length - 1, manager.activeItemIndex || 0));\n if (items[index] && !items[index].disabled) {\n manager.setActiveItem(index);\n } else {\n manager.setNextItemActive();\n }\n }\n });\n }\n ngOnDestroy() {\n this._keyManager?.destroy();\n this._directDescendantItems.destroy();\n this.closed.complete();\n this._firstItemFocusSubscription?.unsubscribe();\n }\n /** Stream that emits whenever the hovered menu item changes. */\n _hovered() {\n // Coerce the `changes` property because Angular types it as `Observable`\n const itemChanges = this._directDescendantItems.changes;\n return itemChanges.pipe(startWith(this._directDescendantItems), switchMap(items => merge(...items.map(item => item._hovered))));\n }\n /*\n * Registers a menu item with the menu.\n * @docs-private\n * @deprecated No longer being used. To be removed.\n * @breaking-change 9.0.0\n */\n addItem(_item) {}\n /**\n * Removes an item from the menu.\n * @docs-private\n * @deprecated No longer being used. To be removed.\n * @breaking-change 9.0.0\n */\n removeItem(_item) {}\n /** Handle a keyboard event from the menu, delegating to the appropriate action. */\n _handleKeydown(event) {\n const keyCode = event.keyCode;\n const manager = this._keyManager;\n switch (keyCode) {\n case ESCAPE:\n if (!hasModifierKey(event)) {\n event.preventDefault();\n this.closed.emit('keydown');\n }\n break;\n case LEFT_ARROW:\n if (this.parentMenu && this.direction === 'ltr') {\n this.closed.emit('keydown');\n }\n break;\n case RIGHT_ARROW:\n if (this.parentMenu && this.direction === 'rtl') {\n this.closed.emit('keydown');\n }\n break;\n default:\n if (keyCode === UP_ARROW || keyCode === DOWN_ARROW) {\n manager.setFocusOrigin('keyboard');\n }\n manager.onKeydown(event);\n return;\n }\n // Don't allow the event to propagate if we've already handled it, or it may\n // end up reaching other overlays that were opened earlier (see #22694).\n event.stopPropagation();\n }\n /**\n * Focus the first item in the menu.\n * @param origin Action from which the focus originated. Used to set the correct styling.\n */\n focusFirstItem(origin = 'program') {\n // Wait for `onStable` to ensure iOS VoiceOver screen reader focuses the first item (#24735).\n this._firstItemFocusSubscription?.unsubscribe();\n this._firstItemFocusSubscription = this._ngZone.onStable.pipe(take(1)).subscribe(() => {\n let menuPanel = null;\n if (this._directDescendantItems.length) {\n // Because the `mat-menuPanel` is at the DOM insertion point, not inside the overlay, we don't\n // have a nice way of getting a hold of the menuPanel panel. We can't use a `ViewChild` either\n // because the panel is inside an `ng-template`. We work around it by starting from one of\n // the items and walking up the DOM.\n menuPanel = this._directDescendantItems.first._getHostElement().closest('[role=\"menu\"]');\n }\n // If an item in the menuPanel is already focused, avoid overriding the focus.\n if (!menuPanel || !menuPanel.contains(document.activeElement)) {\n const manager = this._keyManager;\n manager.setFocusOrigin(origin).setFirstItemActive();\n // If there's no active item at this point, it means that all the items are disabled.\n // Move focus to the menuPanel panel so keyboard events like Escape still work. Also this will\n // give _some_ feedback to screen readers.\n if (!manager.activeItem && menuPanel) {\n menuPanel.focus();\n }\n }\n });\n }\n /**\n * Resets the active item in the menu. This is used when the menu is opened, allowing\n * the user to start from the first option when pressing the down arrow.\n */\n resetActiveItem() {\n this._keyManager.setActiveItem(-1);\n }\n /**\n * Sets the menu panel elevation.\n * @param depth Number of parent menus that come before the menu.\n */\n setElevation(depth) {\n // The elevation starts at the base and increases by one for each level.\n // Capped at 24 because that's the maximum elevation defined in the Material design spec.\n const elevation = Math.min(this._baseElevation + depth, 24);\n const newElevation = `${this._elevationPrefix}${elevation}`;\n const customElevation = Object.keys(this._classList).find(className => {\n return className.startsWith(this._elevationPrefix);\n });\n if (!customElevation || customElevation === this._previousElevation) {\n if (this._previousElevation) {\n this._classList[this._previousElevation] = false;\n }\n this._classList[newElevation] = true;\n this._previousElevation = newElevation;\n }\n }\n /**\n * Adds classes to the menu panel based on its position. Can be used by\n * consumers to add specific styling based on the position.\n * @param posX Position of the menu along the x axis.\n * @param posY Position of the menu along the y axis.\n * @docs-private\n */\n setPositionClasses(posX = this.xPosition, posY = this.yPosition) {\n const classes = this._classList;\n classes['mat-menu-before'] = posX === 'before';\n classes['mat-menu-after'] = posX === 'after';\n classes['mat-menu-above'] = posY === 'above';\n classes['mat-menu-below'] = posY === 'below';\n // @breaking-change 15.0.0 Remove null check for `_changeDetectorRef`.\n this._changeDetectorRef?.markForCheck();\n }\n /** Starts the enter animation. */\n _startAnimation() {\n // @breaking-change 8.0.0 Combine with _resetAnimation.\n this._panelAnimationState = 'enter';\n }\n /** Resets the panel animation to its initial state. */\n _resetAnimation() {\n // @breaking-change 8.0.0 Combine with _startAnimation.\n this._panelAnimationState = 'void';\n }\n /** Callback that is invoked when the panel animation completes. */\n _onAnimationDone(event) {\n this._animationDone.next(event);\n this._isAnimating = false;\n }\n _onAnimationStart(event) {\n this._isAnimating = true;\n // Scroll the content element to the top as soon as the animation starts. This is necessary,\n // because we move focus to the first item while it's still being animated, which can throw\n // the browser off when it determines the scroll position. Alternatively we can move focus\n // when the animation is done, however moving focus asynchronously will interrupt screen\n // readers which are in the process of reading out the menu already. We take the `element`\n // from the `event` since we can't use a `ViewChild` to access the pane.\n if (event.toState === 'enter' && this._keyManager.activeItemIndex === 0) {\n event.element.scrollTop = 0;\n }\n }\n /**\n * Sets up a stream that will keep track of any newly-added menu items and will update the list\n * of direct descendants. We collect the descendants this way, because `_allItems` can include\n * items that are part of child menus, and using a custom way of registering items is unreliable\n * when it comes to maintaining the item order.\n */\n _updateDirectDescendants() {\n this._allItems.changes.pipe(startWith(this._allItems)).subscribe(items => {\n this._directDescendantItems.reset(items.filter(item => item._parentMenu === this));\n this._directDescendantItems.notifyOnChanges();\n });\n }\n static {\n this.ɵfac = function MatMenu_Factory(t) {\n return new (t || MatMenu)(i0.ɵɵdirectiveInject(i0.ElementRef), i0.ɵɵdirectiveInject(i0.NgZone), i0.ɵɵdirectiveInject(MAT_MENU_DEFAULT_OPTIONS), i0.ɵɵdirectiveInject(i0.ChangeDetectorRef));\n };\n }\n static {\n this.ɵcmp = /* @__PURE__ */i0.ɵɵdefineComponent({\n type: MatMenu,\n selectors: [[\"mat-menu\"]],\n contentQueries: function MatMenu_ContentQueries(rf, ctx, dirIndex) {\n if (rf & 1) {\n i0.ɵɵcontentQuery(dirIndex, MAT_MENU_CONTENT, 5);\n i0.ɵɵcontentQuery(dirIndex, MatMenuItem, 5);\n i0.ɵɵcontentQuery(dirIndex, MatMenuItem, 4);\n }\n if (rf & 2) {\n let _t;\n i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.lazyContent = _t.first);\n i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx._allItems = _t);\n i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.items = _t);\n }\n },\n viewQuery: function MatMenu_Query(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵviewQuery(TemplateRef, 5);\n }\n if (rf & 2) {\n let _t;\n i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.templateRef = _t.first);\n }\n },\n hostVars: 3,\n hostBindings: function MatMenu_HostBindings(rf, ctx) {\n if (rf & 2) {\n i0.ɵɵattribute(\"aria-label\", null)(\"aria-labelledby\", null)(\"aria-describedby\", null);\n }\n },\n inputs: {\n backdropClass: \"backdropClass\",\n ariaLabel: [i0.ɵɵInputFlags.None, \"aria-label\", \"ariaLabel\"],\n ariaLabelledby: [i0.ɵɵInputFlags.None, \"aria-labelledby\", \"ariaLabelledby\"],\n ariaDescribedby: [i0.ɵɵInputFlags.None, \"aria-describedby\", \"ariaDescribedby\"],\n xPosition: \"xPosition\",\n yPosition: \"yPosition\",\n overlapTrigger: [i0.ɵɵInputFlags.HasDecoratorInputTransform, \"overlapTrigger\", \"overlapTrigger\", booleanAttribute],\n hasBackdrop: [i0.ɵɵInputFlags.HasDecoratorInputTransform, \"hasBackdrop\", \"hasBackdrop\", value => value == null ? null : booleanAttribute(value)],\n panelClass: [i0.ɵɵInputFlags.None, \"class\", \"panelClass\"],\n classList: \"classList\"\n },\n outputs: {\n closed: \"closed\",\n close: \"close\"\n },\n exportAs: [\"matMenu\"],\n standalone: true,\n features: [i0.ɵɵProvidersFeature([{\n provide: MAT_MENU_PANEL,\n useExisting: MatMenu\n }]), i0.ɵɵInputTransformsFeature, i0.ɵɵStandaloneFeature],\n ngContentSelectors: _c3,\n decls: 1,\n vars: 0,\n consts: [[\"tabindex\", \"-1\", \"role\", \"menu\", 1, \"mat-mdc-menu-panel\", \"mat-mdc-elevation-specific\", 3, \"keydown\", \"click\", \"id\", \"ngClass\"], [1, \"mat-mdc-menu-content\"]],\n template: function MatMenu_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵprojectionDef();\n i0.ɵɵtemplate(0, MatMenu_ng_template_0_Template, 3, 6, \"ng-template\");\n }\n },\n dependencies: [NgClass],\n styles: [\"mat-menu{display:none}.mat-mdc-menu-content{margin:0;padding:8px 0;list-style-type:none}.mat-mdc-menu-content:focus{outline:none}.mat-mdc-menu-content,.mat-mdc-menu-content .mat-mdc-menu-item .mat-mdc-menu-item-text{-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;flex:1;white-space:normal;font-family:var(--mat-menu-item-label-text-font);line-height:var(--mat-menu-item-label-text-line-height);font-size:var(--mat-menu-item-label-text-size);letter-spacing:var(--mat-menu-item-label-text-tracking);font-weight:var(--mat-menu-item-label-text-weight)}.mat-mdc-menu-panel{min-width:112px;max-width:280px;overflow:auto;-webkit-overflow-scrolling:touch;box-sizing:border-box;outline:0;border-radius:var(--mat-menu-container-shape);background-color:var(--mat-menu-container-color);will-change:transform,opacity}.mat-mdc-menu-panel.ng-animating{pointer-events:none}.cdk-high-contrast-active .mat-mdc-menu-panel{outline:solid 1px}.mat-divider{color:var(--mat-menu-divider-color);margin-bottom:var(--mat-menu-divider-bottom-spacing);margin-top:var(--mat-menu-divider-top-spacing)}.mat-mdc-menu-item{display:flex;position:relative;align-items:center;justify-content:flex-start;overflow:hidden;padding:0;padding-left:var(--mat-menu-item-leading-spacing);padding-right:var(--mat-menu-item-trailing-spacing);-webkit-user-select:none;user-select:none;cursor:pointer;outline:none;border:none;-webkit-tap-highlight-color:rgba(0,0,0,0);cursor:pointer;width:100%;text-align:left;box-sizing:border-box;color:inherit;font-size:inherit;background:none;text-decoration:none;margin:0;align-items:center;min-height:48px}.mat-mdc-menu-item:focus{outline:none}[dir=rtl] .mat-mdc-menu-item,.mat-mdc-menu-item[dir=rtl]{padding-left:var(--mat-menu-item-trailing-spacing);padding-right:var(--mat-menu-item-leading-spacing)}.mat-mdc-menu-item:has(.material-icons,mat-icon,[matButtonIcon]){padding-left:var(--mat-menu-item-with-icon-leading-spacing);padding-right:var(--mat-menu-item-with-icon-trailing-spacing)}[dir=rtl] .mat-mdc-menu-item:has(.material-icons,mat-icon,[matButtonIcon]),.mat-mdc-menu-item:has(.material-icons,mat-icon,[matButtonIcon])[dir=rtl]{padding-left:var(--mat-menu-item-with-icon-trailing-spacing);padding-right:var(--mat-menu-item-with-icon-leading-spacing)}.mat-mdc-menu-item::-moz-focus-inner{border:0}.mat-mdc-menu-item,.mat-mdc-menu-item:visited,.mat-mdc-menu-item:link{color:var(--mat-menu-item-label-text-color)}.mat-mdc-menu-item .mat-icon-no-color,.mat-mdc-menu-item .mat-mdc-menu-submenu-icon{color:var(--mat-menu-item-icon-color)}.mat-mdc-menu-item[disabled]{cursor:default;opacity:.38}.mat-mdc-menu-item[disabled]::after{display:block;position:absolute;content:\\\"\\\";top:0;left:0;bottom:0;right:0}.mat-mdc-menu-item .mat-icon{flex-shrink:0;margin-right:var(--mat-menu-item-spacing);height:var(--mat-menu-item-icon-size);width:var(--mat-menu-item-icon-size)}[dir=rtl] .mat-mdc-menu-item{text-align:right}[dir=rtl] .mat-mdc-menu-item .mat-icon{margin-right:0;margin-left:var(--mat-menu-item-spacing)}.mat-mdc-menu-item:not([disabled]):hover{background-color:var(--mat-menu-item-hover-state-layer-color)}.mat-mdc-menu-item:not([disabled]).cdk-program-focused,.mat-mdc-menu-item:not([disabled]).cdk-keyboard-focused,.mat-mdc-menu-item:not([disabled]).mat-mdc-menu-item-highlighted{background-color:var(--mat-menu-item-focus-state-layer-color)}.cdk-high-contrast-active .mat-mdc-menu-item{margin-top:1px}.mat-mdc-menu-submenu-icon{width:var(--mat-menu-item-icon-size);height:10px;fill:currentColor;padding-left:var(--mat-menu-item-spacing)}[dir=rtl] .mat-mdc-menu-submenu-icon{right:auto;padding-right:var(--mat-menu-item-spacing);padding-left:0}.cdk-high-contrast-active .mat-mdc-menu-submenu-icon{fill:CanvasText}.mat-mdc-menu-item .mat-mdc-menu-ripple{top:0;left:0;right:0;bottom:0;position:absolute;pointer-events:none}\"],\n encapsulation: 2,\n data: {\n animation: [matMenuAnimations.transformMenu, matMenuAnimations.fadeInItems]\n },\n changeDetection: 0\n });\n }\n }\n return MatMenu;\n})();\n/*#__PURE__*/(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n\n/** Injection token that determines the scroll handling while the menu is open. */\nconst MAT_MENU_SCROLL_STRATEGY = /*#__PURE__*/new InjectionToken('mat-menu-scroll-strategy', {\n providedIn: 'root',\n factory: () => {\n const overlay = inject(Overlay);\n return () => overlay.scrollStrategies.reposition();\n }\n});\n/** @docs-private */\nfunction MAT_MENU_SCROLL_STRATEGY_FACTORY(overlay) {\n return () => overlay.scrollStrategies.reposition();\n}\n/** @docs-private */\nconst MAT_MENU_SCROLL_STRATEGY_FACTORY_PROVIDER = {\n provide: MAT_MENU_SCROLL_STRATEGY,\n deps: [Overlay],\n useFactory: MAT_MENU_SCROLL_STRATEGY_FACTORY\n};\n/** Options for binding a passive event listener. */\nconst passiveEventListenerOptions = /*#__PURE__*/normalizePassiveListenerOptions({\n passive: true\n});\n/**\n * Default top padding of the menu panel.\n * @deprecated No longer being used. Will be removed.\n * @breaking-change 15.0.0\n */\nconst MENU_PANEL_TOP_PADDING = 8;\n/** Directive applied to an element that should trigger a `mat-menu`. */\nlet MatMenuTrigger = /*#__PURE__*/(() => {\n class MatMenuTrigger {\n /**\n * @deprecated\n * @breaking-change 8.0.0\n */\n get _deprecatedMatMenuTriggerFor() {\n return this.menu;\n }\n set _deprecatedMatMenuTriggerFor(v) {\n this.menu = v;\n }\n /** References the menu instance that the trigger is associated with. */\n get menu() {\n return this._menu;\n }\n set menu(menu) {\n if (menu === this._menu) {\n return;\n }\n this._menu = menu;\n this._menuCloseSubscription.unsubscribe();\n if (menu) {\n if (menu === this._parentMaterialMenu && (typeof ngDevMode === 'undefined' || ngDevMode)) {\n throwMatMenuRecursiveError();\n }\n this._menuCloseSubscription = menu.close.subscribe(reason => {\n this._destroyMenu(reason);\n // If a click closed the menu, we should close the entire chain of nested menus.\n if ((reason === 'click' || reason === 'tab') && this._parentMaterialMenu) {\n this._parentMaterialMenu.closed.emit(reason);\n }\n });\n }\n this._menuItemInstance?._setTriggersSubmenu(this.triggersSubmenu());\n }\n constructor(_overlay, _element, _viewContainerRef, scrollStrategy, parentMenu,\n // `MatMenuTrigger` is commonly used in combination with a `MatMenuItem`.\n // tslint:disable-next-line: lightweight-tokens\n _menuItemInstance, _dir, _focusMonitor, _ngZone) {\n this._overlay = _overlay;\n this._element = _element;\n this._viewContainerRef = _viewContainerRef;\n this._menuItemInstance = _menuItemInstance;\n this._dir = _dir;\n this._focusMonitor = _focusMonitor;\n this._ngZone = _ngZone;\n this._overlayRef = null;\n this._menuOpen = false;\n this._closingActionsSubscription = Subscription.EMPTY;\n this._hoverSubscription = Subscription.EMPTY;\n this._menuCloseSubscription = Subscription.EMPTY;\n this._changeDetectorRef = inject(ChangeDetectorRef);\n /**\n * Handles touch start events on the trigger.\n * Needs to be an arrow function so we can easily use addEventListener and removeEventListener.\n */\n this._handleTouchStart = event => {\n if (!isFakeTouchstartFromScreenReader(event)) {\n this._openedBy = 'touch';\n }\n };\n // Tracking input type is necessary so it's possible to only auto-focus\n // the first item of the list when the menu is opened via the keyboard\n this._openedBy = undefined;\n /**\n * Whether focus should be restored when the menu is closed.\n * Note that disabling this option can have accessibility implications\n * and it's up to you to manage focus, if you decide to turn it off.\n */\n this.restoreFocus = true;\n /** Event emitted when the associated menu is opened. */\n this.menuOpened = new EventEmitter();\n /**\n * Event emitted when the associated menu is opened.\n * @deprecated Switch to `menuOpened` instead\n * @breaking-change 8.0.0\n */\n // tslint:disable-next-line:no-output-on-prefix\n this.onMenuOpen = this.menuOpened;\n /** Event emitted when the associated menu is closed. */\n this.menuClosed = new EventEmitter();\n /**\n * Event emitted when the associated menu is closed.\n * @deprecated Switch to `menuClosed` instead\n * @breaking-change 8.0.0\n */\n // tslint:disable-next-line:no-output-on-prefix\n this.onMenuClose = this.menuClosed;\n this._scrollStrategy = scrollStrategy;\n this._parentMaterialMenu = parentMenu instanceof MatMenu ? parentMenu : undefined;\n _element.nativeElement.addEventListener('touchstart', this._handleTouchStart, passiveEventListenerOptions);\n }\n ngAfterContentInit() {\n this._handleHover();\n }\n ngOnDestroy() {\n if (this._overlayRef) {\n this._overlayRef.dispose();\n this._overlayRef = null;\n }\n this._element.nativeElement.removeEventListener('touchstart', this._handleTouchStart, passiveEventListenerOptions);\n this._menuCloseSubscription.unsubscribe();\n this._closingActionsSubscription.unsubscribe();\n this._hoverSubscription.unsubscribe();\n }\n /** Whether the menu is open. */\n get menuOpen() {\n return this._menuOpen;\n }\n /** The text direction of the containing app. */\n get dir() {\n return this._dir && this._dir.value === 'rtl' ? 'rtl' : 'ltr';\n }\n /** Whether the menu triggers a sub-menu or a top-level one. */\n triggersSubmenu() {\n return !!(this._menuItemInstance && this._parentMaterialMenu && this.menu);\n }\n /** Toggles the menu between the open and closed states. */\n toggleMenu() {\n return this._menuOpen ? this.closeMenu() : this.openMenu();\n }\n /** Opens the menu. */\n openMenu() {\n const menu = this.menu;\n if (this._menuOpen || !menu) {\n return;\n }\n const overlayRef = this._createOverlay(menu);\n const overlayConfig = overlayRef.getConfig();\n const positionStrategy = overlayConfig.positionStrategy;\n this._setPosition(menu, positionStrategy);\n overlayConfig.hasBackdrop = menu.hasBackdrop == null ? !this.triggersSubmenu() : menu.hasBackdrop;\n overlayRef.attach(this._getPortal(menu));\n if (menu.lazyContent) {\n menu.lazyContent.attach(this.menuData);\n }\n this._closingActionsSubscription = this._menuClosingActions().subscribe(() => this.closeMenu());\n this._initMenu(menu);\n if (menu instanceof MatMenu) {\n menu._startAnimation();\n menu._directDescendantItems.changes.pipe(takeUntil(menu.close)).subscribe(() => {\n // Re-adjust the position without locking when the amount of items\n // changes so that the overlay is allowed to pick a new optimal position.\n positionStrategy.withLockedPosition(false).reapplyLastPosition();\n positionStrategy.withLockedPosition(true);\n });\n }\n }\n /** Closes the menu. */\n closeMenu() {\n this.menu?.close.emit();\n }\n /**\n * Focuses the menu trigger.\n * @param origin Source of the menu trigger's focus.\n */\n focus(origin, options) {\n if (this._focusMonitor && origin) {\n this._focusMonitor.focusVia(this._element, origin, options);\n } else {\n this._element.nativeElement.focus(options);\n }\n }\n /**\n * Updates the position of the menu to ensure that it fits all options within the viewport.\n */\n updatePosition() {\n this._overlayRef?.updatePosition();\n }\n /** Closes the menu and does the necessary cleanup. */\n _destroyMenu(reason) {\n if (!this._overlayRef || !this.menuOpen) {\n return;\n }\n const menu = this.menu;\n this._closingActionsSubscription.unsubscribe();\n this._overlayRef.detach();\n // Always restore focus if the user is navigating using the keyboard or the menu was opened\n // programmatically. We don't restore for non-root triggers, because it can prevent focus\n // from making it back to the root trigger when closing a long chain of menus by clicking\n // on the backdrop.\n if (this.restoreFocus && (reason === 'keydown' || !this._openedBy || !this.triggersSubmenu())) {\n this.focus(this._openedBy);\n }\n this._openedBy = undefined;\n if (menu instanceof MatMenu) {\n menu._resetAnimation();\n if (menu.lazyContent) {\n // Wait for the exit animation to finish before detaching the content.\n menu._animationDone.pipe(filter(event => event.toState === 'void'), take(1),\n // Interrupt if the content got re-attached.\n takeUntil(menu.lazyContent._attached)).subscribe({\n next: () => menu.lazyContent.detach(),\n // No matter whether the content got re-attached, reset the menu.\n complete: () => this._setIsMenuOpen(false)\n });\n } else {\n this._setIsMenuOpen(false);\n }\n } else {\n this._setIsMenuOpen(false);\n menu?.lazyContent?.detach();\n }\n }\n /**\n * This method sets the menu state to open and focuses the first item if\n * the menu was opened via the keyboard.\n */\n _initMenu(menu) {\n menu.parentMenu = this.triggersSubmenu() ? this._parentMaterialMenu : undefined;\n menu.direction = this.dir;\n this._setMenuElevation(menu);\n menu.focusFirstItem(this._openedBy || 'program');\n this._setIsMenuOpen(true);\n }\n /** Updates the menu elevation based on the amount of parent menus that it has. */\n _setMenuElevation(menu) {\n if (menu.setElevation) {\n let depth = 0;\n let parentMenu = menu.parentMenu;\n while (parentMenu) {\n depth++;\n parentMenu = parentMenu.parentMenu;\n }\n menu.setElevation(depth);\n }\n }\n // set state rather than toggle to support triggers sharing a menu\n _setIsMenuOpen(isOpen) {\n if (isOpen !== this._menuOpen) {\n this._menuOpen = isOpen;\n this._menuOpen ? this.menuOpened.emit() : this.menuClosed.emit();\n if (this.triggersSubmenu()) {\n this._menuItemInstance._setHighlighted(isOpen);\n }\n this._changeDetectorRef.markForCheck();\n }\n }\n /**\n * This method creates the overlay from the provided menu's template and saves its\n * OverlayRef so that it can be attached to the DOM when openMenu is called.\n */\n _createOverlay(menu) {\n if (!this._overlayRef) {\n const config = this._getOverlayConfig(menu);\n this._subscribeToPositions(menu, config.positionStrategy);\n this._overlayRef = this._overlay.create(config);\n // Consume the `keydownEvents` in order to prevent them from going to another overlay.\n // Ideally we'd also have our keyboard event logic in here, however doing so will\n // break anybody that may have implemented the `MatMenuPanel` themselves.\n this._overlayRef.keydownEvents().subscribe();\n }\n return this._overlayRef;\n }\n /**\n * This method builds the configuration object needed to create the overlay, the OverlayState.\n * @returns OverlayConfig\n */\n _getOverlayConfig(menu) {\n return new OverlayConfig({\n positionStrategy: this._overlay.position().flexibleConnectedTo(this._element).withLockedPosition().withGrowAfterOpen().withTransformOriginOn('.mat-menu-panel, .mat-mdc-menu-panel'),\n backdropClass: menu.backdropClass || 'cdk-overlay-transparent-backdrop',\n panelClass: menu.overlayPanelClass,\n scrollStrategy: this._scrollStrategy(),\n direction: this._dir\n });\n }\n /**\n * Listens to changes in the position of the overlay and sets the correct classes\n * on the menu based on the new position. This ensures the animation origin is always\n * correct, even if a fallback position is used for the overlay.\n */\n _subscribeToPositions(menu, position) {\n if (menu.setPositionClasses) {\n position.positionChanges.subscribe(change => {\n const posX = change.connectionPair.overlayX === 'start' ? 'after' : 'before';\n const posY = change.connectionPair.overlayY === 'top' ? 'below' : 'above';\n // @breaking-change 15.0.0 Remove null check for `ngZone`.\n // `positionChanges` fires outside of the `ngZone` and `setPositionClasses` might be\n // updating something in the view so we need to bring it back in.\n if (this._ngZone) {\n this._ngZone.run(() => menu.setPositionClasses(posX, posY));\n } else {\n menu.setPositionClasses(posX, posY);\n }\n });\n }\n }\n /**\n * Sets the appropriate positions on a position strategy\n * so the overlay connects with the trigger correctly.\n * @param positionStrategy Strategy whose position to update.\n */\n _setPosition(menu, positionStrategy) {\n let [originX, originFallbackX] = menu.xPosition === 'before' ? ['end', 'start'] : ['start', 'end'];\n let [overlayY, overlayFallbackY] = menu.yPosition === 'above' ? ['bottom', 'top'] : ['top', 'bottom'];\n let [originY, originFallbackY] = [overlayY, overlayFallbackY];\n let [overlayX, overlayFallbackX] = [originX, originFallbackX];\n let offsetY = 0;\n if (this.triggersSubmenu()) {\n // When the menu is a sub-menu, it should always align itself\n // to the edges of the trigger, instead of overlapping it.\n overlayFallbackX = originX = menu.xPosition === 'before' ? 'start' : 'end';\n originFallbackX = overlayX = originX === 'end' ? 'start' : 'end';\n if (this._parentMaterialMenu) {\n if (this._parentInnerPadding == null) {\n const firstItem = this._parentMaterialMenu.items.first;\n this._parentInnerPadding = firstItem ? firstItem._getHostElement().offsetTop : 0;\n }\n offsetY = overlayY === 'bottom' ? this._parentInnerPadding : -this._parentInnerPadding;\n }\n } else if (!menu.overlapTrigger) {\n originY = overlayY === 'top' ? 'bottom' : 'top';\n originFallbackY = overlayFallbackY === 'top' ? 'bottom' : 'top';\n }\n positionStrategy.withPositions([{\n originX,\n originY,\n overlayX,\n overlayY,\n offsetY\n }, {\n originX: originFallbackX,\n originY,\n overlayX: overlayFallbackX,\n overlayY,\n offsetY\n }, {\n originX,\n originY: originFallbackY,\n overlayX,\n overlayY: overlayFallbackY,\n offsetY: -offsetY\n }, {\n originX: originFallbackX,\n originY: originFallbackY,\n overlayX: overlayFallbackX,\n overlayY: overlayFallbackY,\n offsetY: -offsetY\n }]);\n }\n /** Returns a stream that emits whenever an action that should close the menu occurs. */\n _menuClosingActions() {\n const backdrop = this._overlayRef.backdropClick();\n const detachments = this._overlayRef.detachments();\n const parentClose = this._parentMaterialMenu ? this._parentMaterialMenu.closed : of();\n const hover = this._parentMaterialMenu ? this._parentMaterialMenu._hovered().pipe(filter(active => active !== this._menuItemInstance), filter(() => this._menuOpen)) : of();\n return merge(backdrop, parentClose, hover, detachments);\n }\n /** Handles mouse presses on the trigger. */\n _handleMousedown(event) {\n if (!isFakeMousedownFromScreenReader(event)) {\n // Since right or middle button clicks won't trigger the `click` event,\n // we shouldn't consider the menu as opened by mouse in those cases.\n this._openedBy = event.button === 0 ? 'mouse' : undefined;\n // Since clicking on the trigger won't close the menu if it opens a sub-menu,\n // we should prevent focus from moving onto it via click to avoid the\n // highlight from lingering on the menu item.\n if (this.triggersSubmenu()) {\n event.preventDefault();\n }\n }\n }\n /** Handles key presses on the trigger. */\n _handleKeydown(event) {\n const keyCode = event.keyCode;\n // Pressing enter on the trigger will trigger the click handler later.\n if (keyCode === ENTER || keyCode === SPACE) {\n this._openedBy = 'keyboard';\n }\n if (this.triggersSubmenu() && (keyCode === RIGHT_ARROW && this.dir === 'ltr' || keyCode === LEFT_ARROW && this.dir === 'rtl')) {\n this._openedBy = 'keyboard';\n this.openMenu();\n }\n }\n /** Handles click events on the trigger. */\n _handleClick(event) {\n if (this.triggersSubmenu()) {\n // Stop event propagation to avoid closing the parent menu.\n event.stopPropagation();\n this.openMenu();\n } else {\n this.toggleMenu();\n }\n }\n /** Handles the cases where the user hovers over the trigger. */\n _handleHover() {\n // Subscribe to changes in the hovered item in order to toggle the panel.\n if (!this.triggersSubmenu() || !this._parentMaterialMenu) {\n return;\n }\n this._hoverSubscription = this._parentMaterialMenu._hovered()\n // Since we might have multiple competing triggers for the same menu (e.g. a sub-menu\n // with different data and triggers), we have to delay it by a tick to ensure that\n // it won't be closed immediately after it is opened.\n .pipe(filter(active => active === this._menuItemInstance && !active.disabled), delay(0, asapScheduler)).subscribe(() => {\n this._openedBy = 'mouse';\n // If the same menu is used between multiple triggers, it might still be animating\n // while the new trigger tries to re-open it. Wait for the animation to finish\n // before doing so. Also interrupt if the user moves to another item.\n if (this.menu instanceof MatMenu && this.menu._isAnimating) {\n // We need the `delay(0)` here in order to avoid\n // 'changed after checked' errors in some cases. See #12194.\n this.menu._animationDone.pipe(take(1), delay(0, asapScheduler), takeUntil(this._parentMaterialMenu._hovered())).subscribe(() => this.openMenu());\n } else {\n this.openMenu();\n }\n });\n }\n /** Gets the portal that should be attached to the overlay. */\n _getPortal(menu) {\n // Note that we can avoid this check by keeping the portal on the menu panel.\n // While it would be cleaner, we'd have to introduce another required method on\n // `MatMenuPanel`, making it harder to consume.\n if (!this._portal || this._portal.templateRef !== menu.templateRef) {\n this._portal = new TemplatePortal(menu.templateRef, this._viewContainerRef);\n }\n return this._portal;\n }\n static {\n this.ɵfac = function MatMenuTrigger_Factory(t) {\n return new (t || MatMenuTrigger)(i0.ɵɵdirectiveInject(i1$1.Overlay), i0.ɵɵdirectiveInject(i0.ElementRef), i0.ɵɵdirectiveInject(i0.ViewContainerRef), i0.ɵɵdirectiveInject(MAT_MENU_SCROLL_STRATEGY), i0.ɵɵdirectiveInject(MAT_MENU_PANEL, 8), i0.ɵɵdirectiveInject(MatMenuItem, 10), i0.ɵɵdirectiveInject(i3.Directionality, 8), i0.ɵɵdirectiveInject(i1.FocusMonitor), i0.ɵɵdirectiveInject(i0.NgZone));\n };\n }\n static {\n this.ɵdir = /* @__PURE__ */i0.ɵɵdefineDirective({\n type: MatMenuTrigger,\n selectors: [[\"\", \"mat-menu-trigger-for\", \"\"], [\"\", \"matMenuTriggerFor\", \"\"]],\n hostAttrs: [1, \"mat-mdc-menu-trigger\"],\n hostVars: 3,\n hostBindings: function MatMenuTrigger_HostBindings(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵlistener(\"click\", function MatMenuTrigger_click_HostBindingHandler($event) {\n return ctx._handleClick($event);\n })(\"mousedown\", function MatMenuTrigger_mousedown_HostBindingHandler($event) {\n return ctx._handleMousedown($event);\n })(\"keydown\", function MatMenuTrigger_keydown_HostBindingHandler($event) {\n return ctx._handleKeydown($event);\n });\n }\n if (rf & 2) {\n i0.ɵɵattribute(\"aria-haspopup\", ctx.menu ? \"menu\" : null)(\"aria-expanded\", ctx.menuOpen)(\"aria-controls\", ctx.menuOpen ? ctx.menu.panelId : null);\n }\n },\n inputs: {\n _deprecatedMatMenuTriggerFor: [i0.ɵɵInputFlags.None, \"mat-menu-trigger-for\", \"_deprecatedMatMenuTriggerFor\"],\n menu: [i0.ɵɵInputFlags.None, \"matMenuTriggerFor\", \"menu\"],\n menuData: [i0.ɵɵInputFlags.None, \"matMenuTriggerData\", \"menuData\"],\n restoreFocus: [i0.ɵɵInputFlags.None, \"matMenuTriggerRestoreFocus\", \"restoreFocus\"]\n },\n outputs: {\n menuOpened: \"menuOpened\",\n onMenuOpen: \"onMenuOpen\",\n menuClosed: \"menuClosed\",\n onMenuClose: \"onMenuClose\"\n },\n exportAs: [\"matMenuTrigger\"],\n standalone: true\n });\n }\n }\n return MatMenuTrigger;\n})();\n/*#__PURE__*/(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\nlet MatMenuModule = /*#__PURE__*/(() => {\n class MatMenuModule {\n static {\n this.ɵfac = function MatMenuModule_Factory(t) {\n return new (t || MatMenuModule)();\n };\n }\n static {\n this.ɵmod = /* @__PURE__ */i0.ɵɵdefineNgModule({\n type: MatMenuModule\n });\n }\n static {\n this.ɵinj = /* @__PURE__ */i0.ɵɵdefineInjector({\n providers: [MAT_MENU_SCROLL_STRATEGY_FACTORY_PROVIDER],\n imports: [CommonModule, MatRippleModule, MatCommonModule, OverlayModule, CdkScrollableModule, MatCommonModule]\n });\n }\n }\n return MatMenuModule;\n})();\n/*#__PURE__*/(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { MAT_MENU_CONTENT, MAT_MENU_DEFAULT_OPTIONS, MAT_MENU_PANEL, MAT_MENU_SCROLL_STRATEGY, MAT_MENU_SCROLL_STRATEGY_FACTORY_PROVIDER, MENU_PANEL_TOP_PADDING, MatMenu, MatMenuContent, MatMenuItem, MatMenuModule, MatMenuTrigger, fadeInItems, matMenuAnimations, transformMenu };\n","import * as i0 from '@angular/core';\nimport { Component, ViewEncapsulation, ChangeDetectionStrategy, Input, NgModule } from '@angular/core';\nimport { coerceBooleanProperty } from '@angular/cdk/coercion';\nimport { MatCommonModule } from '@angular/material/core';\nlet MatDivider = /*#__PURE__*/(() => {\n class MatDivider {\n constructor() {\n this._vertical = false;\n this._inset = false;\n }\n /** Whether the divider is vertically aligned. */\n get vertical() {\n return this._vertical;\n }\n set vertical(value) {\n this._vertical = coerceBooleanProperty(value);\n }\n /** Whether the divider is an inset divider. */\n get inset() {\n return this._inset;\n }\n set inset(value) {\n this._inset = coerceBooleanProperty(value);\n }\n static {\n this.ɵfac = function MatDivider_Factory(t) {\n return new (t || MatDivider)();\n };\n }\n static {\n this.ɵcmp = /* @__PURE__ */i0.ɵɵdefineComponent({\n type: MatDivider,\n selectors: [[\"mat-divider\"]],\n hostAttrs: [\"role\", \"separator\", 1, \"mat-divider\"],\n hostVars: 7,\n hostBindings: function MatDivider_HostBindings(rf, ctx) {\n if (rf & 2) {\n i0.ɵɵattribute(\"aria-orientation\", ctx.vertical ? \"vertical\" : \"horizontal\");\n i0.ɵɵclassProp(\"mat-divider-vertical\", ctx.vertical)(\"mat-divider-horizontal\", !ctx.vertical)(\"mat-divider-inset\", ctx.inset);\n }\n },\n inputs: {\n vertical: \"vertical\",\n inset: \"inset\"\n },\n standalone: true,\n features: [i0.ɵɵStandaloneFeature],\n decls: 0,\n vars: 0,\n template: function MatDivider_Template(rf, ctx) {},\n styles: [\".mat-divider{display:block;margin:0;border-top-style:solid;border-top-color:var(--mat-divider-color);border-top-width:var(--mat-divider-width)}.mat-divider.mat-divider-vertical{border-top:0;border-right-style:solid;border-right-color:var(--mat-divider-color);border-right-width:var(--mat-divider-width)}.mat-divider.mat-divider-inset{margin-left:80px}[dir=rtl] .mat-divider.mat-divider-inset{margin-left:auto;margin-right:80px}\"],\n encapsulation: 2,\n changeDetection: 0\n });\n }\n }\n return MatDivider;\n})();\n/*#__PURE__*/(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\nlet MatDividerModule = /*#__PURE__*/(() => {\n class MatDividerModule {\n static {\n this.ɵfac = function MatDividerModule_Factory(t) {\n return new (t || MatDividerModule)();\n };\n }\n static {\n this.ɵmod = /* @__PURE__ */i0.ɵɵdefineNgModule({\n type: MatDividerModule\n });\n }\n static {\n this.ɵinj = /* @__PURE__ */i0.ɵɵdefineInjector({\n imports: [MatCommonModule, MatCommonModule]\n });\n }\n }\n return MatDividerModule;\n})();\n/*#__PURE__*/(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { MatDivider, MatDividerModule };\n","import { BreakpointObserver } from '@angular/cdk/layout';\nimport {\n ChangeDetectionStrategy,\n Component,\n EventEmitter,\n HostBinding,\n HostListener,\n Input,\n OnDestroy,\n OnInit,\n Output,\n ViewEncapsulation,\n booleanAttribute,\n} from '@angular/core';\nimport { Subject } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\n\ntype displayModeType = 'block' | 'absolute';\n\n@Component({\n selector: 'glxy-page',\n templateUrl: './page.component.html',\n styleUrls: ['./page.component.scss'],\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class PageComponent implements OnDestroy, OnInit {\n @HostBinding('class.display-mode-absolute')\n get isDisplayModeAbsolute(): boolean {\n return this.displayMode === 'absolute';\n }\n\n constructor(private readonly breakpointObserver: BreakpointObserver) {}\n\n @HostBinding('class') class = 'glxy-page';\n\n @Input() displayMode: displayModeType = 'block';\n\n @Input({ transform: booleanAttribute }) isLoading = false;\n\n @Input() mobileMaxWidth = 768;\n\n @Input() scrolledToBottomOffset = 0;\n\n @HostBinding('class.has-padding')\n @Input()\n pagePadding = true;\n\n @HostBinding('class.scroll-shadow')\n scrollShadow = false;\n\n @HostBinding('class.page-is-mobile')\n pageMobile = false;\n\n @Output() pageScroll: EventEmitter = new EventEmitter();\n\n @Output() pageScrolledToBottom: EventEmitter = new EventEmitter();\n\n destroy$: Subject = new Subject();\n\n @HostListener('window:scroll', ['$event'])\n windowScrollEvent($event: Event): void {\n this.onWindowScroll($event);\n }\n\n ngOnInit(): void {\n this.breakpointObserver\n .observe('(max-width: ' + this.mobileMaxWidth + 'px)')\n .pipe(takeUntil(this.destroy$))\n .subscribe({\n next: (resp) => {\n this.pageMobile = resp.matches;\n },\n });\n }\n\n ngOnDestroy(): void {\n this.destroy$.next();\n this.destroy$.complete();\n }\n\n onPageScroll(event: Event): void {\n // On desktop, we use the page's internal scroll\n if (this.pageMobile === false) {\n this.pageScroll.emit(event);\n\n const target = event.target as HTMLDivElement;\n if (!target) return;\n\n const { scrollTop, scrollHeight, offsetHeight } = target;\n\n // Hide and show shadow\n if (scrollTop > 0) {\n this.scrollShadow = true;\n } else {\n this.scrollShadow = false;\n }\n\n // Emit event when we scroll to bottom of page\n const scrollPosition = offsetHeight + scrollTop;\n const bottomScrollPosition = scrollHeight - this.scrolledToBottomOffset;\n\n if (scrollPosition >= bottomScrollPosition) {\n this.pageScrolledToBottom.emit();\n }\n }\n }\n\n onWindowScroll(event: Event): void {\n // On Mobile, use the Window Scroll\n if (this.pageMobile) {\n this.pageScroll.emit(event);\n\n // Scroll to Bottom Emitter\n if (window.innerHeight + window.scrollY >= document.body.offsetHeight - this.scrolledToBottomOffset) {\n this.pageScrolledToBottom.emit();\n }\n }\n }\n}\n","\n\n\n\n
\n \n
\n
\n\n
\n \n
\n","export enum SortDirection {\n Ascending = 0,\n Descending,\n}\n","export class PagedResponse {\n results: T[];\n nextCursor: string;\n hasMore: boolean;\n\n constructor(results: T[], nextCursor: string, hasMore: boolean) {\n this.results = results;\n this.nextCursor = nextCursor;\n this.hasMore = hasMore;\n }\n}\n","export { SortDirection } from './sort-direction';\nexport { PagedResponse } from './paged-response';\n","import * as i0 from '@angular/core';\nimport { Injectable } from '@angular/core';\nimport * as i1 from '@angular/common/http';\nimport { HttpHeaders } from '@angular/common/http';\nimport { map } from 'rxjs/operators';\n\n// *********************************\n// Code generated by sdkgen\n// DO NOT EDIT!.\n//\n// Enums.\n// *********************************\nvar Frequency = /*#__PURE__*/function (Frequency) {\n Frequency[Frequency[\"INVALID\"] = 0] = \"INVALID\";\n Frequency[Frequency[\"MONTHLY\"] = 1] = \"MONTHLY\";\n Frequency[Frequency[\"YEARLY\"] = 2] = \"YEARLY\";\n Frequency[Frequency[\"ONE_TIME\"] = 3] = \"ONE_TIME\";\n return Frequency;\n}(Frequency || {});\n// *********************************\n// Code generated by sdkgen\n// DO NOT EDIT!.\n//\n// Enums.\n// *********************************\nvar Currency = /*#__PURE__*/function (Currency) {\n Currency[Currency[\"USD\"] = 0] = \"USD\";\n Currency[Currency[\"CAD\"] = 1] = \"CAD\";\n Currency[Currency[\"EUR\"] = 2] = \"EUR\";\n Currency[Currency[\"AUD\"] = 3] = \"AUD\";\n Currency[Currency[\"GBP\"] = 4] = \"GBP\";\n Currency[Currency[\"NZD\"] = 5] = \"NZD\";\n Currency[Currency[\"BRL\"] = 6] = \"BRL\";\n Currency[Currency[\"CHF\"] = 7] = \"CHF\";\n Currency[Currency[\"CNY\"] = 8] = \"CNY\";\n Currency[Currency[\"CZK\"] = 9] = \"CZK\";\n Currency[Currency[\"INR\"] = 10] = \"INR\";\n Currency[Currency[\"JPY\"] = 11] = \"JPY\";\n Currency[Currency[\"KHR\"] = 12] = \"KHR\";\n Currency[Currency[\"KRW\"] = 13] = \"KRW\";\n Currency[Currency[\"MXN\"] = 14] = \"MXN\";\n Currency[Currency[\"NOK\"] = 15] = \"NOK\";\n Currency[Currency[\"RUB\"] = 16] = \"RUB\";\n Currency[Currency[\"SEK\"] = 17] = \"SEK\";\n Currency[Currency[\"SGD\"] = 18] = \"SGD\";\n Currency[Currency[\"TRY\"] = 19] = \"TRY\";\n Currency[Currency[\"ZAR\"] = 20] = \"ZAR\";\n Currency[Currency[\"DZD\"] = 21] = \"DZD\";\n Currency[Currency[\"AWG\"] = 22] = \"AWG\";\n Currency[Currency[\"FJD\"] = 23] = \"FJD\";\n Currency[Currency[\"KYD\"] = 24] = \"KYD\";\n return Currency;\n}(Currency || {});\n// *********************************\n// Code generated by sdkgen\n// DO NOT EDIT!.\n//\n// Enums.\n// *********************************\nvar FeeAmountType = /*#__PURE__*/function (FeeAmountType) {\n FeeAmountType[FeeAmountType[\"FEE_AMOUNT_TYPE_INVALID\"] = 0] = \"FEE_AMOUNT_TYPE_INVALID\";\n FeeAmountType[FeeAmountType[\"FEE_AMOUNT_TYPE_FIXED\"] = 1] = \"FEE_AMOUNT_TYPE_FIXED\";\n FeeAmountType[FeeAmountType[\"FEE_AMOUNT_TYPE_PERCENTAGE\"] = 2] = \"FEE_AMOUNT_TYPE_PERCENTAGE\";\n return FeeAmountType;\n}(FeeAmountType || {});\nvar FeeType = /*#__PURE__*/function (FeeType) {\n FeeType[FeeType[\"FEE_TYPE_INVALID\"] = 0] = \"FEE_TYPE_INVALID\";\n FeeType[FeeType[\"FEE_TYPE_MANAGEMENT\"] = 1] = \"FEE_TYPE_MANAGEMENT\";\n return FeeType;\n}(FeeType || {});\n// *********************************\n// Code generated by sdkgen\n// DO NOT EDIT!.\n//\n// Enums.\n// *********************************\nvar BillingStrategy = /*#__PURE__*/function (BillingStrategy) {\n BillingStrategy[BillingStrategy[\"BILLING_STRATEGY_NONE\"] = 0] = \"BILLING_STRATEGY_NONE\";\n BillingStrategy[BillingStrategy[\"BILLING_STRATEGY_END_OF_PERIOD\"] = 1] = \"BILLING_STRATEGY_END_OF_PERIOD\";\n BillingStrategy[BillingStrategy[\"BILLING_STRATEGY_START_OF_PERIOD\"] = 2] = \"BILLING_STRATEGY_START_OF_PERIOD\";\n BillingStrategy[BillingStrategy[\"BILLING_STRATEGY_INSTANTLY\"] = 3] = \"BILLING_STRATEGY_INSTANTLY\";\n BillingStrategy[BillingStrategy[\"BILLING_STRATEGY_END_OF_DAY\"] = 4] = \"BILLING_STRATEGY_END_OF_DAY\";\n return BillingStrategy;\n}(BillingStrategy || {});\nvar ProductPricingType = /*#__PURE__*/function (ProductPricingType) {\n ProductPricingType[ProductPricingType[\"PRODUCT_PRICING_TYPE_INVALID\"] = 0] = \"PRODUCT_PRICING_TYPE_INVALID\";\n ProductPricingType[ProductPricingType[\"PRODUCT_PRICING_TYPE_STANDARD\"] = 1] = \"PRODUCT_PRICING_TYPE_STANDARD\";\n ProductPricingType[ProductPricingType[\"PRODUCT_PRICING_TYPE_STAIRSTEP\"] = 2] = \"PRODUCT_PRICING_TYPE_STAIRSTEP\";\n ProductPricingType[ProductPricingType[\"PRODUCT_PRICING_TYPE_TIERED\"] = 3] = \"PRODUCT_PRICING_TYPE_TIERED\";\n return ProductPricingType;\n}(ProductPricingType || {});\n// *********************************\n// Code generated by sdkgen\n// DO NOT EDIT!.\n//\n// Enums.\n// *********************************\nvar Source = /*#__PURE__*/function (Source) {\n Source[Source[\"SOURCE_UNSET\"] = 0] = \"SOURCE_UNSET\";\n Source[Source[\"SOURCE_SYSTEM\"] = 1] = \"SOURCE_SYSTEM\";\n Source[Source[\"SOURCE_USER\"] = 2] = \"SOURCE_USER\";\n return Source;\n}(Source || {});\nvar SubscriptionStatus = /*#__PURE__*/function (SubscriptionStatus) {\n SubscriptionStatus[SubscriptionStatus[\"SUBSCRIPTION_STATUS_UNSET\"] = 0] = \"SUBSCRIPTION_STATUS_UNSET\";\n SubscriptionStatus[SubscriptionStatus[\"SUBSCRIPTION_STATUS_ACTIVE\"] = 1] = \"SUBSCRIPTION_STATUS_ACTIVE\";\n SubscriptionStatus[SubscriptionStatus[\"SUBSCRIPTION_STATUS_EXPIRED\"] = 2] = \"SUBSCRIPTION_STATUS_EXPIRED\";\n return SubscriptionStatus;\n}(SubscriptionStatus || {});\n// *********************************\n// Code generated by sdkgen\n// DO NOT EDIT!.\n//\n// Enums.\n// *********************************\nvar DiscountType = /*#__PURE__*/function (DiscountType) {\n DiscountType[DiscountType[\"DISCOUNT_TYPE_FIXED_AMOUNT\"] = 0] = \"DISCOUNT_TYPE_FIXED_AMOUNT\";\n DiscountType[DiscountType[\"DISCOUNT_TYPE_PERCENT_AMOUNT\"] = 1] = \"DISCOUNT_TYPE_PERCENT_AMOUNT\";\n DiscountType[DiscountType[\"DISCOUNT_TYPE_FIXED_NUMBER_OF_UNITS\"] = 2] = \"DISCOUNT_TYPE_FIXED_NUMBER_OF_UNITS\";\n DiscountType[DiscountType[\"DISCOUNT_TYPE_FIXED_AMOUNT_PER_UNIT\"] = 3] = \"DISCOUNT_TYPE_FIXED_AMOUNT_PER_UNIT\";\n return DiscountType;\n}(DiscountType || {});\n// *********************************\n// Code generated by sdkgen\n// DO NOT EDIT!.\n//\n// Enums.\n// *********************************\nvar ContractSubscriptionStatus = /*#__PURE__*/function (ContractSubscriptionStatus) {\n ContractSubscriptionStatus[ContractSubscriptionStatus[\"CONTRACT_SUBSCRIPTION_STATUS_UNSET\"] = 0] = \"CONTRACT_SUBSCRIPTION_STATUS_UNSET\";\n ContractSubscriptionStatus[ContractSubscriptionStatus[\"CONTRACT_SUBSCRIPTION_STATUS_PENDING\"] = 1] = \"CONTRACT_SUBSCRIPTION_STATUS_PENDING\";\n ContractSubscriptionStatus[ContractSubscriptionStatus[\"CONTRACT_SUBSCRIPTION_STATUS_SUCCEEDED\"] = 2] = \"CONTRACT_SUBSCRIPTION_STATUS_SUCCEEDED\";\n ContractSubscriptionStatus[ContractSubscriptionStatus[\"CONTRACT_SUBSCRIPTION_STATUS_FAILED\"] = 3] = \"CONTRACT_SUBSCRIPTION_STATUS_FAILED\";\n return ContractSubscriptionStatus;\n}(ContractSubscriptionStatus || {});\n// *********************************\n// Code generated by sdkgen\n// DO NOT EDIT!.\n//\n// Enums.\n// *********************************\nvar ProductSummaryBillingStrategy = /*#__PURE__*/function (ProductSummaryBillingStrategy) {\n ProductSummaryBillingStrategy[ProductSummaryBillingStrategy[\"CHARGE_AT_END_OF_BILLING_PERIOD\"] = 0] = \"CHARGE_AT_END_OF_BILLING_PERIOD\";\n ProductSummaryBillingStrategy[ProductSummaryBillingStrategy[\"CHARGE_AT_START_OF_BILLING_PERIOD\"] = 1] = \"CHARGE_AT_START_OF_BILLING_PERIOD\";\n ProductSummaryBillingStrategy[ProductSummaryBillingStrategy[\"CHARGE_INSTANTLY\"] = 2] = \"CHARGE_INSTANTLY\";\n ProductSummaryBillingStrategy[ProductSummaryBillingStrategy[\"CHARGE_AT_END_OF_DAY\"] = 3] = \"CHARGE_AT_END_OF_DAY\";\n return ProductSummaryBillingStrategy;\n}(ProductSummaryBillingStrategy || {});\nvar ProductSummaryDiscountDiscountType = /*#__PURE__*/function (ProductSummaryDiscountDiscountType) {\n ProductSummaryDiscountDiscountType[ProductSummaryDiscountDiscountType[\"FIXED_AMOUNT\"] = 0] = \"FIXED_AMOUNT\";\n ProductSummaryDiscountDiscountType[ProductSummaryDiscountDiscountType[\"PERCENT_AMOUNT\"] = 1] = \"PERCENT_AMOUNT\";\n ProductSummaryDiscountDiscountType[ProductSummaryDiscountDiscountType[\"FIXED_NUMBER_OF_UNITS\"] = 2] = \"FIXED_NUMBER_OF_UNITS\";\n ProductSummaryDiscountDiscountType[ProductSummaryDiscountDiscountType[\"FIXED_AMOUNT_PER_UNIT\"] = 3] = \"FIXED_AMOUNT_PER_UNIT\";\n return ProductSummaryDiscountDiscountType;\n}(ProductSummaryDiscountDiscountType || {});\nvar ProductSummaryProductType = /*#__PURE__*/function (ProductSummaryProductType) {\n ProductSummaryProductType[ProductSummaryProductType[\"BUNDLE\"] = 0] = \"BUNDLE\";\n ProductSummaryProductType[ProductSummaryProductType[\"FEE\"] = 1] = \"FEE\";\n ProductSummaryProductType[ProductSummaryProductType[\"PRODUCT\"] = 2] = \"PRODUCT\";\n ProductSummaryProductType[ProductSummaryProductType[\"SUBSCRIPTION\"] = 3] = \"SUBSCRIPTION\";\n ProductSummaryProductType[ProductSummaryProductType[\"VENDASTA_PRODUCT\"] = 4] = \"VENDASTA_PRODUCT\";\n return ProductSummaryProductType;\n}(ProductSummaryProductType || {});\nvar PricingRuleType = /*#__PURE__*/function (PricingRuleType) {\n PricingRuleType[PricingRuleType[\"STANDARD\"] = 0] = \"STANDARD\";\n PricingRuleType[PricingRuleType[\"STAIRSTEP\"] = 1] = \"STAIRSTEP\";\n PricingRuleType[PricingRuleType[\"TIERED\"] = 2] = \"TIERED\";\n PricingRuleType[PricingRuleType[\"CUSTOM\"] = 3] = \"CUSTOM\";\n return PricingRuleType;\n}(PricingRuleType || {});\n// *********************************\n// Code generated by sdkgen\n// DO NOT EDIT!.\n//\n// Enums.\n// *********************************\nvar SubscribeValidationStatus = /*#__PURE__*/function (SubscribeValidationStatus) {\n SubscribeValidationStatus[SubscribeValidationStatus[\"SUBSCRIBE_VALIDATION_STATUS_UNSET\"] = 0] = \"SUBSCRIBE_VALIDATION_STATUS_UNSET\";\n SubscribeValidationStatus[SubscribeValidationStatus[\"SUBSCRIBE_VALIDATION_STATUS_CANNOT_INSTANT_BILL\"] = 1] = \"SUBSCRIBE_VALIDATION_STATUS_CANNOT_INSTANT_BILL\";\n SubscribeValidationStatus[SubscribeValidationStatus[\"SUBSCRIBE_VALIDATION_STATUS_MISSING_MERCHANT_INFO\"] = 2] = \"SUBSCRIBE_VALIDATION_STATUS_MISSING_MERCHANT_INFO\";\n SubscribeValidationStatus[SubscribeValidationStatus[\"SUBSCRIBE_VALIDATION_STATUS_MISSING_PAYMENT_INFO\"] = 3] = \"SUBSCRIBE_VALIDATION_STATUS_MISSING_PAYMENT_INFO\";\n SubscribeValidationStatus[SubscribeValidationStatus[\"SUBSCRIBE_VALIDATION_STATUS_WILL_CAUSE_FUTURE_CHARGES\"] = 4] = \"SUBSCRIBE_VALIDATION_STATUS_WILL_CAUSE_FUTURE_CHARGES\";\n return SubscribeValidationStatus;\n}(SubscribeValidationStatus || {});\n// *********************************\n// Code generated by sdkgen\n// DO NOT EDIT!.\n//\n// Enums.\n// *********************************\nvar Consumer = /*#__PURE__*/function (Consumer) {\n Consumer[Consumer[\"CONSUMER_WHOLESALE\"] = 0] = \"CONSUMER_WHOLESALE\";\n Consumer[Consumer[\"CONSUMER_RETAIL\"] = 1] = \"CONSUMER_RETAIL\";\n return Consumer;\n}(Consumer || {});\nvar RenewalState = /*#__PURE__*/function (RenewalState) {\n RenewalState[RenewalState[\"RENEWAL_STATE_IMMEDIATE\"] = 0] = \"RENEWAL_STATE_IMMEDIATE\";\n RenewalState[RenewalState[\"RENEWAL_STATE_DELAYED\"] = 1] = \"RENEWAL_STATE_DELAYED\";\n return RenewalState;\n}(RenewalState || {});\n// *********************************\n// Code generated by sdkgen\n// DO NOT EDIT!.\n//\n// Enums.\n// *********************************\nvar ListInvoicesRequestFiltersDateFilterDateField = /*#__PURE__*/function (ListInvoicesRequestFiltersDateFilterDateField) {\n ListInvoicesRequestFiltersDateFilterDateField[ListInvoicesRequestFiltersDateFilterDateField[\"CREATED\"] = 0] = \"CREATED\";\n return ListInvoicesRequestFiltersDateFilterDateField;\n}(ListInvoicesRequestFiltersDateFilterDateField || {});\nvar InvoiceStatus = /*#__PURE__*/function (InvoiceStatus) {\n InvoiceStatus[InvoiceStatus[\"DRAFT\"] = 0] = \"DRAFT\";\n InvoiceStatus[InvoiceStatus[\"DUE\"] = 1] = \"DUE\";\n InvoiceStatus[InvoiceStatus[\"PAID\"] = 2] = \"PAID\";\n InvoiceStatus[InvoiceStatus[\"VOID\"] = 3] = \"VOID\";\n return InvoiceStatus;\n}(InvoiceStatus || {});\n// *********************************\n// Code generated by sdkgen\n// DO NOT EDIT!.\n//\n// Enums.\n// *********************************\nvar PayoutStatus = /*#__PURE__*/function (PayoutStatus) {\n PayoutStatus[PayoutStatus[\"PAYOUT_STATUS_NOT_SET\"] = 0] = \"PAYOUT_STATUS_NOT_SET\";\n PayoutStatus[PayoutStatus[\"PAYOUT_STATUS_PAID\"] = 1] = \"PAYOUT_STATUS_PAID\";\n PayoutStatus[PayoutStatus[\"PAYOUT_STATUS_PENDING\"] = 2] = \"PAYOUT_STATUS_PENDING\";\n PayoutStatus[PayoutStatus[\"PAYOUT_STATUS_IN_TRANSIT\"] = 3] = \"PAYOUT_STATUS_IN_TRANSIT\";\n PayoutStatus[PayoutStatus[\"PAYOUT_STATUS_CANCELED\"] = 4] = \"PAYOUT_STATUS_CANCELED\";\n PayoutStatus[PayoutStatus[\"PAYOUT_STATUS_FAILED\"] = 5] = \"PAYOUT_STATUS_FAILED\";\n return PayoutStatus;\n}(PayoutStatus || {});\nvar PayoutType = /*#__PURE__*/function (PayoutType) {\n PayoutType[PayoutType[\"PAYOUT_TYPE_NOT_SET\"] = 0] = \"PAYOUT_TYPE_NOT_SET\";\n PayoutType[PayoutType[\"PAYOUT_TYPE_BANK_ACCOUNT\"] = 1] = \"PAYOUT_TYPE_BANK_ACCOUNT\";\n PayoutType[PayoutType[\"PAYOUT_TYPE_CARD\"] = 2] = \"PAYOUT_TYPE_CARD\";\n return PayoutType;\n}(PayoutType || {});\n// *********************************\n// Code generated by sdkgen\n// DO NOT EDIT!.\n//\n// Enums.\n// *********************************\nvar SortDirection = /*#__PURE__*/function (SortDirection) {\n SortDirection[SortDirection[\"SORT_DIRECTION_ASCENDING\"] = 0] = \"SORT_DIRECTION_ASCENDING\";\n SortDirection[SortDirection[\"SORT_DIRECTION_DESCENDING\"] = 1] = \"SORT_DIRECTION_DESCENDING\";\n return SortDirection;\n}(SortDirection || {});\n// *********************************\n// Code generated by sdkgen\n// DO NOT EDIT!.\n//\n// Enums.\n// *********************************\nvar MerchantType = /*#__PURE__*/function (MerchantType) {\n MerchantType[MerchantType[\"MERCHANT_TYPE_INVALID\"] = 0] = \"MERCHANT_TYPE_INVALID\";\n MerchantType[MerchantType[\"MERCHANT_TYPE_WHOLESALE\"] = 1] = \"MERCHANT_TYPE_WHOLESALE\";\n MerchantType[MerchantType[\"MERCHANT_TYPE_RETAIL\"] = 2] = \"MERCHANT_TYPE_RETAIL\";\n return MerchantType;\n}(MerchantType || {});\nvar SearchMerchantsRequestSortBy = /*#__PURE__*/function (SearchMerchantsRequestSortBy) {\n SearchMerchantsRequestSortBy[SearchMerchantsRequestSortBy[\"SEARCH_MERCHANTS_REQUEST_SORT_BY_MERCHANT_ID\"] = 0] = \"SEARCH_MERCHANTS_REQUEST_SORT_BY_MERCHANT_ID\";\n SearchMerchantsRequestSortBy[SearchMerchantsRequestSortBy[\"SEARCH_MERCHANTS_REQUEST_SORT_BY_COMPANY_NAME\"] = 1] = \"SEARCH_MERCHANTS_REQUEST_SORT_BY_COMPANY_NAME\";\n SearchMerchantsRequestSortBy[SearchMerchantsRequestSortBy[\"SEARCH_MERCHANTS_REQUEST_SORT_BY_CONTACT_NAME\"] = 2] = \"SEARCH_MERCHANTS_REQUEST_SORT_BY_CONTACT_NAME\";\n SearchMerchantsRequestSortBy[SearchMerchantsRequestSortBy[\"SEARCH_MERCHANTS_REQUEST_SORT_BY_EMAIL_ADDRESS\"] = 3] = \"SEARCH_MERCHANTS_REQUEST_SORT_BY_EMAIL_ADDRESS\";\n SearchMerchantsRequestSortBy[SearchMerchantsRequestSortBy[\"SEARCH_MERCHANTS_REQUEST_SORT_BY_COUNTRY\"] = 4] = \"SEARCH_MERCHANTS_REQUEST_SORT_BY_COUNTRY\";\n SearchMerchantsRequestSortBy[SearchMerchantsRequestSortBy[\"SEARCH_MERCHANTS_REQUEST_SORT_BY_STATE\"] = 5] = \"SEARCH_MERCHANTS_REQUEST_SORT_BY_STATE\";\n SearchMerchantsRequestSortBy[SearchMerchantsRequestSortBy[\"SEARCH_MERCHANTS_REQUEST_SORT_BY_CREATED\"] = 6] = \"SEARCH_MERCHANTS_REQUEST_SORT_BY_CREATED\";\n SearchMerchantsRequestSortBy[SearchMerchantsRequestSortBy[\"SEARCH_MERCHANTS_REQUEST_SORT_BY_UPDATED\"] = 7] = \"SEARCH_MERCHANTS_REQUEST_SORT_BY_UPDATED\";\n return SearchMerchantsRequestSortBy;\n}(SearchMerchantsRequestSortBy || {});\n// *********************************\n// Code generated by sdkgen\n// DO NOT EDIT!.\n//\n// Enums.\n// *********************************\nvar Month = /*#__PURE__*/function (Month) {\n Month[Month[\"INVALID_MONTH\"] = 0] = \"INVALID_MONTH\";\n Month[Month[\"JANUARY\"] = 1] = \"JANUARY\";\n Month[Month[\"FEBRUARY\"] = 2] = \"FEBRUARY\";\n Month[Month[\"MARCH\"] = 3] = \"MARCH\";\n Month[Month[\"APRIL\"] = 4] = \"APRIL\";\n Month[Month[\"MAY\"] = 5] = \"MAY\";\n Month[Month[\"JUNE\"] = 6] = \"JUNE\";\n Month[Month[\"JULY\"] = 7] = \"JULY\";\n Month[Month[\"AUGUST\"] = 8] = \"AUGUST\";\n Month[Month[\"SEPTEMBER\"] = 9] = \"SEPTEMBER\";\n Month[Month[\"OCTOBER\"] = 10] = \"OCTOBER\";\n Month[Month[\"NOVEMBER\"] = 11] = \"NOVEMBER\";\n Month[Month[\"DECEMBER\"] = 12] = \"DECEMBER\";\n return Month;\n}(Month || {});\n// *********************************\n// Code generated by sdkgen\n// DO NOT EDIT!.\n//\n// Enums.\n// *********************************\nvar MerchantReportStatus = /*#__PURE__*/function (MerchantReportStatus) {\n MerchantReportStatus[MerchantReportStatus[\"FAILED\"] = 0] = \"FAILED\";\n MerchantReportStatus[MerchantReportStatus[\"PENDING\"] = 1] = \"PENDING\";\n MerchantReportStatus[MerchantReportStatus[\"COMPLETED\"] = 2] = \"COMPLETED\";\n return MerchantReportStatus;\n}(MerchantReportStatus || {});\n// *********************************\n// Code generated by sdkgen\n// DO NOT EDIT!.\n//\n// Enums.\n// *********************************\nvar CardType = /*#__PURE__*/function (CardType) {\n CardType[CardType[\"CARD_TYPE_UNKNOWN\"] = 0] = \"CARD_TYPE_UNKNOWN\";\n CardType[CardType[\"CARD_TYPE_VISA\"] = 1] = \"CARD_TYPE_VISA\";\n CardType[CardType[\"CARD_TYPE_MASTERCARD\"] = 2] = \"CARD_TYPE_MASTERCARD\";\n CardType[CardType[\"CARD_TYPE_AMEX\"] = 3] = \"CARD_TYPE_AMEX\";\n CardType[CardType[\"CARD_TYPE_DISCOVER\"] = 4] = \"CARD_TYPE_DISCOVER\";\n CardType[CardType[\"CARD_TYPE_JCB\"] = 5] = \"CARD_TYPE_JCB\";\n CardType[CardType[\"CARD_TYPE_DINERS_CLUB\"] = 6] = \"CARD_TYPE_DINERS_CLUB\";\n return CardType;\n}(CardType || {});\n// *********************************\n// Code generated by sdkgen\n// DO NOT EDIT!.\n//\n// Enums.\n// *********************************\nvar DisputeStatus = /*#__PURE__*/function (DisputeStatus) {\n DisputeStatus[DisputeStatus[\"DISPUTE_STATUS_UNSET\"] = 0] = \"DISPUTE_STATUS_UNSET\";\n DisputeStatus[DisputeStatus[\"DISPUTE_STATUS_WARNING_NEEDS_RESPONSE\"] = 1] = \"DISPUTE_STATUS_WARNING_NEEDS_RESPONSE\";\n DisputeStatus[DisputeStatus[\"DISPUTE_STATUS_WARNING_UNDER_REVIEW\"] = 2] = \"DISPUTE_STATUS_WARNING_UNDER_REVIEW\";\n DisputeStatus[DisputeStatus[\"DISPUTE_STATUS_WARNING_CLOSED\"] = 3] = \"DISPUTE_STATUS_WARNING_CLOSED\";\n DisputeStatus[DisputeStatus[\"DISPUTE_STATUS_NEEDS_RESPONSE\"] = 4] = \"DISPUTE_STATUS_NEEDS_RESPONSE\";\n DisputeStatus[DisputeStatus[\"DISPUTE_STATUS_UNDER_REVIEW\"] = 5] = \"DISPUTE_STATUS_UNDER_REVIEW\";\n DisputeStatus[DisputeStatus[\"DISPUTE_STATUS_CHARGE_REFUNDED\"] = 6] = \"DISPUTE_STATUS_CHARGE_REFUNDED\";\n DisputeStatus[DisputeStatus[\"DISPUTE_STATUS_WON\"] = 7] = \"DISPUTE_STATUS_WON\";\n DisputeStatus[DisputeStatus[\"DISPUTE_STATUS_LOST\"] = 8] = \"DISPUTE_STATUS_LOST\";\n return DisputeStatus;\n}(DisputeStatus || {});\nvar PaymentAllocationType = /*#__PURE__*/function (PaymentAllocationType) {\n PaymentAllocationType[PaymentAllocationType[\"PAYMENT_ALLOCATION_TYPE_UNSET\"] = 0] = \"PAYMENT_ALLOCATION_TYPE_UNSET\";\n PaymentAllocationType[PaymentAllocationType[\"PAYMENT_ALLOCATION_TYPE_PURCHASE\"] = 1] = \"PAYMENT_ALLOCATION_TYPE_PURCHASE\";\n PaymentAllocationType[PaymentAllocationType[\"PAYMENT_ALLOCATION_TYPE_INVOICE\"] = 2] = \"PAYMENT_ALLOCATION_TYPE_INVOICE\";\n return PaymentAllocationType;\n}(PaymentAllocationType || {});\nvar PaymentSource = /*#__PURE__*/function (PaymentSource) {\n PaymentSource[PaymentSource[\"PAYMENT_SOURCE_NONE\"] = 0] = \"PAYMENT_SOURCE_NONE\";\n PaymentSource[PaymentSource[\"PAYMENT_SOURCE_STRIPE\"] = 1] = \"PAYMENT_SOURCE_STRIPE\";\n PaymentSource[PaymentSource[\"PAYMENT_SOURCE_VCASH\"] = 2] = \"PAYMENT_SOURCE_VCASH\";\n return PaymentSource;\n}(PaymentSource || {});\nvar PaymentStatus = /*#__PURE__*/function (PaymentStatus) {\n PaymentStatus[PaymentStatus[\"PAYMENT_STATUS_UNSET\"] = 0] = \"PAYMENT_STATUS_UNSET\";\n PaymentStatus[PaymentStatus[\"PAYMENT_STATUS_SUCCEEDED\"] = 1] = \"PAYMENT_STATUS_SUCCEEDED\";\n PaymentStatus[PaymentStatus[\"PAYMENT_STATUS_FAILED\"] = 2] = \"PAYMENT_STATUS_FAILED\";\n PaymentStatus[PaymentStatus[\"PAYMENT_STATUS_REFUNDED\"] = 3] = \"PAYMENT_STATUS_REFUNDED\";\n PaymentStatus[PaymentStatus[\"PAYMENT_STATUS_PARTIALLY_REFUNDED\"] = 4] = \"PAYMENT_STATUS_PARTIALLY_REFUNDED\";\n return PaymentStatus;\n}(PaymentStatus || {});\nvar RetailPaymentReferenceType = /*#__PURE__*/function (RetailPaymentReferenceType) {\n RetailPaymentReferenceType[RetailPaymentReferenceType[\"RETAIL_PAYMENT_REFERENCE_TYPE_UNSET\"] = 0] = \"RETAIL_PAYMENT_REFERENCE_TYPE_UNSET\";\n RetailPaymentReferenceType[RetailPaymentReferenceType[\"RETAIL_PAYMENT_REFERENCE_TYPE_INVOICE\"] = 1] = \"RETAIL_PAYMENT_REFERENCE_TYPE_INVOICE\";\n RetailPaymentReferenceType[RetailPaymentReferenceType[\"RETAIL_PAYMENT_REFERENCE_TYPE_SALES_ORDER\"] = 2] = \"RETAIL_PAYMENT_REFERENCE_TYPE_SALES_ORDER\";\n return RetailPaymentReferenceType;\n}(RetailPaymentReferenceType || {});\nvar RetailRefundFailureReason = /*#__PURE__*/function (RetailRefundFailureReason) {\n RetailRefundFailureReason[RetailRefundFailureReason[\"RETAIL_REFUND_FAILURE_REASON_UNSET\"] = 0] = \"RETAIL_REFUND_FAILURE_REASON_UNSET\";\n RetailRefundFailureReason[RetailRefundFailureReason[\"RETAIL_REFUND_FAILURE_REASON_LOST_OR_STOLEN_CARD\"] = 1] = \"RETAIL_REFUND_FAILURE_REASON_LOST_OR_STOLEN_CARD\";\n RetailRefundFailureReason[RetailRefundFailureReason[\"RETAIL_REFUND_FAILURE_REASON_EXPIRED_OR_CANCELED_CARD\"] = 2] = \"RETAIL_REFUND_FAILURE_REASON_EXPIRED_OR_CANCELED_CARD\";\n RetailRefundFailureReason[RetailRefundFailureReason[\"RETAIL_REFUND_FAILURE_REASON_UNKNOWN\"] = 3] = \"RETAIL_REFUND_FAILURE_REASON_UNKNOWN\";\n return RetailRefundFailureReason;\n}(RetailRefundFailureReason || {});\nvar RetailRefundReason = /*#__PURE__*/function (RetailRefundReason) {\n RetailRefundReason[RetailRefundReason[\"RETAIL_REFUND_REASON_UNSET\"] = 0] = \"RETAIL_REFUND_REASON_UNSET\";\n RetailRefundReason[RetailRefundReason[\"RETAIL_REFUND_REASON_DUPLICATE\"] = 1] = \"RETAIL_REFUND_REASON_DUPLICATE\";\n RetailRefundReason[RetailRefundReason[\"RETAIL_REFUND_REASON_FRAUDULENT\"] = 2] = \"RETAIL_REFUND_REASON_FRAUDULENT\";\n RetailRefundReason[RetailRefundReason[\"RETAIL_REFUND_REASON_REQUESTED_BY_CUSTOMER\"] = 3] = \"RETAIL_REFUND_REASON_REQUESTED_BY_CUSTOMER\";\n return RetailRefundReason;\n}(RetailRefundReason || {});\nvar RetailRefundStatus = /*#__PURE__*/function (RetailRefundStatus) {\n RetailRefundStatus[RetailRefundStatus[\"RETAIL_REFUND_STATUS_UNSET\"] = 0] = \"RETAIL_REFUND_STATUS_UNSET\";\n RetailRefundStatus[RetailRefundStatus[\"RETAIL_REFUND_STATUS_PENDING\"] = 1] = \"RETAIL_REFUND_STATUS_PENDING\";\n RetailRefundStatus[RetailRefundStatus[\"RETAIL_REFUND_STATUS_SUCCEEDED\"] = 2] = \"RETAIL_REFUND_STATUS_SUCCEEDED\";\n RetailRefundStatus[RetailRefundStatus[\"RETAIL_REFUND_STATUS_FAILED\"] = 3] = \"RETAIL_REFUND_STATUS_FAILED\";\n RetailRefundStatus[RetailRefundStatus[\"RETAIL_REFUND_STATUS_REQUIRES_ACTION\"] = 4] = \"RETAIL_REFUND_STATUS_REQUIRES_ACTION\";\n RetailRefundStatus[RetailRefundStatus[\"RETAIL_REFUND_STATUS_CANCELED\"] = 5] = \"RETAIL_REFUND_STATUS_CANCELED\";\n return RetailRefundStatus;\n}(RetailRefundStatus || {});\nvar RetailTransactionType = /*#__PURE__*/function (RetailTransactionType) {\n RetailTransactionType[RetailTransactionType[\"RETAIL_TRANSACTION_TYPE_UNSET\"] = 0] = \"RETAIL_TRANSACTION_TYPE_UNSET\";\n RetailTransactionType[RetailTransactionType[\"RETAIL_TRANSACTION_TYPE_PAYMENT\"] = 1] = \"RETAIL_TRANSACTION_TYPE_PAYMENT\";\n RetailTransactionType[RetailTransactionType[\"RETAIL_TRANSACTION_TYPE_REFUND\"] = 2] = \"RETAIL_TRANSACTION_TYPE_REFUND\";\n RetailTransactionType[RetailTransactionType[\"RETAIL_TRANSACTION_TYPE_PAYOUT_FAILURE\"] = 3] = \"RETAIL_TRANSACTION_TYPE_PAYOUT_FAILURE\";\n RetailTransactionType[RetailTransactionType[\"RETAIL_TRANSACTION_TYPE_ADJUSTMENT\"] = 4] = \"RETAIL_TRANSACTION_TYPE_ADJUSTMENT\";\n return RetailTransactionType;\n}(RetailTransactionType || {});\n// *********************************\n// Code generated by sdkgen\n// DO NOT EDIT!.\n//\n// Enums.\n// *********************************\nvar PaymentCardCARD_TYPE = /*#__PURE__*/function (PaymentCardCARD_TYPE) {\n PaymentCardCARD_TYPE[PaymentCardCARD_TYPE[\"UNKNOWN\"] = 0] = \"UNKNOWN\";\n PaymentCardCARD_TYPE[PaymentCardCARD_TYPE[\"VISA\"] = 1] = \"VISA\";\n PaymentCardCARD_TYPE[PaymentCardCARD_TYPE[\"MASTERCARD\"] = 2] = \"MASTERCARD\";\n PaymentCardCARD_TYPE[PaymentCardCARD_TYPE[\"AMEX\"] = 3] = \"AMEX\";\n PaymentCardCARD_TYPE[PaymentCardCARD_TYPE[\"DISCOVER\"] = 4] = \"DISCOVER\";\n PaymentCardCARD_TYPE[PaymentCardCARD_TYPE[\"JCB\"] = 5] = \"JCB\";\n PaymentCardCARD_TYPE[PaymentCardCARD_TYPE[\"DINERS_CLUB\"] = 6] = \"DINERS_CLUB\";\n return PaymentCardCARD_TYPE;\n}(PaymentCardCARD_TYPE || {});\nvar PaymentCardFUNDING_TYPE = /*#__PURE__*/function (PaymentCardFUNDING_TYPE) {\n PaymentCardFUNDING_TYPE[PaymentCardFUNDING_TYPE[\"FUNDING_TYPE_UNKNOWN\"] = 0] = \"FUNDING_TYPE_UNKNOWN\";\n PaymentCardFUNDING_TYPE[PaymentCardFUNDING_TYPE[\"FUNDING_TYPE_CREDIT\"] = 1] = \"FUNDING_TYPE_CREDIT\";\n PaymentCardFUNDING_TYPE[PaymentCardFUNDING_TYPE[\"FUNDING_TYPE_DEBIT\"] = 2] = \"FUNDING_TYPE_DEBIT\";\n PaymentCardFUNDING_TYPE[PaymentCardFUNDING_TYPE[\"FUNDING_TYPE_PREPAID\"] = 3] = \"FUNDING_TYPE_PREPAID\";\n return PaymentCardFUNDING_TYPE;\n}(PaymentCardFUNDING_TYPE || {});\n// *********************************\n// Code generated by sdkgen\n// DO NOT EDIT!.\n//\n// Enums.\n// *********************************\nvar ProductType = /*#__PURE__*/function (ProductType) {\n ProductType[ProductType[\"PRODUCT_TYPE_INVALID\"] = 0] = \"PRODUCT_TYPE_INVALID\";\n ProductType[ProductType[\"PRODUCT_TYPE_STANDARD_PRODUCT\"] = 1] = \"PRODUCT_TYPE_STANDARD_PRODUCT\";\n ProductType[ProductType[\"PRODUCT_TYPE_VENDASTA_PRODUCT\"] = 2] = \"PRODUCT_TYPE_VENDASTA_PRODUCT\";\n ProductType[ProductType[\"PRODUCT_TYPE_SUBSCRIPTION\"] = 3] = \"PRODUCT_TYPE_SUBSCRIPTION\";\n ProductType[ProductType[\"PRODUCT_TYPE_FEE\"] = 4] = \"PRODUCT_TYPE_FEE\";\n ProductType[ProductType[\"PRODUCT_TYPE_PRIVATE_PRODUCT\"] = 5] = \"PRODUCT_TYPE_PRIVATE_PRODUCT\";\n ProductType[ProductType[\"PRODUCT_TYPE_PARTNER_SUPPORT_SALES\"] = 6] = \"PRODUCT_TYPE_PARTNER_SUPPORT_SALES\";\n ProductType[ProductType[\"PRODUCT_TYPE_PACKAGE\"] = 7] = \"PRODUCT_TYPE_PACKAGE\";\n return ProductType;\n}(ProductType || {});\n// *********************************\n// Code generated by sdkgen\n// DO NOT EDIT!.\n//\n// Enums.\n// *********************************\nvar CreditType = /*#__PURE__*/function (CreditType) {\n CreditType[CreditType[\"CREDIT_TYPE_UNSET\"] = 0] = \"CREDIT_TYPE_UNSET\";\n CreditType[CreditType[\"CREDIT_TYPE_CREDIT_NOTE\"] = 1] = \"CREDIT_TYPE_CREDIT_NOTE\";\n CreditType[CreditType[\"CREDIT_TYPE_PROMOTIONAL\"] = 2] = \"CREDIT_TYPE_PROMOTIONAL\";\n return CreditType;\n}(CreditType || {});\nvar PurchaseStatus = /*#__PURE__*/function (PurchaseStatus) {\n PurchaseStatus[PurchaseStatus[\"PURCHASE_STATUS_UNSET\"] = 0] = \"PURCHASE_STATUS_UNSET\";\n PurchaseStatus[PurchaseStatus[\"PURCHASE_STATUS_PENDING\"] = 1] = \"PURCHASE_STATUS_PENDING\";\n PurchaseStatus[PurchaseStatus[\"PURCHASE_STATUS_DUE\"] = 2] = \"PURCHASE_STATUS_DUE\";\n PurchaseStatus[PurchaseStatus[\"PURCHASE_STATUS_SUCCESS\"] = 3] = \"PURCHASE_STATUS_SUCCESS\";\n PurchaseStatus[PurchaseStatus[\"PURCHASE_STATUS_DUNNING\"] = 4] = \"PURCHASE_STATUS_DUNNING\";\n PurchaseStatus[PurchaseStatus[\"PURCHASE_STATUS_FAILED\"] = 5] = \"PURCHASE_STATUS_FAILED\";\n return PurchaseStatus;\n}(PurchaseStatus || {});\nvar ListPurchaseRequestState = /*#__PURE__*/function (ListPurchaseRequestState) {\n ListPurchaseRequestState[ListPurchaseRequestState[\"LIST_PURCHASE_REQUEST_STATE_ALL\"] = 0] = \"LIST_PURCHASE_REQUEST_STATE_ALL\";\n ListPurchaseRequestState[ListPurchaseRequestState[\"LIST_PURCHASE_REQUEST_STATE_OVERDUE\"] = 1] = \"LIST_PURCHASE_REQUEST_STATE_OVERDUE\";\n return ListPurchaseRequestState;\n}(ListPurchaseRequestState || {});\n// *********************************\n// Code generated by sdkgen\n// DO NOT EDIT!.\n//\n// Enums.\n// *********************************\nvar ReferenceType = /*#__PURE__*/function (ReferenceType) {\n ReferenceType[ReferenceType[\"PURCHASE\"] = 0] = \"PURCHASE\";\n ReferenceType[ReferenceType[\"PURCHASE_ITEM\"] = 1] = \"PURCHASE_ITEM\";\n ReferenceType[ReferenceType[\"INVOICE\"] = 2] = \"INVOICE\";\n return ReferenceType;\n}(ReferenceType || {});\nvar RefundReason = /*#__PURE__*/function (RefundReason) {\n RefundReason[RefundReason[\"REQUESTED_BY_CUSTOMER\"] = 0] = \"REQUESTED_BY_CUSTOMER\";\n RefundReason[RefundReason[\"DUPLICATE\"] = 1] = \"DUPLICATE\";\n RefundReason[RefundReason[\"FRAUDULENT\"] = 2] = \"FRAUDULENT\";\n return RefundReason;\n}(RefundReason || {});\nvar RefundStatus = /*#__PURE__*/function (RefundStatus) {\n RefundStatus[RefundStatus[\"SUCCEEDED\"] = 0] = \"SUCCEEDED\";\n RefundStatus[RefundStatus[\"FAILED\"] = 1] = \"FAILED\";\n RefundStatus[RefundStatus[\"PENDING\"] = 3] = \"PENDING\";\n return RefundStatus;\n}(RefundStatus || {});\n// *********************************\n// Code generated by sdkgen\n// DO NOT EDIT!.\n//\n// Enums.\n// *********************************\nvar SalesCreditNoteStatus = /*#__PURE__*/function (SalesCreditNoteStatus) {\n SalesCreditNoteStatus[SalesCreditNoteStatus[\"SALES_CREDIT_NOTE_STATUS_IN_PROGRESS\"] = 0] = \"SALES_CREDIT_NOTE_STATUS_IN_PROGRESS\";\n SalesCreditNoteStatus[SalesCreditNoteStatus[\"SALES_CREDIT_NOTE_STATUS_READY_TO_POST\"] = 1] = \"SALES_CREDIT_NOTE_STATUS_READY_TO_POST\";\n SalesCreditNoteStatus[SalesCreditNoteStatus[\"SALES_CREDIT_NOTE_STATUS_COMPLETE\"] = 2] = \"SALES_CREDIT_NOTE_STATUS_COMPLETE\";\n SalesCreditNoteStatus[SalesCreditNoteStatus[\"SALES_CREDIT_NOTE_STATUS_DISCARDED\"] = 3] = \"SALES_CREDIT_NOTE_STATUS_DISCARDED\";\n return SalesCreditNoteStatus;\n}(SalesCreditNoteStatus || {});\n// *********************************\n// Code generated by sdkgen\n// DO NOT EDIT!.\n//\n// Enums.\n// *********************************\nvar PaymentStatuses = /*#__PURE__*/function (PaymentStatuses) {\n PaymentStatuses[PaymentStatuses[\"PAYMENT_STATUSES_NOT_SET\"] = 0] = \"PAYMENT_STATUSES_NOT_SET\";\n PaymentStatuses[PaymentStatuses[\"PAYMENT_STATUSES_UNPAID\"] = 1] = \"PAYMENT_STATUSES_UNPAID\";\n PaymentStatuses[PaymentStatuses[\"PAYMENT_STATUSES_PAID\"] = 2] = \"PAYMENT_STATUSES_PAID\";\n PaymentStatuses[PaymentStatuses[\"PAYMENT_STATUSES_PART_PAID\"] = 3] = \"PAYMENT_STATUSES_PART_PAID\";\n PaymentStatuses[PaymentStatuses[\"PAYMENT_STATUSES_NOT_APPLICABLE\"] = 4] = \"PAYMENT_STATUSES_NOT_APPLICABLE\";\n return PaymentStatuses;\n}(PaymentStatuses || {});\nvar SalesInvoiceStatus = /*#__PURE__*/function (SalesInvoiceStatus) {\n SalesInvoiceStatus[SalesInvoiceStatus[\"SALES_INVOICE_STATUS_IN_PROGRESS\"] = 0] = \"SALES_INVOICE_STATUS_IN_PROGRESS\";\n SalesInvoiceStatus[SalesInvoiceStatus[\"SALES_INVOICE_STATUS_READY_TO_POST\"] = 1] = \"SALES_INVOICE_STATUS_READY_TO_POST\";\n SalesInvoiceStatus[SalesInvoiceStatus[\"SALES_INVOICE_STATUS_COMPLETE\"] = 2] = \"SALES_INVOICE_STATUS_COMPLETE\";\n SalesInvoiceStatus[SalesInvoiceStatus[\"SALES_INVOICE_STATUS_DISCARDED\"] = 3] = \"SALES_INVOICE_STATUS_DISCARDED\";\n return SalesInvoiceStatus;\n}(SalesInvoiceStatus || {});\nvar SalesInvoiceType = /*#__PURE__*/function (SalesInvoiceType) {\n SalesInvoiceType[SalesInvoiceType[\"SALES_INVOICE_TYPE_UNSET\"] = 0] = \"SALES_INVOICE_TYPE_UNSET\";\n SalesInvoiceType[SalesInvoiceType[\"SALES_INVOICE_TYPE_INVOICED\"] = 1] = \"SALES_INVOICE_TYPE_INVOICED\";\n SalesInvoiceType[SalesInvoiceType[\"SALES_INVOICE_TYPE_INSTANT\"] = 2] = \"SALES_INVOICE_TYPE_INSTANT\";\n return SalesInvoiceType;\n}(SalesInvoiceType || {});\n// *********************************\n// Code generated by sdkgen\n// DO NOT EDIT!.\n//\n// Enums.\n// *********************************\nvar PaymentProcessor = /*#__PURE__*/function (PaymentProcessor) {\n PaymentProcessor[PaymentProcessor[\"PAYMENT_PROCESSOR_INVALID\"] = 0] = \"PAYMENT_PROCESSOR_INVALID\";\n PaymentProcessor[PaymentProcessor[\"PAYMENT_PROCESSOR_UNSET\"] = 1] = \"PAYMENT_PROCESSOR_UNSET\";\n PaymentProcessor[PaymentProcessor[\"PAYMENT_PROCESSOR_STRIPE\"] = 2] = \"PAYMENT_PROCESSOR_STRIPE\";\n return PaymentProcessor;\n}(PaymentProcessor || {});\n// *********************************\n// Code generated by sdkgen\n// DO NOT EDIT!.\n//\n// Enums.\n// *********************************\nvar CollectionMethod = /*#__PURE__*/function (CollectionMethod) {\n CollectionMethod[CollectionMethod[\"COLLECTION_METHOD_INVALID\"] = 0] = \"COLLECTION_METHOD_INVALID\";\n CollectionMethod[CollectionMethod[\"COLLECTION_METHOD_MANUAL\"] = 1] = \"COLLECTION_METHOD_MANUAL\";\n CollectionMethod[CollectionMethod[\"COLLECTION_METHOD_EMAIL\"] = 2] = \"COLLECTION_METHOD_EMAIL\";\n CollectionMethod[CollectionMethod[\"COLLECTION_METHOD_CHARGE_AUTOMATICALLY\"] = 3] = \"COLLECTION_METHOD_CHARGE_AUTOMATICALLY\";\n return CollectionMethod;\n}(CollectionMethod || {});\nvar Interval = /*#__PURE__*/function (Interval) {\n Interval[Interval[\"INTERVAL_INVALID\"] = 0] = \"INTERVAL_INVALID\";\n Interval[Interval[\"INTERVAL_DAY\"] = 1] = \"INTERVAL_DAY\";\n Interval[Interval[\"INTERVAL_WEEK\"] = 2] = \"INTERVAL_WEEK\";\n Interval[Interval[\"INTERVAL_MONTH\"] = 3] = \"INTERVAL_MONTH\";\n Interval[Interval[\"INTERVAL_YEAR\"] = 4] = \"INTERVAL_YEAR\";\n return Interval;\n}(Interval || {});\nvar RecurringInvoiceStatus = /*#__PURE__*/function (RecurringInvoiceStatus) {\n RecurringInvoiceStatus[RecurringInvoiceStatus[\"RECURRING_INVOICE_STATUS_INVALID\"] = 0] = \"RECURRING_INVOICE_STATUS_INVALID\";\n RecurringInvoiceStatus[RecurringInvoiceStatus[\"RECURRING_INVOICE_STATUS_INACTIVE\"] = 1] = \"RECURRING_INVOICE_STATUS_INACTIVE\";\n RecurringInvoiceStatus[RecurringInvoiceStatus[\"RECURRING_INVOICE_STATUS_ACTIVE\"] = 2] = \"RECURRING_INVOICE_STATUS_ACTIVE\";\n RecurringInvoiceStatus[RecurringInvoiceStatus[\"RECURRING_INVOICE_STATUS_ARCHIVED\"] = 3] = \"RECURRING_INVOICE_STATUS_ARCHIVED\";\n return RecurringInvoiceStatus;\n}(RecurringInvoiceStatus || {});\n// *********************************\n// Code generated by sdkgen\n// DO NOT EDIT!.\n//\n// Enums.\n// *********************************\nvar MerchantServicesReportRunStatus = /*#__PURE__*/function (MerchantServicesReportRunStatus) {\n MerchantServicesReportRunStatus[MerchantServicesReportRunStatus[\"MERCHANT_SERVICES_REPORT_RUN_STATUS_UNSPECIFIED\"] = 0] = \"MERCHANT_SERVICES_REPORT_RUN_STATUS_UNSPECIFIED\";\n MerchantServicesReportRunStatus[MerchantServicesReportRunStatus[\"MERCHANT_SERVICES_REPORT_RUN_STATUS_PENDING\"] = 1] = \"MERCHANT_SERVICES_REPORT_RUN_STATUS_PENDING\";\n MerchantServicesReportRunStatus[MerchantServicesReportRunStatus[\"MERCHANT_SERVICES_REPORT_RUN_STATUS_SUCCEEDED\"] = 2] = \"MERCHANT_SERVICES_REPORT_RUN_STATUS_SUCCEEDED\";\n MerchantServicesReportRunStatus[MerchantServicesReportRunStatus[\"MERCHANT_SERVICES_REPORT_RUN_STATUS_FAILED\"] = 3] = \"MERCHANT_SERVICES_REPORT_RUN_STATUS_FAILED\";\n return MerchantServicesReportRunStatus;\n}(MerchantServicesReportRunStatus || {});\nvar MerchantServicesReportRunType = /*#__PURE__*/function (MerchantServicesReportRunType) {\n MerchantServicesReportRunType[MerchantServicesReportRunType[\"MERCHANT_SERVICES_REPORT_RUN_TYPE_UNSPECIFIED\"] = 0] = \"MERCHANT_SERVICES_REPORT_RUN_TYPE_UNSPECIFIED\";\n MerchantServicesReportRunType[MerchantServicesReportRunType[\"MERCHANT_SERVICES_REPORT_RUN_TYPE_BALANCE_ITEMIZED\"] = 1] = \"MERCHANT_SERVICES_REPORT_RUN_TYPE_BALANCE_ITEMIZED\";\n return MerchantServicesReportRunType;\n}(MerchantServicesReportRunType || {});\n// *********************************\n// Code generated by sdkgen\n// DO NOT EDIT!.\n//\n// Enums.\n// *********************************\nvar EntityType = /*#__PURE__*/function (EntityType) {\n EntityType[EntityType[\"ENTITY_TYPE_INVALID\"] = 0] = \"ENTITY_TYPE_INVALID\";\n EntityType[EntityType[\"ENTITY_TYPE_SUBSCRIPTION\"] = 1] = \"ENTITY_TYPE_SUBSCRIPTION\";\n return EntityType;\n}(EntityType || {});\nvar RelationshipType = /*#__PURE__*/function (RelationshipType) {\n RelationshipType[RelationshipType[\"RELATIONSHIP_TYPE_INVALID\"] = 0] = \"RELATIONSHIP_TYPE_INVALID\";\n RelationshipType[RelationshipType[\"RELATIONSHIP_TYPE_ASSOCIATED_WITH\"] = 1] = \"RELATIONSHIP_TYPE_ASSOCIATED_WITH\";\n return RelationshipType;\n}(RelationshipType || {});\n// *********************************\n// Code generated by sdkgen\n// DO NOT EDIT!.\n//\n// Enums Index.\n// *********************************\n\nfunction enumStringToValue$G(enumRef, value) {\n if (typeof value === 'number') {\n return value;\n }\n return enumRef[value];\n}\nclass ExportResponse {\n static fromProto(proto) {\n let m = new ExportResponse();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n return toReturn;\n }\n}\nclass PagedRequestOptions {\n static fromProto(proto) {\n let m = new PagedRequestOptions();\n m = Object.assign(m, proto);\n if (proto.pageSize) {\n m.pageSize = parseInt(proto.pageSize, 10);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.cursor !== 'undefined') {\n toReturn['cursor'] = this.cursor;\n }\n if (typeof this.pageSize !== 'undefined') {\n toReturn['pageSize'] = this.pageSize;\n }\n return toReturn;\n }\n}\nclass PagedResponseMetadata {\n static fromProto(proto) {\n let m = new PagedResponseMetadata();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.nextCursor !== 'undefined') {\n toReturn['nextCursor'] = this.nextCursor;\n }\n if (typeof this.hasMore !== 'undefined') {\n toReturn['hasMore'] = this.hasMore;\n }\n return toReturn;\n }\n}\nfunction enumStringToValue$F(enumRef, value) {\n if (typeof value === 'number') {\n return value;\n }\n return enumRef[value];\n}\nclass FieldMask {\n static fromProto(proto) {\n let m = new FieldMask();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.paths !== 'undefined') {\n toReturn['paths'] = this.paths;\n }\n return toReturn;\n }\n}\nfunction enumStringToValue$E(enumRef, value) {\n if (typeof value === 'number') {\n return value;\n }\n return enumRef[value];\n}\nclass Commitment {\n static fromProto(proto) {\n let m = new Commitment();\n m = Object.assign(m, proto);\n if (proto.initial) {\n m.initial = parseInt(proto.initial, 10);\n }\n if (proto.recurring) {\n m.recurring = parseInt(proto.recurring, 10);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.initial !== 'undefined') {\n toReturn['initial'] = this.initial;\n }\n if (typeof this.recurring !== 'undefined') {\n toReturn['recurring'] = this.recurring;\n }\n return toReturn;\n }\n}\nfunction enumStringToValue$D(enumRef, value) {\n if (typeof value === 'number') {\n return value;\n }\n return enumRef[value];\n}\nclass AppliedFee {\n static fromProto(proto) {\n let m = new AppliedFee();\n m = Object.assign(m, proto);\n if (proto.appliedAmount) {\n m.appliedAmount = parseInt(proto.appliedAmount, 10);\n }\n if (proto.fee) {\n m.fee = Fee.fromProto(proto.fee);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.appliedAmount !== 'undefined') {\n toReturn['appliedAmount'] = this.appliedAmount;\n }\n if (typeof this.fee !== 'undefined' && this.fee !== null) {\n toReturn['fee'] = 'toApiJson' in this.fee ? this.fee.toApiJson() : this.fee;\n }\n return toReturn;\n }\n}\nclass Fee {\n static fromProto(proto) {\n let m = new Fee();\n m = Object.assign(m, proto);\n if (proto.amountType) {\n m.amountType = enumStringToValue$D(FeeAmountType, proto.amountType);\n }\n if (proto.feeType) {\n m.feeType = enumStringToValue$D(FeeType, proto.feeType);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.amount !== 'undefined') {\n toReturn['amount'] = this.amount;\n }\n if (typeof this.amountType !== 'undefined') {\n toReturn['amountType'] = this.amountType;\n }\n if (typeof this.feeType !== 'undefined') {\n toReturn['feeType'] = this.feeType;\n }\n return toReturn;\n }\n}\nfunction enumStringToValue$C(enumRef, value) {\n if (typeof value === 'number') {\n return value;\n }\n return enumRef[value];\n}\nclass ComponentPricing {\n static fromProto(proto) {\n let m = new ComponentPricing();\n m = Object.assign(m, proto);\n if (proto.unitPrice) {\n m.unitPrice = parseInt(proto.unitPrice, 10);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.componentId !== 'undefined') {\n toReturn['componentId'] = this.componentId;\n }\n if (typeof this.unitPrice !== 'undefined') {\n toReturn['unitPrice'] = this.unitPrice;\n }\n return toReturn;\n }\n}\nclass CreatePricingPlanRequest {\n static fromProto(proto) {\n let m = new CreatePricingPlanRequest();\n m = Object.assign(m, proto);\n if (proto.defaultBillingStrategy) {\n m.defaultBillingStrategy = enumStringToValue$C(BillingStrategy, proto.defaultBillingStrategy);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.name !== 'undefined') {\n toReturn['name'] = this.name;\n }\n if (typeof this.defaultBillingStrategy !== 'undefined') {\n toReturn['defaultBillingStrategy'] = this.defaultBillingStrategy;\n }\n return toReturn;\n }\n}\nclass CreatePricingPlanResponse {\n static fromProto(proto) {\n let m = new CreatePricingPlanResponse();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.id !== 'undefined') {\n toReturn['id'] = this.id;\n }\n return toReturn;\n }\n}\nclass GetMultiPricingPlanRequest {\n static fromProto(proto) {\n let m = new GetMultiPricingPlanRequest();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.pricingPlanIds !== 'undefined') {\n toReturn['pricingPlanIds'] = this.pricingPlanIds;\n }\n return toReturn;\n }\n}\nclass GetMultiPricingPlanResponse {\n static fromProto(proto) {\n let m = new GetMultiPricingPlanResponse();\n m = Object.assign(m, proto);\n if (proto.plans) {\n m.plans = proto.plans.map(PricingPlan.fromProto);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.plans !== 'undefined' && this.plans !== null) {\n toReturn['plans'] = 'toApiJson' in this.plans ? this.plans.toApiJson() : this.plans;\n }\n return toReturn;\n }\n}\nclass PricingPlan {\n static fromProto(proto) {\n let m = new PricingPlan();\n m = Object.assign(m, proto);\n if (proto.defaultBillingStrategy) {\n m.defaultBillingStrategy = enumStringToValue$C(BillingStrategy, proto.defaultBillingStrategy);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.id !== 'undefined') {\n toReturn['id'] = this.id;\n }\n if (typeof this.name !== 'undefined') {\n toReturn['name'] = this.name;\n }\n if (typeof this.defaultBillingStrategy !== 'undefined') {\n toReturn['defaultBillingStrategy'] = this.defaultBillingStrategy;\n }\n return toReturn;\n }\n}\nclass PricingPlanProductPricing {\n static fromProto(proto) {\n let m = new PricingPlanProductPricing();\n m = Object.assign(m, proto);\n if (proto.type) {\n m.type = enumStringToValue$C(ProductPricingType, proto.type);\n }\n if (proto.rules) {\n m.rules = proto.rules.map(ProductPricingRule.fromProto);\n }\n if (proto.setupFee) {\n m.setupFee = parseInt(proto.setupFee, 10);\n }\n if (proto.frequency) {\n m.frequency = enumStringToValue$C(Frequency, proto.frequency);\n }\n if (proto.fees) {\n m.fees = proto.fees.map(Fee.fromProto);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.type !== 'undefined') {\n toReturn['type'] = this.type;\n }\n if (typeof this.rules !== 'undefined' && this.rules !== null) {\n toReturn['rules'] = 'toApiJson' in this.rules ? this.rules.toApiJson() : this.rules;\n }\n if (typeof this.setupFee !== 'undefined') {\n toReturn['setupFee'] = this.setupFee;\n }\n if (typeof this.frequency !== 'undefined') {\n toReturn['frequency'] = this.frequency;\n }\n if (typeof this.currencyCode !== 'undefined') {\n toReturn['currencyCode'] = this.currencyCode;\n }\n if (typeof this.fees !== 'undefined' && this.fees !== null) {\n toReturn['fees'] = 'toApiJson' in this.fees ? this.fees.toApiJson() : this.fees;\n }\n return toReturn;\n }\n}\nclass ProductPricingRule {\n static fromProto(proto) {\n let m = new ProductPricingRule();\n m = Object.assign(m, proto);\n if (proto.price) {\n m.price = parseInt(proto.price, 10);\n }\n if (proto.minUnits) {\n m.minUnits = parseInt(proto.minUnits, 10);\n }\n if (proto.maxUnits) {\n m.maxUnits = parseInt(proto.maxUnits, 10);\n }\n if (proto.componentPricing) {\n m.componentPricing = proto.componentPricing.map(ComponentPricing.fromProto);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.price !== 'undefined') {\n toReturn['price'] = this.price;\n }\n if (typeof this.minUnits !== 'undefined') {\n toReturn['minUnits'] = this.minUnits;\n }\n if (typeof this.maxUnits !== 'undefined') {\n toReturn['maxUnits'] = this.maxUnits;\n }\n if (typeof this.componentPricing !== 'undefined' && this.componentPricing !== null) {\n toReturn['componentPricing'] = 'toApiJson' in this.componentPricing ? this.componentPricing.toApiJson() : this.componentPricing;\n }\n return toReturn;\n }\n}\nclass UpdatePricingPlanRequest {\n static fromProto(proto) {\n let m = new UpdatePricingPlanRequest();\n m = Object.assign(m, proto);\n if (proto.fieldMask) {\n m.fieldMask = FieldMask.fromProto(proto.fieldMask);\n }\n if (proto.defaultBillingStrategy) {\n m.defaultBillingStrategy = enumStringToValue$C(BillingStrategy, proto.defaultBillingStrategy);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.id !== 'undefined') {\n toReturn['id'] = this.id;\n }\n if (typeof this.fieldMask !== 'undefined' && this.fieldMask !== null) {\n toReturn['fieldMask'] = 'toApiJson' in this.fieldMask ? this.fieldMask.toApiJson() : this.fieldMask;\n }\n if (typeof this.name !== 'undefined') {\n toReturn['name'] = this.name;\n }\n if (typeof this.defaultBillingStrategy !== 'undefined') {\n toReturn['defaultBillingStrategy'] = this.defaultBillingStrategy;\n }\n return toReturn;\n }\n}\nclass UpdatePricingPlanResponse {\n static fromProto(proto) {\n let m = new UpdatePricingPlanResponse();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n return toReturn;\n }\n}\nfunction enumStringToValue$B(enumRef, value) {\n if (typeof value === 'number') {\n return value;\n }\n return enumRef[value];\n}\nclass ProductPrices {\n static fromProto(proto) {\n let m = new ProductPrices();\n m = Object.assign(m, proto);\n if (proto.prices) {\n m.prices = proto.prices.map(ProductPricing.fromProto);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.sku !== 'undefined') {\n toReturn['sku'] = this.sku;\n }\n if (typeof this.prices !== 'undefined' && this.prices !== null) {\n toReturn['prices'] = 'toApiJson' in this.prices ? this.prices.toApiJson() : this.prices;\n }\n return toReturn;\n }\n}\nclass ProductPricing {\n static fromProto(proto) {\n let m = new ProductPricing();\n m = Object.assign(m, proto);\n if (proto.strategy) {\n m.strategy = enumStringToValue$B(BillingStrategy, proto.strategy);\n }\n if (proto.pricingType) {\n m.pricingType = enumStringToValue$B(ProductPricingType, proto.pricingType);\n }\n if (proto.currency) {\n m.currency = enumStringToValue$B(Currency, proto.currency);\n }\n if (proto.frequency) {\n m.frequency = enumStringToValue$B(Frequency, proto.frequency);\n }\n if (proto.pricingRules) {\n m.pricingRules = proto.pricingRules.map(ProductPricingRule.fromProto);\n }\n if (proto.commitment) {\n m.commitment = Commitment.fromProto(proto.commitment);\n }\n if (proto.volumeCommitment) {\n m.volumeCommitment = parseInt(proto.volumeCommitment, 10);\n }\n if (proto.setupFee) {\n m.setupFee = parseInt(proto.setupFee, 10);\n }\n if (proto.fees) {\n m.fees = proto.fees.map(Fee.fromProto);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.strategy !== 'undefined') {\n toReturn['strategy'] = this.strategy;\n }\n if (typeof this.pricingType !== 'undefined') {\n toReturn['pricingType'] = this.pricingType;\n }\n if (typeof this.currency !== 'undefined') {\n toReturn['currency'] = this.currency;\n }\n if (typeof this.frequency !== 'undefined') {\n toReturn['frequency'] = this.frequency;\n }\n if (typeof this.pricingRules !== 'undefined' && this.pricingRules !== null) {\n toReturn['pricingRules'] = 'toApiJson' in this.pricingRules ? this.pricingRules.toApiJson() : this.pricingRules;\n }\n if (typeof this.commitment !== 'undefined' && this.commitment !== null) {\n toReturn['commitment'] = 'toApiJson' in this.commitment ? this.commitment.toApiJson() : this.commitment;\n }\n if (typeof this.isStartingPrice !== 'undefined') {\n toReturn['isStartingPrice'] = this.isStartingPrice;\n }\n if (typeof this.resolvedFrom !== 'undefined') {\n toReturn['resolvedFrom'] = this.resolvedFrom;\n }\n if (typeof this.volumeCommitment !== 'undefined') {\n toReturn['volumeCommitment'] = this.volumeCommitment;\n }\n if (typeof this.setupFee !== 'undefined') {\n toReturn['setupFee'] = this.setupFee;\n }\n if (typeof this.fees !== 'undefined' && this.fees !== null) {\n toReturn['fees'] = 'toApiJson' in this.fees ? this.fees.toApiJson() : this.fees;\n }\n return toReturn;\n }\n}\nclass WholesaleCostItemRequest {\n static fromProto(proto) {\n let m = new WholesaleCostItemRequest();\n m = Object.assign(m, proto);\n if (proto.quantity) {\n m.quantity = parseInt(proto.quantity, 10);\n }\n if (proto.frequency) {\n m.frequency = enumStringToValue$B(Frequency, proto.frequency);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.sku !== 'undefined') {\n toReturn['sku'] = this.sku;\n }\n if (typeof this.quantity !== 'undefined') {\n toReturn['quantity'] = this.quantity;\n }\n if (typeof this.frequency !== 'undefined') {\n toReturn['frequency'] = this.frequency;\n }\n return toReturn;\n }\n}\nfunction enumStringToValue$A(enumRef, value) {\n if (typeof value === 'number') {\n return value;\n }\n return enumRef[value];\n}\nclass BillItemRequest {\n static fromProto(proto) {\n let m = new BillItemRequest();\n m = Object.assign(m, proto);\n if (proto.billingStart) {\n m.billingStart = new Date(proto.billingStart);\n }\n if (proto.proratedTo) {\n m.proratedTo = new Date(proto.proratedTo);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.merchantId !== 'undefined') {\n toReturn['merchantId'] = this.merchantId;\n }\n if (typeof this.sku !== 'undefined') {\n toReturn['sku'] = this.sku;\n }\n if (typeof this.customerId !== 'undefined') {\n toReturn['customerId'] = this.customerId;\n }\n if (typeof this.orderId !== 'undefined') {\n toReturn['orderId'] = this.orderId;\n }\n if (typeof this.billingStart !== 'undefined' && this.billingStart !== null) {\n toReturn['billingStart'] = 'toApiJson' in this.billingStart ? this.billingStart.toApiJson() : this.billingStart;\n }\n if (typeof this.proratedTo !== 'undefined' && this.proratedTo !== null) {\n toReturn['proratedTo'] = 'toApiJson' in this.proratedTo ? this.proratedTo.toApiJson() : this.proratedTo;\n }\n return toReturn;\n }\n}\nclass BillMultipleItemsRequest {\n static fromProto(proto) {\n let m = new BillMultipleItemsRequest();\n m = Object.assign(m, proto);\n if (proto.items) {\n m.items = proto.items.map(Item.fromProto);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.merchantId !== 'undefined') {\n toReturn['merchantId'] = this.merchantId;\n }\n if (typeof this.items !== 'undefined' && this.items !== null) {\n toReturn['items'] = 'toApiJson' in this.items ? this.items.toApiJson() : this.items;\n }\n return toReturn;\n }\n}\nclass BillMultipleItemsResponse {\n static fromProto(proto) {\n let m = new BillMultipleItemsResponse();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.id !== 'undefined') {\n toReturn['id'] = this.id;\n }\n return toReturn;\n }\n}\nclass BillableItem {\n static fromProto(proto) {\n let m = new BillableItem();\n m = Object.assign(m, proto);\n if (proto.expiry) {\n m.expiry = new Date(proto.expiry);\n }\n if (proto.billingStart) {\n m.billingStart = new Date(proto.billingStart);\n }\n if (proto.created) {\n m.created = new Date(proto.created);\n }\n if (proto.updated) {\n m.updated = new Date(proto.updated);\n }\n if (proto.frequency) {\n m.frequency = enumStringToValue$A(Frequency, proto.frequency);\n }\n if (proto.nextRenewal) {\n m.nextRenewal = new Date(proto.nextRenewal);\n }\n if (proto.customerAddress) {\n m.customerAddress = BillableItemCustomerAddress.fromProto(proto.customerAddress);\n }\n if (proto.customUnitPrice) {\n m.customUnitPrice = parseInt(proto.customUnitPrice, 10);\n }\n if (proto.retailFrequency) {\n m.retailFrequency = enumStringToValue$A(Frequency, proto.retailFrequency);\n }\n if (proto.nextRetailRenewal) {\n m.nextRetailRenewal = new Date(proto.nextRetailRenewal);\n }\n if (proto.retailUnitPrice) {\n m.retailUnitPrice = parseInt(proto.retailUnitPrice, 10);\n }\n if (proto.status) {\n m.status = enumStringToValue$A(SubscriptionStatus, proto.status);\n }\n if (proto.price) {\n m.price = ProductPricing.fromProto(proto.price);\n }\n if (proto.deleted) {\n m.deleted = new Date(proto.deleted);\n }\n if (proto.source) {\n m.source = enumStringToValue$A(Source, proto.source);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.merchantId !== 'undefined') {\n toReturn['merchantId'] = this.merchantId;\n }\n if (typeof this.sku !== 'undefined') {\n toReturn['sku'] = this.sku;\n }\n if (typeof this.customerId !== 'undefined') {\n toReturn['customerId'] = this.customerId;\n }\n if (typeof this.orderId !== 'undefined') {\n toReturn['orderId'] = this.orderId;\n }\n if (typeof this.expiry !== 'undefined' && this.expiry !== null) {\n toReturn['expiry'] = 'toApiJson' in this.expiry ? this.expiry.toApiJson() : this.expiry;\n }\n if (typeof this.billingStart !== 'undefined' && this.billingStart !== null) {\n toReturn['billingStart'] = 'toApiJson' in this.billingStart ? this.billingStart.toApiJson() : this.billingStart;\n }\n if (typeof this.created !== 'undefined' && this.created !== null) {\n toReturn['created'] = 'toApiJson' in this.created ? this.created.toApiJson() : this.created;\n }\n if (typeof this.updated !== 'undefined' && this.updated !== null) {\n toReturn['updated'] = 'toApiJson' in this.updated ? this.updated.toApiJson() : this.updated;\n }\n if (typeof this.frequency !== 'undefined') {\n toReturn['frequency'] = this.frequency;\n }\n if (typeof this.nextRenewal !== 'undefined' && this.nextRenewal !== null) {\n toReturn['nextRenewal'] = 'toApiJson' in this.nextRenewal ? this.nextRenewal.toApiJson() : this.nextRenewal;\n }\n if (typeof this.customerName !== 'undefined') {\n toReturn['customerName'] = this.customerName;\n }\n if (typeof this.productName !== 'undefined') {\n toReturn['productName'] = this.productName;\n }\n if (typeof this.customerAddress !== 'undefined' && this.customerAddress !== null) {\n toReturn['customerAddress'] = 'toApiJson' in this.customerAddress ? this.customerAddress.toApiJson() : this.customerAddress;\n }\n if (typeof this.customUnitPrice !== 'undefined') {\n toReturn['customUnitPrice'] = this.customUnitPrice;\n }\n if (typeof this.retailFrequency !== 'undefined') {\n toReturn['retailFrequency'] = this.retailFrequency;\n }\n if (typeof this.nextRetailRenewal !== 'undefined' && this.nextRetailRenewal !== null) {\n toReturn['nextRetailRenewal'] = 'toApiJson' in this.nextRetailRenewal ? this.nextRetailRenewal.toApiJson() : this.nextRetailRenewal;\n }\n if (typeof this.retailUnitPrice !== 'undefined') {\n toReturn['retailUnitPrice'] = this.retailUnitPrice;\n }\n if (typeof this.status !== 'undefined') {\n toReturn['status'] = this.status;\n }\n if (typeof this.price !== 'undefined' && this.price !== null) {\n toReturn['price'] = 'toApiJson' in this.price ? this.price.toApiJson() : this.price;\n }\n if (typeof this.subscriptionId !== 'undefined') {\n toReturn['subscriptionId'] = this.subscriptionId;\n }\n if (typeof this.deleted !== 'undefined' && this.deleted !== null) {\n toReturn['deleted'] = 'toApiJson' in this.deleted ? this.deleted.toApiJson() : this.deleted;\n }\n if (typeof this.source !== 'undefined') {\n toReturn['source'] = this.source;\n }\n if (typeof this.autoBillable !== 'undefined') {\n toReturn['autoBillable'] = this.autoBillable;\n }\n if (typeof this.description !== 'undefined') {\n toReturn['description'] = this.description;\n }\n return toReturn;\n }\n}\nclass CanBillItemRequest {\n static fromProto(proto) {\n let m = new CanBillItemRequest();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.merchantId !== 'undefined') {\n toReturn['merchantId'] = this.merchantId;\n }\n if (typeof this.sku !== 'undefined') {\n toReturn['sku'] = this.sku;\n }\n return toReturn;\n }\n}\nclass CreateUsageRequest {\n static fromProto(proto) {\n let m = new CreateUsageRequest();\n m = Object.assign(m, proto);\n if (proto.quantity) {\n m.quantity = parseInt(proto.quantity, 10);\n }\n if (proto.usageDate) {\n m.usageDate = new Date(proto.usageDate);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.merchantId !== 'undefined') {\n toReturn['merchantId'] = this.merchantId;\n }\n if (typeof this.customerId !== 'undefined') {\n toReturn['customerId'] = this.customerId;\n }\n if (typeof this.orderId !== 'undefined') {\n toReturn['orderId'] = this.orderId;\n }\n if (typeof this.sku !== 'undefined') {\n toReturn['sku'] = this.sku;\n }\n if (typeof this.quantity !== 'undefined') {\n toReturn['quantity'] = this.quantity;\n }\n if (typeof this.usageDate !== 'undefined' && this.usageDate !== null) {\n toReturn['usageDate'] = 'toApiJson' in this.usageDate ? this.usageDate.toApiJson() : this.usageDate;\n }\n return toReturn;\n }\n}\nclass BillableItemCustomerAddress {\n static fromProto(proto) {\n let m = new BillableItemCustomerAddress();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.address !== 'undefined') {\n toReturn['address'] = this.address;\n }\n if (typeof this.city !== 'undefined') {\n toReturn['city'] = this.city;\n }\n if (typeof this.state !== 'undefined') {\n toReturn['state'] = this.state;\n }\n if (typeof this.zip !== 'undefined') {\n toReturn['zip'] = this.zip;\n }\n if (typeof this.country !== 'undefined') {\n toReturn['country'] = this.country;\n }\n return toReturn;\n }\n}\nclass DeleteBillableItemRequest {\n static fromProto(proto) {\n let m = new DeleteBillableItemRequest();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.merchantId !== 'undefined') {\n toReturn['merchantId'] = this.merchantId;\n }\n if (typeof this.sku !== 'undefined') {\n toReturn['sku'] = this.sku;\n }\n if (typeof this.customerId !== 'undefined') {\n toReturn['customerId'] = this.customerId;\n }\n if (typeof this.orderId !== 'undefined') {\n toReturn['orderId'] = this.orderId;\n }\n return toReturn;\n }\n}\nclass ExpireBillableItemRequest {\n static fromProto(proto) {\n let m = new ExpireBillableItemRequest();\n m = Object.assign(m, proto);\n if (proto.expiry) {\n m.expiry = new Date(proto.expiry);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.merchantId !== 'undefined') {\n toReturn['merchantId'] = this.merchantId;\n }\n if (typeof this.sku !== 'undefined') {\n toReturn['sku'] = this.sku;\n }\n if (typeof this.customerId !== 'undefined') {\n toReturn['customerId'] = this.customerId;\n }\n if (typeof this.orderId !== 'undefined') {\n toReturn['orderId'] = this.orderId;\n }\n if (typeof this.expiry !== 'undefined' && this.expiry !== null) {\n toReturn['expiry'] = 'toApiJson' in this.expiry ? this.expiry.toApiJson() : this.expiry;\n }\n return toReturn;\n }\n}\nclass ExportSubscriptionsRequest {\n static fromProto(proto) {\n let m = new ExportSubscriptionsRequest();\n m = Object.assign(m, proto);\n if (proto.filters) {\n m.filters = ListSubscriptionsRequestFilters.fromProto(proto.filters);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.filters !== 'undefined' && this.filters !== null) {\n toReturn['filters'] = 'toApiJson' in this.filters ? this.filters.toApiJson() : this.filters;\n }\n return toReturn;\n }\n}\nclass ListSubscriptionsRequestFilters {\n static fromProto(proto) {\n let m = new ListSubscriptionsRequestFilters();\n m = Object.assign(m, proto);\n if (proto.status) {\n m.status = enumStringToValue$A(SubscriptionStatus, proto.status);\n }\n if (proto.expiredDateGte) {\n m.expiredDateGte = new Date(proto.expiredDateGte);\n }\n if (proto.expiredDateLte) {\n m.expiredDateLte = new Date(proto.expiredDateLte);\n }\n if (proto.frequencies) {\n m.frequencies = proto.frequencies.map(v => enumStringToValue$A(Frequency, v));\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.skus !== 'undefined') {\n toReturn['skus'] = this.skus;\n }\n if (typeof this.merchantId !== 'undefined') {\n toReturn['merchantId'] = this.merchantId;\n }\n if (typeof this.customerId !== 'undefined') {\n toReturn['customerId'] = this.customerId;\n }\n if (typeof this.searchTerm !== 'undefined') {\n toReturn['searchTerm'] = this.searchTerm;\n }\n if (typeof this.status !== 'undefined') {\n toReturn['status'] = this.status;\n }\n if (typeof this.expiredDateGte !== 'undefined' && this.expiredDateGte !== null) {\n toReturn['expiredDateGte'] = 'toApiJson' in this.expiredDateGte ? this.expiredDateGte.toApiJson() : this.expiredDateGte;\n }\n if (typeof this.expiredDateLte !== 'undefined' && this.expiredDateLte !== null) {\n toReturn['expiredDateLte'] = 'toApiJson' in this.expiredDateLte ? this.expiredDateLte.toApiJson() : this.expiredDateLte;\n }\n if (typeof this.frequencies !== 'undefined') {\n toReturn['frequencies'] = this.frequencies;\n }\n return toReturn;\n }\n}\nclass ListBillableItemsRequestFilters {\n static fromProto(proto) {\n let m = new ListBillableItemsRequestFilters();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.skus !== 'undefined') {\n toReturn['skus'] = this.skus;\n }\n if (typeof this.merchantId !== 'undefined') {\n toReturn['merchantId'] = this.merchantId;\n }\n if (typeof this.customerId !== 'undefined') {\n toReturn['customerId'] = this.customerId;\n }\n return toReturn;\n }\n}\nclass GetBillableItemRequest {\n static fromProto(proto) {\n let m = new GetBillableItemRequest();\n m = Object.assign(m, proto);\n if (proto.projectionFilter) {\n m.projectionFilter = SubscriptionProjectionFilter.fromProto(proto.projectionFilter);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.merchantId !== 'undefined') {\n toReturn['merchantId'] = this.merchantId;\n }\n if (typeof this.sku !== 'undefined') {\n toReturn['sku'] = this.sku;\n }\n if (typeof this.customerId !== 'undefined') {\n toReturn['customerId'] = this.customerId;\n }\n if (typeof this.orderId !== 'undefined') {\n toReturn['orderId'] = this.orderId;\n }\n if (typeof this.projectionFilter !== 'undefined' && this.projectionFilter !== null) {\n toReturn['projectionFilter'] = 'toApiJson' in this.projectionFilter ? this.projectionFilter.toApiJson() : this.projectionFilter;\n }\n return toReturn;\n }\n}\nclass GetBillableItemResponse {\n static fromProto(proto) {\n let m = new GetBillableItemResponse();\n m = Object.assign(m, proto);\n if (proto.item) {\n m.item = BillableItem.fromProto(proto.item);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.item !== 'undefined' && this.item !== null) {\n toReturn['item'] = 'toApiJson' in this.item ? this.item.toApiJson() : this.item;\n }\n return toReturn;\n }\n}\nclass GetMultiSubscriptionsRequest {\n static fromProto(proto) {\n let m = new GetMultiSubscriptionsRequest();\n m = Object.assign(m, proto);\n if (proto.subscriptionKeys) {\n m.subscriptionKeys = proto.subscriptionKeys.map(GetMultiSubscriptionsRequestKey.fromProto);\n }\n if (proto.projectionFilter) {\n m.projectionFilter = SubscriptionProjectionFilter.fromProto(proto.projectionFilter);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.subscriptionKeys !== 'undefined' && this.subscriptionKeys !== null) {\n toReturn['subscriptionKeys'] = 'toApiJson' in this.subscriptionKeys ? this.subscriptionKeys.toApiJson() : this.subscriptionKeys;\n }\n if (typeof this.projectionFilter !== 'undefined' && this.projectionFilter !== null) {\n toReturn['projectionFilter'] = 'toApiJson' in this.projectionFilter ? this.projectionFilter.toApiJson() : this.projectionFilter;\n }\n return toReturn;\n }\n}\nclass GetMultiSubscriptionsResponse {\n static fromProto(proto) {\n let m = new GetMultiSubscriptionsResponse();\n m = Object.assign(m, proto);\n if (proto.subscriptions) {\n m.subscriptions = proto.subscriptions.map(BillableItem.fromProto);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.subscriptions !== 'undefined' && this.subscriptions !== null) {\n toReturn['subscriptions'] = 'toApiJson' in this.subscriptions ? this.subscriptions.toApiJson() : this.subscriptions;\n }\n return toReturn;\n }\n}\nclass Item {\n static fromProto(proto) {\n let m = new Item();\n m = Object.assign(m, proto);\n if (proto.billingStart) {\n m.billingStart = new Date(proto.billingStart);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.sku !== 'undefined') {\n toReturn['sku'] = this.sku;\n }\n if (typeof this.customerId !== 'undefined') {\n toReturn['customerId'] = this.customerId;\n }\n if (typeof this.orderId !== 'undefined') {\n toReturn['orderId'] = this.orderId;\n }\n if (typeof this.billingStart !== 'undefined' && this.billingStart !== null) {\n toReturn['billingStart'] = 'toApiJson' in this.billingStart ? this.billingStart.toApiJson() : this.billingStart;\n }\n return toReturn;\n }\n}\nclass GetMultiSubscriptionsRequestKey {\n static fromProto(proto) {\n let m = new GetMultiSubscriptionsRequestKey();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.merchantId !== 'undefined') {\n toReturn['merchantId'] = this.merchantId;\n }\n if (typeof this.sku !== 'undefined') {\n toReturn['sku'] = this.sku;\n }\n if (typeof this.customerId !== 'undefined') {\n toReturn['customerId'] = this.customerId;\n }\n if (typeof this.orderId !== 'undefined') {\n toReturn['orderId'] = this.orderId;\n }\n return toReturn;\n }\n}\nclass ListBillableItemsRequest {\n static fromProto(proto) {\n let m = new ListBillableItemsRequest();\n m = Object.assign(m, proto);\n if (proto.filters) {\n m.filters = ListBillableItemsRequestFilters.fromProto(proto.filters);\n }\n if (proto.pagingOptions) {\n m.pagingOptions = PagedRequestOptions.fromProto(proto.pagingOptions);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.filters !== 'undefined' && this.filters !== null) {\n toReturn['filters'] = 'toApiJson' in this.filters ? this.filters.toApiJson() : this.filters;\n }\n if (typeof this.pagingOptions !== 'undefined' && this.pagingOptions !== null) {\n toReturn['pagingOptions'] = 'toApiJson' in this.pagingOptions ? this.pagingOptions.toApiJson() : this.pagingOptions;\n }\n if (typeof this.searchTerm !== 'undefined') {\n toReturn['searchTerm'] = this.searchTerm;\n }\n return toReturn;\n }\n}\nclass ListBillableItemsResponse {\n static fromProto(proto) {\n let m = new ListBillableItemsResponse();\n m = Object.assign(m, proto);\n if (proto.items) {\n m.items = proto.items.map(BillableItem.fromProto);\n }\n if (proto.pagingMetadata) {\n m.pagingMetadata = PagedResponseMetadata.fromProto(proto.pagingMetadata);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.items !== 'undefined' && this.items !== null) {\n toReturn['items'] = 'toApiJson' in this.items ? this.items.toApiJson() : this.items;\n }\n if (typeof this.pagingMetadata !== 'undefined' && this.pagingMetadata !== null) {\n toReturn['pagingMetadata'] = 'toApiJson' in this.pagingMetadata ? this.pagingMetadata.toApiJson() : this.pagingMetadata;\n }\n return toReturn;\n }\n}\nclass ListSubscriptionsRequest {\n static fromProto(proto) {\n let m = new ListSubscriptionsRequest();\n m = Object.assign(m, proto);\n if (proto.filters) {\n m.filters = ListSubscriptionsRequestFilters.fromProto(proto.filters);\n }\n if (proto.pagingOptions) {\n m.pagingOptions = PagedRequestOptions.fromProto(proto.pagingOptions);\n }\n if (proto.projectionFilter) {\n m.projectionFilter = SubscriptionProjectionFilter.fromProto(proto.projectionFilter);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.filters !== 'undefined' && this.filters !== null) {\n toReturn['filters'] = 'toApiJson' in this.filters ? this.filters.toApiJson() : this.filters;\n }\n if (typeof this.pagingOptions !== 'undefined' && this.pagingOptions !== null) {\n toReturn['pagingOptions'] = 'toApiJson' in this.pagingOptions ? this.pagingOptions.toApiJson() : this.pagingOptions;\n }\n if (typeof this.projectionFilter !== 'undefined' && this.projectionFilter !== null) {\n toReturn['projectionFilter'] = 'toApiJson' in this.projectionFilter ? this.projectionFilter.toApiJson() : this.projectionFilter;\n }\n return toReturn;\n }\n}\nclass ListSubscriptionsResponse {\n static fromProto(proto) {\n let m = new ListSubscriptionsResponse();\n m = Object.assign(m, proto);\n if (proto.subscriptions) {\n m.subscriptions = proto.subscriptions.map(BillableItem.fromProto);\n }\n if (proto.pagingMetadata) {\n m.pagingMetadata = PagedResponseMetadata.fromProto(proto.pagingMetadata);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.subscriptions !== 'undefined' && this.subscriptions !== null) {\n toReturn['subscriptions'] = 'toApiJson' in this.subscriptions ? this.subscriptions.toApiJson() : this.subscriptions;\n }\n if (typeof this.pagingMetadata !== 'undefined' && this.pagingMetadata !== null) {\n toReturn['pagingMetadata'] = 'toApiJson' in this.pagingMetadata ? this.pagingMetadata.toApiJson() : this.pagingMetadata;\n }\n return toReturn;\n }\n}\nclass UpdateSubscriptionRequestSubscription {\n static fromProto(proto) {\n let m = new UpdateSubscriptionRequestSubscription();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.subscriptionId !== 'undefined') {\n toReturn['subscriptionId'] = this.subscriptionId;\n }\n if (typeof this.description !== 'undefined') {\n toReturn['description'] = this.description;\n }\n return toReturn;\n }\n}\nclass SubscriptionProjectionFilter {\n static fromProto(proto) {\n let m = new SubscriptionProjectionFilter();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.price !== 'undefined') {\n toReturn['price'] = this.price;\n }\n if (typeof this.includeDeleted !== 'undefined') {\n toReturn['includeDeleted'] = this.includeDeleted;\n }\n return toReturn;\n }\n}\nclass UnexpireBillableItemRequest {\n static fromProto(proto) {\n let m = new UnexpireBillableItemRequest();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.merchantId !== 'undefined') {\n toReturn['merchantId'] = this.merchantId;\n }\n if (typeof this.sku !== 'undefined') {\n toReturn['sku'] = this.sku;\n }\n if (typeof this.customerId !== 'undefined') {\n toReturn['customerId'] = this.customerId;\n }\n if (typeof this.orderId !== 'undefined') {\n toReturn['orderId'] = this.orderId;\n }\n return toReturn;\n }\n}\nclass UpdateSubscriptionRequest {\n static fromProto(proto) {\n let m = new UpdateSubscriptionRequest();\n m = Object.assign(m, proto);\n if (proto.subscription) {\n m.subscription = UpdateSubscriptionRequestSubscription.fromProto(proto.subscription);\n }\n if (proto.fieldMask) {\n m.fieldMask = FieldMask.fromProto(proto.fieldMask);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.subscription !== 'undefined' && this.subscription !== null) {\n toReturn['subscription'] = 'toApiJson' in this.subscription ? this.subscription.toApiJson() : this.subscription;\n }\n if (typeof this.fieldMask !== 'undefined' && this.fieldMask !== null) {\n toReturn['fieldMask'] = 'toApiJson' in this.fieldMask ? this.fieldMask.toApiJson() : this.fieldMask;\n }\n return toReturn;\n }\n}\nclass UpdateSubscriptionResponse {\n static fromProto(proto) {\n let m = new UpdateSubscriptionResponse();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n return toReturn;\n }\n}\nfunction enumStringToValue$z(enumRef, value) {\n if (typeof value === 'number') {\n return value;\n }\n return enumRef[value];\n}\nclass AppliedDiscount {\n static fromProto(proto) {\n let m = new AppliedDiscount();\n m = Object.assign(m, proto);\n if (proto.type) {\n m.type = enumStringToValue$z(DiscountType, proto.type);\n }\n if (proto.value) {\n m.value = parseInt(proto.value, 10);\n }\n if (proto.totalAmount) {\n m.totalAmount = parseInt(proto.totalAmount, 10);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.type !== 'undefined') {\n toReturn['type'] = this.type;\n }\n if (typeof this.value !== 'undefined') {\n toReturn['value'] = this.value;\n }\n if (typeof this.totalAmount !== 'undefined') {\n toReturn['totalAmount'] = this.totalAmount;\n }\n if (typeof this.description !== 'undefined') {\n toReturn['description'] = this.description;\n }\n if (typeof this.referenceId !== 'undefined') {\n toReturn['referenceId'] = this.referenceId;\n }\n return toReturn;\n }\n}\nfunction enumStringToValue$y(enumRef, value) {\n if (typeof value === 'number') {\n return value;\n }\n return enumRef[value];\n}\nclass Bundle {\n static fromProto(proto) {\n let m = new Bundle();\n m = Object.assign(m, proto);\n if (proto.items) {\n m.items = proto.items.map(BundleItem.fromProto);\n }\n if (proto.created) {\n m.created = new Date(proto.created);\n }\n if (proto.updated) {\n m.updated = new Date(proto.updated);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.merchantId !== 'undefined') {\n toReturn['merchantId'] = this.merchantId;\n }\n if (typeof this.bundleId !== 'undefined') {\n toReturn['bundleId'] = this.bundleId;\n }\n if (typeof this.name !== 'undefined') {\n toReturn['name'] = this.name;\n }\n if (typeof this.items !== 'undefined' && this.items !== null) {\n toReturn['items'] = 'toApiJson' in this.items ? this.items.toApiJson() : this.items;\n }\n if (typeof this.created !== 'undefined' && this.created !== null) {\n toReturn['created'] = 'toApiJson' in this.created ? this.created.toApiJson() : this.created;\n }\n if (typeof this.updated !== 'undefined' && this.updated !== null) {\n toReturn['updated'] = 'toApiJson' in this.updated ? this.updated.toApiJson() : this.updated;\n }\n if (typeof this.hideBundleDetails !== 'undefined') {\n toReturn['hideBundleDetails'] = this.hideBundleDetails;\n }\n return toReturn;\n }\n}\nclass BundleItem {\n static fromProto(proto) {\n let m = new BundleItem();\n m = Object.assign(m, proto);\n if (proto.discountType) {\n m.discountType = enumStringToValue$y(DiscountType, proto.discountType);\n }\n if (proto.discountAmount) {\n m.discountAmount = parseInt(proto.discountAmount, 10);\n }\n if (proto.quantity) {\n m.quantity = parseInt(proto.quantity, 10);\n }\n if (proto.price) {\n m.price = BundleItemPrice.fromProto(proto.price);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.productId !== 'undefined') {\n toReturn['productId'] = this.productId;\n }\n if (typeof this.discountType !== 'undefined') {\n toReturn['discountType'] = this.discountType;\n }\n if (typeof this.discountAmount !== 'undefined') {\n toReturn['discountAmount'] = this.discountAmount;\n }\n if (typeof this.quantity !== 'undefined') {\n toReturn['quantity'] = this.quantity;\n }\n if (typeof this.defaultSku !== 'undefined') {\n toReturn['defaultSku'] = this.defaultSku;\n }\n if (typeof this.price !== 'undefined' && this.price !== null) {\n toReturn['price'] = 'toApiJson' in this.price ? this.price.toApiJson() : this.price;\n }\n return toReturn;\n }\n}\nclass BundlePricing {\n static fromProto(proto) {\n let m = new BundlePricing();\n m = Object.assign(m, proto);\n if (proto.prices) {\n m.prices = proto.prices.map(BundlePricingPriceAndFrequency.fromProto);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.bundleId !== 'undefined') {\n toReturn['bundleId'] = this.bundleId;\n }\n if (typeof this.currency !== 'undefined') {\n toReturn['currency'] = this.currency;\n }\n if (typeof this.prices !== 'undefined' && this.prices !== null) {\n toReturn['prices'] = 'toApiJson' in this.prices ? this.prices.toApiJson() : this.prices;\n }\n return toReturn;\n }\n}\nclass GetMultiBundleResponseBundlesEntry {\n static fromProto(proto) {\n let m = new GetMultiBundleResponseBundlesEntry();\n m = Object.assign(m, proto);\n if (proto.value) {\n m.value = Bundle.fromProto(proto.value);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.key !== 'undefined') {\n toReturn['key'] = this.key;\n }\n if (typeof this.value !== 'undefined' && this.value !== null) {\n toReturn['value'] = 'toApiJson' in this.value ? this.value.toApiJson() : this.value;\n }\n return toReturn;\n }\n}\nclass ListBundlesRequestFilters {\n static fromProto(proto) {\n let m = new ListBundlesRequestFilters();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.merchantId !== 'undefined') {\n toReturn['merchantId'] = this.merchantId;\n }\n return toReturn;\n }\n}\nclass GetMultiBundleRequest {\n static fromProto(proto) {\n let m = new GetMultiBundleRequest();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.merchantId !== 'undefined') {\n toReturn['merchantId'] = this.merchantId;\n }\n if (typeof this.bundleIds !== 'undefined') {\n toReturn['bundleIds'] = this.bundleIds;\n }\n return toReturn;\n }\n}\nclass GetMultiBundleResponse {\n static fromProto(proto) {\n let m = new GetMultiBundleResponse();\n m = Object.assign(m, proto);\n if (proto.bundles) {\n m.bundles = Object.keys(proto.bundles).reduce((obj, k) => {\n obj[k] = Bundle.fromProto(proto.bundles[k]);\n return obj;\n }, {});\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.bundles !== 'undefined' && this.bundles !== null) {\n toReturn['bundles'] = 'toApiJson' in this.bundles ? this.bundles.toApiJson() : this.bundles;\n }\n return toReturn;\n }\n}\nclass ListBundlesRequest {\n static fromProto(proto) {\n let m = new ListBundlesRequest();\n m = Object.assign(m, proto);\n if (proto.filters) {\n m.filters = ListBundlesRequestFilters.fromProto(proto.filters);\n }\n if (proto.pagingOptions) {\n m.pagingOptions = PagedRequestOptions.fromProto(proto.pagingOptions);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.filters !== 'undefined' && this.filters !== null) {\n toReturn['filters'] = 'toApiJson' in this.filters ? this.filters.toApiJson() : this.filters;\n }\n if (typeof this.searchTerm !== 'undefined') {\n toReturn['searchTerm'] = this.searchTerm;\n }\n if (typeof this.pagingOptions !== 'undefined' && this.pagingOptions !== null) {\n toReturn['pagingOptions'] = 'toApiJson' in this.pagingOptions ? this.pagingOptions.toApiJson() : this.pagingOptions;\n }\n return toReturn;\n }\n}\nclass ListBundlesResponse {\n static fromProto(proto) {\n let m = new ListBundlesResponse();\n m = Object.assign(m, proto);\n if (proto.bundles) {\n m.bundles = proto.bundles.map(Bundle.fromProto);\n }\n if (proto.pagingMetadata) {\n m.pagingMetadata = PagedResponseMetadata.fromProto(proto.pagingMetadata);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.bundles !== 'undefined' && this.bundles !== null) {\n toReturn['bundles'] = 'toApiJson' in this.bundles ? this.bundles.toApiJson() : this.bundles;\n }\n if (typeof this.pagingMetadata !== 'undefined' && this.pagingMetadata !== null) {\n toReturn['pagingMetadata'] = 'toApiJson' in this.pagingMetadata ? this.pagingMetadata.toApiJson() : this.pagingMetadata;\n }\n return toReturn;\n }\n}\nclass BundleItemPrice {\n static fromProto(proto) {\n let m = new BundleItemPrice();\n m = Object.assign(m, proto);\n if (proto.amount) {\n m.amount = parseInt(proto.amount, 10);\n }\n if (proto.setupFee) {\n m.setupFee = parseInt(proto.setupFee, 10);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.amount !== 'undefined') {\n toReturn['amount'] = this.amount;\n }\n if (typeof this.setupFee !== 'undefined') {\n toReturn['setupFee'] = this.setupFee;\n }\n return toReturn;\n }\n}\nclass BundlePricingPriceAndFrequency {\n static fromProto(proto) {\n let m = new BundlePricingPriceAndFrequency();\n m = Object.assign(m, proto);\n if (proto.frequency) {\n m.frequency = enumStringToValue$y(Frequency, proto.frequency);\n }\n if (proto.effectivePrice) {\n m.effectivePrice = parseInt(proto.effectivePrice, 10);\n }\n if (proto.initialPrice) {\n m.initialPrice = parseInt(proto.initialPrice, 10);\n }\n if (proto.setupFee) {\n m.setupFee = parseInt(proto.setupFee, 10);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.frequency !== 'undefined') {\n toReturn['frequency'] = this.frequency;\n }\n if (typeof this.effectivePrice !== 'undefined') {\n toReturn['effectivePrice'] = this.effectivePrice;\n }\n if (typeof this.initialPrice !== 'undefined') {\n toReturn['initialPrice'] = this.initialPrice;\n }\n if (typeof this.setupFee !== 'undefined') {\n toReturn['setupFee'] = this.setupFee;\n }\n return toReturn;\n }\n}\nclass UpsertBundleRequest {\n static fromProto(proto) {\n let m = new UpsertBundleRequest();\n m = Object.assign(m, proto);\n if (proto.items) {\n m.items = proto.items.map(BundleItem.fromProto);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.merchantId !== 'undefined') {\n toReturn['merchantId'] = this.merchantId;\n }\n if (typeof this.bundleId !== 'undefined') {\n toReturn['bundleId'] = this.bundleId;\n }\n if (typeof this.name !== 'undefined') {\n toReturn['name'] = this.name;\n }\n if (typeof this.items !== 'undefined' && this.items !== null) {\n toReturn['items'] = 'toApiJson' in this.items ? this.items.toApiJson() : this.items;\n }\n if (typeof this.hideBundleDetails !== 'undefined') {\n toReturn['hideBundleDetails'] = this.hideBundleDetails;\n }\n return toReturn;\n }\n}\nfunction enumStringToValue$x(enumRef, value) {\n if (typeof value === 'number') {\n return value;\n }\n return enumRef[value];\n}\nclass Contract {\n static fromProto(proto) {\n let m = new Contract();\n m = Object.assign(m, proto);\n if (proto.netD) {\n m.netD = parseInt(proto.netD, 10);\n }\n if (proto.created) {\n m.created = new Date(proto.created);\n }\n if (proto.currency) {\n m.currency = enumStringToValue$x(Currency, proto.currency);\n }\n if (proto.signed) {\n m.signed = new Date(proto.signed);\n }\n if (proto.activated) {\n m.activated = new Date(proto.activated);\n }\n if (proto.modified) {\n m.modified = new Date(proto.modified);\n }\n if (proto.verified) {\n m.verified = new Date(proto.verified);\n }\n if (proto.creditLimit) {\n m.creditLimit = parseInt(proto.creditLimit, 10);\n }\n if (proto.end) {\n m.end = new Date(proto.end);\n }\n if (proto.subscriptionUpdateStatus) {\n m.subscriptionUpdateStatus = enumStringToValue$x(ContractSubscriptionStatus, proto.subscriptionUpdateStatus);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.merchantId !== 'undefined') {\n toReturn['merchantId'] = this.merchantId;\n }\n if (typeof this.netD !== 'undefined') {\n toReturn['netD'] = this.netD;\n }\n if (typeof this.created !== 'undefined' && this.created !== null) {\n toReturn['created'] = 'toApiJson' in this.created ? this.created.toApiJson() : this.created;\n }\n if (typeof this.subscriptionId !== 'undefined') {\n toReturn['subscriptionId'] = this.subscriptionId;\n }\n if (typeof this.currency !== 'undefined') {\n toReturn['currency'] = this.currency;\n }\n if (typeof this.signed !== 'undefined' && this.signed !== null) {\n toReturn['signed'] = 'toApiJson' in this.signed ? this.signed.toApiJson() : this.signed;\n }\n if (typeof this.activated !== 'undefined' && this.activated !== null) {\n toReturn['activated'] = 'toApiJson' in this.activated ? this.activated.toApiJson() : this.activated;\n }\n if (typeof this.modified !== 'undefined' && this.modified !== null) {\n toReturn['modified'] = 'toApiJson' in this.modified ? this.modified.toApiJson() : this.modified;\n }\n if (typeof this.verified !== 'undefined' && this.verified !== null) {\n toReturn['verified'] = 'toApiJson' in this.verified ? this.verified.toApiJson() : this.verified;\n }\n if (typeof this.status !== 'undefined') {\n toReturn['status'] = this.status;\n }\n if (typeof this.creditLimit !== 'undefined') {\n toReturn['creditLimit'] = this.creditLimit;\n }\n if (typeof this.dimension !== 'undefined') {\n toReturn['dimension'] = this.dimension;\n }\n if (typeof this.pricingPlanId !== 'undefined') {\n toReturn['pricingPlanId'] = this.pricingPlanId;\n }\n if (typeof this.end !== 'undefined' && this.end !== null) {\n toReturn['end'] = 'toApiJson' in this.end ? this.end.toApiJson() : this.end;\n }\n if (typeof this.subscriptionUpdateStatus !== 'undefined') {\n toReturn['subscriptionUpdateStatus'] = this.subscriptionUpdateStatus;\n }\n return toReturn;\n }\n}\nclass GetMultiContractsResponseContractsEntry {\n static fromProto(proto) {\n let m = new GetMultiContractsResponseContractsEntry();\n m = Object.assign(m, proto);\n if (proto.value) {\n m.value = Contract.fromProto(proto.value);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.key !== 'undefined') {\n toReturn['key'] = this.key;\n }\n if (typeof this.value !== 'undefined' && this.value !== null) {\n toReturn['value'] = 'toApiJson' in this.value ? this.value.toApiJson() : this.value;\n }\n return toReturn;\n }\n}\nclass CreateContractRequest {\n static fromProto(proto) {\n let m = new CreateContractRequest();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.merchantId !== 'undefined') {\n toReturn['merchantId'] = this.merchantId;\n }\n if (typeof this.currencyCode !== 'undefined') {\n toReturn['currencyCode'] = this.currencyCode;\n }\n return toReturn;\n }\n}\nclass CreateContractResponse {\n static fromProto(proto) {\n let m = new CreateContractResponse();\n m = Object.assign(m, proto);\n if (proto.contract) {\n m.contract = Contract.fromProto(proto.contract);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.contract !== 'undefined' && this.contract !== null) {\n toReturn['contract'] = 'toApiJson' in this.contract ? this.contract.toApiJson() : this.contract;\n }\n return toReturn;\n }\n}\nclass GetContractRequest {\n static fromProto(proto) {\n let m = new GetContractRequest();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.merchantId !== 'undefined') {\n toReturn['merchantId'] = this.merchantId;\n }\n return toReturn;\n }\n}\nclass GetContractResponse {\n static fromProto(proto) {\n let m = new GetContractResponse();\n m = Object.assign(m, proto);\n if (proto.contract) {\n m.contract = Contract.fromProto(proto.contract);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.contract !== 'undefined' && this.contract !== null) {\n toReturn['contract'] = 'toApiJson' in this.contract ? this.contract.toApiJson() : this.contract;\n }\n return toReturn;\n }\n}\nclass GetMerchantWholesaleCurrencyRequest {\n static fromProto(proto) {\n let m = new GetMerchantWholesaleCurrencyRequest();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.merchantId !== 'undefined') {\n toReturn['merchantId'] = this.merchantId;\n }\n return toReturn;\n }\n}\nclass GetMerchantWholesaleCurrencyResponse {\n static fromProto(proto) {\n let m = new GetMerchantWholesaleCurrencyResponse();\n m = Object.assign(m, proto);\n if (proto.currency) {\n m.currency = enumStringToValue$x(Currency, proto.currency);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.currency !== 'undefined') {\n toReturn['currency'] = this.currency;\n }\n return toReturn;\n }\n}\nclass GetMultiContractsRequest {\n static fromProto(proto) {\n let m = new GetMultiContractsRequest();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.merchantIds !== 'undefined') {\n toReturn['merchantIds'] = this.merchantIds;\n }\n return toReturn;\n }\n}\nclass GetMultiContractsResponse {\n static fromProto(proto) {\n let m = new GetMultiContractsResponse();\n m = Object.assign(m, proto);\n if (proto.contracts) {\n m.contracts = Object.keys(proto.contracts).reduce((obj, k) => {\n obj[k] = Contract.fromProto(proto.contracts[k]);\n return obj;\n }, {});\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.contracts !== 'undefined' && this.contracts !== null) {\n toReturn['contracts'] = 'toApiJson' in this.contracts ? this.contracts.toApiJson() : this.contracts;\n }\n return toReturn;\n }\n}\nclass ListContractsRequest {\n static fromProto(proto) {\n let m = new ListContractsRequest();\n m = Object.assign(m, proto);\n if (proto.pagingOptions) {\n m.pagingOptions = PagedRequestOptions.fromProto(proto.pagingOptions);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.pagingOptions !== 'undefined' && this.pagingOptions !== null) {\n toReturn['pagingOptions'] = 'toApiJson' in this.pagingOptions ? this.pagingOptions.toApiJson() : this.pagingOptions;\n }\n return toReturn;\n }\n}\nclass ListContractsResponse {\n static fromProto(proto) {\n let m = new ListContractsResponse();\n m = Object.assign(m, proto);\n if (proto.contracts) {\n m.contracts = proto.contracts.map(Contract.fromProto);\n }\n if (proto.pagingMetadata) {\n m.pagingMetadata = PagedResponseMetadata.fromProto(proto.pagingMetadata);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.contracts !== 'undefined' && this.contracts !== null) {\n toReturn['contracts'] = 'toApiJson' in this.contracts ? this.contracts.toApiJson() : this.contracts;\n }\n if (typeof this.pagingMetadata !== 'undefined' && this.pagingMetadata !== null) {\n toReturn['pagingMetadata'] = 'toApiJson' in this.pagingMetadata ? this.pagingMetadata.toApiJson() : this.pagingMetadata;\n }\n return toReturn;\n }\n}\nclass UpdateContractRequestMutation {\n static fromProto(proto) {\n let m = new UpdateContractRequestMutation();\n m = Object.assign(m, proto);\n if (proto.netD) {\n m.netD = parseInt(proto.netD, 10);\n }\n if (proto.signed) {\n m.signed = new Date(proto.signed);\n }\n if (proto.activated) {\n m.activated = new Date(proto.activated);\n }\n if (proto.end) {\n m.end = new Date(proto.end);\n }\n if (proto.modified) {\n m.modified = new Date(proto.modified);\n }\n if (proto.creditLimit) {\n m.creditLimit = parseInt(proto.creditLimit, 10);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.netD !== 'undefined') {\n toReturn['netD'] = this.netD;\n }\n if (typeof this.currencyCode !== 'undefined') {\n toReturn['currencyCode'] = this.currencyCode;\n }\n if (typeof this.status !== 'undefined') {\n toReturn['status'] = this.status;\n }\n if (typeof this.dimension !== 'undefined') {\n toReturn['dimension'] = this.dimension;\n }\n if (typeof this.signed !== 'undefined' && this.signed !== null) {\n toReturn['signed'] = 'toApiJson' in this.signed ? this.signed.toApiJson() : this.signed;\n }\n if (typeof this.activated !== 'undefined' && this.activated !== null) {\n toReturn['activated'] = 'toApiJson' in this.activated ? this.activated.toApiJson() : this.activated;\n }\n if (typeof this.end !== 'undefined' && this.end !== null) {\n toReturn['end'] = 'toApiJson' in this.end ? this.end.toApiJson() : this.end;\n }\n if (typeof this.modified !== 'undefined' && this.modified !== null) {\n toReturn['modified'] = 'toApiJson' in this.modified ? this.modified.toApiJson() : this.modified;\n }\n if (typeof this.creditLimit !== 'undefined') {\n toReturn['creditLimit'] = this.creditLimit;\n }\n if (typeof this.subscriptionId !== 'undefined') {\n toReturn['subscriptionId'] = this.subscriptionId;\n }\n return toReturn;\n }\n}\nclass ResetContractPricingRequest {\n static fromProto(proto) {\n let m = new ResetContractPricingRequest();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.merchantId !== 'undefined') {\n toReturn['merchantId'] = this.merchantId;\n }\n return toReturn;\n }\n}\nclass UpdateContractRequest {\n static fromProto(proto) {\n let m = new UpdateContractRequest();\n m = Object.assign(m, proto);\n if (proto.mutations) {\n m.mutations = proto.mutations.map(UpdateContractRequestMutation.fromProto);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.merchantId !== 'undefined') {\n toReturn['merchantId'] = this.merchantId;\n }\n if (typeof this.mutations !== 'undefined' && this.mutations !== null) {\n toReturn['mutations'] = 'toApiJson' in this.mutations ? this.mutations.toApiJson() : this.mutations;\n }\n if (typeof this.performedBy !== 'undefined') {\n toReturn['performedBy'] = this.performedBy;\n }\n return toReturn;\n }\n}\nclass UpdateContractResponse {\n static fromProto(proto) {\n let m = new UpdateContractResponse();\n m = Object.assign(m, proto);\n if (proto.contract) {\n m.contract = Contract.fromProto(proto.contract);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.contract !== 'undefined' && this.contract !== null) {\n toReturn['contract'] = 'toApiJson' in this.contract ? this.contract.toApiJson() : this.contract;\n }\n return toReturn;\n }\n}\nclass UpdateContractSubscriptionRequest {\n static fromProto(proto) {\n let m = new UpdateContractSubscriptionRequest();\n m = Object.assign(m, proto);\n if (proto.frequency) {\n m.frequency = enumStringToValue$x(Frequency, proto.frequency);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.merchantId !== 'undefined') {\n toReturn['merchantId'] = this.merchantId;\n }\n if (typeof this.subscriptionId !== 'undefined') {\n toReturn['subscriptionId'] = this.subscriptionId;\n }\n if (typeof this.frequency !== 'undefined') {\n toReturn['frequency'] = this.frequency;\n }\n return toReturn;\n }\n}\nfunction enumStringToValue$w(enumRef, value) {\n if (typeof value === 'number') {\n return value;\n }\n return enumRef[value];\n}\nclass CustomerSummary {\n static fromProto(proto) {\n let m = new CustomerSummary();\n m = Object.assign(m, proto);\n if (proto.purchaseItemQuantity) {\n m.purchaseItemQuantity = parseInt(proto.purchaseItemQuantity, 10);\n }\n if (proto.purchaseItemTotal) {\n m.purchaseItemTotal = parseInt(proto.purchaseItemTotal, 10);\n }\n if (proto.currency) {\n m.currency = enumStringToValue$w(Currency, proto.currency);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.customerId !== 'undefined') {\n toReturn['customerId'] = this.customerId;\n }\n if (typeof this.purchaseItemQuantity !== 'undefined') {\n toReturn['purchaseItemQuantity'] = this.purchaseItemQuantity;\n }\n if (typeof this.purchaseItemTotal !== 'undefined') {\n toReturn['purchaseItemTotal'] = this.purchaseItemTotal;\n }\n if (typeof this.currency !== 'undefined') {\n toReturn['currency'] = this.currency;\n }\n return toReturn;\n }\n}\nclass GetMultiCustomerSummariesRequest {\n static fromProto(proto) {\n let m = new GetMultiCustomerSummariesRequest();\n m = Object.assign(m, proto);\n if (proto.periodStart) {\n m.periodStart = new Date(proto.periodStart);\n }\n if (proto.periodEnd) {\n m.periodEnd = new Date(proto.periodEnd);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.customerIds !== 'undefined') {\n toReturn['customerIds'] = this.customerIds;\n }\n if (typeof this.merchantId !== 'undefined') {\n toReturn['merchantId'] = this.merchantId;\n }\n if (typeof this.periodStart !== 'undefined' && this.periodStart !== null) {\n toReturn['periodStart'] = 'toApiJson' in this.periodStart ? this.periodStart.toApiJson() : this.periodStart;\n }\n if (typeof this.periodEnd !== 'undefined' && this.periodEnd !== null) {\n toReturn['periodEnd'] = 'toApiJson' in this.periodEnd ? this.periodEnd.toApiJson() : this.periodEnd;\n }\n return toReturn;\n }\n}\nclass GetMultiCustomerSummariesResponse {\n static fromProto(proto) {\n let m = new GetMultiCustomerSummariesResponse();\n m = Object.assign(m, proto);\n if (proto.customerSummaries) {\n m.customerSummaries = proto.customerSummaries.map(CustomerSummary.fromProto);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.customerSummaries !== 'undefined' && this.customerSummaries !== null) {\n toReturn['customerSummaries'] = 'toApiJson' in this.customerSummaries ? this.customerSummaries.toApiJson() : this.customerSummaries;\n }\n return toReturn;\n }\n}\nfunction enumStringToValue$v(enumRef, value) {\n if (typeof value === 'number') {\n return value;\n }\n return enumRef[value];\n}\nclass BankAccount {\n static fromProto(proto) {\n let m = new BankAccount();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.id !== 'undefined') {\n toReturn['id'] = this.id;\n }\n if (typeof this.accountHolderName !== 'undefined') {\n toReturn['accountHolderName'] = this.accountHolderName;\n }\n if (typeof this.bankName !== 'undefined') {\n toReturn['bankName'] = this.bankName;\n }\n if (typeof this.country !== 'undefined') {\n toReturn['country'] = this.country;\n }\n if (typeof this.currency !== 'undefined') {\n toReturn['currency'] = this.currency;\n }\n if (typeof this.routingNumber !== 'undefined') {\n toReturn['routingNumber'] = this.routingNumber;\n }\n if (typeof this.last4 !== 'undefined') {\n toReturn['last4'] = this.last4;\n }\n if (typeof this.defaultForCurrency !== 'undefined') {\n toReturn['defaultForCurrency'] = this.defaultForCurrency;\n }\n return toReturn;\n }\n}\nclass CreateStripeExternalAccountRequest {\n static fromProto(proto) {\n let m = new CreateStripeExternalAccountRequest();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.merchantId !== 'undefined') {\n toReturn['merchantId'] = this.merchantId;\n }\n if (typeof this.stripeToken !== 'undefined') {\n toReturn['stripeToken'] = this.stripeToken;\n }\n return toReturn;\n }\n}\nclass DeleteBankAccountRequest {\n static fromProto(proto) {\n let m = new DeleteBankAccountRequest();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.merchantId !== 'undefined') {\n toReturn['merchantId'] = this.merchantId;\n }\n if (typeof this.bankAccountId !== 'undefined') {\n toReturn['bankAccountId'] = this.bankAccountId;\n }\n return toReturn;\n }\n}\nclass ListBankAccountsRequest {\n static fromProto(proto) {\n let m = new ListBankAccountsRequest();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.merchantId !== 'undefined') {\n toReturn['merchantId'] = this.merchantId;\n }\n return toReturn;\n }\n}\nclass ListBankAccountsResponse {\n static fromProto(proto) {\n let m = new ListBankAccountsResponse();\n m = Object.assign(m, proto);\n if (proto.bankAccount) {\n m.bankAccount = proto.bankAccount.map(BankAccount.fromProto);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.bankAccount !== 'undefined' && this.bankAccount !== null) {\n toReturn['bankAccount'] = 'toApiJson' in this.bankAccount ? this.bankAccount.toApiJson() : this.bankAccount;\n }\n return toReturn;\n }\n}\nclass SetDefaultBankAccountRequest {\n static fromProto(proto) {\n let m = new SetDefaultBankAccountRequest();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.merchantId !== 'undefined') {\n toReturn['merchantId'] = this.merchantId;\n }\n if (typeof this.bankAccountId !== 'undefined') {\n toReturn['bankAccountId'] = this.bankAccountId;\n }\n return toReturn;\n }\n}\nfunction enumStringToValue$u(enumRef, value) {\n if (typeof value === 'number') {\n return value;\n }\n return enumRef[value];\n}\nclass ProductSummaryDiscount {\n static fromProto(proto) {\n let m = new ProductSummaryDiscount();\n m = Object.assign(m, proto);\n if (proto.type) {\n m.type = enumStringToValue$u(ProductSummaryDiscountDiscountType, proto.type);\n }\n if (proto.value) {\n m.value = parseInt(proto.value, 10);\n }\n if (proto.totalAmount) {\n m.totalAmount = parseInt(proto.totalAmount, 10);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.type !== 'undefined') {\n toReturn['type'] = this.type;\n }\n if (typeof this.value !== 'undefined') {\n toReturn['value'] = this.value;\n }\n if (typeof this.totalAmount !== 'undefined') {\n toReturn['totalAmount'] = this.totalAmount;\n }\n if (typeof this.description !== 'undefined') {\n toReturn['description'] = this.description;\n }\n if (typeof this.resetEachPeriod !== 'undefined') {\n toReturn['resetEachPeriod'] = this.resetEachPeriod;\n }\n return toReturn;\n }\n}\nclass ListSubscriptionRetentionRequestFilters {\n static fromProto(proto) {\n let m = new ListSubscriptionRetentionRequestFilters();\n m = Object.assign(m, proto);\n if (proto.start) {\n m.start = new Date(proto.start);\n }\n if (proto.end) {\n m.end = new Date(proto.end);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.start !== 'undefined' && this.start !== null) {\n toReturn['start'] = 'toApiJson' in this.start ? this.start.toApiJson() : this.start;\n }\n if (typeof this.end !== 'undefined' && this.end !== null) {\n toReturn['end'] = 'toApiJson' in this.end ? this.end.toApiJson() : this.end;\n }\n return toReturn;\n }\n}\nclass GetProductSummariesTotalRequest {\n static fromProto(proto) {\n let m = new GetProductSummariesTotalRequest();\n m = Object.assign(m, proto);\n if (proto.startDate) {\n m.startDate = new Date(proto.startDate);\n }\n if (proto.endDate) {\n m.endDate = new Date(proto.endDate);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.merchantId !== 'undefined') {\n toReturn['merchantId'] = this.merchantId;\n }\n if (typeof this.startDate !== 'undefined' && this.startDate !== null) {\n toReturn['startDate'] = 'toApiJson' in this.startDate ? this.startDate.toApiJson() : this.startDate;\n }\n if (typeof this.endDate !== 'undefined' && this.endDate !== null) {\n toReturn['endDate'] = 'toApiJson' in this.endDate ? this.endDate.toApiJson() : this.endDate;\n }\n return toReturn;\n }\n}\nclass GetProductSummariesTotalResponse {\n static fromProto(proto) {\n let m = new GetProductSummariesTotalResponse();\n m = Object.assign(m, proto);\n if (proto.totalAmount) {\n m.totalAmount = parseInt(proto.totalAmount, 10);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.totalAmount !== 'undefined') {\n toReturn['totalAmount'] = this.totalAmount;\n }\n return toReturn;\n }\n}\nclass ListProductSummariesRequest {\n static fromProto(proto) {\n let m = new ListProductSummariesRequest();\n m = Object.assign(m, proto);\n if (proto.startDate) {\n m.startDate = new Date(proto.startDate);\n }\n if (proto.endDate) {\n m.endDate = new Date(proto.endDate);\n }\n if (proto.pageSize) {\n m.pageSize = parseInt(proto.pageSize, 10);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.merchantId !== 'undefined') {\n toReturn['merchantId'] = this.merchantId;\n }\n if (typeof this.startDate !== 'undefined' && this.startDate !== null) {\n toReturn['startDate'] = 'toApiJson' in this.startDate ? this.startDate.toApiJson() : this.startDate;\n }\n if (typeof this.endDate !== 'undefined' && this.endDate !== null) {\n toReturn['endDate'] = 'toApiJson' in this.endDate ? this.endDate.toApiJson() : this.endDate;\n }\n if (typeof this.cursor !== 'undefined') {\n toReturn['cursor'] = this.cursor;\n }\n if (typeof this.pageSize !== 'undefined') {\n toReturn['pageSize'] = this.pageSize;\n }\n if (typeof this.skus !== 'undefined') {\n toReturn['skus'] = this.skus;\n }\n return toReturn;\n }\n}\nclass ListProductSummariesResponse {\n static fromProto(proto) {\n let m = new ListProductSummariesResponse();\n m = Object.assign(m, proto);\n if (proto.results) {\n m.results = proto.results.map(ProductSummary.fromProto);\n }\n if (proto.totalResults) {\n m.totalResults = parseInt(proto.totalResults, 10);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.results !== 'undefined' && this.results !== null) {\n toReturn['results'] = 'toApiJson' in this.results ? this.results.toApiJson() : this.results;\n }\n if (typeof this.nextCursor !== 'undefined') {\n toReturn['nextCursor'] = this.nextCursor;\n }\n if (typeof this.hasMore !== 'undefined') {\n toReturn['hasMore'] = this.hasMore;\n }\n if (typeof this.totalResults !== 'undefined') {\n toReturn['totalResults'] = this.totalResults;\n }\n return toReturn;\n }\n}\nclass ListSubscriptionRetentionByGroupResponse {\n static fromProto(proto) {\n let m = new ListSubscriptionRetentionByGroupResponse();\n m = Object.assign(m, proto);\n if (proto.metricsByGroup) {\n m.metricsByGroup = proto.metricsByGroup.map(ListSubscriptionRetentionByGroupResponseSubscriptionRetentionByGroup.fromProto);\n }\n if (proto.pagingMetadata) {\n m.pagingMetadata = PagedResponseMetadata.fromProto(proto.pagingMetadata);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.metricsByGroup !== 'undefined' && this.metricsByGroup !== null) {\n toReturn['metricsByGroup'] = 'toApiJson' in this.metricsByGroup ? this.metricsByGroup.toApiJson() : this.metricsByGroup;\n }\n if (typeof this.pagingMetadata !== 'undefined' && this.pagingMetadata !== null) {\n toReturn['pagingMetadata'] = 'toApiJson' in this.pagingMetadata ? this.pagingMetadata.toApiJson() : this.pagingMetadata;\n }\n return toReturn;\n }\n}\nclass ListSubscriptionRetentionBySKUResponse {\n static fromProto(proto) {\n let m = new ListSubscriptionRetentionBySKUResponse();\n m = Object.assign(m, proto);\n if (proto.subscriptionMetrics) {\n m.subscriptionMetrics = proto.subscriptionMetrics.map(RetentionMetrics.fromProto);\n }\n if (proto.pagingMetadata) {\n m.pagingMetadata = PagedResponseMetadata.fromProto(proto.pagingMetadata);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.subscriptionMetrics !== 'undefined' && this.subscriptionMetrics !== null) {\n toReturn['subscriptionMetrics'] = 'toApiJson' in this.subscriptionMetrics ? this.subscriptionMetrics.toApiJson() : this.subscriptionMetrics;\n }\n if (typeof this.pagingMetadata !== 'undefined' && this.pagingMetadata !== null) {\n toReturn['pagingMetadata'] = 'toApiJson' in this.pagingMetadata ? this.pagingMetadata.toApiJson() : this.pagingMetadata;\n }\n return toReturn;\n }\n}\nclass ListSubscriptionRetentionRequest {\n static fromProto(proto) {\n let m = new ListSubscriptionRetentionRequest();\n m = Object.assign(m, proto);\n if (proto.filters) {\n m.filters = ListSubscriptionRetentionRequestFilters.fromProto(proto.filters);\n }\n if (proto.pagingOptions) {\n m.pagingOptions = PagedRequestOptions.fromProto(proto.pagingOptions);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.merchantId !== 'undefined') {\n toReturn['merchantId'] = this.merchantId;\n }\n if (typeof this.filters !== 'undefined' && this.filters !== null) {\n toReturn['filters'] = 'toApiJson' in this.filters ? this.filters.toApiJson() : this.filters;\n }\n if (typeof this.pagingOptions !== 'undefined' && this.pagingOptions !== null) {\n toReturn['pagingOptions'] = 'toApiJson' in this.pagingOptions ? this.pagingOptions.toApiJson() : this.pagingOptions;\n }\n return toReturn;\n }\n}\nclass Pricing {\n static fromProto(proto) {\n let m = new Pricing();\n m = Object.assign(m, proto);\n if (proto.type) {\n m.type = enumStringToValue$u(PricingRuleType, proto.type);\n }\n if (proto.rules) {\n m.rules = proto.rules.map(PricingRule.fromProto);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.type !== 'undefined') {\n toReturn['type'] = this.type;\n }\n if (typeof this.rules !== 'undefined' && this.rules !== null) {\n toReturn['rules'] = 'toApiJson' in this.rules ? this.rules.toApiJson() : this.rules;\n }\n return toReturn;\n }\n}\nclass ProductSummary {\n static fromProto(proto) {\n let m = new ProductSummary();\n m = Object.assign(m, proto);\n if (proto.totalQuantity) {\n m.totalQuantity = parseInt(proto.totalQuantity, 10);\n }\n if (proto.totalAmount) {\n m.totalAmount = parseInt(proto.totalAmount, 10);\n }\n if (proto.totalDiscount) {\n m.totalDiscount = parseInt(proto.totalDiscount, 10);\n }\n if (proto.pricing) {\n m.pricing = Pricing.fromProto(proto.pricing);\n }\n if (proto.discounts) {\n m.discounts = proto.discounts.map(ProductSummaryDiscount.fromProto);\n }\n if (proto.billingStrategy) {\n m.billingStrategy = enumStringToValue$u(ProductSummaryBillingStrategy, proto.billingStrategy);\n }\n if (proto.productType) {\n m.productType = enumStringToValue$u(ProductSummaryProductType, proto.productType);\n }\n if (proto.frequency) {\n m.frequency = enumStringToValue$u(Frequency, proto.frequency);\n }\n if (proto.volumeCommitment) {\n m.volumeCommitment = parseInt(proto.volumeCommitment, 10);\n }\n if (proto.setupFee) {\n m.setupFee = parseInt(proto.setupFee, 10);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.sku !== 'undefined') {\n toReturn['sku'] = this.sku;\n }\n if (typeof this.productName !== 'undefined') {\n toReturn['productName'] = this.productName;\n }\n if (typeof this.totalQuantity !== 'undefined') {\n toReturn['totalQuantity'] = this.totalQuantity;\n }\n if (typeof this.totalAmount !== 'undefined') {\n toReturn['totalAmount'] = this.totalAmount;\n }\n if (typeof this.totalDiscount !== 'undefined') {\n toReturn['totalDiscount'] = this.totalDiscount;\n }\n if (typeof this.pricing !== 'undefined' && this.pricing !== null) {\n toReturn['pricing'] = 'toApiJson' in this.pricing ? this.pricing.toApiJson() : this.pricing;\n }\n if (typeof this.discounts !== 'undefined' && this.discounts !== null) {\n toReturn['discounts'] = 'toApiJson' in this.discounts ? this.discounts.toApiJson() : this.discounts;\n }\n if (typeof this.billingStrategy !== 'undefined') {\n toReturn['billingStrategy'] = this.billingStrategy;\n }\n if (typeof this.productType !== 'undefined') {\n toReturn['productType'] = this.productType;\n }\n if (typeof this.frequency !== 'undefined') {\n toReturn['frequency'] = this.frequency;\n }\n if (typeof this.proratedPercent !== 'undefined') {\n toReturn['proratedPercent'] = this.proratedPercent;\n }\n if (typeof this.volumeCommitment !== 'undefined') {\n toReturn['volumeCommitment'] = this.volumeCommitment;\n }\n if (typeof this.setupFee !== 'undefined') {\n toReturn['setupFee'] = this.setupFee;\n }\n return toReturn;\n }\n}\nclass RetentionMetrics {\n static fromProto(proto) {\n let m = new RetentionMetrics();\n m = Object.assign(m, proto);\n if (proto.startingCount) {\n m.startingCount = parseInt(proto.startingCount, 10);\n }\n if (proto.activations) {\n m.activations = parseInt(proto.activations, 10);\n }\n if (proto.deactivations) {\n m.deactivations = parseInt(proto.deactivations, 10);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.sku !== 'undefined') {\n toReturn['sku'] = this.sku;\n }\n if (typeof this.productName !== 'undefined') {\n toReturn['productName'] = this.productName;\n }\n if (typeof this.startingCount !== 'undefined') {\n toReturn['startingCount'] = this.startingCount;\n }\n if (typeof this.activations !== 'undefined') {\n toReturn['activations'] = this.activations;\n }\n if (typeof this.deactivations !== 'undefined') {\n toReturn['deactivations'] = this.deactivations;\n }\n if (typeof this.churn !== 'undefined') {\n toReturn['churn'] = this.churn;\n }\n if (typeof this.retention !== 'undefined') {\n toReturn['retention'] = this.retention;\n }\n return toReturn;\n }\n}\nclass PricingRule {\n static fromProto(proto) {\n let m = new PricingRule();\n m = Object.assign(m, proto);\n if (proto.min) {\n m.min = parseInt(proto.min, 10);\n }\n if (proto.max) {\n m.max = parseInt(proto.max, 10);\n }\n if (proto.units) {\n m.units = parseInt(proto.units, 10);\n }\n if (proto.unitPrice) {\n m.unitPrice = parseInt(proto.unitPrice, 10);\n }\n if (proto.totalAmount) {\n m.totalAmount = parseInt(proto.totalAmount, 10);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.min !== 'undefined') {\n toReturn['min'] = this.min;\n }\n if (typeof this.max !== 'undefined') {\n toReturn['max'] = this.max;\n }\n if (typeof this.units !== 'undefined') {\n toReturn['units'] = this.units;\n }\n if (typeof this.unitPrice !== 'undefined') {\n toReturn['unitPrice'] = this.unitPrice;\n }\n if (typeof this.totalAmount !== 'undefined') {\n toReturn['totalAmount'] = this.totalAmount;\n }\n return toReturn;\n }\n}\nclass ListSubscriptionRetentionByGroupResponseSubscriptionRetentionByGroup {\n static fromProto(proto) {\n let m = new ListSubscriptionRetentionByGroupResponseSubscriptionRetentionByGroup();\n m = Object.assign(m, proto);\n if (proto.subscriptionMetrics) {\n m.subscriptionMetrics = proto.subscriptionMetrics.map(RetentionMetrics.fromProto);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.groupId !== 'undefined') {\n toReturn['groupId'] = this.groupId;\n }\n if (typeof this.subscriptionMetrics !== 'undefined' && this.subscriptionMetrics !== null) {\n toReturn['subscriptionMetrics'] = 'toApiJson' in this.subscriptionMetrics ? this.subscriptionMetrics.toApiJson() : this.subscriptionMetrics;\n }\n return toReturn;\n }\n}\nfunction enumStringToValue$t(enumRef, value) {\n if (typeof value === 'number') {\n return value;\n }\n return enumRef[value];\n}\nclass SubscribeValidation {\n static fromProto(proto) {\n let m = new SubscribeValidation();\n m = Object.assign(m, proto);\n if (proto.status) {\n m.status = enumStringToValue$t(SubscribeValidationStatus, proto.status);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.status !== 'undefined') {\n toReturn['status'] = this.status;\n }\n return toReturn;\n }\n}\nfunction enumStringToValue$s(enumRef, value) {\n if (typeof value === 'number') {\n return value;\n }\n return enumRef[value];\n}\nclass AlignmentSubscription {\n static fromProto(proto) {\n let m = new AlignmentSubscription();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.sku !== 'undefined') {\n toReturn['sku'] = this.sku;\n }\n if (typeof this.customerId !== 'undefined') {\n toReturn['customerId'] = this.customerId;\n }\n if (typeof this.orderId !== 'undefined') {\n toReturn['orderId'] = this.orderId;\n }\n return toReturn;\n }\n}\nclass CanCreateSubscriptionsRequest {\n static fromProto(proto) {\n let m = new CanCreateSubscriptionsRequest();\n m = Object.assign(m, proto);\n if (proto.skus) {\n m.skus = Object.keys(proto.skus).reduce((obj, k) => {\n obj[k] = parseInt(proto.skus[k], 10);\n return obj;\n }, {});\n }\n if (proto.items) {\n m.items = proto.items.map(CanCreateSubscriptionsRequestSubscriptionItem.fromProto);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.merchantId !== 'undefined') {\n toReturn['merchantId'] = this.merchantId;\n }\n if (typeof this.skus !== 'undefined' && this.skus !== null) {\n toReturn['skus'] = 'toApiJson' in this.skus ? this.skus.toApiJson() : this.skus;\n }\n if (typeof this.items !== 'undefined' && this.items !== null) {\n toReturn['items'] = 'toApiJson' in this.items ? this.items.toApiJson() : this.items;\n }\n return toReturn;\n }\n}\nclass CanCreateSubscriptionsResponse {\n static fromProto(proto) {\n let m = new CanCreateSubscriptionsResponse();\n m = Object.assign(m, proto);\n if (proto.validationResponse) {\n m.validationResponse = proto.validationResponse.map(ValidateResponse.fromProto);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.validationResponse !== 'undefined' && this.validationResponse !== null) {\n toReturn['validationResponse'] = 'toApiJson' in this.validationResponse ? this.validationResponse.toApiJson() : this.validationResponse;\n }\n return toReturn;\n }\n}\nclass ChangeCustomUnitPriceRequest {\n static fromProto(proto) {\n let m = new ChangeCustomUnitPriceRequest();\n m = Object.assign(m, proto);\n if (proto.customUnitPrice) {\n m.customUnitPrice = parseInt(proto.customUnitPrice, 10);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.merchantId !== 'undefined') {\n toReturn['merchantId'] = this.merchantId;\n }\n if (typeof this.sku !== 'undefined') {\n toReturn['sku'] = this.sku;\n }\n if (typeof this.customerId !== 'undefined') {\n toReturn['customerId'] = this.customerId;\n }\n if (typeof this.orderId !== 'undefined') {\n toReturn['orderId'] = this.orderId;\n }\n if (typeof this.customUnitPrice !== 'undefined') {\n toReturn['customUnitPrice'] = this.customUnitPrice;\n }\n return toReturn;\n }\n}\nclass ChangeFrequencyRequest {\n static fromProto(proto) {\n let m = new ChangeFrequencyRequest();\n m = Object.assign(m, proto);\n if (proto.frequency) {\n m.frequency = enumStringToValue$s(Frequency, proto.frequency);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.merchantId !== 'undefined') {\n toReturn['merchantId'] = this.merchantId;\n }\n if (typeof this.sku !== 'undefined') {\n toReturn['sku'] = this.sku;\n }\n if (typeof this.customerId !== 'undefined') {\n toReturn['customerId'] = this.customerId;\n }\n if (typeof this.orderId !== 'undefined') {\n toReturn['orderId'] = this.orderId;\n }\n if (typeof this.frequency !== 'undefined') {\n toReturn['frequency'] = this.frequency;\n }\n return toReturn;\n }\n}\nclass ChangeRenewalDateRequest {\n static fromProto(proto) {\n let m = new ChangeRenewalDateRequest();\n m = Object.assign(m, proto);\n if (proto.nextRenewalDate) {\n m.nextRenewalDate = new Date(proto.nextRenewalDate);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.merchantId !== 'undefined') {\n toReturn['merchantId'] = this.merchantId;\n }\n if (typeof this.customerId !== 'undefined') {\n toReturn['customerId'] = this.customerId;\n }\n if (typeof this.sku !== 'undefined') {\n toReturn['sku'] = this.sku;\n }\n if (typeof this.orderId !== 'undefined') {\n toReturn['orderId'] = this.orderId;\n }\n if (typeof this.nextRenewalDate !== 'undefined' && this.nextRenewalDate !== null) {\n toReturn['nextRenewalDate'] = 'toApiJson' in this.nextRenewalDate ? this.nextRenewalDate.toApiJson() : this.nextRenewalDate;\n }\n return toReturn;\n }\n}\nclass CreateSubscriptionRequest {\n static fromProto(proto) {\n let m = new CreateSubscriptionRequest();\n m = Object.assign(m, proto);\n if (proto.billingStart) {\n m.billingStart = new Date(proto.billingStart);\n }\n if (proto.proratedTo) {\n m.proratedTo = new Date(proto.proratedTo);\n }\n if (proto.renewalState) {\n m.renewalState = enumStringToValue$s(RenewalState, proto.renewalState);\n }\n if (proto.customUnitPrice) {\n m.customUnitPrice = parseInt(proto.customUnitPrice, 10);\n }\n if (proto.alignWith) {\n m.alignWith = AlignmentSubscription.fromProto(proto.alignWith);\n }\n if (proto.frequency) {\n m.frequency = enumStringToValue$s(Frequency, proto.frequency);\n }\n if (proto.retailAmount) {\n m.retailAmount = parseInt(proto.retailAmount, 10);\n }\n if (proto.retailFrequency) {\n m.retailFrequency = enumStringToValue$s(Frequency, proto.retailFrequency);\n }\n if (proto.consumer) {\n m.consumer = enumStringToValue$s(Consumer, proto.consumer);\n }\n if (proto.renewalStart) {\n m.renewalStart = new Date(proto.renewalStart);\n }\n if (proto.expiry) {\n m.expiry = new Date(proto.expiry);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.merchantId !== 'undefined') {\n toReturn['merchantId'] = this.merchantId;\n }\n if (typeof this.sku !== 'undefined') {\n toReturn['sku'] = this.sku;\n }\n if (typeof this.customerId !== 'undefined') {\n toReturn['customerId'] = this.customerId;\n }\n if (typeof this.orderId !== 'undefined') {\n toReturn['orderId'] = this.orderId;\n }\n if (typeof this.billingStart !== 'undefined' && this.billingStart !== null) {\n toReturn['billingStart'] = 'toApiJson' in this.billingStart ? this.billingStart.toApiJson() : this.billingStart;\n }\n if (typeof this.proratedTo !== 'undefined' && this.proratedTo !== null) {\n toReturn['proratedTo'] = 'toApiJson' in this.proratedTo ? this.proratedTo.toApiJson() : this.proratedTo;\n }\n if (typeof this.renewalState !== 'undefined') {\n toReturn['renewalState'] = this.renewalState;\n }\n if (typeof this.retailBundleId !== 'undefined') {\n toReturn['retailBundleId'] = this.retailBundleId;\n }\n if (typeof this.forResale !== 'undefined') {\n toReturn['forResale'] = this.forResale;\n }\n if (typeof this.customUnitPrice !== 'undefined') {\n toReturn['customUnitPrice'] = this.customUnitPrice;\n }\n if (typeof this.alignWith !== 'undefined' && this.alignWith !== null) {\n toReturn['alignWith'] = 'toApiJson' in this.alignWith ? this.alignWith.toApiJson() : this.alignWith;\n }\n if (typeof this.frequency !== 'undefined') {\n toReturn['frequency'] = this.frequency;\n }\n if (typeof this.retailAmount !== 'undefined') {\n toReturn['retailAmount'] = this.retailAmount;\n }\n if (typeof this.retailFrequency !== 'undefined') {\n toReturn['retailFrequency'] = this.retailFrequency;\n }\n if (typeof this.consumer !== 'undefined') {\n toReturn['consumer'] = this.consumer;\n }\n if (typeof this.renewalStart !== 'undefined' && this.renewalStart !== null) {\n toReturn['renewalStart'] = 'toApiJson' in this.renewalStart ? this.renewalStart.toApiJson() : this.renewalStart;\n }\n if (typeof this.expiry !== 'undefined' && this.expiry !== null) {\n toReturn['expiry'] = 'toApiJson' in this.expiry ? this.expiry.toApiJson() : this.expiry;\n }\n if (typeof this.autoBillable !== 'undefined') {\n toReturn['autoBillable'] = this.autoBillable;\n }\n if (typeof this.subscriptionId !== 'undefined') {\n toReturn['subscriptionId'] = this.subscriptionId;\n }\n return toReturn;\n }\n}\nclass CreateSubscriptionResponse {\n static fromProto(proto) {\n let m = new CreateSubscriptionResponse();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.subscriptionId !== 'undefined') {\n toReturn['subscriptionId'] = this.subscriptionId;\n }\n return toReturn;\n }\n}\nclass CreateSubscriptionsRequest {\n static fromProto(proto) {\n let m = new CreateSubscriptionsRequest();\n m = Object.assign(m, proto);\n if (proto.subscriptions) {\n m.subscriptions = proto.subscriptions.map(Subscription.fromProto);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.merchantId !== 'undefined') {\n toReturn['merchantId'] = this.merchantId;\n }\n if (typeof this.subscriptions !== 'undefined' && this.subscriptions !== null) {\n toReturn['subscriptions'] = 'toApiJson' in this.subscriptions ? this.subscriptions.toApiJson() : this.subscriptions;\n }\n return toReturn;\n }\n}\nclass CreateSubscriptionsResponse {\n static fromProto(proto) {\n let m = new CreateSubscriptionsResponse();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.id !== 'undefined') {\n toReturn['id'] = this.id;\n }\n return toReturn;\n }\n}\nclass ReverseSubscriptionRequest {\n static fromProto(proto) {\n let m = new ReverseSubscriptionRequest();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.merchantId !== 'undefined') {\n toReturn['merchantId'] = this.merchantId;\n }\n if (typeof this.sku !== 'undefined') {\n toReturn['sku'] = this.sku;\n }\n if (typeof this.customerId !== 'undefined') {\n toReturn['customerId'] = this.customerId;\n }\n if (typeof this.orderId !== 'undefined') {\n toReturn['orderId'] = this.orderId;\n }\n return toReturn;\n }\n}\nclass SetAutoBillableRequest {\n static fromProto(proto) {\n let m = new SetAutoBillableRequest();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.subscriptionId !== 'undefined') {\n toReturn['subscriptionId'] = this.subscriptionId;\n }\n if (typeof this.autoBillable !== 'undefined') {\n toReturn['autoBillable'] = this.autoBillable;\n }\n return toReturn;\n }\n}\nclass SetRenewalStartRequest {\n static fromProto(proto) {\n let m = new SetRenewalStartRequest();\n m = Object.assign(m, proto);\n if (proto.renewalStart) {\n m.renewalStart = new Date(proto.renewalStart);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.merchantId !== 'undefined') {\n toReturn['merchantId'] = this.merchantId;\n }\n if (typeof this.sku !== 'undefined') {\n toReturn['sku'] = this.sku;\n }\n if (typeof this.customerId !== 'undefined') {\n toReturn['customerId'] = this.customerId;\n }\n if (typeof this.orderId !== 'undefined') {\n toReturn['orderId'] = this.orderId;\n }\n if (typeof this.renewalStart !== 'undefined' && this.renewalStart !== null) {\n toReturn['renewalStart'] = 'toApiJson' in this.renewalStart ? this.renewalStart.toApiJson() : this.renewalStart;\n }\n return toReturn;\n }\n}\nclass CanCreateSubscriptionsRequestSkusEntry {\n static fromProto(proto) {\n let m = new CanCreateSubscriptionsRequestSkusEntry();\n m = Object.assign(m, proto);\n if (proto.value) {\n m.value = parseInt(proto.value, 10);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.key !== 'undefined') {\n toReturn['key'] = this.key;\n }\n if (typeof this.value !== 'undefined') {\n toReturn['value'] = this.value;\n }\n return toReturn;\n }\n}\nclass Subscription {\n static fromProto(proto) {\n let m = new Subscription();\n m = Object.assign(m, proto);\n if (proto.billingStart) {\n m.billingStart = new Date(proto.billingStart);\n }\n if (proto.renewalState) {\n m.renewalState = enumStringToValue$s(RenewalState, proto.renewalState);\n }\n if (proto.proratedTo) {\n m.proratedTo = new Date(proto.proratedTo);\n }\n if (proto.customUnitPrice) {\n m.customUnitPrice = parseInt(proto.customUnitPrice, 10);\n }\n if (proto.alignWith) {\n m.alignWith = AlignmentSubscription.fromProto(proto.alignWith);\n }\n if (proto.frequency) {\n m.frequency = enumStringToValue$s(Frequency, proto.frequency);\n }\n if (proto.retailAmount) {\n m.retailAmount = parseInt(proto.retailAmount, 10);\n }\n if (proto.retailFrequency) {\n m.retailFrequency = enumStringToValue$s(Frequency, proto.retailFrequency);\n }\n if (proto.consumer) {\n m.consumer = enumStringToValue$s(Consumer, proto.consumer);\n }\n if (proto.renewalStart) {\n m.renewalStart = new Date(proto.renewalStart);\n }\n if (proto.expiry) {\n m.expiry = new Date(proto.expiry);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.sku !== 'undefined') {\n toReturn['sku'] = this.sku;\n }\n if (typeof this.customerId !== 'undefined') {\n toReturn['customerId'] = this.customerId;\n }\n if (typeof this.orderId !== 'undefined') {\n toReturn['orderId'] = this.orderId;\n }\n if (typeof this.billingStart !== 'undefined' && this.billingStart !== null) {\n toReturn['billingStart'] = 'toApiJson' in this.billingStart ? this.billingStart.toApiJson() : this.billingStart;\n }\n if (typeof this.renewalState !== 'undefined') {\n toReturn['renewalState'] = this.renewalState;\n }\n if (typeof this.proratedTo !== 'undefined' && this.proratedTo !== null) {\n toReturn['proratedTo'] = 'toApiJson' in this.proratedTo ? this.proratedTo.toApiJson() : this.proratedTo;\n }\n if (typeof this.retailBundleId !== 'undefined') {\n toReturn['retailBundleId'] = this.retailBundleId;\n }\n if (typeof this.forResale !== 'undefined') {\n toReturn['forResale'] = this.forResale;\n }\n if (typeof this.customUnitPrice !== 'undefined') {\n toReturn['customUnitPrice'] = this.customUnitPrice;\n }\n if (typeof this.alignWith !== 'undefined' && this.alignWith !== null) {\n toReturn['alignWith'] = 'toApiJson' in this.alignWith ? this.alignWith.toApiJson() : this.alignWith;\n }\n if (typeof this.bundleInstanceId !== 'undefined') {\n toReturn['bundleInstanceId'] = this.bundleInstanceId;\n }\n if (typeof this.frequency !== 'undefined') {\n toReturn['frequency'] = this.frequency;\n }\n if (typeof this.retailAmount !== 'undefined') {\n toReturn['retailAmount'] = this.retailAmount;\n }\n if (typeof this.retailFrequency !== 'undefined') {\n toReturn['retailFrequency'] = this.retailFrequency;\n }\n if (typeof this.consumer !== 'undefined') {\n toReturn['consumer'] = this.consumer;\n }\n if (typeof this.renewalStart !== 'undefined' && this.renewalStart !== null) {\n toReturn['renewalStart'] = 'toApiJson' in this.renewalStart ? this.renewalStart.toApiJson() : this.renewalStart;\n }\n if (typeof this.expiry !== 'undefined' && this.expiry !== null) {\n toReturn['expiry'] = 'toApiJson' in this.expiry ? this.expiry.toApiJson() : this.expiry;\n }\n if (typeof this.autoBillable !== 'undefined') {\n toReturn['autoBillable'] = this.autoBillable;\n }\n if (typeof this.subscriptionId !== 'undefined') {\n toReturn['subscriptionId'] = this.subscriptionId;\n }\n return toReturn;\n }\n}\nclass CanCreateSubscriptionsRequestSubscriptionItem {\n static fromProto(proto) {\n let m = new CanCreateSubscriptionsRequestSubscriptionItem();\n m = Object.assign(m, proto);\n if (proto.frequency) {\n m.frequency = enumStringToValue$s(Frequency, proto.frequency);\n }\n if (proto.quantity) {\n m.quantity = parseInt(proto.quantity, 10);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.sku !== 'undefined') {\n toReturn['sku'] = this.sku;\n }\n if (typeof this.frequency !== 'undefined') {\n toReturn['frequency'] = this.frequency;\n }\n if (typeof this.quantity !== 'undefined') {\n toReturn['quantity'] = this.quantity;\n }\n return toReturn;\n }\n}\nclass ValidateResponse {\n static fromProto(proto) {\n let m = new ValidateResponse();\n m = Object.assign(m, proto);\n if (proto.code) {\n m.code = SubscribeValidation.fromProto(proto.code);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.sku !== 'undefined') {\n toReturn['sku'] = this.sku;\n }\n if (typeof this.code !== 'undefined' && this.code !== null) {\n toReturn['code'] = 'toApiJson' in this.code ? this.code.toApiJson() : this.code;\n }\n return toReturn;\n }\n}\nfunction enumStringToValue$r(enumRef, value) {\n if (typeof value === 'number') {\n return value;\n }\n return enumRef[value];\n}\nclass CreateDiscountRequest {\n static fromProto(proto) {\n let m = new CreateDiscountRequest();\n m = Object.assign(m, proto);\n if (proto.discountType) {\n m.discountType = enumStringToValue$r(DiscountType, proto.discountType);\n }\n if (proto.amount) {\n m.amount = parseInt(proto.amount, 10);\n }\n if (proto.start) {\n m.start = new Date(proto.start);\n }\n if (proto.end) {\n m.end = new Date(proto.end);\n }\n if (proto.consumer) {\n m.consumer = enumStringToValue$r(Consumer, proto.consumer);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.merchantId !== 'undefined') {\n toReturn['merchantId'] = this.merchantId;\n }\n if (typeof this.sku !== 'undefined') {\n toReturn['sku'] = this.sku;\n }\n if (typeof this.discountType !== 'undefined') {\n toReturn['discountType'] = this.discountType;\n }\n if (typeof this.amount !== 'undefined') {\n toReturn['amount'] = this.amount;\n }\n if (typeof this.start !== 'undefined' && this.start !== null) {\n toReturn['start'] = 'toApiJson' in this.start ? this.start.toApiJson() : this.start;\n }\n if (typeof this.end !== 'undefined' && this.end !== null) {\n toReturn['end'] = 'toApiJson' in this.end ? this.end.toApiJson() : this.end;\n }\n if (typeof this.resetEachPeriod !== 'undefined') {\n toReturn['resetEachPeriod'] = this.resetEachPeriod;\n }\n if (typeof this.description !== 'undefined') {\n toReturn['description'] = this.description;\n }\n if (typeof this.customerId !== 'undefined') {\n toReturn['customerId'] = this.customerId;\n }\n if (typeof this.consumer !== 'undefined') {\n toReturn['consumer'] = this.consumer;\n }\n if (typeof this.subscriptionId !== 'undefined') {\n toReturn['subscriptionId'] = this.subscriptionId;\n }\n return toReturn;\n }\n}\nclass CreateDiscountResponse {\n static fromProto(proto) {\n let m = new CreateDiscountResponse();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.id !== 'undefined') {\n toReturn['id'] = this.id;\n }\n return toReturn;\n }\n}\nclass Discount {\n static fromProto(proto) {\n let m = new Discount();\n m = Object.assign(m, proto);\n if (proto.discountId) {\n m.discountId = parseInt(proto.discountId, 10);\n }\n if (proto.discountType) {\n m.discountType = enumStringToValue$r(DiscountType, proto.discountType);\n }\n if (proto.amount) {\n m.amount = parseInt(proto.amount, 10);\n }\n if (proto.start) {\n m.start = new Date(proto.start);\n }\n if (proto.end) {\n m.end = new Date(proto.end);\n }\n if (proto.created) {\n m.created = new Date(proto.created);\n }\n if (proto.updated) {\n m.updated = new Date(proto.updated);\n }\n if (proto.consumer) {\n m.consumer = enumStringToValue$r(Consumer, proto.consumer);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.discountId !== 'undefined') {\n toReturn['discountId'] = this.discountId;\n }\n if (typeof this.discountType !== 'undefined') {\n toReturn['discountType'] = this.discountType;\n }\n if (typeof this.amount !== 'undefined') {\n toReturn['amount'] = this.amount;\n }\n if (typeof this.start !== 'undefined' && this.start !== null) {\n toReturn['start'] = 'toApiJson' in this.start ? this.start.toApiJson() : this.start;\n }\n if (typeof this.end !== 'undefined' && this.end !== null) {\n toReturn['end'] = 'toApiJson' in this.end ? this.end.toApiJson() : this.end;\n }\n if (typeof this.resetEachPeriod !== 'undefined') {\n toReturn['resetEachPeriod'] = this.resetEachPeriod;\n }\n if (typeof this.merchantId !== 'undefined') {\n toReturn['merchantId'] = this.merchantId;\n }\n if (typeof this.created !== 'undefined' && this.created !== null) {\n toReturn['created'] = 'toApiJson' in this.created ? this.created.toApiJson() : this.created;\n }\n if (typeof this.updated !== 'undefined' && this.updated !== null) {\n toReturn['updated'] = 'toApiJson' in this.updated ? this.updated.toApiJson() : this.updated;\n }\n if (typeof this.sku !== 'undefined') {\n toReturn['sku'] = this.sku;\n }\n if (typeof this.id !== 'undefined') {\n toReturn['id'] = this.id;\n }\n if (typeof this.description !== 'undefined') {\n toReturn['description'] = this.description;\n }\n if (typeof this.customerId !== 'undefined') {\n toReturn['customerId'] = this.customerId;\n }\n if (typeof this.consumer !== 'undefined') {\n toReturn['consumer'] = this.consumer;\n }\n if (typeof this.subscriptionId !== 'undefined') {\n toReturn['subscriptionId'] = this.subscriptionId;\n }\n return toReturn;\n }\n}\nclass ExpireDiscountRequest {\n static fromProto(proto) {\n let m = new ExpireDiscountRequest();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.merchantId !== 'undefined') {\n toReturn['merchantId'] = this.merchantId;\n }\n if (typeof this.id !== 'undefined') {\n toReturn['id'] = this.id;\n }\n return toReturn;\n }\n}\nclass ListDiscountsRequestFilters {\n static fromProto(proto) {\n let m = new ListDiscountsRequestFilters();\n m = Object.assign(m, proto);\n if (proto.expiry) {\n m.expiry = new Date(proto.expiry);\n }\n if (proto.consumers) {\n m.consumers = proto.consumers.map(v => enumStringToValue$r(Consumer, v));\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.merchantId !== 'undefined') {\n toReturn['merchantId'] = this.merchantId;\n }\n if (typeof this.expiry !== 'undefined' && this.expiry !== null) {\n toReturn['expiry'] = 'toApiJson' in this.expiry ? this.expiry.toApiJson() : this.expiry;\n }\n if (typeof this.skus !== 'undefined') {\n toReturn['skus'] = this.skus;\n }\n if (typeof this.customerIds !== 'undefined') {\n toReturn['customerIds'] = this.customerIds;\n }\n if (typeof this.includeCustomerDiscounts !== 'undefined') {\n toReturn['includeCustomerDiscounts'] = this.includeCustomerDiscounts;\n }\n if (typeof this.consumers !== 'undefined') {\n toReturn['consumers'] = this.consumers;\n }\n if (typeof this.subscriptionIds !== 'undefined') {\n toReturn['subscriptionIds'] = this.subscriptionIds;\n }\n return toReturn;\n }\n}\nclass ListDiscountsRequest {\n static fromProto(proto) {\n let m = new ListDiscountsRequest();\n m = Object.assign(m, proto);\n if (proto.filters) {\n m.filters = ListDiscountsRequestFilters.fromProto(proto.filters);\n }\n if (proto.pagingOptions) {\n m.pagingOptions = PagedRequestOptions.fromProto(proto.pagingOptions);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.filters !== 'undefined' && this.filters !== null) {\n toReturn['filters'] = 'toApiJson' in this.filters ? this.filters.toApiJson() : this.filters;\n }\n if (typeof this.pagingOptions !== 'undefined' && this.pagingOptions !== null) {\n toReturn['pagingOptions'] = 'toApiJson' in this.pagingOptions ? this.pagingOptions.toApiJson() : this.pagingOptions;\n }\n return toReturn;\n }\n}\nclass ListDiscountsResponse {\n static fromProto(proto) {\n let m = new ListDiscountsResponse();\n m = Object.assign(m, proto);\n if (proto.discounts) {\n m.discounts = proto.discounts.map(Discount.fromProto);\n }\n if (proto.pagingMetadata) {\n m.pagingMetadata = PagedResponseMetadata.fromProto(proto.pagingMetadata);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.discounts !== 'undefined' && this.discounts !== null) {\n toReturn['discounts'] = 'toApiJson' in this.discounts ? this.discounts.toApiJson() : this.discounts;\n }\n if (typeof this.pagingMetadata !== 'undefined' && this.pagingMetadata !== null) {\n toReturn['pagingMetadata'] = 'toApiJson' in this.pagingMetadata ? this.pagingMetadata.toApiJson() : this.pagingMetadata;\n }\n return toReturn;\n }\n}\nclass UpdateDiscountRequest {\n static fromProto(proto) {\n let m = new UpdateDiscountRequest();\n m = Object.assign(m, proto);\n if (proto.discountType) {\n m.discountType = enumStringToValue$r(DiscountType, proto.discountType);\n }\n if (proto.amount) {\n m.amount = parseInt(proto.amount, 10);\n }\n if (proto.start) {\n m.start = new Date(proto.start);\n }\n if (proto.end) {\n m.end = new Date(proto.end);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.merchantId !== 'undefined') {\n toReturn['merchantId'] = this.merchantId;\n }\n if (typeof this.id !== 'undefined') {\n toReturn['id'] = this.id;\n }\n if (typeof this.discountType !== 'undefined') {\n toReturn['discountType'] = this.discountType;\n }\n if (typeof this.amount !== 'undefined') {\n toReturn['amount'] = this.amount;\n }\n if (typeof this.start !== 'undefined' && this.start !== null) {\n toReturn['start'] = 'toApiJson' in this.start ? this.start.toApiJson() : this.start;\n }\n if (typeof this.end !== 'undefined' && this.end !== null) {\n toReturn['end'] = 'toApiJson' in this.end ? this.end.toApiJson() : this.end;\n }\n if (typeof this.resetEachPeriod !== 'undefined') {\n toReturn['resetEachPeriod'] = this.resetEachPeriod;\n }\n if (typeof this.description !== 'undefined') {\n toReturn['description'] = this.description;\n }\n if (typeof this.customerId !== 'undefined') {\n toReturn['customerId'] = this.customerId;\n }\n if (typeof this.subscriptionId !== 'undefined') {\n toReturn['subscriptionId'] = this.subscriptionId;\n }\n return toReturn;\n }\n}\nfunction enumStringToValue$q(enumRef, value) {\n if (typeof value === 'number') {\n return value;\n }\n return enumRef[value];\n}\nclass AppliedTaxRate {\n static fromProto(proto) {\n let m = new AppliedTaxRate();\n m = Object.assign(m, proto);\n if (proto.amount) {\n m.amount = parseInt(proto.amount, 10);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.amount !== 'undefined') {\n toReturn['amount'] = this.amount;\n }\n if (typeof this.taxRateId !== 'undefined') {\n toReturn['taxRateId'] = this.taxRateId;\n }\n if (typeof this.name !== 'undefined') {\n toReturn['name'] = this.name;\n }\n if (typeof this.percentage !== 'undefined') {\n toReturn['percentage'] = this.percentage;\n }\n if (typeof this.description !== 'undefined') {\n toReturn['description'] = this.description;\n }\n return toReturn;\n }\n}\nfunction enumStringToValue$p(enumRef, value) {\n if (typeof value === 'number') {\n return value;\n }\n return enumRef[value];\n}\nclass ArchiveTaxRequest {\n static fromProto(proto) {\n let m = new ArchiveTaxRequest();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.merchantId !== 'undefined') {\n toReturn['merchantId'] = this.merchantId;\n }\n if (typeof this.id !== 'undefined') {\n toReturn['id'] = this.id;\n }\n return toReturn;\n }\n}\nclass CalculateLineItemTaxesRequest {\n static fromProto(proto) {\n let m = new CalculateLineItemTaxesRequest();\n m = Object.assign(m, proto);\n if (proto.lineItems) {\n m.lineItems = proto.lineItems.map(CalculateLineItemTaxesRequestLineItem.fromProto);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.merchantId !== 'undefined') {\n toReturn['merchantId'] = this.merchantId;\n }\n if (typeof this.customerId !== 'undefined') {\n toReturn['customerId'] = this.customerId;\n }\n if (typeof this.lineItems !== 'undefined' && this.lineItems !== null) {\n toReturn['lineItems'] = 'toApiJson' in this.lineItems ? this.lineItems.toApiJson() : this.lineItems;\n }\n return toReturn;\n }\n}\nclass CalculateLineItemTaxesResponse {\n static fromProto(proto) {\n let m = new CalculateLineItemTaxesResponse();\n m = Object.assign(m, proto);\n if (proto.lineItemTaxes) {\n m.lineItemTaxes = proto.lineItemTaxes.map(CalculateLineItemTaxesResponseLineItemTaxes.fromProto);\n }\n if (proto.totalTaxableAmount) {\n m.totalTaxableAmount = parseInt(proto.totalTaxableAmount, 10);\n }\n if (proto.taxRates) {\n m.taxRates = proto.taxRates.map(TaxRate.fromProto);\n }\n if (proto.appliedTaxes) {\n m.appliedTaxes = proto.appliedTaxes.map(AppliedTaxRate.fromProto);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.lineItemTaxes !== 'undefined' && this.lineItemTaxes !== null) {\n toReturn['lineItemTaxes'] = 'toApiJson' in this.lineItemTaxes ? this.lineItemTaxes.toApiJson() : this.lineItemTaxes;\n }\n if (typeof this.totalTaxableAmount !== 'undefined') {\n toReturn['totalTaxableAmount'] = this.totalTaxableAmount;\n }\n if (typeof this.taxRates !== 'undefined' && this.taxRates !== null) {\n toReturn['taxRates'] = 'toApiJson' in this.taxRates ? this.taxRates.toApiJson() : this.taxRates;\n }\n if (typeof this.appliedTaxes !== 'undefined' && this.appliedTaxes !== null) {\n toReturn['appliedTaxes'] = 'toApiJson' in this.appliedTaxes ? this.appliedTaxes.toApiJson() : this.appliedTaxes;\n }\n return toReturn;\n }\n}\nclass CalculateTaxRequest {\n static fromProto(proto) {\n let m = new CalculateTaxRequest();\n m = Object.assign(m, proto);\n if (proto.amount) {\n m.amount = parseInt(proto.amount, 10);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.merchantId !== 'undefined') {\n toReturn['merchantId'] = this.merchantId;\n }\n if (typeof this.customerId !== 'undefined') {\n toReturn['customerId'] = this.customerId;\n }\n if (typeof this.amount !== 'undefined') {\n toReturn['amount'] = this.amount;\n }\n return toReturn;\n }\n}\nclass CalculateTaxResponse {\n static fromProto(proto) {\n let m = new CalculateTaxResponse();\n m = Object.assign(m, proto);\n if (proto.taxableAmount) {\n m.taxableAmount = parseInt(proto.taxableAmount, 10);\n }\n if (proto.taxRates) {\n m.taxRates = proto.taxRates.map(TaxRate.fromProto);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.taxableAmount !== 'undefined') {\n toReturn['taxableAmount'] = this.taxableAmount;\n }\n if (typeof this.taxRates !== 'undefined' && this.taxRates !== null) {\n toReturn['taxRates'] = 'toApiJson' in this.taxRates ? this.taxRates.toApiJson() : this.taxRates;\n }\n return toReturn;\n }\n}\nclass CreateTaxRequest {\n static fromProto(proto) {\n let m = new CreateTaxRequest();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.merchantId !== 'undefined') {\n toReturn['merchantId'] = this.merchantId;\n }\n if (typeof this.countryCode !== 'undefined') {\n toReturn['countryCode'] = this.countryCode;\n }\n if (typeof this.stateCode !== 'undefined') {\n toReturn['stateCode'] = this.stateCode;\n }\n if (typeof this.name !== 'undefined') {\n toReturn['name'] = this.name;\n }\n if (typeof this.description !== 'undefined') {\n toReturn['description'] = this.description;\n }\n if (typeof this.percentage !== 'undefined') {\n toReturn['percentage'] = this.percentage;\n }\n if (typeof this.accountingSystemId !== 'undefined') {\n toReturn['accountingSystemId'] = this.accountingSystemId;\n }\n return toReturn;\n }\n}\nclass ListTaxRequestFilters {\n static fromProto(proto) {\n let m = new ListTaxRequestFilters();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.merchantId !== 'undefined') {\n toReturn['merchantId'] = this.merchantId;\n }\n if (typeof this.includeArchived !== 'undefined') {\n toReturn['includeArchived'] = this.includeArchived;\n }\n return toReturn;\n }\n}\nclass GetMultiTaxRequest {\n static fromProto(proto) {\n let m = new GetMultiTaxRequest();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.merchantId !== 'undefined') {\n toReturn['merchantId'] = this.merchantId;\n }\n if (typeof this.ids !== 'undefined') {\n toReturn['ids'] = this.ids;\n }\n return toReturn;\n }\n}\nclass GetMultiTaxResponse {\n static fromProto(proto) {\n let m = new GetMultiTaxResponse();\n m = Object.assign(m, proto);\n if (proto.taxRates) {\n m.taxRates = proto.taxRates.map(TaxRate.fromProto);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.taxRates !== 'undefined' && this.taxRates !== null) {\n toReturn['taxRates'] = 'toApiJson' in this.taxRates ? this.taxRates.toApiJson() : this.taxRates;\n }\n return toReturn;\n }\n}\nclass CalculateLineItemTaxesRequestLineItem {\n static fromProto(proto) {\n let m = new CalculateLineItemTaxesRequestLineItem();\n m = Object.assign(m, proto);\n if (proto.amount) {\n m.amount = parseInt(proto.amount, 10);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.sku !== 'undefined') {\n toReturn['sku'] = this.sku;\n }\n if (typeof this.amount !== 'undefined') {\n toReturn['amount'] = this.amount;\n }\n return toReturn;\n }\n}\nclass CalculateLineItemTaxesResponseLineItemTaxes {\n static fromProto(proto) {\n let m = new CalculateLineItemTaxesResponseLineItemTaxes();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.sku !== 'undefined') {\n toReturn['sku'] = this.sku;\n }\n if (typeof this.taxableAmount !== 'undefined') {\n toReturn['taxableAmount'] = this.taxableAmount;\n }\n return toReturn;\n }\n}\nclass ListTaxRequest {\n static fromProto(proto) {\n let m = new ListTaxRequest();\n m = Object.assign(m, proto);\n if (proto.filters) {\n m.filters = ListTaxRequestFilters.fromProto(proto.filters);\n }\n if (proto.pagingOptions) {\n m.pagingOptions = PagedRequestOptions.fromProto(proto.pagingOptions);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.filters !== 'undefined' && this.filters !== null) {\n toReturn['filters'] = 'toApiJson' in this.filters ? this.filters.toApiJson() : this.filters;\n }\n if (typeof this.pagingOptions !== 'undefined' && this.pagingOptions !== null) {\n toReturn['pagingOptions'] = 'toApiJson' in this.pagingOptions ? this.pagingOptions.toApiJson() : this.pagingOptions;\n }\n return toReturn;\n }\n}\nclass ListTaxResponse {\n static fromProto(proto) {\n let m = new ListTaxResponse();\n m = Object.assign(m, proto);\n if (proto.taxRates) {\n m.taxRates = proto.taxRates.map(TaxRate.fromProto);\n }\n if (proto.pagingMetadata) {\n m.pagingMetadata = PagedResponseMetadata.fromProto(proto.pagingMetadata);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.taxRates !== 'undefined' && this.taxRates !== null) {\n toReturn['taxRates'] = 'toApiJson' in this.taxRates ? this.taxRates.toApiJson() : this.taxRates;\n }\n if (typeof this.pagingMetadata !== 'undefined' && this.pagingMetadata !== null) {\n toReturn['pagingMetadata'] = 'toApiJson' in this.pagingMetadata ? this.pagingMetadata.toApiJson() : this.pagingMetadata;\n }\n return toReturn;\n }\n}\nclass TaxRate {\n static fromProto(proto) {\n let m = new TaxRate();\n m = Object.assign(m, proto);\n if (proto.archived) {\n m.archived = new Date(proto.archived);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.id !== 'undefined') {\n toReturn['id'] = this.id;\n }\n if (typeof this.merchantId !== 'undefined') {\n toReturn['merchantId'] = this.merchantId;\n }\n if (typeof this.countryCode !== 'undefined') {\n toReturn['countryCode'] = this.countryCode;\n }\n if (typeof this.stateCode !== 'undefined') {\n toReturn['stateCode'] = this.stateCode;\n }\n if (typeof this.name !== 'undefined') {\n toReturn['name'] = this.name;\n }\n if (typeof this.description !== 'undefined') {\n toReturn['description'] = this.description;\n }\n if (typeof this.percentage !== 'undefined') {\n toReturn['percentage'] = this.percentage;\n }\n if (typeof this.accountingSystemId !== 'undefined') {\n toReturn['accountingSystemId'] = this.accountingSystemId;\n }\n if (typeof this.archived !== 'undefined' && this.archived !== null) {\n toReturn['archived'] = 'toApiJson' in this.archived ? this.archived.toApiJson() : this.archived;\n }\n return toReturn;\n }\n}\nclass UpdateTaxRequest {\n static fromProto(proto) {\n let m = new UpdateTaxRequest();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.merchantId !== 'undefined') {\n toReturn['merchantId'] = this.merchantId;\n }\n if (typeof this.id !== 'undefined') {\n toReturn['id'] = this.id;\n }\n if (typeof this.countryCode !== 'undefined') {\n toReturn['countryCode'] = this.countryCode;\n }\n if (typeof this.stateCode !== 'undefined') {\n toReturn['stateCode'] = this.stateCode;\n }\n if (typeof this.name !== 'undefined') {\n toReturn['name'] = this.name;\n }\n if (typeof this.description !== 'undefined') {\n toReturn['description'] = this.description;\n }\n if (typeof this.percentage !== 'undefined') {\n toReturn['percentage'] = this.percentage;\n }\n if (typeof this.accountingSystemId !== 'undefined') {\n toReturn['accountingSystemId'] = this.accountingSystemId;\n }\n return toReturn;\n }\n}\nfunction enumStringToValue$o(enumRef, value) {\n if (typeof value === 'number') {\n return value;\n }\n return enumRef[value];\n}\nclass AppliedBundle {\n static fromProto(proto) {\n let m = new AppliedBundle();\n m = Object.assign(m, proto);\n if (proto.bundleItems) {\n m.bundleItems = proto.bundleItems.map(AppliedBundleItem.fromProto);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.bundleId !== 'undefined') {\n toReturn['bundleId'] = this.bundleId;\n }\n if (typeof this.name !== 'undefined') {\n toReturn['name'] = this.name;\n }\n if (typeof this.bundleItems !== 'undefined' && this.bundleItems !== null) {\n toReturn['bundleItems'] = 'toApiJson' in this.bundleItems ? this.bundleItems.toApiJson() : this.bundleItems;\n }\n if (typeof this.hideBundleItems !== 'undefined') {\n toReturn['hideBundleItems'] = this.hideBundleItems;\n }\n if (typeof this.bundleInstanceId !== 'undefined') {\n toReturn['bundleInstanceId'] = this.bundleInstanceId;\n }\n return toReturn;\n }\n}\nclass AppliedBundleItem {\n static fromProto(proto) {\n let m = new AppliedBundleItem();\n m = Object.assign(m, proto);\n if (proto.discountAmount) {\n m.discountAmount = parseInt(proto.discountAmount, 10);\n }\n if (proto.quantity) {\n m.quantity = parseInt(proto.quantity, 10);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.productId !== 'undefined') {\n toReturn['productId'] = this.productId;\n }\n if (typeof this.discountType !== 'undefined') {\n toReturn['discountType'] = this.discountType;\n }\n if (typeof this.discountAmount !== 'undefined') {\n toReturn['discountAmount'] = this.discountAmount;\n }\n if (typeof this.quantity !== 'undefined') {\n toReturn['quantity'] = this.quantity;\n }\n return toReturn;\n }\n}\nfunction enumStringToValue$n(enumRef, value) {\n if (typeof value === 'number') {\n return value;\n }\n return enumRef[value];\n}\nclass AddBundleRequest {\n static fromProto(proto) {\n let m = new AddBundleRequest();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.invoiceId !== 'undefined') {\n toReturn['invoiceId'] = this.invoiceId;\n }\n if (typeof this.merchantId !== 'undefined') {\n toReturn['merchantId'] = this.merchantId;\n }\n if (typeof this.bundleId !== 'undefined') {\n toReturn['bundleId'] = this.bundleId;\n }\n return toReturn;\n }\n}\nclass AddBundleResponse {\n static fromProto(proto) {\n let m = new AddBundleResponse();\n m = Object.assign(m, proto);\n if (proto.invoice) {\n m.invoice = Invoice.fromProto(proto.invoice);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.invoice !== 'undefined' && this.invoice !== null) {\n toReturn['invoice'] = 'toApiJson' in this.invoice ? this.invoice.toApiJson() : this.invoice;\n }\n return toReturn;\n }\n}\nclass AddLineItemRequest {\n static fromProto(proto) {\n let m = new AddLineItemRequest();\n m = Object.assign(m, proto);\n if (proto.amount) {\n m.amount = parseInt(proto.amount, 10);\n }\n if (proto.discounts) {\n m.discounts = proto.discounts.map(AppliedDiscount.fromProto);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.merchantId !== 'undefined') {\n toReturn['merchantId'] = this.merchantId;\n }\n if (typeof this.invoiceId !== 'undefined') {\n toReturn['invoiceId'] = this.invoiceId;\n }\n if (typeof this.sku !== 'undefined') {\n toReturn['sku'] = this.sku;\n }\n if (typeof this.amount !== 'undefined') {\n toReturn['amount'] = this.amount;\n }\n if (typeof this.quantity !== 'undefined') {\n toReturn['quantity'] = this.quantity;\n }\n if (typeof this.description !== 'undefined') {\n toReturn['description'] = this.description;\n }\n if (typeof this.taxRates !== 'undefined') {\n toReturn['taxRates'] = this.taxRates;\n }\n if (typeof this.discounts !== 'undefined' && this.discounts !== null) {\n toReturn['discounts'] = 'toApiJson' in this.discounts ? this.discounts.toApiJson() : this.discounts;\n }\n return toReturn;\n }\n}\nclass AddLineItemResponse {\n static fromProto(proto) {\n let m = new AddLineItemResponse();\n m = Object.assign(m, proto);\n if (proto.invoice) {\n m.invoice = Invoice.fromProto(proto.invoice);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.invoice !== 'undefined' && this.invoice !== null) {\n toReturn['invoice'] = 'toApiJson' in this.invoice ? this.invoice.toApiJson() : this.invoice;\n }\n return toReturn;\n }\n}\nclass ChargeInvoiceRequest {\n static fromProto(proto) {\n let m = new ChargeInvoiceRequest();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.merchantId !== 'undefined') {\n toReturn['merchantId'] = this.merchantId;\n }\n if (typeof this.customerId !== 'undefined') {\n toReturn['customerId'] = this.customerId;\n }\n if (typeof this.invoiceId !== 'undefined') {\n toReturn['invoiceId'] = this.invoiceId;\n }\n if (typeof this.paymentMethodId !== 'undefined') {\n toReturn['paymentMethodId'] = this.paymentMethodId;\n }\n return toReturn;\n }\n}\nclass CreateInvoiceRequest {\n static fromProto(proto) {\n let m = new CreateInvoiceRequest();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.merchantId !== 'undefined') {\n toReturn['merchantId'] = this.merchantId;\n }\n if (typeof this.customerId !== 'undefined') {\n toReturn['customerId'] = this.customerId;\n }\n if (typeof this.currencyCode !== 'undefined') {\n toReturn['currencyCode'] = this.currencyCode;\n }\n if (typeof this.orderId !== 'undefined') {\n toReturn['orderId'] = this.orderId;\n }\n return toReturn;\n }\n}\nclass CreateInvoiceResponse {\n static fromProto(proto) {\n let m = new CreateInvoiceResponse();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.invoiceId !== 'undefined') {\n toReturn['invoiceId'] = this.invoiceId;\n }\n return toReturn;\n }\n}\nclass CreatePaymentLinkRequest {\n static fromProto(proto) {\n let m = new CreatePaymentLinkRequest();\n m = Object.assign(m, proto);\n if (proto.lineItems) {\n m.lineItems = proto.lineItems.map(PaymentLinkItem.fromProto);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.merchantId !== 'undefined') {\n toReturn['merchantId'] = this.merchantId;\n }\n if (typeof this.customerId !== 'undefined') {\n toReturn['customerId'] = this.customerId;\n }\n if (typeof this.currencyCode !== 'undefined') {\n toReturn['currencyCode'] = this.currencyCode;\n }\n if (typeof this.lineItems !== 'undefined' && this.lineItems !== null) {\n toReturn['lineItems'] = 'toApiJson' in this.lineItems ? this.lineItems.toApiJson() : this.lineItems;\n }\n return toReturn;\n }\n}\nclass CreatePaymentLinkResponse {\n static fromProto(proto) {\n let m = new CreatePaymentLinkResponse();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.invoiceId !== 'undefined') {\n toReturn['invoiceId'] = this.invoiceId;\n }\n return toReturn;\n }\n}\nclass InvoiceCustomerAddress {\n static fromProto(proto) {\n let m = new InvoiceCustomerAddress();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.address !== 'undefined') {\n toReturn['address'] = this.address;\n }\n if (typeof this.city !== 'undefined') {\n toReturn['city'] = this.city;\n }\n if (typeof this.state !== 'undefined') {\n toReturn['state'] = this.state;\n }\n if (typeof this.zip !== 'undefined') {\n toReturn['zip'] = this.zip;\n }\n if (typeof this.country !== 'undefined') {\n toReturn['country'] = this.country;\n }\n if (typeof this.address2 !== 'undefined') {\n toReturn['address2'] = this.address2;\n }\n return toReturn;\n }\n}\nclass ListInvoicesRequestFiltersDateFilter {\n static fromProto(proto) {\n let m = new ListInvoicesRequestFiltersDateFilter();\n m = Object.assign(m, proto);\n if (proto.dateField) {\n m.dateField = enumStringToValue$n(ListInvoicesRequestFiltersDateFilterDateField, proto.dateField);\n }\n if (proto.dateLte) {\n m.dateLte = new Date(proto.dateLte);\n }\n if (proto.dateGte) {\n m.dateGte = new Date(proto.dateGte);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.dateField !== 'undefined') {\n toReturn['dateField'] = this.dateField;\n }\n if (typeof this.dateLte !== 'undefined' && this.dateLte !== null) {\n toReturn['dateLte'] = 'toApiJson' in this.dateLte ? this.dateLte.toApiJson() : this.dateLte;\n }\n if (typeof this.dateGte !== 'undefined' && this.dateGte !== null) {\n toReturn['dateGte'] = 'toApiJson' in this.dateGte ? this.dateGte.toApiJson() : this.dateGte;\n }\n return toReturn;\n }\n}\nclass DeleteInvoiceRequest {\n static fromProto(proto) {\n let m = new DeleteInvoiceRequest();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.merchantId !== 'undefined') {\n toReturn['merchantId'] = this.merchantId;\n }\n if (typeof this.invoiceId !== 'undefined') {\n toReturn['invoiceId'] = this.invoiceId;\n }\n return toReturn;\n }\n}\nclass DeleteLineItemRequest {\n static fromProto(proto) {\n let m = new DeleteLineItemRequest();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.merchantId !== 'undefined') {\n toReturn['merchantId'] = this.merchantId;\n }\n if (typeof this.invoiceId !== 'undefined') {\n toReturn['invoiceId'] = this.invoiceId;\n }\n if (typeof this.id !== 'undefined') {\n toReturn['id'] = this.id;\n }\n return toReturn;\n }\n}\nclass DeleteLineItemResponse {\n static fromProto(proto) {\n let m = new DeleteLineItemResponse();\n m = Object.assign(m, proto);\n if (proto.invoice) {\n m.invoice = Invoice.fromProto(proto.invoice);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.invoice !== 'undefined' && this.invoice !== null) {\n toReturn['invoice'] = 'toApiJson' in this.invoice ? this.invoice.toApiJson() : this.invoice;\n }\n return toReturn;\n }\n}\nclass DuplicateInvoiceRequest {\n static fromProto(proto) {\n let m = new DuplicateInvoiceRequest();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.merchantId !== 'undefined') {\n toReturn['merchantId'] = this.merchantId;\n }\n if (typeof this.invoiceId !== 'undefined') {\n toReturn['invoiceId'] = this.invoiceId;\n }\n return toReturn;\n }\n}\nclass DuplicateInvoiceResponse {\n static fromProto(proto) {\n let m = new DuplicateInvoiceResponse();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.invoiceId !== 'undefined') {\n toReturn['invoiceId'] = this.invoiceId;\n }\n return toReturn;\n }\n}\nclass ListInvoicesRequestFilters {\n static fromProto(proto) {\n let m = new ListInvoicesRequestFilters();\n m = Object.assign(m, proto);\n if (proto.statuses) {\n m.statuses = proto.statuses.map(v => enumStringToValue$n(InvoiceStatus, v));\n }\n if (proto.dateFilter) {\n m.dateFilter = ListInvoicesRequestFiltersDateFilter.fromProto(proto.dateFilter);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.merchantId !== 'undefined') {\n toReturn['merchantId'] = this.merchantId;\n }\n if (typeof this.customerId !== 'undefined') {\n toReturn['customerId'] = this.customerId;\n }\n if (typeof this.statuses !== 'undefined') {\n toReturn['statuses'] = this.statuses;\n }\n if (typeof this.pastDue !== 'undefined') {\n toReturn['pastDue'] = this.pastDue;\n }\n if (typeof this.number !== 'undefined') {\n toReturn['number'] = this.number;\n }\n if (typeof this.dateFilter !== 'undefined' && this.dateFilter !== null) {\n toReturn['dateFilter'] = 'toApiJson' in this.dateFilter ? this.dateFilter.toApiJson() : this.dateFilter;\n }\n if (typeof this.origins !== 'undefined') {\n toReturn['origins'] = this.origins;\n }\n if (typeof this.collectionMethods !== 'undefined') {\n toReturn['collectionMethods'] = this.collectionMethods;\n }\n return toReturn;\n }\n}\nclass GetInvoiceRequest {\n static fromProto(proto) {\n let m = new GetInvoiceRequest();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.merchantId !== 'undefined') {\n toReturn['merchantId'] = this.merchantId;\n }\n if (typeof this.invoiceId !== 'undefined') {\n toReturn['invoiceId'] = this.invoiceId;\n }\n return toReturn;\n }\n}\nclass GetInvoiceResponse {\n static fromProto(proto) {\n let m = new GetInvoiceResponse();\n m = Object.assign(m, proto);\n if (proto.invoice) {\n m.invoice = Invoice.fromProto(proto.invoice);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.invoice !== 'undefined' && this.invoice !== null) {\n toReturn['invoice'] = 'toApiJson' in this.invoice ? this.invoice.toApiJson() : this.invoice;\n }\n return toReturn;\n }\n}\nclass GetUpcomingInvoicePreviewRequest {\n static fromProto(proto) {\n let m = new GetUpcomingInvoicePreviewRequest();\n m = Object.assign(m, proto);\n if (proto.invoiceDate) {\n m.invoiceDate = new Date(proto.invoiceDate);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.merchantId !== 'undefined') {\n toReturn['merchantId'] = this.merchantId;\n }\n if (typeof this.customerId !== 'undefined') {\n toReturn['customerId'] = this.customerId;\n }\n if (typeof this.invoiceDate !== 'undefined' && this.invoiceDate !== null) {\n toReturn['invoiceDate'] = 'toApiJson' in this.invoiceDate ? this.invoiceDate.toApiJson() : this.invoiceDate;\n }\n return toReturn;\n }\n}\nclass GetUpcomingInvoicePreviewResponse {\n static fromProto(proto) {\n let m = new GetUpcomingInvoicePreviewResponse();\n m = Object.assign(m, proto);\n if (proto.invoice) {\n m.invoice = Invoice.fromProto(proto.invoice);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.invoice !== 'undefined' && this.invoice !== null) {\n toReturn['invoice'] = 'toApiJson' in this.invoice ? this.invoice.toApiJson() : this.invoice;\n }\n return toReturn;\n }\n}\nclass Invoice {\n static fromProto(proto) {\n let m = new Invoice();\n m = Object.assign(m, proto);\n if (proto.status) {\n m.status = enumStringToValue$n(InvoiceStatus, proto.status);\n }\n if (proto.subtotal) {\n m.subtotal = parseInt(proto.subtotal, 10);\n }\n if (proto.total) {\n m.total = parseInt(proto.total, 10);\n }\n if (proto.amountPaid) {\n m.amountPaid = parseInt(proto.amountPaid, 10);\n }\n if (proto.issued) {\n m.issued = new Date(proto.issued);\n }\n if (proto.due) {\n m.due = new Date(proto.due);\n }\n if (proto.created) {\n m.created = new Date(proto.created);\n }\n if (proto.updated) {\n m.updated = new Date(proto.updated);\n }\n if (proto.items) {\n m.items = proto.items.map(InvoiceItem.fromProto);\n }\n if (proto.currency) {\n m.currency = enumStringToValue$n(Currency, proto.currency);\n }\n if (proto.paid) {\n m.paid = new Date(proto.paid);\n }\n if (proto.amountTax) {\n m.amountTax = parseInt(proto.amountTax, 10);\n }\n if (proto.appliedTaxes) {\n m.appliedTaxes = proto.appliedTaxes.map(AppliedTaxRate.fromProto);\n }\n if (proto.defaultTaxRates) {\n m.defaultTaxRates = proto.defaultTaxRates.map(TaxRate.fromProto);\n }\n if (proto.appliedBundles) {\n m.appliedBundles = proto.appliedBundles.map(AppliedBundle.fromProto);\n }\n if (proto.amountDiscount) {\n m.amountDiscount = parseInt(proto.amountDiscount, 10);\n }\n if (proto.voided) {\n m.voided = new Date(proto.voided);\n }\n if (proto.customerAddress) {\n m.customerAddress = InvoiceCustomerAddress.fromProto(proto.customerAddress);\n }\n if (proto.notes) {\n m.notes = proto.notes.map(Note.fromProto);\n }\n if (proto.autoAdvance) {\n m.autoAdvance = new Date(proto.autoAdvance);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.merchantId !== 'undefined') {\n toReturn['merchantId'] = this.merchantId;\n }\n if (typeof this.id !== 'undefined') {\n toReturn['id'] = this.id;\n }\n if (typeof this.number !== 'undefined') {\n toReturn['number'] = this.number;\n }\n if (typeof this.customerId !== 'undefined') {\n toReturn['customerId'] = this.customerId;\n }\n if (typeof this.status !== 'undefined') {\n toReturn['status'] = this.status;\n }\n if (typeof this.subtotal !== 'undefined') {\n toReturn['subtotal'] = this.subtotal;\n }\n if (typeof this.total !== 'undefined') {\n toReturn['total'] = this.total;\n }\n if (typeof this.amountPaid !== 'undefined') {\n toReturn['amountPaid'] = this.amountPaid;\n }\n if (typeof this.issued !== 'undefined' && this.issued !== null) {\n toReturn['issued'] = 'toApiJson' in this.issued ? this.issued.toApiJson() : this.issued;\n }\n if (typeof this.due !== 'undefined' && this.due !== null) {\n toReturn['due'] = 'toApiJson' in this.due ? this.due.toApiJson() : this.due;\n }\n if (typeof this.created !== 'undefined' && this.created !== null) {\n toReturn['created'] = 'toApiJson' in this.created ? this.created.toApiJson() : this.created;\n }\n if (typeof this.updated !== 'undefined' && this.updated !== null) {\n toReturn['updated'] = 'toApiJson' in this.updated ? this.updated.toApiJson() : this.updated;\n }\n if (typeof this.items !== 'undefined' && this.items !== null) {\n toReturn['items'] = 'toApiJson' in this.items ? this.items.toApiJson() : this.items;\n }\n if (typeof this.currency !== 'undefined') {\n toReturn['currency'] = this.currency;\n }\n if (typeof this.paid !== 'undefined' && this.paid !== null) {\n toReturn['paid'] = 'toApiJson' in this.paid ? this.paid.toApiJson() : this.paid;\n }\n if (typeof this.orderId !== 'undefined') {\n toReturn['orderId'] = this.orderId;\n }\n if (typeof this.amountTax !== 'undefined') {\n toReturn['amountTax'] = this.amountTax;\n }\n if (typeof this.appliedTaxes !== 'undefined' && this.appliedTaxes !== null) {\n toReturn['appliedTaxes'] = 'toApiJson' in this.appliedTaxes ? this.appliedTaxes.toApiJson() : this.appliedTaxes;\n }\n if (typeof this.defaultTaxRates !== 'undefined' && this.defaultTaxRates !== null) {\n toReturn['defaultTaxRates'] = 'toApiJson' in this.defaultTaxRates ? this.defaultTaxRates.toApiJson() : this.defaultTaxRates;\n }\n if (typeof this.appliedBundles !== 'undefined' && this.appliedBundles !== null) {\n toReturn['appliedBundles'] = 'toApiJson' in this.appliedBundles ? this.appliedBundles.toApiJson() : this.appliedBundles;\n }\n if (typeof this.amountDiscount !== 'undefined') {\n toReturn['amountDiscount'] = this.amountDiscount;\n }\n if (typeof this.customerName !== 'undefined') {\n toReturn['customerName'] = this.customerName;\n }\n if (typeof this.origin !== 'undefined') {\n toReturn['origin'] = this.origin;\n }\n if (typeof this.collectionMethod !== 'undefined') {\n toReturn['collectionMethod'] = this.collectionMethod;\n }\n if (typeof this.contactId !== 'undefined') {\n toReturn['contactId'] = this.contactId;\n }\n if (typeof this.memo !== 'undefined') {\n toReturn['memo'] = this.memo;\n }\n if (typeof this.voided !== 'undefined' && this.voided !== null) {\n toReturn['voided'] = 'toApiJson' in this.voided ? this.voided.toApiJson() : this.voided;\n }\n if (typeof this.defaultPaymentMethod !== 'undefined') {\n toReturn['defaultPaymentMethod'] = this.defaultPaymentMethod;\n }\n if (typeof this.customerAddress !== 'undefined' && this.customerAddress !== null) {\n toReturn['customerAddress'] = 'toApiJson' in this.customerAddress ? this.customerAddress.toApiJson() : this.customerAddress;\n }\n if (typeof this.externalCustomerIdentifier !== 'undefined') {\n toReturn['externalCustomerIdentifier'] = this.externalCustomerIdentifier;\n }\n if (typeof this.notes !== 'undefined' && this.notes !== null) {\n toReturn['notes'] = 'toApiJson' in this.notes ? this.notes.toApiJson() : this.notes;\n }\n if (typeof this.additionalContactIds !== 'undefined') {\n toReturn['additionalContactIds'] = this.additionalContactIds;\n }\n if (typeof this.autoAdvance !== 'undefined' && this.autoAdvance !== null) {\n toReturn['autoAdvance'] = 'toApiJson' in this.autoAdvance ? this.autoAdvance.toApiJson() : this.autoAdvance;\n }\n return toReturn;\n }\n}\nclass InvoiceItem {\n static fromProto(proto) {\n let m = new InvoiceItem();\n m = Object.assign(m, proto);\n if (proto.amount) {\n m.amount = parseInt(proto.amount, 10);\n }\n if (proto.total) {\n m.total = parseInt(proto.total, 10);\n }\n if (proto.appliedTaxes) {\n m.appliedTaxes = proto.appliedTaxes.map(AppliedTaxRate.fromProto);\n }\n if (proto.taxRates) {\n m.taxRates = proto.taxRates.map(TaxRate.fromProto);\n }\n if (proto.discounts) {\n m.discounts = proto.discounts.map(AppliedDiscount.fromProto);\n }\n if (proto.subtotal) {\n m.subtotal = parseInt(proto.subtotal, 10);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.id !== 'undefined') {\n toReturn['id'] = this.id;\n }\n if (typeof this.sku !== 'undefined') {\n toReturn['sku'] = this.sku;\n }\n if (typeof this.amount !== 'undefined') {\n toReturn['amount'] = this.amount;\n }\n if (typeof this.quantity !== 'undefined') {\n toReturn['quantity'] = this.quantity;\n }\n if (typeof this.description !== 'undefined') {\n toReturn['description'] = this.description;\n }\n if (typeof this.total !== 'undefined') {\n toReturn['total'] = this.total;\n }\n if (typeof this.appliedTaxes !== 'undefined' && this.appliedTaxes !== null) {\n toReturn['appliedTaxes'] = 'toApiJson' in this.appliedTaxes ? this.appliedTaxes.toApiJson() : this.appliedTaxes;\n }\n if (typeof this.taxRates !== 'undefined' && this.taxRates !== null) {\n toReturn['taxRates'] = 'toApiJson' in this.taxRates ? this.taxRates.toApiJson() : this.taxRates;\n }\n if (typeof this.bundleId !== 'undefined') {\n toReturn['bundleId'] = this.bundleId;\n }\n if (typeof this.discounts !== 'undefined' && this.discounts !== null) {\n toReturn['discounts'] = 'toApiJson' in this.discounts ? this.discounts.toApiJson() : this.discounts;\n }\n if (typeof this.subtotal !== 'undefined') {\n toReturn['subtotal'] = this.subtotal;\n }\n if (typeof this.bundleInstanceId !== 'undefined') {\n toReturn['bundleInstanceId'] = this.bundleInstanceId;\n }\n return toReturn;\n }\n}\nclass ListInvoicesRequest {\n static fromProto(proto) {\n let m = new ListInvoicesRequest();\n m = Object.assign(m, proto);\n if (proto.filters) {\n m.filters = ListInvoicesRequestFilters.fromProto(proto.filters);\n }\n if (proto.pagingOptions) {\n m.pagingOptions = PagedRequestOptions.fromProto(proto.pagingOptions);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.filters !== 'undefined' && this.filters !== null) {\n toReturn['filters'] = 'toApiJson' in this.filters ? this.filters.toApiJson() : this.filters;\n }\n if (typeof this.pagingOptions !== 'undefined' && this.pagingOptions !== null) {\n toReturn['pagingOptions'] = 'toApiJson' in this.pagingOptions ? this.pagingOptions.toApiJson() : this.pagingOptions;\n }\n return toReturn;\n }\n}\nclass ListInvoicesResponse {\n static fromProto(proto) {\n let m = new ListInvoicesResponse();\n m = Object.assign(m, proto);\n if (proto.invoices) {\n m.invoices = proto.invoices.map(Invoice.fromProto);\n }\n if (proto.pagingMetadata) {\n m.pagingMetadata = PagedResponseMetadata.fromProto(proto.pagingMetadata);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.invoices !== 'undefined' && this.invoices !== null) {\n toReturn['invoices'] = 'toApiJson' in this.invoices ? this.invoices.toApiJson() : this.invoices;\n }\n if (typeof this.pagingMetadata !== 'undefined' && this.pagingMetadata !== null) {\n toReturn['pagingMetadata'] = 'toApiJson' in this.pagingMetadata ? this.pagingMetadata.toApiJson() : this.pagingMetadata;\n }\n return toReturn;\n }\n}\nclass Note {\n static fromProto(proto) {\n let m = new Note();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.message !== 'undefined') {\n toReturn['message'] = this.message;\n }\n return toReturn;\n }\n}\nclass PayInvoiceRequest {\n static fromProto(proto) {\n let m = new PayInvoiceRequest();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.merchantId !== 'undefined') {\n toReturn['merchantId'] = this.merchantId;\n }\n if (typeof this.invoiceId !== 'undefined') {\n toReturn['invoiceId'] = this.invoiceId;\n }\n if (typeof this.reason !== 'undefined') {\n toReturn['reason'] = this.reason;\n }\n return toReturn;\n }\n}\nclass PaymentLinkItem {\n static fromProto(proto) {\n let m = new PaymentLinkItem();\n m = Object.assign(m, proto);\n if (proto.amount) {\n m.amount = parseInt(proto.amount, 10);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.amount !== 'undefined') {\n toReturn['amount'] = this.amount;\n }\n if (typeof this.quantity !== 'undefined') {\n toReturn['quantity'] = this.quantity;\n }\n if (typeof this.description !== 'undefined') {\n toReturn['description'] = this.description;\n }\n return toReturn;\n }\n}\nclass RemoveBundleRequest {\n static fromProto(proto) {\n let m = new RemoveBundleRequest();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.invoiceId !== 'undefined') {\n toReturn['invoiceId'] = this.invoiceId;\n }\n if (typeof this.merchantId !== 'undefined') {\n toReturn['merchantId'] = this.merchantId;\n }\n if (typeof this.bundleId !== 'undefined') {\n toReturn['bundleId'] = this.bundleId;\n }\n if (typeof this.bundleInstanceId !== 'undefined') {\n toReturn['bundleInstanceId'] = this.bundleInstanceId;\n }\n return toReturn;\n }\n}\nclass RemoveBundleResponse {\n static fromProto(proto) {\n let m = new RemoveBundleResponse();\n m = Object.assign(m, proto);\n if (proto.invoice) {\n m.invoice = Invoice.fromProto(proto.invoice);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.invoice !== 'undefined' && this.invoice !== null) {\n toReturn['invoice'] = 'toApiJson' in this.invoice ? this.invoice.toApiJson() : this.invoice;\n }\n return toReturn;\n }\n}\nclass SendInvoiceRequest {\n static fromProto(proto) {\n let m = new SendInvoiceRequest();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.merchantId !== 'undefined') {\n toReturn['merchantId'] = this.merchantId;\n }\n if (typeof this.invoiceId !== 'undefined') {\n toReturn['invoiceId'] = this.invoiceId;\n }\n if (typeof this.emailAddresses !== 'undefined') {\n toReturn['emailAddresses'] = this.emailAddresses;\n }\n if (typeof this.languageCode !== 'undefined') {\n toReturn['languageCode'] = this.languageCode;\n }\n return toReturn;\n }\n}\nclass UpdateBundleRequest {\n static fromProto(proto) {\n let m = new UpdateBundleRequest();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.merchantId !== 'undefined') {\n toReturn['merchantId'] = this.merchantId;\n }\n if (typeof this.invoiceId !== 'undefined') {\n toReturn['invoiceId'] = this.invoiceId;\n }\n if (typeof this.bundleId !== 'undefined') {\n toReturn['bundleId'] = this.bundleId;\n }\n if (typeof this.hideBundleItems !== 'undefined') {\n toReturn['hideBundleItems'] = this.hideBundleItems;\n }\n if (typeof this.bundleInstanceId !== 'undefined') {\n toReturn['bundleInstanceId'] = this.bundleInstanceId;\n }\n return toReturn;\n }\n}\nclass UpdateBundleResponse {\n static fromProto(proto) {\n let m = new UpdateBundleResponse();\n m = Object.assign(m, proto);\n if (proto.invoice) {\n m.invoice = Invoice.fromProto(proto.invoice);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.invoice !== 'undefined' && this.invoice !== null) {\n toReturn['invoice'] = 'toApiJson' in this.invoice ? this.invoice.toApiJson() : this.invoice;\n }\n return toReturn;\n }\n}\nclass UpdateDefaultTaxRatesRequest {\n static fromProto(proto) {\n let m = new UpdateDefaultTaxRatesRequest();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.invoiceId !== 'undefined') {\n toReturn['invoiceId'] = this.invoiceId;\n }\n if (typeof this.merchantId !== 'undefined') {\n toReturn['merchantId'] = this.merchantId;\n }\n if (typeof this.taxRateIds !== 'undefined') {\n toReturn['taxRateIds'] = this.taxRateIds;\n }\n return toReturn;\n }\n}\nclass UpdateDefaultTaxRatesResponse {\n static fromProto(proto) {\n let m = new UpdateDefaultTaxRatesResponse();\n m = Object.assign(m, proto);\n if (proto.invoice) {\n m.invoice = Invoice.fromProto(proto.invoice);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.invoice !== 'undefined' && this.invoice !== null) {\n toReturn['invoice'] = 'toApiJson' in this.invoice ? this.invoice.toApiJson() : this.invoice;\n }\n return toReturn;\n }\n}\nclass UpdateInvoiceRequest {\n static fromProto(proto) {\n let m = new UpdateInvoiceRequest();\n m = Object.assign(m, proto);\n if (proto.invoice) {\n m.invoice = Invoice.fromProto(proto.invoice);\n }\n if (proto.fieldMask) {\n m.fieldMask = FieldMask.fromProto(proto.fieldMask);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.invoice !== 'undefined' && this.invoice !== null) {\n toReturn['invoice'] = 'toApiJson' in this.invoice ? this.invoice.toApiJson() : this.invoice;\n }\n if (typeof this.fieldMask !== 'undefined' && this.fieldMask !== null) {\n toReturn['fieldMask'] = 'toApiJson' in this.fieldMask ? this.fieldMask.toApiJson() : this.fieldMask;\n }\n return toReturn;\n }\n}\nclass UpdateInvoiceResponse {\n static fromProto(proto) {\n let m = new UpdateInvoiceResponse();\n m = Object.assign(m, proto);\n if (proto.invoice) {\n m.invoice = Invoice.fromProto(proto.invoice);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.invoice !== 'undefined' && this.invoice !== null) {\n toReturn['invoice'] = 'toApiJson' in this.invoice ? this.invoice.toApiJson() : this.invoice;\n }\n return toReturn;\n }\n}\nclass UpdateLineItemRequest {\n static fromProto(proto) {\n let m = new UpdateLineItemRequest();\n m = Object.assign(m, proto);\n if (proto.amount) {\n m.amount = parseInt(proto.amount, 10);\n }\n if (proto.discounts) {\n m.discounts = proto.discounts.map(AppliedDiscount.fromProto);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.merchantId !== 'undefined') {\n toReturn['merchantId'] = this.merchantId;\n }\n if (typeof this.invoiceId !== 'undefined') {\n toReturn['invoiceId'] = this.invoiceId;\n }\n if (typeof this.id !== 'undefined') {\n toReturn['id'] = this.id;\n }\n if (typeof this.sku !== 'undefined') {\n toReturn['sku'] = this.sku;\n }\n if (typeof this.amount !== 'undefined') {\n toReturn['amount'] = this.amount;\n }\n if (typeof this.quantity !== 'undefined') {\n toReturn['quantity'] = this.quantity;\n }\n if (typeof this.description !== 'undefined') {\n toReturn['description'] = this.description;\n }\n if (typeof this.taxRates !== 'undefined') {\n toReturn['taxRates'] = this.taxRates;\n }\n if (typeof this.discounts !== 'undefined' && this.discounts !== null) {\n toReturn['discounts'] = 'toApiJson' in this.discounts ? this.discounts.toApiJson() : this.discounts;\n }\n return toReturn;\n }\n}\nclass UpdateLineItemResponse {\n static fromProto(proto) {\n let m = new UpdateLineItemResponse();\n m = Object.assign(m, proto);\n if (proto.invoice) {\n m.invoice = Invoice.fromProto(proto.invoice);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.invoice !== 'undefined' && this.invoice !== null) {\n toReturn['invoice'] = 'toApiJson' in this.invoice ? this.invoice.toApiJson() : this.invoice;\n }\n return toReturn;\n }\n}\nclass VoidInvoiceRequest {\n static fromProto(proto) {\n let m = new VoidInvoiceRequest();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.merchantId !== 'undefined') {\n toReturn['merchantId'] = this.merchantId;\n }\n if (typeof this.invoiceId !== 'undefined') {\n toReturn['invoiceId'] = this.invoiceId;\n }\n if (typeof this.reason !== 'undefined') {\n toReturn['reason'] = this.reason;\n }\n return toReturn;\n }\n}\nfunction enumStringToValue$m(enumRef, value) {\n if (typeof value === 'number') {\n return value;\n }\n return enumRef[value];\n}\nclass AccountBalance {\n static fromProto(proto) {\n let m = new AccountBalance();\n m = Object.assign(m, proto);\n if (proto.available) {\n m.available = proto.available.map(BalanceAmount.fromProto);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.available !== 'undefined' && this.available !== null) {\n toReturn['available'] = 'toApiJson' in this.available ? this.available.toApiJson() : this.available;\n }\n return toReturn;\n }\n}\nclass Balance {\n static fromProto(proto) {\n let m = new Balance();\n m = Object.assign(m, proto);\n if (proto.amount) {\n m.amount = parseInt(proto.amount, 10);\n }\n if (proto.futurePayouts) {\n m.futurePayouts = parseInt(proto.futurePayouts, 10);\n }\n if (proto.inTransit) {\n m.inTransit = parseInt(proto.inTransit, 10);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.currencyCode !== 'undefined') {\n toReturn['currencyCode'] = this.currencyCode;\n }\n if (typeof this.amount !== 'undefined') {\n toReturn['amount'] = this.amount;\n }\n if (typeof this.futurePayouts !== 'undefined') {\n toReturn['futurePayouts'] = this.futurePayouts;\n }\n if (typeof this.inTransit !== 'undefined') {\n toReturn['inTransit'] = this.inTransit;\n }\n return toReturn;\n }\n}\nclass BalanceAmount {\n static fromProto(proto) {\n let m = new BalanceAmount();\n m = Object.assign(m, proto);\n if (proto.amount) {\n m.amount = parseInt(proto.amount, 10);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.currencyCode !== 'undefined') {\n toReturn['currencyCode'] = this.currencyCode;\n }\n if (typeof this.amount !== 'undefined') {\n toReturn['amount'] = this.amount;\n }\n return toReturn;\n }\n}\nfunction enumStringToValue$l(enumRef, value) {\n if (typeof value === 'number') {\n return value;\n }\n return enumRef[value];\n}\nclass DateRange {\n static fromProto(proto) {\n let m = new DateRange();\n m = Object.assign(m, proto);\n if (proto.start) {\n m.start = new Date(proto.start);\n }\n if (proto.end) {\n m.end = new Date(proto.end);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.start !== 'undefined' && this.start !== null) {\n toReturn['start'] = 'toApiJson' in this.start ? this.start.toApiJson() : this.start;\n }\n if (typeof this.end !== 'undefined' && this.end !== null) {\n toReturn['end'] = 'toApiJson' in this.end ? this.end.toApiJson() : this.end;\n }\n return toReturn;\n }\n}\nfunction enumStringToValue$k(enumRef, value) {\n if (typeof value === 'number') {\n return value;\n }\n return enumRef[value];\n}\nclass ListPayoutsRequestFilters {\n static fromProto(proto) {\n let m = new ListPayoutsRequestFilters();\n m = Object.assign(m, proto);\n if (proto.arrivalDateRange) {\n m.arrivalDateRange = DateRange.fromProto(proto.arrivalDateRange);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.arrivalDateRange !== 'undefined' && this.arrivalDateRange !== null) {\n toReturn['arrivalDateRange'] = 'toApiJson' in this.arrivalDateRange ? this.arrivalDateRange.toApiJson() : this.arrivalDateRange;\n }\n return toReturn;\n }\n}\nclass ListPayoutsRequest {\n static fromProto(proto) {\n let m = new ListPayoutsRequest();\n m = Object.assign(m, proto);\n if (proto.filters) {\n m.filters = ListPayoutsRequestFilters.fromProto(proto.filters);\n }\n if (proto.pagingOptions) {\n m.pagingOptions = PagedRequestOptions.fromProto(proto.pagingOptions);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.filters !== 'undefined' && this.filters !== null) {\n toReturn['filters'] = 'toApiJson' in this.filters ? this.filters.toApiJson() : this.filters;\n }\n if (typeof this.pagingOptions !== 'undefined' && this.pagingOptions !== null) {\n toReturn['pagingOptions'] = 'toApiJson' in this.pagingOptions ? this.pagingOptions.toApiJson() : this.pagingOptions;\n }\n if (typeof this.subsidiary !== 'undefined') {\n toReturn['subsidiary'] = this.subsidiary;\n }\n return toReturn;\n }\n}\nclass ListPayoutsResponse {\n static fromProto(proto) {\n let m = new ListPayoutsResponse();\n m = Object.assign(m, proto);\n if (proto.payouts) {\n m.payouts = proto.payouts.map(Payout.fromProto);\n }\n if (proto.pagingMetadata) {\n m.pagingMetadata = PagedResponseMetadata.fromProto(proto.pagingMetadata);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.payouts !== 'undefined' && this.payouts !== null) {\n toReturn['payouts'] = 'toApiJson' in this.payouts ? this.payouts.toApiJson() : this.payouts;\n }\n if (typeof this.pagingMetadata !== 'undefined' && this.pagingMetadata !== null) {\n toReturn['pagingMetadata'] = 'toApiJson' in this.pagingMetadata ? this.pagingMetadata.toApiJson() : this.pagingMetadata;\n }\n return toReturn;\n }\n}\nclass Payout {\n static fromProto(proto) {\n let m = new Payout();\n m = Object.assign(m, proto);\n if (proto.arrivalDate) {\n m.arrivalDate = new Date(proto.arrivalDate);\n }\n if (proto.amount) {\n m.amount = parseInt(proto.amount, 10);\n }\n if (proto.currency) {\n m.currency = enumStringToValue$k(Currency, proto.currency);\n }\n if (proto.status) {\n m.status = enumStringToValue$k(PayoutStatus, proto.status);\n }\n if (proto.type) {\n m.type = enumStringToValue$k(PayoutType, proto.type);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.id !== 'undefined') {\n toReturn['id'] = this.id;\n }\n if (typeof this.arrivalDate !== 'undefined' && this.arrivalDate !== null) {\n toReturn['arrivalDate'] = 'toApiJson' in this.arrivalDate ? this.arrivalDate.toApiJson() : this.arrivalDate;\n }\n if (typeof this.amount !== 'undefined') {\n toReturn['amount'] = this.amount;\n }\n if (typeof this.currency !== 'undefined') {\n toReturn['currency'] = this.currency;\n }\n if (typeof this.status !== 'undefined') {\n toReturn['status'] = this.status;\n }\n if (typeof this.type !== 'undefined') {\n toReturn['type'] = this.type;\n }\n if (typeof this.lastFourDigits !== 'undefined') {\n toReturn['lastFourDigits'] = this.lastFourDigits;\n }\n if (typeof this.bankName !== 'undefined') {\n toReturn['bankName'] = this.bankName;\n }\n if (typeof this.bankId !== 'undefined') {\n toReturn['bankId'] = this.bankId;\n }\n return toReturn;\n }\n}\nclass ReconcilePayoutRequest {\n static fromProto(proto) {\n let m = new ReconcilePayoutRequest();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.bankReconciliationId !== 'undefined') {\n toReturn['bankReconciliationId'] = this.bankReconciliationId;\n }\n if (typeof this.payoutId !== 'undefined') {\n toReturn['payoutId'] = this.payoutId;\n }\n if (typeof this.allowRetries !== 'undefined') {\n toReturn['allowRetries'] = this.allowRetries;\n }\n if (typeof this.subsidiary !== 'undefined') {\n toReturn['subsidiary'] = this.subsidiary;\n }\n return toReturn;\n }\n}\nclass ReconcilePayoutResponse {\n static fromProto(proto) {\n let m = new ReconcilePayoutResponse();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.pipelineId !== 'undefined') {\n toReturn['pipelineId'] = this.pipelineId;\n }\n return toReturn;\n }\n}\nclass RetailPayout {\n static fromProto(proto) {\n let m = new RetailPayout();\n m = Object.assign(m, proto);\n if (proto.arrivalDate) {\n m.arrivalDate = new Date(proto.arrivalDate);\n }\n if (proto.amount) {\n m.amount = parseInt(proto.amount, 10);\n }\n if (proto.status) {\n m.status = enumStringToValue$k(PayoutStatus, proto.status);\n }\n if (proto.type) {\n m.type = enumStringToValue$k(PayoutType, proto.type);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.id !== 'undefined') {\n toReturn['id'] = this.id;\n }\n if (typeof this.arrivalDate !== 'undefined' && this.arrivalDate !== null) {\n toReturn['arrivalDate'] = 'toApiJson' in this.arrivalDate ? this.arrivalDate.toApiJson() : this.arrivalDate;\n }\n if (typeof this.amount !== 'undefined') {\n toReturn['amount'] = this.amount;\n }\n if (typeof this.currencyCode !== 'undefined') {\n toReturn['currencyCode'] = this.currencyCode;\n }\n if (typeof this.status !== 'undefined') {\n toReturn['status'] = this.status;\n }\n if (typeof this.type !== 'undefined') {\n toReturn['type'] = this.type;\n }\n if (typeof this.lastFourDigits !== 'undefined') {\n toReturn['lastFourDigits'] = this.lastFourDigits;\n }\n if (typeof this.bankName !== 'undefined') {\n toReturn['bankName'] = this.bankName;\n }\n if (typeof this.bankId !== 'undefined') {\n toReturn['bankId'] = this.bankId;\n }\n if (typeof this.failureCode !== 'undefined') {\n toReturn['failureCode'] = this.failureCode;\n }\n if (typeof this.failureMessage !== 'undefined') {\n toReturn['failureMessage'] = this.failureMessage;\n }\n return toReturn;\n }\n}\nfunction enumStringToValue$j(enumRef, value) {\n if (typeof value === 'number') {\n return value;\n }\n return enumRef[value];\n}\nclass CancelRetailBillingRequest {\n static fromProto(proto) {\n let m = new CancelRetailBillingRequest();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.merchantId !== 'undefined') {\n toReturn['merchantId'] = this.merchantId;\n }\n return toReturn;\n }\n}\nclass ChargeSalesInvoiceRequest {\n static fromProto(proto) {\n let m = new ChargeSalesInvoiceRequest();\n m = Object.assign(m, proto);\n if (proto.amount) {\n m.amount = parseInt(proto.amount, 10);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.merchantId !== 'undefined') {\n toReturn['merchantId'] = this.merchantId;\n }\n if (typeof this.invoiceId !== 'undefined') {\n toReturn['invoiceId'] = this.invoiceId;\n }\n if (typeof this.amount !== 'undefined') {\n toReturn['amount'] = this.amount;\n }\n return toReturn;\n }\n}\nclass ConnectStripeAccountRequest {\n static fromProto(proto) {\n let m = new ConnectStripeAccountRequest();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.countryCode !== 'undefined') {\n toReturn['countryCode'] = this.countryCode;\n }\n if (typeof this.failureUrl !== 'undefined') {\n toReturn['failureUrl'] = this.failureUrl;\n }\n if (typeof this.successUrl !== 'undefined') {\n toReturn['successUrl'] = this.successUrl;\n }\n if (typeof this.merchantId !== 'undefined') {\n toReturn['merchantId'] = this.merchantId;\n }\n return toReturn;\n }\n}\nclass ConnectStripeAccountResponse {\n static fromProto(proto) {\n let m = new ConnectStripeAccountResponse();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.stripeUrl !== 'undefined') {\n toReturn['stripeUrl'] = this.stripeUrl;\n }\n if (typeof this.error !== 'undefined') {\n toReturn['error'] = this.error;\n }\n return toReturn;\n }\n}\nclass CreateMerchantRequest {\n static fromProto(proto) {\n let m = new CreateMerchantRequest();\n m = Object.assign(m, proto);\n if (proto.includeInFinancialRecords) {\n m.includeInFinancialRecords = CreateMerchantRequestIncludeInFinancialRecords.fromProto(proto.includeInFinancialRecords);\n }\n if (proto.merchantType) {\n m.merchantType = enumStringToValue$j(MerchantType, proto.merchantType);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.merchantId !== 'undefined') {\n toReturn['merchantId'] = this.merchantId;\n }\n if (typeof this.address !== 'undefined') {\n toReturn['address'] = this.address;\n }\n if (typeof this.city !== 'undefined') {\n toReturn['city'] = this.city;\n }\n if (typeof this.state !== 'undefined') {\n toReturn['state'] = this.state;\n }\n if (typeof this.country !== 'undefined') {\n toReturn['country'] = this.country;\n }\n if (typeof this.zipCode !== 'undefined') {\n toReturn['zipCode'] = this.zipCode;\n }\n if (typeof this.emailAddress !== 'undefined') {\n toReturn['emailAddress'] = this.emailAddress;\n }\n if (typeof this.phoneNumber !== 'undefined') {\n toReturn['phoneNumber'] = this.phoneNumber;\n }\n if (typeof this.contactName !== 'undefined') {\n toReturn['contactName'] = this.contactName;\n }\n if (typeof this.companyName !== 'undefined') {\n toReturn['companyName'] = this.companyName;\n }\n if (typeof this.additionalEmailAddresses !== 'undefined') {\n toReturn['additionalEmailAddresses'] = this.additionalEmailAddresses;\n }\n if (typeof this.includeInFinancialRecords !== 'undefined' && this.includeInFinancialRecords !== null) {\n toReturn['includeInFinancialRecords'] = 'toApiJson' in this.includeInFinancialRecords ? this.includeInFinancialRecords.toApiJson() : this.includeInFinancialRecords;\n }\n if (typeof this.hasAlternativePaymentMethod !== 'undefined') {\n toReturn['hasAlternativePaymentMethod'] = this.hasAlternativePaymentMethod;\n }\n if (typeof this.merchantType !== 'undefined') {\n toReturn['merchantType'] = this.merchantType;\n }\n return toReturn;\n }\n}\nclass DefaultCustomerConfiguration {\n static fromProto(proto) {\n let m = new DefaultCustomerConfiguration();\n m = Object.assign(m, proto);\n if (proto.invoiceDay) {\n m.invoiceDay = parseInt(proto.invoiceDay, 10);\n }\n if (proto.netD) {\n m.netD = parseInt(proto.netD, 10);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.generateMethod !== 'undefined') {\n toReturn['generateMethod'] = this.generateMethod;\n }\n if (typeof this.collectionMethod !== 'undefined') {\n toReturn['collectionMethod'] = this.collectionMethod;\n }\n if (typeof this.invoiceDay !== 'undefined') {\n toReturn['invoiceDay'] = this.invoiceDay;\n }\n if (typeof this.memo !== 'undefined') {\n toReturn['memo'] = this.memo;\n }\n if (typeof this.netD !== 'undefined') {\n toReturn['netD'] = this.netD;\n }\n if (typeof this.autoGenerateRetailSubscriptions !== 'undefined') {\n toReturn['autoGenerateRetailSubscriptions'] = this.autoGenerateRetailSubscriptions;\n }\n return toReturn;\n }\n}\nclass GetMerchantRequest {\n static fromProto(proto) {\n let m = new GetMerchantRequest();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.merchantId !== 'undefined') {\n toReturn['merchantId'] = this.merchantId;\n }\n return toReturn;\n }\n}\nclass GetMerchantResponse {\n static fromProto(proto) {\n let m = new GetMerchantResponse();\n m = Object.assign(m, proto);\n if (proto.merchant) {\n m.merchant = Merchant.fromProto(proto.merchant);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.merchant !== 'undefined' && this.merchant !== null) {\n toReturn['merchant'] = 'toApiJson' in this.merchant ? this.merchant.toApiJson() : this.merchant;\n }\n return toReturn;\n }\n}\nclass GetMultiRetailConfigurationsRequest {\n static fromProto(proto) {\n let m = new GetMultiRetailConfigurationsRequest();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.merchantId !== 'undefined') {\n toReturn['merchantId'] = this.merchantId;\n }\n if (typeof this.retailGroupIds !== 'undefined') {\n toReturn['retailGroupIds'] = this.retailGroupIds;\n }\n return toReturn;\n }\n}\nclass GetMultiRetailConfigurationsResponse {\n static fromProto(proto) {\n let m = new GetMultiRetailConfigurationsResponse();\n m = Object.assign(m, proto);\n if (proto.retailConfigurations) {\n m.retailConfigurations = Object.keys(proto.retailConfigurations).reduce((obj, k) => {\n obj[k] = RetailConfiguration.fromProto(proto.retailConfigurations[k]);\n return obj;\n }, {});\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.retailConfigurations !== 'undefined' && this.retailConfigurations !== null) {\n toReturn['retailConfigurations'] = 'toApiJson' in this.retailConfigurations ? this.retailConfigurations.toApiJson() : this.retailConfigurations;\n }\n return toReturn;\n }\n}\nclass GetOutstandingBalanceRequest {\n static fromProto(proto) {\n let m = new GetOutstandingBalanceRequest();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.merchantId !== 'undefined') {\n toReturn['merchantId'] = this.merchantId;\n }\n return toReturn;\n }\n}\nclass GetOutstandingBalanceResponse {\n static fromProto(proto) {\n let m = new GetOutstandingBalanceResponse();\n m = Object.assign(m, proto);\n if (proto.outstandingBalance) {\n m.outstandingBalance = parseInt(proto.outstandingBalance, 10);\n }\n if (proto.currency) {\n m.currency = enumStringToValue$j(Currency, proto.currency);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.outstandingBalance !== 'undefined') {\n toReturn['outstandingBalance'] = this.outstandingBalance;\n }\n if (typeof this.currency !== 'undefined') {\n toReturn['currency'] = this.currency;\n }\n return toReturn;\n }\n}\nclass GetPayoutSummaryRequest {\n static fromProto(proto) {\n let m = new GetPayoutSummaryRequest();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.merchantId !== 'undefined') {\n toReturn['merchantId'] = this.merchantId;\n }\n return toReturn;\n }\n}\nclass GetPayoutSummaryResponse {\n static fromProto(proto) {\n let m = new GetPayoutSummaryResponse();\n m = Object.assign(m, proto);\n if (proto.balances) {\n m.balances = proto.balances.map(Balance.fromProto);\n }\n if (proto.nextInTransitPayoutExpectedDate) {\n m.nextInTransitPayoutExpectedDate = new Date(proto.nextInTransitPayoutExpectedDate);\n }\n if (proto.payoutDelayDays) {\n m.payoutDelayDays = parseInt(proto.payoutDelayDays, 10);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.balances !== 'undefined' && this.balances !== null) {\n toReturn['balances'] = 'toApiJson' in this.balances ? this.balances.toApiJson() : this.balances;\n }\n if (typeof this.nextInTransitPayoutExpectedDate !== 'undefined' && this.nextInTransitPayoutExpectedDate !== null) {\n toReturn['nextInTransitPayoutExpectedDate'] = 'toApiJson' in this.nextInTransitPayoutExpectedDate ? this.nextInTransitPayoutExpectedDate.toApiJson() : this.nextInTransitPayoutExpectedDate;\n }\n if (typeof this.payoutInterval !== 'undefined') {\n toReturn['payoutInterval'] = this.payoutInterval;\n }\n if (typeof this.payoutDelayDays !== 'undefined') {\n toReturn['payoutDelayDays'] = this.payoutDelayDays;\n }\n return toReturn;\n }\n}\nclass GetRetailAccountBalanceRequest {\n static fromProto(proto) {\n let m = new GetRetailAccountBalanceRequest();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.merchantId !== 'undefined') {\n toReturn['merchantId'] = this.merchantId;\n }\n return toReturn;\n }\n}\nclass GetRetailAccountBalanceResponse {\n static fromProto(proto) {\n let m = new GetRetailAccountBalanceResponse();\n m = Object.assign(m, proto);\n if (proto.balance) {\n m.balance = AccountBalance.fromProto(proto.balance);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.balance !== 'undefined' && this.balance !== null) {\n toReturn['balance'] = 'toApiJson' in this.balance ? this.balance.toApiJson() : this.balance;\n }\n return toReturn;\n }\n}\nclass GetRetailBalanceRequest {\n static fromProto(proto) {\n let m = new GetRetailBalanceRequest();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.merchantId !== 'undefined') {\n toReturn['merchantId'] = this.merchantId;\n }\n return toReturn;\n }\n}\nclass GetRetailBalanceResponse {\n static fromProto(proto) {\n let m = new GetRetailBalanceResponse();\n m = Object.assign(m, proto);\n if (proto.balances) {\n m.balances = proto.balances.map(Balance.fromProto);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.balances !== 'undefined' && this.balances !== null) {\n toReturn['balances'] = 'toApiJson' in this.balances ? this.balances.toApiJson() : this.balances;\n }\n return toReturn;\n }\n}\nclass GetRetailPayoutRequest {\n static fromProto(proto) {\n let m = new GetRetailPayoutRequest();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.merchantId !== 'undefined') {\n toReturn['merchantId'] = this.merchantId;\n }\n if (typeof this.payoutId !== 'undefined') {\n toReturn['payoutId'] = this.payoutId;\n }\n return toReturn;\n }\n}\nclass GetRetailPayoutResponse {\n static fromProto(proto) {\n let m = new GetRetailPayoutResponse();\n m = Object.assign(m, proto);\n if (proto.payout) {\n m.payout = RetailPayout.fromProto(proto.payout);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.payout !== 'undefined' && this.payout !== null) {\n toReturn['payout'] = 'toApiJson' in this.payout ? this.payout.toApiJson() : this.payout;\n }\n return toReturn;\n }\n}\nclass CreateMerchantRequestIncludeInFinancialRecords {\n static fromProto(proto) {\n let m = new CreateMerchantRequestIncludeInFinancialRecords();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.includeInFinancialRecords !== 'undefined') {\n toReturn['includeInFinancialRecords'] = this.includeInFinancialRecords;\n }\n return toReturn;\n }\n}\nclass UpdateMerchantRequestIncludeInFinancialRecords {\n static fromProto(proto) {\n let m = new UpdateMerchantRequestIncludeInFinancialRecords();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.includeInFinancialRecords !== 'undefined') {\n toReturn['includeInFinancialRecords'] = this.includeInFinancialRecords;\n }\n return toReturn;\n }\n}\nclass ListRetailPayoutsRequest {\n static fromProto(proto) {\n let m = new ListRetailPayoutsRequest();\n m = Object.assign(m, proto);\n if (proto.pagingOptions) {\n m.pagingOptions = PagedRequestOptions.fromProto(proto.pagingOptions);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.merchantId !== 'undefined') {\n toReturn['merchantId'] = this.merchantId;\n }\n if (typeof this.pagingOptions !== 'undefined' && this.pagingOptions !== null) {\n toReturn['pagingOptions'] = 'toApiJson' in this.pagingOptions ? this.pagingOptions.toApiJson() : this.pagingOptions;\n }\n return toReturn;\n }\n}\nclass ListRetailPayoutsResponse {\n static fromProto(proto) {\n let m = new ListRetailPayoutsResponse();\n m = Object.assign(m, proto);\n if (proto.payouts) {\n m.payouts = proto.payouts.map(RetailPayout.fromProto);\n }\n if (proto.pagingMetadata) {\n m.pagingMetadata = PagedResponseMetadata.fromProto(proto.pagingMetadata);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.payouts !== 'undefined' && this.payouts !== null) {\n toReturn['payouts'] = 'toApiJson' in this.payouts ? this.payouts.toApiJson() : this.payouts;\n }\n if (typeof this.pagingMetadata !== 'undefined' && this.pagingMetadata !== null) {\n toReturn['pagingMetadata'] = 'toApiJson' in this.pagingMetadata ? this.pagingMetadata.toApiJson() : this.pagingMetadata;\n }\n return toReturn;\n }\n}\nclass Merchant {\n static fromProto(proto) {\n let m = new Merchant();\n m = Object.assign(m, proto);\n if (proto.merchantType) {\n m.merchantType = enumStringToValue$j(MerchantType, proto.merchantType);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.merchantId !== 'undefined') {\n toReturn['merchantId'] = this.merchantId;\n }\n if (typeof this.address !== 'undefined') {\n toReturn['address'] = this.address;\n }\n if (typeof this.city !== 'undefined') {\n toReturn['city'] = this.city;\n }\n if (typeof this.state !== 'undefined') {\n toReturn['state'] = this.state;\n }\n if (typeof this.country !== 'undefined') {\n toReturn['country'] = this.country;\n }\n if (typeof this.zipCode !== 'undefined') {\n toReturn['zipCode'] = this.zipCode;\n }\n if (typeof this.emailAddress !== 'undefined') {\n toReturn['emailAddress'] = this.emailAddress;\n }\n if (typeof this.phoneNumber !== 'undefined') {\n toReturn['phoneNumber'] = this.phoneNumber;\n }\n if (typeof this.contactName !== 'undefined') {\n toReturn['contactName'] = this.contactName;\n }\n if (typeof this.companyName !== 'undefined') {\n toReturn['companyName'] = this.companyName;\n }\n if (typeof this.autoPostInvoices !== 'undefined') {\n toReturn['autoPostInvoices'] = this.autoPostInvoices;\n }\n if (typeof this.autoChargeInvoices !== 'undefined') {\n toReturn['autoChargeInvoices'] = this.autoChargeInvoices;\n }\n if (typeof this.includeInFinancialRecords !== 'undefined') {\n toReturn['includeInFinancialRecords'] = this.includeInFinancialRecords;\n }\n if (typeof this.additionalEmailAddresses !== 'undefined') {\n toReturn['additionalEmailAddresses'] = this.additionalEmailAddresses;\n }\n if (typeof this.hasAlternativePaymentMethod !== 'undefined') {\n toReturn['hasAlternativePaymentMethod'] = this.hasAlternativePaymentMethod;\n }\n if (typeof this.stripeAccountId !== 'undefined') {\n toReturn['stripeAccountId'] = this.stripeAccountId;\n }\n if (typeof this.merchantType !== 'undefined') {\n toReturn['merchantType'] = this.merchantType;\n }\n return toReturn;\n }\n}\nclass RetailConfiguration {\n static fromProto(proto) {\n let m = new RetailConfiguration();\n m = Object.assign(m, proto);\n if (proto.defaultCustomerConfiguration) {\n m.defaultCustomerConfiguration = DefaultCustomerConfiguration.fromProto(proto.defaultCustomerConfiguration);\n }\n if (proto.currencyConversionRate) {\n m.currencyConversionRate = parseInt(proto.currencyConversionRate, 10);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.merchantId !== 'undefined') {\n toReturn['merchantId'] = this.merchantId;\n }\n if (typeof this.retailGroupId !== 'undefined') {\n toReturn['retailGroupId'] = this.retailGroupId;\n }\n if (typeof this.currencyCode !== 'undefined') {\n toReturn['currencyCode'] = this.currencyCode;\n }\n if (typeof this.defaultCustomerConfiguration !== 'undefined' && this.defaultCustomerConfiguration !== null) {\n toReturn['defaultCustomerConfiguration'] = 'toApiJson' in this.defaultCustomerConfiguration ? this.defaultCustomerConfiguration.toApiJson() : this.defaultCustomerConfiguration;\n }\n if (typeof this.currencyConversionRate !== 'undefined') {\n toReturn['currencyConversionRate'] = this.currencyConversionRate;\n }\n return toReturn;\n }\n}\nclass GetMultiRetailConfigurationsResponseRetailConfigurationsEntry {\n static fromProto(proto) {\n let m = new GetMultiRetailConfigurationsResponseRetailConfigurationsEntry();\n m = Object.assign(m, proto);\n if (proto.value) {\n m.value = RetailConfiguration.fromProto(proto.value);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.key !== 'undefined') {\n toReturn['key'] = this.key;\n }\n if (typeof this.value !== 'undefined' && this.value !== null) {\n toReturn['value'] = 'toApiJson' in this.value ? this.value.toApiJson() : this.value;\n }\n return toReturn;\n }\n}\nclass SearchMerchantsRequest {\n static fromProto(proto) {\n let m = new SearchMerchantsRequest();\n m = Object.assign(m, proto);\n if (proto.sortBy) {\n m.sortBy = enumStringToValue$j(SearchMerchantsRequestSortBy, proto.sortBy);\n }\n if (proto.sortDirection) {\n m.sortDirection = enumStringToValue$j(SortDirection, proto.sortDirection);\n }\n if (proto.pagingOptions) {\n m.pagingOptions = PagedRequestOptions.fromProto(proto.pagingOptions);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.searchTerm !== 'undefined') {\n toReturn['searchTerm'] = this.searchTerm;\n }\n if (typeof this.sortBy !== 'undefined') {\n toReturn['sortBy'] = this.sortBy;\n }\n if (typeof this.sortDirection !== 'undefined') {\n toReturn['sortDirection'] = this.sortDirection;\n }\n if (typeof this.pagingOptions !== 'undefined' && this.pagingOptions !== null) {\n toReturn['pagingOptions'] = 'toApiJson' in this.pagingOptions ? this.pagingOptions.toApiJson() : this.pagingOptions;\n }\n return toReturn;\n }\n}\nclass SearchMerchantsResponse {\n static fromProto(proto) {\n let m = new SearchMerchantsResponse();\n m = Object.assign(m, proto);\n if (proto.merchants) {\n m.merchants = proto.merchants.map(Merchant.fromProto);\n }\n if (proto.pagingMetadata) {\n m.pagingMetadata = PagedResponseMetadata.fromProto(proto.pagingMetadata);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.merchants !== 'undefined' && this.merchants !== null) {\n toReturn['merchants'] = 'toApiJson' in this.merchants ? this.merchants.toApiJson() : this.merchants;\n }\n if (typeof this.pagingMetadata !== 'undefined' && this.pagingMetadata !== null) {\n toReturn['pagingMetadata'] = 'toApiJson' in this.pagingMetadata ? this.pagingMetadata.toApiJson() : this.pagingMetadata;\n }\n return toReturn;\n }\n}\nclass SetAutoChargeInvoicesRequest {\n static fromProto(proto) {\n let m = new SetAutoChargeInvoicesRequest();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.merchantId !== 'undefined') {\n toReturn['merchantId'] = this.merchantId;\n }\n if (typeof this.autoChargeInvoices !== 'undefined') {\n toReturn['autoChargeInvoices'] = this.autoChargeInvoices;\n }\n return toReturn;\n }\n}\nclass SetAutoPostInvoicesRequest {\n static fromProto(proto) {\n let m = new SetAutoPostInvoicesRequest();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.merchantId !== 'undefined') {\n toReturn['merchantId'] = this.merchantId;\n }\n if (typeof this.shouldAutoPostInvoices !== 'undefined') {\n toReturn['shouldAutoPostInvoices'] = this.shouldAutoPostInvoices;\n }\n return toReturn;\n }\n}\nclass SetDefaultPaymentCardRequest {\n static fromProto(proto) {\n let m = new SetDefaultPaymentCardRequest();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.merchantId !== 'undefined') {\n toReturn['merchantId'] = this.merchantId;\n }\n if (typeof this.cardId !== 'undefined') {\n toReturn['cardId'] = this.cardId;\n }\n return toReturn;\n }\n}\nclass SetHasAlternativePaymentMethodRequest {\n static fromProto(proto) {\n let m = new SetHasAlternativePaymentMethodRequest();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.merchantId !== 'undefined') {\n toReturn['merchantId'] = this.merchantId;\n }\n if (typeof this.hasAlternativePaymentMethod !== 'undefined') {\n toReturn['hasAlternativePaymentMethod'] = this.hasAlternativePaymentMethod;\n }\n return toReturn;\n }\n}\nclass SetIncludeInFinancialRecordsRequest {\n static fromProto(proto) {\n let m = new SetIncludeInFinancialRecordsRequest();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.merchantId !== 'undefined') {\n toReturn['merchantId'] = this.merchantId;\n }\n if (typeof this.includeInFinancialRecords !== 'undefined') {\n toReturn['includeInFinancialRecords'] = this.includeInFinancialRecords;\n }\n return toReturn;\n }\n}\nclass UpdateMerchantRequest {\n static fromProto(proto) {\n let m = new UpdateMerchantRequest();\n m = Object.assign(m, proto);\n if (proto.includeInFinancialRecords) {\n m.includeInFinancialRecords = UpdateMerchantRequestIncludeInFinancialRecords.fromProto(proto.includeInFinancialRecords);\n }\n if (proto.merchantType) {\n m.merchantType = enumStringToValue$j(MerchantType, proto.merchantType);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.merchantId !== 'undefined') {\n toReturn['merchantId'] = this.merchantId;\n }\n if (typeof this.address !== 'undefined') {\n toReturn['address'] = this.address;\n }\n if (typeof this.city !== 'undefined') {\n toReturn['city'] = this.city;\n }\n if (typeof this.state !== 'undefined') {\n toReturn['state'] = this.state;\n }\n if (typeof this.country !== 'undefined') {\n toReturn['country'] = this.country;\n }\n if (typeof this.zipCode !== 'undefined') {\n toReturn['zipCode'] = this.zipCode;\n }\n if (typeof this.emailAddress !== 'undefined') {\n toReturn['emailAddress'] = this.emailAddress;\n }\n if (typeof this.phoneNumber !== 'undefined') {\n toReturn['phoneNumber'] = this.phoneNumber;\n }\n if (typeof this.contactName !== 'undefined') {\n toReturn['contactName'] = this.contactName;\n }\n if (typeof this.companyName !== 'undefined') {\n toReturn['companyName'] = this.companyName;\n }\n if (typeof this.additionalEmailAddresses !== 'undefined') {\n toReturn['additionalEmailAddresses'] = this.additionalEmailAddresses;\n }\n if (typeof this.includeInFinancialRecords !== 'undefined' && this.includeInFinancialRecords !== null) {\n toReturn['includeInFinancialRecords'] = 'toApiJson' in this.includeInFinancialRecords ? this.includeInFinancialRecords.toApiJson() : this.includeInFinancialRecords;\n }\n if (typeof this.hasAlternativePaymentMethod !== 'undefined') {\n toReturn['hasAlternativePaymentMethod'] = this.hasAlternativePaymentMethod;\n }\n if (typeof this.merchantType !== 'undefined') {\n toReturn['merchantType'] = this.merchantType;\n }\n return toReturn;\n }\n}\nclass UpsertDefaultRetailCustomerConfigurationRequest {\n static fromProto(proto) {\n let m = new UpsertDefaultRetailCustomerConfigurationRequest();\n m = Object.assign(m, proto);\n if (proto.defaultCustomerConfiguration) {\n m.defaultCustomerConfiguration = DefaultCustomerConfiguration.fromProto(proto.defaultCustomerConfiguration);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.merchantId !== 'undefined') {\n toReturn['merchantId'] = this.merchantId;\n }\n if (typeof this.retailGroupId !== 'undefined') {\n toReturn['retailGroupId'] = this.retailGroupId;\n }\n if (typeof this.defaultCustomerConfiguration !== 'undefined' && this.defaultCustomerConfiguration !== null) {\n toReturn['defaultCustomerConfiguration'] = 'toApiJson' in this.defaultCustomerConfiguration ? this.defaultCustomerConfiguration.toApiJson() : this.defaultCustomerConfiguration;\n }\n return toReturn;\n }\n}\nclass UpsertRetailConfigurationRequest {\n static fromProto(proto) {\n let m = new UpsertRetailConfigurationRequest();\n m = Object.assign(m, proto);\n if (proto.currencyConversionRate) {\n m.currencyConversionRate = parseInt(proto.currencyConversionRate, 10);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.merchantId !== 'undefined') {\n toReturn['merchantId'] = this.merchantId;\n }\n if (typeof this.retailGroupId !== 'undefined') {\n toReturn['retailGroupId'] = this.retailGroupId;\n }\n if (typeof this.currencyCode !== 'undefined') {\n toReturn['currencyCode'] = this.currencyCode;\n }\n if (typeof this.currencyConversionRate !== 'undefined') {\n toReturn['currencyConversionRate'] = this.currencyConversionRate;\n }\n return toReturn;\n }\n}\nfunction enumStringToValue$i(enumRef, value) {\n if (typeof value === 'number') {\n return value;\n }\n return enumRef[value];\n}\nclass ListMerchantBillingReportsRequest {\n static fromProto(proto) {\n let m = new ListMerchantBillingReportsRequest();\n m = Object.assign(m, proto);\n if (proto.pagingOptions) {\n m.pagingOptions = PagedRequestOptions.fromProto(proto.pagingOptions);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.merchantId !== 'undefined') {\n toReturn['merchantId'] = this.merchantId;\n }\n if (typeof this.pagingOptions !== 'undefined' && this.pagingOptions !== null) {\n toReturn['pagingOptions'] = 'toApiJson' in this.pagingOptions ? this.pagingOptions.toApiJson() : this.pagingOptions;\n }\n return toReturn;\n }\n}\nclass ListMerchantBillingReportsResponse {\n static fromProto(proto) {\n let m = new ListMerchantBillingReportsResponse();\n m = Object.assign(m, proto);\n if (proto.reports) {\n m.reports = proto.reports.map(MerchantReport.fromProto);\n }\n if (proto.pagingMetadata) {\n m.pagingMetadata = PagedResponseMetadata.fromProto(proto.pagingMetadata);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.reports !== 'undefined' && this.reports !== null) {\n toReturn['reports'] = 'toApiJson' in this.reports ? this.reports.toApiJson() : this.reports;\n }\n if (typeof this.pagingMetadata !== 'undefined' && this.pagingMetadata !== null) {\n toReturn['pagingMetadata'] = 'toApiJson' in this.pagingMetadata ? this.pagingMetadata.toApiJson() : this.pagingMetadata;\n }\n return toReturn;\n }\n}\nclass MerchantReport {\n static fromProto(proto) {\n let m = new MerchantReport();\n m = Object.assign(m, proto);\n if (proto.year) {\n m.year = parseInt(proto.year, 10);\n }\n if (proto.month) {\n m.month = enumStringToValue$i(Month, proto.month);\n }\n if (proto.created) {\n m.created = new Date(proto.created);\n }\n if (proto.status) {\n m.status = enumStringToValue$i(MerchantReportStatus, proto.status);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.merchantId !== 'undefined') {\n toReturn['merchantId'] = this.merchantId;\n }\n if (typeof this.year !== 'undefined') {\n toReturn['year'] = this.year;\n }\n if (typeof this.month !== 'undefined') {\n toReturn['month'] = this.month;\n }\n if (typeof this.created !== 'undefined' && this.created !== null) {\n toReturn['created'] = 'toApiJson' in this.created ? this.created.toApiJson() : this.created;\n }\n if (typeof this.status !== 'undefined') {\n toReturn['status'] = this.status;\n }\n return toReturn;\n }\n}\nfunction enumStringToValue$h(enumRef, value) {\n if (typeof value === 'number') {\n return value;\n }\n return enumRef[value];\n}\nclass CreateMeteredComponentRequest {\n static fromProto(proto) {\n let m = new CreateMeteredComponentRequest();\n m = Object.assign(m, proto);\n if (proto.component) {\n m.component = MeteredComponent.fromProto(proto.component);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.component !== 'undefined' && this.component !== null) {\n toReturn['component'] = 'toApiJson' in this.component ? this.component.toApiJson() : this.component;\n }\n if (typeof this.sku !== 'undefined') {\n toReturn['sku'] = this.sku;\n }\n return toReturn;\n }\n}\nclass MeteredComponent {\n static fromProto(proto) {\n let m = new MeteredComponent();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.componentId !== 'undefined') {\n toReturn['componentId'] = this.componentId;\n }\n if (typeof this.name !== 'undefined') {\n toReturn['name'] = this.name;\n }\n return toReturn;\n }\n}\nclass TickComponentUsageRequest {\n static fromProto(proto) {\n let m = new TickComponentUsageRequest();\n m = Object.assign(m, proto);\n if (proto.quantity) {\n m.quantity = parseInt(proto.quantity, 10);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.merchantId !== 'undefined') {\n toReturn['merchantId'] = this.merchantId;\n }\n if (typeof this.customerId !== 'undefined') {\n toReturn['customerId'] = this.customerId;\n }\n if (typeof this.componentId !== 'undefined') {\n toReturn['componentId'] = this.componentId;\n }\n if (typeof this.orderId !== 'undefined') {\n toReturn['orderId'] = this.orderId;\n }\n if (typeof this.sku !== 'undefined') {\n toReturn['sku'] = this.sku;\n }\n if (typeof this.quantity !== 'undefined') {\n toReturn['quantity'] = this.quantity;\n }\n if (typeof this.idempotencyKey !== 'undefined') {\n toReturn['idempotencyKey'] = this.idempotencyKey;\n }\n return toReturn;\n }\n}\nfunction enumStringToValue$g(enumRef, value) {\n if (typeof value === 'number') {\n return value;\n }\n return enumRef[value];\n}\nclass Adjustment {\n static fromProto(proto) {\n let m = new Adjustment();\n m = Object.assign(m, proto);\n if (proto.amount) {\n m.amount = parseInt(proto.amount, 10);\n }\n if (proto.fee) {\n m.fee = parseInt(proto.fee, 10);\n }\n if (proto.net) {\n m.net = parseInt(proto.net, 10);\n }\n if (proto.refund) {\n m.refund = RetailRefund.fromProto(proto.refund);\n }\n if (proto.dispute) {\n m.dispute = Dispute.fromProto(proto.dispute);\n }\n if (proto.created) {\n m.created = new Date(proto.created);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.id !== 'undefined') {\n toReturn['id'] = this.id;\n }\n if (typeof this.amount !== 'undefined') {\n toReturn['amount'] = this.amount;\n }\n if (typeof this.currency !== 'undefined') {\n toReturn['currency'] = this.currency;\n }\n if (typeof this.description !== 'undefined') {\n toReturn['description'] = this.description;\n }\n if (typeof this.fee !== 'undefined') {\n toReturn['fee'] = this.fee;\n }\n if (typeof this.net !== 'undefined') {\n toReturn['net'] = this.net;\n }\n if (typeof this.refund !== 'undefined' && this.refund !== null) {\n toReturn['refund'] = 'toApiJson' in this.refund ? this.refund.toApiJson() : this.refund;\n }\n if (typeof this.dispute !== 'undefined' && this.dispute !== null) {\n toReturn['dispute'] = 'toApiJson' in this.dispute ? this.dispute.toApiJson() : this.dispute;\n }\n if (typeof this.created !== 'undefined' && this.created !== null) {\n toReturn['created'] = 'toApiJson' in this.created ? this.created.toApiJson() : this.created;\n }\n return toReturn;\n }\n}\nclass RetailPaymentCardDetails {\n static fromProto(proto) {\n let m = new RetailPaymentCardDetails();\n m = Object.assign(m, proto);\n if (proto.cardType) {\n m.cardType = enumStringToValue$g(CardType, proto.cardType);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.cardType !== 'undefined') {\n toReturn['cardType'] = this.cardType;\n }\n if (typeof this.lastFourDigits !== 'undefined') {\n toReturn['lastFourDigits'] = this.lastFourDigits;\n }\n return toReturn;\n }\n}\nclass CloseRetailDisputeRequest {\n static fromProto(proto) {\n let m = new CloseRetailDisputeRequest();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.merchantId !== 'undefined') {\n toReturn['merchantId'] = this.merchantId;\n }\n if (typeof this.disputeId !== 'undefined') {\n toReturn['disputeId'] = this.disputeId;\n }\n return toReturn;\n }\n}\nclass ConfigureRetailPaymentProviderRequest {\n static fromProto(proto) {\n let m = new ConfigureRetailPaymentProviderRequest();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.merchantId !== 'undefined') {\n toReturn['merchantId'] = this.merchantId;\n }\n if (typeof this.failureUrl !== 'undefined') {\n toReturn['failureUrl'] = this.failureUrl;\n }\n if (typeof this.successUrl !== 'undefined') {\n toReturn['successUrl'] = this.successUrl;\n }\n return toReturn;\n }\n}\nclass ConfigureRetailPaymentProviderResponse {\n static fromProto(proto) {\n let m = new ConfigureRetailPaymentProviderResponse();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.stripeUrl !== 'undefined') {\n toReturn['stripeUrl'] = this.stripeUrl;\n }\n if (typeof this.error !== 'undefined') {\n toReturn['error'] = this.error;\n }\n return toReturn;\n }\n}\nclass ConfirmRetailPaymentRequest {\n static fromProto(proto) {\n let m = new ConfirmRetailPaymentRequest();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.merchantId !== 'undefined') {\n toReturn['merchantId'] = this.merchantId;\n }\n if (typeof this.id !== 'undefined') {\n toReturn['id'] = this.id;\n }\n return toReturn;\n }\n}\nclass Dispute {\n static fromProto(proto) {\n let m = new Dispute();\n m = Object.assign(m, proto);\n if (proto.status) {\n m.status = enumStringToValue$g(DisputeStatus, proto.status);\n }\n if (proto.amount) {\n m.amount = parseInt(proto.amount, 10);\n }\n if (proto.created) {\n m.created = new Date(proto.created);\n }\n if (proto.evidence) {\n m.evidence = DisputeEvidence.fromProto(proto.evidence);\n }\n if (proto.evidenceDetails) {\n m.evidenceDetails = DisputeEvidenceDetails.fromProto(proto.evidenceDetails);\n }\n if (proto.fee) {\n m.fee = parseInt(proto.fee, 10);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.paymentId !== 'undefined') {\n toReturn['paymentId'] = this.paymentId;\n }\n if (typeof this.status !== 'undefined') {\n toReturn['status'] = this.status;\n }\n if (typeof this.id !== 'undefined') {\n toReturn['id'] = this.id;\n }\n if (typeof this.amount !== 'undefined') {\n toReturn['amount'] = this.amount;\n }\n if (typeof this.created !== 'undefined' && this.created !== null) {\n toReturn['created'] = 'toApiJson' in this.created ? this.created.toApiJson() : this.created;\n }\n if (typeof this.currencyCode !== 'undefined') {\n toReturn['currencyCode'] = this.currencyCode;\n }\n if (typeof this.evidence !== 'undefined' && this.evidence !== null) {\n toReturn['evidence'] = 'toApiJson' in this.evidence ? this.evidence.toApiJson() : this.evidence;\n }\n if (typeof this.evidenceDetails !== 'undefined' && this.evidenceDetails !== null) {\n toReturn['evidenceDetails'] = 'toApiJson' in this.evidenceDetails ? this.evidenceDetails.toApiJson() : this.evidenceDetails;\n }\n if (typeof this.isChargeRefundable !== 'undefined') {\n toReturn['isChargeRefundable'] = this.isChargeRefundable;\n }\n if (typeof this.reason !== 'undefined') {\n toReturn['reason'] = this.reason;\n }\n if (typeof this.fee !== 'undefined') {\n toReturn['fee'] = this.fee;\n }\n if (typeof this.feeCurrencyCode !== 'undefined') {\n toReturn['feeCurrencyCode'] = this.feeCurrencyCode;\n }\n return toReturn;\n }\n}\nclass DisputeEvidence {\n static fromProto(proto) {\n let m = new DisputeEvidence();\n m = Object.assign(m, proto);\n if (proto.customerCommunication) {\n m.customerCommunication = File.fromProto(proto.customerCommunication);\n }\n if (proto.customerSignature) {\n m.customerSignature = File.fromProto(proto.customerSignature);\n }\n if (proto.shippingDocumentation) {\n m.shippingDocumentation = File.fromProto(proto.shippingDocumentation);\n }\n if (proto.receipt) {\n m.receipt = File.fromProto(proto.receipt);\n }\n if (proto.uncategorizedFile) {\n m.uncategorizedFile = File.fromProto(proto.uncategorizedFile);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.customerCommunication !== 'undefined' && this.customerCommunication !== null) {\n toReturn['customerCommunication'] = 'toApiJson' in this.customerCommunication ? this.customerCommunication.toApiJson() : this.customerCommunication;\n }\n if (typeof this.customerSignature !== 'undefined' && this.customerSignature !== null) {\n toReturn['customerSignature'] = 'toApiJson' in this.customerSignature ? this.customerSignature.toApiJson() : this.customerSignature;\n }\n if (typeof this.shippingDocumentation !== 'undefined' && this.shippingDocumentation !== null) {\n toReturn['shippingDocumentation'] = 'toApiJson' in this.shippingDocumentation ? this.shippingDocumentation.toApiJson() : this.shippingDocumentation;\n }\n if (typeof this.receipt !== 'undefined' && this.receipt !== null) {\n toReturn['receipt'] = 'toApiJson' in this.receipt ? this.receipt.toApiJson() : this.receipt;\n }\n if (typeof this.uncategorizedFile !== 'undefined' && this.uncategorizedFile !== null) {\n toReturn['uncategorizedFile'] = 'toApiJson' in this.uncategorizedFile ? this.uncategorizedFile.toApiJson() : this.uncategorizedFile;\n }\n if (typeof this.billingAddress !== 'undefined') {\n toReturn['billingAddress'] = this.billingAddress;\n }\n if (typeof this.customerEmailAddress !== 'undefined') {\n toReturn['customerEmailAddress'] = this.customerEmailAddress;\n }\n if (typeof this.customerName !== 'undefined') {\n toReturn['customerName'] = this.customerName;\n }\n if (typeof this.productDescription !== 'undefined') {\n toReturn['productDescription'] = this.productDescription;\n }\n return toReturn;\n }\n}\nclass SubmitEvidenceRequestDisputeEvidence {\n static fromProto(proto) {\n let m = new SubmitEvidenceRequestDisputeEvidence();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.billingAddress !== 'undefined') {\n toReturn['billingAddress'] = this.billingAddress;\n }\n if (typeof this.customerEmailAddress !== 'undefined') {\n toReturn['customerEmailAddress'] = this.customerEmailAddress;\n }\n if (typeof this.customerName !== 'undefined') {\n toReturn['customerName'] = this.customerName;\n }\n if (typeof this.productDescription !== 'undefined') {\n toReturn['productDescription'] = this.productDescription;\n }\n if (typeof this.customerSignatureFileId !== 'undefined') {\n toReturn['customerSignatureFileId'] = this.customerSignatureFileId;\n }\n if (typeof this.customerCommunicationFileId !== 'undefined') {\n toReturn['customerCommunicationFileId'] = this.customerCommunicationFileId;\n }\n if (typeof this.receiptFileId !== 'undefined') {\n toReturn['receiptFileId'] = this.receiptFileId;\n }\n if (typeof this.shippingDocumentationFileId !== 'undefined') {\n toReturn['shippingDocumentationFileId'] = this.shippingDocumentationFileId;\n }\n if (typeof this.uncategorizedFileId !== 'undefined') {\n toReturn['uncategorizedFileId'] = this.uncategorizedFileId;\n }\n return toReturn;\n }\n}\nclass DisputeEvidenceDetails {\n static fromProto(proto) {\n let m = new DisputeEvidenceDetails();\n m = Object.assign(m, proto);\n if (proto.dueBy) {\n m.dueBy = new Date(proto.dueBy);\n }\n if (proto.submissionCount) {\n m.submissionCount = parseInt(proto.submissionCount, 10);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.dueBy !== 'undefined' && this.dueBy !== null) {\n toReturn['dueBy'] = 'toApiJson' in this.dueBy ? this.dueBy.toApiJson() : this.dueBy;\n }\n if (typeof this.hasEvidence !== 'undefined') {\n toReturn['hasEvidence'] = this.hasEvidence;\n }\n if (typeof this.pastDue !== 'undefined') {\n toReturn['pastDue'] = this.pastDue;\n }\n if (typeof this.submissionCount !== 'undefined') {\n toReturn['submissionCount'] = this.submissionCount;\n }\n return toReturn;\n }\n}\nclass File {\n static fromProto(proto) {\n let m = new File();\n m = Object.assign(m, proto);\n if (proto.created) {\n m.created = new Date(proto.created);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.created !== 'undefined' && this.created !== null) {\n toReturn['created'] = 'toApiJson' in this.created ? this.created.toApiJson() : this.created;\n }\n if (typeof this.id !== 'undefined') {\n toReturn['id'] = this.id;\n }\n if (typeof this.filename !== 'undefined') {\n toReturn['filename'] = this.filename;\n }\n if (typeof this.url !== 'undefined') {\n toReturn['url'] = this.url;\n }\n return toReturn;\n }\n}\nclass GetRetailDisputeRequest {\n static fromProto(proto) {\n let m = new GetRetailDisputeRequest();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.merchantId !== 'undefined') {\n toReturn['merchantId'] = this.merchantId;\n }\n if (typeof this.disputeId !== 'undefined') {\n toReturn['disputeId'] = this.disputeId;\n }\n return toReturn;\n }\n}\nclass GetRetailDisputeResponse {\n static fromProto(proto) {\n let m = new GetRetailDisputeResponse();\n m = Object.assign(m, proto);\n if (proto.dispute) {\n m.dispute = Dispute.fromProto(proto.dispute);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.dispute !== 'undefined' && this.dispute !== null) {\n toReturn['dispute'] = 'toApiJson' in this.dispute ? this.dispute.toApiJson() : this.dispute;\n }\n return toReturn;\n }\n}\nclass GetRetailPaymentProviderRequest {\n static fromProto(proto) {\n let m = new GetRetailPaymentProviderRequest();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.merchantId !== 'undefined') {\n toReturn['merchantId'] = this.merchantId;\n }\n return toReturn;\n }\n}\nclass GetRetailPaymentProviderResponse {\n static fromProto(proto) {\n let m = new GetRetailPaymentProviderResponse();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.statementDescriptor !== 'undefined') {\n toReturn['statementDescriptor'] = this.statementDescriptor;\n }\n if (typeof this.stripeConnectId !== 'undefined') {\n toReturn['stripeConnectId'] = this.stripeConnectId;\n }\n return toReturn;\n }\n}\nclass GetRetailPaymentRequest {\n static fromProto(proto) {\n let m = new GetRetailPaymentRequest();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.merchantId !== 'undefined') {\n toReturn['merchantId'] = this.merchantId;\n }\n if (typeof this.paymentId !== 'undefined') {\n toReturn['paymentId'] = this.paymentId;\n }\n return toReturn;\n }\n}\nclass GetRetailPaymentResponse {\n static fromProto(proto) {\n let m = new GetRetailPaymentResponse();\n m = Object.assign(m, proto);\n if (proto.payment) {\n m.payment = RetailPayment.fromProto(proto.payment);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.payment !== 'undefined' && this.payment !== null) {\n toReturn['payment'] = 'toApiJson' in this.payment ? this.payment.toApiJson() : this.payment;\n }\n return toReturn;\n }\n}\nclass GetWholesaleProviderPublicKeyRequest {\n static fromProto(proto) {\n let m = new GetWholesaleProviderPublicKeyRequest();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.merchantId !== 'undefined') {\n toReturn['merchantId'] = this.merchantId;\n }\n if (typeof this.countryCode !== 'undefined') {\n toReturn['countryCode'] = this.countryCode;\n }\n return toReturn;\n }\n}\nclass GetWholesaleProviderPublicKeyResponse {\n static fromProto(proto) {\n let m = new GetWholesaleProviderPublicKeyResponse();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.publcApiKey !== 'undefined') {\n toReturn['publcApiKey'] = this.publcApiKey;\n }\n return toReturn;\n }\n}\nclass ListPaymentRequestListPaymentFilters {\n static fromProto(proto) {\n let m = new ListPaymentRequestListPaymentFilters();\n m = Object.assign(m, proto);\n if (proto.start) {\n m.start = new Date(proto.start);\n }\n if (proto.end) {\n m.end = new Date(proto.end);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.merchantId !== 'undefined') {\n toReturn['merchantId'] = this.merchantId;\n }\n if (typeof this.allocationIds !== 'undefined') {\n toReturn['allocationIds'] = this.allocationIds;\n }\n if (typeof this.start !== 'undefined' && this.start !== null) {\n toReturn['start'] = 'toApiJson' in this.start ? this.start.toApiJson() : this.start;\n }\n if (typeof this.end !== 'undefined' && this.end !== null) {\n toReturn['end'] = 'toApiJson' in this.end ? this.end.toApiJson() : this.end;\n }\n return toReturn;\n }\n}\nclass ListPaymentRequest {\n static fromProto(proto) {\n let m = new ListPaymentRequest();\n m = Object.assign(m, proto);\n if (proto.filters) {\n m.filters = ListPaymentRequestListPaymentFilters.fromProto(proto.filters);\n }\n if (proto.pagingOptions) {\n m.pagingOptions = PagedRequestOptions.fromProto(proto.pagingOptions);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.filters !== 'undefined' && this.filters !== null) {\n toReturn['filters'] = 'toApiJson' in this.filters ? this.filters.toApiJson() : this.filters;\n }\n if (typeof this.pagingOptions !== 'undefined' && this.pagingOptions !== null) {\n toReturn['pagingOptions'] = 'toApiJson' in this.pagingOptions ? this.pagingOptions.toApiJson() : this.pagingOptions;\n }\n return toReturn;\n }\n}\nclass ListPaymentResponse {\n static fromProto(proto) {\n let m = new ListPaymentResponse();\n m = Object.assign(m, proto);\n if (proto.payments) {\n m.payments = proto.payments.map(Payment.fromProto);\n }\n if (proto.pagingMetadata) {\n m.pagingMetadata = PagedResponseMetadata.fromProto(proto.pagingMetadata);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.payments !== 'undefined' && this.payments !== null) {\n toReturn['payments'] = 'toApiJson' in this.payments ? this.payments.toApiJson() : this.payments;\n }\n if (typeof this.pagingMetadata !== 'undefined' && this.pagingMetadata !== null) {\n toReturn['pagingMetadata'] = 'toApiJson' in this.pagingMetadata ? this.pagingMetadata.toApiJson() : this.pagingMetadata;\n }\n return toReturn;\n }\n}\nclass ListRetailDisputesRequest {\n static fromProto(proto) {\n let m = new ListRetailDisputesRequest();\n m = Object.assign(m, proto);\n if (proto.pagingOptions) {\n m.pagingOptions = PagedRequestOptions.fromProto(proto.pagingOptions);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.merchantId !== 'undefined') {\n toReturn['merchantId'] = this.merchantId;\n }\n if (typeof this.pagingOptions !== 'undefined' && this.pagingOptions !== null) {\n toReturn['pagingOptions'] = 'toApiJson' in this.pagingOptions ? this.pagingOptions.toApiJson() : this.pagingOptions;\n }\n return toReturn;\n }\n}\nclass ListRetailDisputesResponse {\n static fromProto(proto) {\n let m = new ListRetailDisputesResponse();\n m = Object.assign(m, proto);\n if (proto.disputes) {\n m.disputes = proto.disputes.map(Dispute.fromProto);\n }\n if (proto.pagingMetadata) {\n m.pagingMetadata = PagedResponseMetadata.fromProto(proto.pagingMetadata);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.disputes !== 'undefined' && this.disputes !== null) {\n toReturn['disputes'] = 'toApiJson' in this.disputes ? this.disputes.toApiJson() : this.disputes;\n }\n if (typeof this.pagingMetadata !== 'undefined' && this.pagingMetadata !== null) {\n toReturn['pagingMetadata'] = 'toApiJson' in this.pagingMetadata ? this.pagingMetadata.toApiJson() : this.pagingMetadata;\n }\n return toReturn;\n }\n}\nclass ListRetailPaymentsRequestListRetailPaymentsFilters {\n static fromProto(proto) {\n let m = new ListRetailPaymentsRequestListRetailPaymentsFilters();\n m = Object.assign(m, proto);\n if (proto.createdDateGte) {\n m.createdDateGte = new Date(proto.createdDateGte);\n }\n if (proto.createdDateLte) {\n m.createdDateLte = new Date(proto.createdDateLte);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.payoutId !== 'undefined') {\n toReturn['payoutId'] = this.payoutId;\n }\n if (typeof this.customerId !== 'undefined') {\n toReturn['customerId'] = this.customerId;\n }\n if (typeof this.createdDateGte !== 'undefined' && this.createdDateGte !== null) {\n toReturn['createdDateGte'] = 'toApiJson' in this.createdDateGte ? this.createdDateGte.toApiJson() : this.createdDateGte;\n }\n if (typeof this.createdDateLte !== 'undefined' && this.createdDateLte !== null) {\n toReturn['createdDateLte'] = 'toApiJson' in this.createdDateLte ? this.createdDateLte.toApiJson() : this.createdDateLte;\n }\n return toReturn;\n }\n}\nclass ListRetailPaymentsRequest {\n static fromProto(proto) {\n let m = new ListRetailPaymentsRequest();\n m = Object.assign(m, proto);\n if (proto.pagingOptions) {\n m.pagingOptions = PagedRequestOptions.fromProto(proto.pagingOptions);\n }\n if (proto.filters) {\n m.filters = ListRetailPaymentsRequestListRetailPaymentsFilters.fromProto(proto.filters);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.merchantId !== 'undefined') {\n toReturn['merchantId'] = this.merchantId;\n }\n if (typeof this.pagingOptions !== 'undefined' && this.pagingOptions !== null) {\n toReturn['pagingOptions'] = 'toApiJson' in this.pagingOptions ? this.pagingOptions.toApiJson() : this.pagingOptions;\n }\n if (typeof this.filters !== 'undefined' && this.filters !== null) {\n toReturn['filters'] = 'toApiJson' in this.filters ? this.filters.toApiJson() : this.filters;\n }\n return toReturn;\n }\n}\nclass ListRetailPaymentsResponse {\n static fromProto(proto) {\n let m = new ListRetailPaymentsResponse();\n m = Object.assign(m, proto);\n if (proto.payments) {\n m.payments = proto.payments.map(RetailPayment.fromProto);\n }\n if (proto.pagingMetadata) {\n m.pagingMetadata = PagedResponseMetadata.fromProto(proto.pagingMetadata);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.payments !== 'undefined' && this.payments !== null) {\n toReturn['payments'] = 'toApiJson' in this.payments ? this.payments.toApiJson() : this.payments;\n }\n if (typeof this.pagingMetadata !== 'undefined' && this.pagingMetadata !== null) {\n toReturn['pagingMetadata'] = 'toApiJson' in this.pagingMetadata ? this.pagingMetadata.toApiJson() : this.pagingMetadata;\n }\n return toReturn;\n }\n}\nclass ListRetailTransactionsRequestListRetailTransactionsFilters {\n static fromProto(proto) {\n let m = new ListRetailTransactionsRequestListRetailTransactionsFilters();\n m = Object.assign(m, proto);\n if (proto.createdDateGte) {\n m.createdDateGte = new Date(proto.createdDateGte);\n }\n if (proto.createdDateLte) {\n m.createdDateLte = new Date(proto.createdDateLte);\n }\n if (proto.type) {\n m.type = enumStringToValue$g(RetailTransactionType, proto.type);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.payoutId !== 'undefined') {\n toReturn['payoutId'] = this.payoutId;\n }\n if (typeof this.createdDateGte !== 'undefined' && this.createdDateGte !== null) {\n toReturn['createdDateGte'] = 'toApiJson' in this.createdDateGte ? this.createdDateGte.toApiJson() : this.createdDateGte;\n }\n if (typeof this.createdDateLte !== 'undefined' && this.createdDateLte !== null) {\n toReturn['createdDateLte'] = 'toApiJson' in this.createdDateLte ? this.createdDateLte.toApiJson() : this.createdDateLte;\n }\n if (typeof this.type !== 'undefined') {\n toReturn['type'] = this.type;\n }\n if (typeof this.customerId !== 'undefined') {\n toReturn['customerId'] = this.customerId;\n }\n return toReturn;\n }\n}\nclass ListRetailTransactionsRequest {\n static fromProto(proto) {\n let m = new ListRetailTransactionsRequest();\n m = Object.assign(m, proto);\n if (proto.pagingOptions) {\n m.pagingOptions = PagedRequestOptions.fromProto(proto.pagingOptions);\n }\n if (proto.filters) {\n m.filters = ListRetailTransactionsRequestListRetailTransactionsFilters.fromProto(proto.filters);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.merchantId !== 'undefined') {\n toReturn['merchantId'] = this.merchantId;\n }\n if (typeof this.pagingOptions !== 'undefined' && this.pagingOptions !== null) {\n toReturn['pagingOptions'] = 'toApiJson' in this.pagingOptions ? this.pagingOptions.toApiJson() : this.pagingOptions;\n }\n if (typeof this.filters !== 'undefined' && this.filters !== null) {\n toReturn['filters'] = 'toApiJson' in this.filters ? this.filters.toApiJson() : this.filters;\n }\n return toReturn;\n }\n}\nclass ListRetailTransactionsResponse {\n static fromProto(proto) {\n let m = new ListRetailTransactionsResponse();\n m = Object.assign(m, proto);\n if (proto.transactions) {\n m.transactions = proto.transactions.map(RetailTransaction.fromProto);\n }\n if (proto.pagingMetadata) {\n m.pagingMetadata = PagedResponseMetadata.fromProto(proto.pagingMetadata);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.transactions !== 'undefined' && this.transactions !== null) {\n toReturn['transactions'] = 'toApiJson' in this.transactions ? this.transactions.toApiJson() : this.transactions;\n }\n if (typeof this.pagingMetadata !== 'undefined' && this.pagingMetadata !== null) {\n toReturn['pagingMetadata'] = 'toApiJson' in this.pagingMetadata ? this.pagingMetadata.toApiJson() : this.pagingMetadata;\n }\n return toReturn;\n }\n}\nclass PrepareRetailPaymentRequestOrder {\n static fromProto(proto) {\n let m = new PrepareRetailPaymentRequestOrder();\n m = Object.assign(m, proto);\n if (proto.amount) {\n m.amount = parseInt(proto.amount, 10);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.orderId !== 'undefined') {\n toReturn['orderId'] = this.orderId;\n }\n if (typeof this.amount !== 'undefined') {\n toReturn['amount'] = this.amount;\n }\n if (typeof this.currencyCode !== 'undefined') {\n toReturn['currencyCode'] = this.currencyCode;\n }\n if (typeof this.paymentMethodId !== 'undefined') {\n toReturn['paymentMethodId'] = this.paymentMethodId;\n }\n return toReturn;\n }\n}\nclass Payment {\n static fromProto(proto) {\n let m = new Payment();\n m = Object.assign(m, proto);\n if (proto.created) {\n m.created = new Date(proto.created);\n }\n if (proto.currency) {\n m.currency = enumStringToValue$g(Currency, proto.currency);\n }\n if (proto.paymentSource) {\n m.paymentSource = enumStringToValue$g(PaymentSource, proto.paymentSource);\n }\n if (proto.allocations) {\n m.allocations = proto.allocations.map(PaymentPaymentAllocation.fromProto);\n }\n if (proto.total) {\n m.total = parseInt(proto.total, 10);\n }\n if (proto.status) {\n m.status = enumStringToValue$g(PaymentStatus, proto.status);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.merchantId !== 'undefined') {\n toReturn['merchantId'] = this.merchantId;\n }\n if (typeof this.created !== 'undefined' && this.created !== null) {\n toReturn['created'] = 'toApiJson' in this.created ? this.created.toApiJson() : this.created;\n }\n if (typeof this.currency !== 'undefined') {\n toReturn['currency'] = this.currency;\n }\n if (typeof this.paymentSource !== 'undefined') {\n toReturn['paymentSource'] = this.paymentSource;\n }\n if (typeof this.allocations !== 'undefined' && this.allocations !== null) {\n toReturn['allocations'] = 'toApiJson' in this.allocations ? this.allocations.toApiJson() : this.allocations;\n }\n if (typeof this.total !== 'undefined') {\n toReturn['total'] = this.total;\n }\n if (typeof this.description !== 'undefined') {\n toReturn['description'] = this.description;\n }\n if (typeof this.externalReferenceId !== 'undefined') {\n toReturn['externalReferenceId'] = this.externalReferenceId;\n }\n if (typeof this.status !== 'undefined') {\n toReturn['status'] = this.status;\n }\n return toReturn;\n }\n}\nclass PaymentPaymentAllocation {\n static fromProto(proto) {\n let m = new PaymentPaymentAllocation();\n m = Object.assign(m, proto);\n if (proto.amount) {\n m.amount = parseInt(proto.amount, 10);\n }\n if (proto.type) {\n m.type = enumStringToValue$g(PaymentAllocationType, proto.type);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.referenceId !== 'undefined') {\n toReturn['referenceId'] = this.referenceId;\n }\n if (typeof this.amount !== 'undefined') {\n toReturn['amount'] = this.amount;\n }\n if (typeof this.type !== 'undefined') {\n toReturn['type'] = this.type;\n }\n return toReturn;\n }\n}\nclass PrepareRetailPaymentRequest {\n static fromProto(proto) {\n let m = new PrepareRetailPaymentRequest();\n m = Object.assign(m, proto);\n if (proto.order) {\n m.order = PrepareRetailPaymentRequestOrder.fromProto(proto.order);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.merchantId !== 'undefined') {\n toReturn['merchantId'] = this.merchantId;\n }\n if (typeof this.customerId !== 'undefined') {\n toReturn['customerId'] = this.customerId;\n }\n if (typeof this.invoiceId !== 'undefined') {\n toReturn['invoiceId'] = this.invoiceId;\n }\n if (typeof this.order !== 'undefined' && this.order !== null) {\n toReturn['order'] = 'toApiJson' in this.order ? this.order.toApiJson() : this.order;\n }\n return toReturn;\n }\n}\nclass PrepareRetailPaymentResponse {\n static fromProto(proto) {\n let m = new PrepareRetailPaymentResponse();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.stripeClientSecret !== 'undefined') {\n toReturn['stripeClientSecret'] = this.stripeClientSecret;\n }\n if (typeof this.intentId !== 'undefined') {\n toReturn['intentId'] = this.intentId;\n }\n return toReturn;\n }\n}\nclass RefundRetailPaymentRequest {\n static fromProto(proto) {\n let m = new RefundRetailPaymentRequest();\n m = Object.assign(m, proto);\n if (proto.amount) {\n m.amount = parseInt(proto.amount, 10);\n }\n if (proto.reason) {\n m.reason = enumStringToValue$g(RetailRefundReason, proto.reason);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.merchantId !== 'undefined') {\n toReturn['merchantId'] = this.merchantId;\n }\n if (typeof this.paymentId !== 'undefined') {\n toReturn['paymentId'] = this.paymentId;\n }\n if (typeof this.amount !== 'undefined') {\n toReturn['amount'] = this.amount;\n }\n if (typeof this.reason !== 'undefined') {\n toReturn['reason'] = this.reason;\n }\n return toReturn;\n }\n}\nclass RefundRetailPaymentResponse {\n static fromProto(proto) {\n let m = new RefundRetailPaymentResponse();\n m = Object.assign(m, proto);\n if (proto.payment) {\n m.payment = RetailPayment.fromProto(proto.payment);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.payment !== 'undefined' && this.payment !== null) {\n toReturn['payment'] = 'toApiJson' in this.payment ? this.payment.toApiJson() : this.payment;\n }\n return toReturn;\n }\n}\nclass RetailPayment {\n static fromProto(proto) {\n let m = new RetailPayment();\n m = Object.assign(m, proto);\n if (proto.created) {\n m.created = new Date(proto.created);\n }\n if (proto.amount) {\n m.amount = parseInt(proto.amount, 10);\n }\n if (proto.referenceType) {\n m.referenceType = enumStringToValue$g(RetailPaymentReferenceType, proto.referenceType);\n }\n if (proto.status) {\n m.status = enumStringToValue$g(PaymentStatus, proto.status);\n }\n if (proto.applicationFee) {\n m.applicationFee = parseInt(proto.applicationFee, 10);\n }\n if (proto.dispute) {\n m.dispute = Dispute.fromProto(proto.dispute);\n }\n if (proto.cardDetails) {\n m.cardDetails = RetailPaymentCardDetails.fromProto(proto.cardDetails);\n }\n if (proto.refunds) {\n m.refunds = proto.refunds.map(RetailRefund.fromProto);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.merchantId !== 'undefined') {\n toReturn['merchantId'] = this.merchantId;\n }\n if (typeof this.created !== 'undefined' && this.created !== null) {\n toReturn['created'] = 'toApiJson' in this.created ? this.created.toApiJson() : this.created;\n }\n if (typeof this.currencyCode !== 'undefined') {\n toReturn['currencyCode'] = this.currencyCode;\n }\n if (typeof this.amount !== 'undefined') {\n toReturn['amount'] = this.amount;\n }\n if (typeof this.referenceId !== 'undefined') {\n toReturn['referenceId'] = this.referenceId;\n }\n if (typeof this.referenceType !== 'undefined') {\n toReturn['referenceType'] = this.referenceType;\n }\n if (typeof this.customerId !== 'undefined') {\n toReturn['customerId'] = this.customerId;\n }\n if (typeof this.status !== 'undefined') {\n toReturn['status'] = this.status;\n }\n if (typeof this.description !== 'undefined') {\n toReturn['description'] = this.description;\n }\n if (typeof this.failureCode !== 'undefined') {\n toReturn['failureCode'] = this.failureCode;\n }\n if (typeof this.failureMessage !== 'undefined') {\n toReturn['failureMessage'] = this.failureMessage;\n }\n if (typeof this.applicationFee !== 'undefined') {\n toReturn['applicationFee'] = this.applicationFee;\n }\n if (typeof this.disputed !== 'undefined') {\n toReturn['disputed'] = this.disputed;\n }\n if (typeof this.id !== 'undefined') {\n toReturn['id'] = this.id;\n }\n if (typeof this.dispute !== 'undefined' && this.dispute !== null) {\n toReturn['dispute'] = 'toApiJson' in this.dispute ? this.dispute.toApiJson() : this.dispute;\n }\n if (typeof this.cardDetails !== 'undefined' && this.cardDetails !== null) {\n toReturn['cardDetails'] = 'toApiJson' in this.cardDetails ? this.cardDetails.toApiJson() : this.cardDetails;\n }\n if (typeof this.refunds !== 'undefined' && this.refunds !== null) {\n toReturn['refunds'] = 'toApiJson' in this.refunds ? this.refunds.toApiJson() : this.refunds;\n }\n return toReturn;\n }\n}\nclass RetailPaymentsEnabledRequest {\n static fromProto(proto) {\n let m = new RetailPaymentsEnabledRequest();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.merchantId !== 'undefined') {\n toReturn['merchantId'] = this.merchantId;\n }\n return toReturn;\n }\n}\nclass RetailPaymentsEnabledResponse {\n static fromProto(proto) {\n let m = new RetailPaymentsEnabledResponse();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.enabled !== 'undefined') {\n toReturn['enabled'] = this.enabled;\n }\n return toReturn;\n }\n}\nclass RetailRefund {\n static fromProto(proto) {\n let m = new RetailRefund();\n m = Object.assign(m, proto);\n if (proto.amount) {\n m.amount = parseInt(proto.amount, 10);\n }\n if (proto.refundReason) {\n m.refundReason = enumStringToValue$g(RetailRefundReason, proto.refundReason);\n }\n if (proto.status) {\n m.status = enumStringToValue$g(RetailRefundStatus, proto.status);\n }\n if (proto.failureReason) {\n m.failureReason = enumStringToValue$g(RetailRefundFailureReason, proto.failureReason);\n }\n if (proto.created) {\n m.created = new Date(proto.created);\n }\n if (proto.payment) {\n m.payment = RetailPayment.fromProto(proto.payment);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.id !== 'undefined') {\n toReturn['id'] = this.id;\n }\n if (typeof this.amount !== 'undefined') {\n toReturn['amount'] = this.amount;\n }\n if (typeof this.currencyCode !== 'undefined') {\n toReturn['currencyCode'] = this.currencyCode;\n }\n if (typeof this.refundReason !== 'undefined') {\n toReturn['refundReason'] = this.refundReason;\n }\n if (typeof this.status !== 'undefined') {\n toReturn['status'] = this.status;\n }\n if (typeof this.failureReason !== 'undefined') {\n toReturn['failureReason'] = this.failureReason;\n }\n if (typeof this.created !== 'undefined' && this.created !== null) {\n toReturn['created'] = 'toApiJson' in this.created ? this.created.toApiJson() : this.created;\n }\n if (typeof this.payment !== 'undefined' && this.payment !== null) {\n toReturn['payment'] = 'toApiJson' in this.payment ? this.payment.toApiJson() : this.payment;\n }\n return toReturn;\n }\n}\nclass RetailStatusRequest {\n static fromProto(proto) {\n let m = new RetailStatusRequest();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.merchantId !== 'undefined') {\n toReturn['merchantId'] = this.merchantId;\n }\n return toReturn;\n }\n}\nclass RetailStatusResponse {\n static fromProto(proto) {\n let m = new RetailStatusResponse();\n m = Object.assign(m, proto);\n if (proto.requirements) {\n m.requirements = RetailStatusResponseVerificationRequirements.fromProto(proto.requirements);\n }\n if (proto.futureRequirements) {\n m.futureRequirements = RetailStatusResponseVerificationRequirements.fromProto(proto.futureRequirements);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.supportedRegion !== 'undefined') {\n toReturn['supportedRegion'] = this.supportedRegion;\n }\n if (typeof this.canAcceptPayment !== 'undefined') {\n toReturn['canAcceptPayment'] = this.canAcceptPayment;\n }\n if (typeof this.requirements !== 'undefined' && this.requirements !== null) {\n toReturn['requirements'] = 'toApiJson' in this.requirements ? this.requirements.toApiJson() : this.requirements;\n }\n if (typeof this.disabledReason !== 'undefined') {\n toReturn['disabledReason'] = this.disabledReason;\n }\n if (typeof this.futureRequirements !== 'undefined' && this.futureRequirements !== null) {\n toReturn['futureRequirements'] = 'toApiJson' in this.futureRequirements ? this.futureRequirements.toApiJson() : this.futureRequirements;\n }\n return toReturn;\n }\n}\nclass RetailTransaction {\n static fromProto(proto) {\n let m = new RetailTransaction();\n m = Object.assign(m, proto);\n if (proto.payment) {\n m.payment = RetailPayment.fromProto(proto.payment);\n }\n if (proto.refund) {\n m.refund = RetailRefund.fromProto(proto.refund);\n }\n if (proto.payoutFailure) {\n m.payoutFailure = RetailPayout.fromProto(proto.payoutFailure);\n }\n if (proto.adjustment) {\n m.adjustment = Adjustment.fromProto(proto.adjustment);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.payment !== 'undefined' && this.payment !== null) {\n toReturn['payment'] = 'toApiJson' in this.payment ? this.payment.toApiJson() : this.payment;\n }\n if (typeof this.refund !== 'undefined' && this.refund !== null) {\n toReturn['refund'] = 'toApiJson' in this.refund ? this.refund.toApiJson() : this.refund;\n }\n if (typeof this.payoutFailure !== 'undefined' && this.payoutFailure !== null) {\n toReturn['payoutFailure'] = 'toApiJson' in this.payoutFailure ? this.payoutFailure.toApiJson() : this.payoutFailure;\n }\n if (typeof this.adjustment !== 'undefined' && this.adjustment !== null) {\n toReturn['adjustment'] = 'toApiJson' in this.adjustment ? this.adjustment.toApiJson() : this.adjustment;\n }\n return toReturn;\n }\n}\nclass SubmitEvidenceRequest {\n static fromProto(proto) {\n let m = new SubmitEvidenceRequest();\n m = Object.assign(m, proto);\n if (proto.evidence) {\n m.evidence = SubmitEvidenceRequestDisputeEvidence.fromProto(proto.evidence);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.merchantId !== 'undefined') {\n toReturn['merchantId'] = this.merchantId;\n }\n if (typeof this.disputeId !== 'undefined') {\n toReturn['disputeId'] = this.disputeId;\n }\n if (typeof this.paymentId !== 'undefined') {\n toReturn['paymentId'] = this.paymentId;\n }\n if (typeof this.evidence !== 'undefined' && this.evidence !== null) {\n toReturn['evidence'] = 'toApiJson' in this.evidence ? this.evidence.toApiJson() : this.evidence;\n }\n if (typeof this.submit !== 'undefined') {\n toReturn['submit'] = this.submit;\n }\n return toReturn;\n }\n}\nclass UpdateRetailPaymentProviderRequest {\n static fromProto(proto) {\n let m = new UpdateRetailPaymentProviderRequest();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.merchantId !== 'undefined') {\n toReturn['merchantId'] = this.merchantId;\n }\n if (typeof this.statementDescriptor !== 'undefined') {\n toReturn['statementDescriptor'] = this.statementDescriptor;\n }\n return toReturn;\n }\n}\nclass RetailStatusResponseVerificationError {\n static fromProto(proto) {\n let m = new RetailStatusResponseVerificationError();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.requirement !== 'undefined') {\n toReturn['requirement'] = this.requirement;\n }\n if (typeof this.code !== 'undefined') {\n toReturn['code'] = this.code;\n }\n if (typeof this.reason !== 'undefined') {\n toReturn['reason'] = this.reason;\n }\n return toReturn;\n }\n}\nclass RetailStatusResponseVerificationRequirements {\n static fromProto(proto) {\n let m = new RetailStatusResponseVerificationRequirements();\n m = Object.assign(m, proto);\n if (proto.error) {\n m.error = proto.error.map(RetailStatusResponseVerificationError.fromProto);\n }\n if (proto.currentDeadline) {\n m.currentDeadline = new Date(proto.currentDeadline);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.due !== 'undefined') {\n toReturn['due'] = this.due;\n }\n if (typeof this.error !== 'undefined' && this.error !== null) {\n toReturn['error'] = 'toApiJson' in this.error ? this.error.toApiJson() : this.error;\n }\n if (typeof this.currentDeadline !== 'undefined' && this.currentDeadline !== null) {\n toReturn['currentDeadline'] = 'toApiJson' in this.currentDeadline ? this.currentDeadline.toApiJson() : this.currentDeadline;\n }\n if (typeof this.eventuallyDue !== 'undefined') {\n toReturn['eventuallyDue'] = this.eventuallyDue;\n }\n return toReturn;\n }\n}\nfunction enumStringToValue$f(enumRef, value) {\n if (typeof value === 'number') {\n return value;\n }\n return enumRef[value];\n}\nclass CreatePaymentCardRequest {\n static fromProto(proto) {\n let m = new CreatePaymentCardRequest();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.merchantId !== 'undefined') {\n toReturn['merchantId'] = this.merchantId;\n }\n if (typeof this.stripeToken !== 'undefined') {\n toReturn['stripeToken'] = this.stripeToken;\n }\n return toReturn;\n }\n}\nclass DeletePaymentCardRequest {\n static fromProto(proto) {\n let m = new DeletePaymentCardRequest();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.merchantId !== 'undefined') {\n toReturn['merchantId'] = this.merchantId;\n }\n if (typeof this.cardId !== 'undefined') {\n toReturn['cardId'] = this.cardId;\n }\n return toReturn;\n }\n}\nclass ListPaymentCardsRequest {\n static fromProto(proto) {\n let m = new ListPaymentCardsRequest();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.merchantId !== 'undefined') {\n toReturn['merchantId'] = this.merchantId;\n }\n if (typeof this.customerId !== 'undefined') {\n toReturn['customerId'] = this.customerId;\n }\n return toReturn;\n }\n}\nclass ListPaymentCardsResponse {\n static fromProto(proto) {\n let m = new ListPaymentCardsResponse();\n m = Object.assign(m, proto);\n if (proto.paymentCard) {\n m.paymentCard = proto.paymentCard.map(PaymentCard.fromProto);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.paymentCard !== 'undefined' && this.paymentCard !== null) {\n toReturn['paymentCard'] = 'toApiJson' in this.paymentCard ? this.paymentCard.toApiJson() : this.paymentCard;\n }\n return toReturn;\n }\n}\nclass PaymentCard {\n static fromProto(proto) {\n let m = new PaymentCard();\n m = Object.assign(m, proto);\n if (proto.cardType) {\n m.cardType = enumStringToValue$f(PaymentCardCARD_TYPE, proto.cardType);\n }\n if (proto.fundingType) {\n m.fundingType = enumStringToValue$f(PaymentCardFUNDING_TYPE, proto.fundingType);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.lastFourDigits !== 'undefined') {\n toReturn['lastFourDigits'] = this.lastFourDigits;\n }\n if (typeof this.cardType !== 'undefined') {\n toReturn['cardType'] = this.cardType;\n }\n if (typeof this.address !== 'undefined') {\n toReturn['address'] = this.address;\n }\n if (typeof this.city !== 'undefined') {\n toReturn['city'] = this.city;\n }\n if (typeof this.state !== 'undefined') {\n toReturn['state'] = this.state;\n }\n if (typeof this.country !== 'undefined') {\n toReturn['country'] = this.country;\n }\n if (typeof this.zipCode !== 'undefined') {\n toReturn['zipCode'] = this.zipCode;\n }\n if (typeof this.cardId !== 'undefined') {\n toReturn['cardId'] = this.cardId;\n }\n if (typeof this.cardholderName !== 'undefined') {\n toReturn['cardholderName'] = this.cardholderName;\n }\n if (typeof this.expiryMonth !== 'undefined') {\n toReturn['expiryMonth'] = this.expiryMonth;\n }\n if (typeof this.expiryYear !== 'undefined') {\n toReturn['expiryYear'] = this.expiryYear;\n }\n if (typeof this.fundingType !== 'undefined') {\n toReturn['fundingType'] = this.fundingType;\n }\n if (typeof this.default !== 'undefined') {\n toReturn['default'] = this.default;\n }\n return toReturn;\n }\n}\nclass SetDefaultPaymentMethodRequest {\n static fromProto(proto) {\n let m = new SetDefaultPaymentMethodRequest();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.merchantId !== 'undefined') {\n toReturn['merchantId'] = this.merchantId;\n }\n if (typeof this.customerId !== 'undefined') {\n toReturn['customerId'] = this.customerId;\n }\n if (typeof this.paymentMethodId !== 'undefined') {\n toReturn['paymentMethodId'] = this.paymentMethodId;\n }\n return toReturn;\n }\n}\nclass UpdatePaymentCardRequest {\n static fromProto(proto) {\n let m = new UpdatePaymentCardRequest();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.merchantId !== 'undefined') {\n toReturn['merchantId'] = this.merchantId;\n }\n if (typeof this.stripeToken !== 'undefined') {\n toReturn['stripeToken'] = this.stripeToken;\n }\n return toReturn;\n }\n}\nfunction enumStringToValue$e(enumRef, value) {\n if (typeof value === 'number') {\n return value;\n }\n return enumRef[value];\n}\nclass CreatePricingPlanProductRequest {\n static fromProto(proto) {\n let m = new CreatePricingPlanProductRequest();\n m = Object.assign(m, proto);\n if (proto.frequency) {\n m.frequency = enumStringToValue$e(Frequency, proto.frequency);\n }\n if (proto.pricing) {\n m.pricing = Object.keys(proto.pricing).reduce((obj, k) => {\n obj[k] = PricingPlanProductPricing.fromProto(proto.pricing[k]);\n return obj;\n }, {});\n }\n if (proto.commitment) {\n m.commitment = Commitment.fromProto(proto.commitment);\n }\n if (proto.strategy) {\n m.strategy = enumStringToValue$e(BillingStrategy, proto.strategy);\n }\n if (proto.volumeCommitment) {\n m.volumeCommitment = parseInt(proto.volumeCommitment, 10);\n }\n if (proto.volumeCommitmentStartsAt) {\n m.volumeCommitmentStartsAt = new Date(proto.volumeCommitmentStartsAt);\n }\n if (proto.volumeCommitmentEndsAt) {\n m.volumeCommitmentEndsAt = new Date(proto.volumeCommitmentEndsAt);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.pricingPlanId !== 'undefined') {\n toReturn['pricingPlanId'] = this.pricingPlanId;\n }\n if (typeof this.sku !== 'undefined') {\n toReturn['sku'] = this.sku;\n }\n if (typeof this.frequency !== 'undefined') {\n toReturn['frequency'] = this.frequency;\n }\n if (typeof this.pricing !== 'undefined' && this.pricing !== null) {\n toReturn['pricing'] = 'toApiJson' in this.pricing ? this.pricing.toApiJson() : this.pricing;\n }\n if (typeof this.commitment !== 'undefined' && this.commitment !== null) {\n toReturn['commitment'] = 'toApiJson' in this.commitment ? this.commitment.toApiJson() : this.commitment;\n }\n if (typeof this.strategy !== 'undefined') {\n toReturn['strategy'] = this.strategy;\n }\n if (typeof this.volumeCommitment !== 'undefined') {\n toReturn['volumeCommitment'] = this.volumeCommitment;\n }\n if (typeof this.volumeCommitmentStartsAt !== 'undefined' && this.volumeCommitmentStartsAt !== null) {\n toReturn['volumeCommitmentStartsAt'] = 'toApiJson' in this.volumeCommitmentStartsAt ? this.volumeCommitmentStartsAt.toApiJson() : this.volumeCommitmentStartsAt;\n }\n if (typeof this.volumeCommitmentEndsAt !== 'undefined' && this.volumeCommitmentEndsAt !== null) {\n toReturn['volumeCommitmentEndsAt'] = 'toApiJson' in this.volumeCommitmentEndsAt ? this.volumeCommitmentEndsAt.toApiJson() : this.volumeCommitmentEndsAt;\n }\n return toReturn;\n }\n}\nclass CreatePricingPlanProductResponse {\n static fromProto(proto) {\n let m = new CreatePricingPlanProductResponse();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.pricingPlanId !== 'undefined') {\n toReturn['pricingPlanId'] = this.pricingPlanId;\n }\n if (typeof this.sku !== 'undefined') {\n toReturn['sku'] = this.sku;\n }\n return toReturn;\n }\n}\nclass DeletePricingPlanProductRequest {\n static fromProto(proto) {\n let m = new DeletePricingPlanProductRequest();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.pricingPlanId !== 'undefined') {\n toReturn['pricingPlanId'] = this.pricingPlanId;\n }\n if (typeof this.sku !== 'undefined') {\n toReturn['sku'] = this.sku;\n }\n return toReturn;\n }\n}\nclass GetMultiPricingPlanProductRequest {\n static fromProto(proto) {\n let m = new GetMultiPricingPlanProductRequest();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.pricingPlanId !== 'undefined') {\n toReturn['pricingPlanId'] = this.pricingPlanId;\n }\n if (typeof this.skus !== 'undefined') {\n toReturn['skus'] = this.skus;\n }\n return toReturn;\n }\n}\nclass GetMultiPricingPlanProductResponse {\n static fromProto(proto) {\n let m = new GetMultiPricingPlanProductResponse();\n m = Object.assign(m, proto);\n if (proto.pricingPlanProducts) {\n m.pricingPlanProducts = proto.pricingPlanProducts.map(PricingPlanProduct.fromProto);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.pricingPlanProducts !== 'undefined' && this.pricingPlanProducts !== null) {\n toReturn['pricingPlanProducts'] = 'toApiJson' in this.pricingPlanProducts ? this.pricingPlanProducts.toApiJson() : this.pricingPlanProducts;\n }\n return toReturn;\n }\n}\nclass GetPricingPlanProductRequest {\n static fromProto(proto) {\n let m = new GetPricingPlanProductRequest();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.pricingPlanId !== 'undefined') {\n toReturn['pricingPlanId'] = this.pricingPlanId;\n }\n if (typeof this.sku !== 'undefined') {\n toReturn['sku'] = this.sku;\n }\n return toReturn;\n }\n}\nclass GetPricingPlanProductResponse {\n static fromProto(proto) {\n let m = new GetPricingPlanProductResponse();\n m = Object.assign(m, proto);\n if (proto.pricingPlanProduct) {\n m.pricingPlanProduct = PricingPlanProduct.fromProto(proto.pricingPlanProduct);\n }\n if (proto.pricingPlanDefaultStrategy) {\n m.pricingPlanDefaultStrategy = enumStringToValue$e(BillingStrategy, proto.pricingPlanDefaultStrategy);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.pricingPlanProduct !== 'undefined' && this.pricingPlanProduct !== null) {\n toReturn['pricingPlanProduct'] = 'toApiJson' in this.pricingPlanProduct ? this.pricingPlanProduct.toApiJson() : this.pricingPlanProduct;\n }\n if (typeof this.pricingPlanDefaultStrategy !== 'undefined') {\n toReturn['pricingPlanDefaultStrategy'] = this.pricingPlanDefaultStrategy;\n }\n return toReturn;\n }\n}\nclass ListPricingPlanProductsRequestListPricingPlanProductsFilters {\n static fromProto(proto) {\n let m = new ListPricingPlanProductsRequestListPricingPlanProductsFilters();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.sku !== 'undefined') {\n toReturn['sku'] = this.sku;\n }\n if (typeof this.pricingPlanIds !== 'undefined') {\n toReturn['pricingPlanIds'] = this.pricingPlanIds;\n }\n return toReturn;\n }\n}\nclass ListPricingPlanProductsRequest {\n static fromProto(proto) {\n let m = new ListPricingPlanProductsRequest();\n m = Object.assign(m, proto);\n if (proto.pagingOptions) {\n m.pagingOptions = PagedRequestOptions.fromProto(proto.pagingOptions);\n }\n if (proto.filters) {\n m.filters = ListPricingPlanProductsRequestListPricingPlanProductsFilters.fromProto(proto.filters);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.sku !== 'undefined') {\n toReturn['sku'] = this.sku;\n }\n if (typeof this.pagingOptions !== 'undefined' && this.pagingOptions !== null) {\n toReturn['pagingOptions'] = 'toApiJson' in this.pagingOptions ? this.pagingOptions.toApiJson() : this.pagingOptions;\n }\n if (typeof this.filters !== 'undefined' && this.filters !== null) {\n toReturn['filters'] = 'toApiJson' in this.filters ? this.filters.toApiJson() : this.filters;\n }\n return toReturn;\n }\n}\nclass ListPricingPlanProductsResponse {\n static fromProto(proto) {\n let m = new ListPricingPlanProductsResponse();\n m = Object.assign(m, proto);\n if (proto.products) {\n m.products = proto.products.map(PricingPlanProduct.fromProto);\n }\n if (proto.pagingMetadata) {\n m.pagingMetadata = PagedResponseMetadata.fromProto(proto.pagingMetadata);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.products !== 'undefined' && this.products !== null) {\n toReturn['products'] = 'toApiJson' in this.products ? this.products.toApiJson() : this.products;\n }\n if (typeof this.pagingMetadata !== 'undefined' && this.pagingMetadata !== null) {\n toReturn['pagingMetadata'] = 'toApiJson' in this.pagingMetadata ? this.pagingMetadata.toApiJson() : this.pagingMetadata;\n }\n return toReturn;\n }\n}\nclass PricingPlanProductPricingEntry {\n static fromProto(proto) {\n let m = new PricingPlanProductPricingEntry();\n m = Object.assign(m, proto);\n if (proto.value) {\n m.value = PricingPlanProductPricing.fromProto(proto.value);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.key !== 'undefined') {\n toReturn['key'] = this.key;\n }\n if (typeof this.value !== 'undefined' && this.value !== null) {\n toReturn['value'] = 'toApiJson' in this.value ? this.value.toApiJson() : this.value;\n }\n return toReturn;\n }\n}\nclass CreatePricingPlanProductRequestPricingEntry {\n static fromProto(proto) {\n let m = new CreatePricingPlanProductRequestPricingEntry();\n m = Object.assign(m, proto);\n if (proto.value) {\n m.value = PricingPlanProductPricing.fromProto(proto.value);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.key !== 'undefined') {\n toReturn['key'] = this.key;\n }\n if (typeof this.value !== 'undefined' && this.value !== null) {\n toReturn['value'] = 'toApiJson' in this.value ? this.value.toApiJson() : this.value;\n }\n return toReturn;\n }\n}\nclass UpdatePricingPlanProductRequestPricingEntry {\n static fromProto(proto) {\n let m = new UpdatePricingPlanProductRequestPricingEntry();\n m = Object.assign(m, proto);\n if (proto.value) {\n m.value = PricingPlanProductPricing.fromProto(proto.value);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.key !== 'undefined') {\n toReturn['key'] = this.key;\n }\n if (typeof this.value !== 'undefined' && this.value !== null) {\n toReturn['value'] = 'toApiJson' in this.value ? this.value.toApiJson() : this.value;\n }\n return toReturn;\n }\n}\nclass PricingPlanProduct {\n static fromProto(proto) {\n let m = new PricingPlanProduct();\n m = Object.assign(m, proto);\n if (proto.frequency) {\n m.frequency = enumStringToValue$e(Frequency, proto.frequency);\n }\n if (proto.pricing) {\n m.pricing = Object.keys(proto.pricing).reduce((obj, k) => {\n obj[k] = PricingPlanProductPricing.fromProto(proto.pricing[k]);\n return obj;\n }, {});\n }\n if (proto.commitment) {\n m.commitment = Commitment.fromProto(proto.commitment);\n }\n if (proto.created) {\n m.created = new Date(proto.created);\n }\n if (proto.modified) {\n m.modified = new Date(proto.modified);\n }\n if (proto.strategy) {\n m.strategy = enumStringToValue$e(BillingStrategy, proto.strategy);\n }\n if (proto.volumeCommitment) {\n m.volumeCommitment = parseInt(proto.volumeCommitment, 10);\n }\n if (proto.volumeCommitmentStartsAt) {\n m.volumeCommitmentStartsAt = new Date(proto.volumeCommitmentStartsAt);\n }\n if (proto.volumeCommitmentEndsAt) {\n m.volumeCommitmentEndsAt = new Date(proto.volumeCommitmentEndsAt);\n }\n if (proto.pricingType) {\n m.pricingType = enumStringToValue$e(ProductPricingType, proto.pricingType);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.pricingPlanId !== 'undefined') {\n toReturn['pricingPlanId'] = this.pricingPlanId;\n }\n if (typeof this.sku !== 'undefined') {\n toReturn['sku'] = this.sku;\n }\n if (typeof this.frequency !== 'undefined') {\n toReturn['frequency'] = this.frequency;\n }\n if (typeof this.pricing !== 'undefined' && this.pricing !== null) {\n toReturn['pricing'] = 'toApiJson' in this.pricing ? this.pricing.toApiJson() : this.pricing;\n }\n if (typeof this.commitment !== 'undefined' && this.commitment !== null) {\n toReturn['commitment'] = 'toApiJson' in this.commitment ? this.commitment.toApiJson() : this.commitment;\n }\n if (typeof this.created !== 'undefined' && this.created !== null) {\n toReturn['created'] = 'toApiJson' in this.created ? this.created.toApiJson() : this.created;\n }\n if (typeof this.modified !== 'undefined' && this.modified !== null) {\n toReturn['modified'] = 'toApiJson' in this.modified ? this.modified.toApiJson() : this.modified;\n }\n if (typeof this.strategy !== 'undefined') {\n toReturn['strategy'] = this.strategy;\n }\n if (typeof this.volumeCommitment !== 'undefined') {\n toReturn['volumeCommitment'] = this.volumeCommitment;\n }\n if (typeof this.volumeCommitmentStartsAt !== 'undefined' && this.volumeCommitmentStartsAt !== null) {\n toReturn['volumeCommitmentStartsAt'] = 'toApiJson' in this.volumeCommitmentStartsAt ? this.volumeCommitmentStartsAt.toApiJson() : this.volumeCommitmentStartsAt;\n }\n if (typeof this.volumeCommitmentEndsAt !== 'undefined' && this.volumeCommitmentEndsAt !== null) {\n toReturn['volumeCommitmentEndsAt'] = 'toApiJson' in this.volumeCommitmentEndsAt ? this.volumeCommitmentEndsAt.toApiJson() : this.volumeCommitmentEndsAt;\n }\n if (typeof this.pricingType !== 'undefined') {\n toReturn['pricingType'] = this.pricingType;\n }\n return toReturn;\n }\n}\nclass UpdatePricingPlanProductRequest {\n static fromProto(proto) {\n let m = new UpdatePricingPlanProductRequest();\n m = Object.assign(m, proto);\n if (proto.frequency) {\n m.frequency = enumStringToValue$e(Frequency, proto.frequency);\n }\n if (proto.pricing) {\n m.pricing = Object.keys(proto.pricing).reduce((obj, k) => {\n obj[k] = PricingPlanProductPricing.fromProto(proto.pricing[k]);\n return obj;\n }, {});\n }\n if (proto.commitment) {\n m.commitment = Commitment.fromProto(proto.commitment);\n }\n if (proto.fieldMask) {\n m.fieldMask = FieldMask.fromProto(proto.fieldMask);\n }\n if (proto.strategy) {\n m.strategy = enumStringToValue$e(BillingStrategy, proto.strategy);\n }\n if (proto.volumeCommitment) {\n m.volumeCommitment = parseInt(proto.volumeCommitment, 10);\n }\n if (proto.volumeCommitmentStartsAt) {\n m.volumeCommitmentStartsAt = new Date(proto.volumeCommitmentStartsAt);\n }\n if (proto.volumeCommitmentEndsAt) {\n m.volumeCommitmentEndsAt = new Date(proto.volumeCommitmentEndsAt);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.pricingPlanId !== 'undefined') {\n toReturn['pricingPlanId'] = this.pricingPlanId;\n }\n if (typeof this.sku !== 'undefined') {\n toReturn['sku'] = this.sku;\n }\n if (typeof this.frequency !== 'undefined') {\n toReturn['frequency'] = this.frequency;\n }\n if (typeof this.pricing !== 'undefined' && this.pricing !== null) {\n toReturn['pricing'] = 'toApiJson' in this.pricing ? this.pricing.toApiJson() : this.pricing;\n }\n if (typeof this.commitment !== 'undefined' && this.commitment !== null) {\n toReturn['commitment'] = 'toApiJson' in this.commitment ? this.commitment.toApiJson() : this.commitment;\n }\n if (typeof this.fieldMask !== 'undefined' && this.fieldMask !== null) {\n toReturn['fieldMask'] = 'toApiJson' in this.fieldMask ? this.fieldMask.toApiJson() : this.fieldMask;\n }\n if (typeof this.strategy !== 'undefined') {\n toReturn['strategy'] = this.strategy;\n }\n if (typeof this.volumeCommitment !== 'undefined') {\n toReturn['volumeCommitment'] = this.volumeCommitment;\n }\n if (typeof this.volumeCommitmentStartsAt !== 'undefined' && this.volumeCommitmentStartsAt !== null) {\n toReturn['volumeCommitmentStartsAt'] = 'toApiJson' in this.volumeCommitmentStartsAt ? this.volumeCommitmentStartsAt.toApiJson() : this.volumeCommitmentStartsAt;\n }\n if (typeof this.volumeCommitmentEndsAt !== 'undefined' && this.volumeCommitmentEndsAt !== null) {\n toReturn['volumeCommitmentEndsAt'] = 'toApiJson' in this.volumeCommitmentEndsAt ? this.volumeCommitmentEndsAt.toApiJson() : this.volumeCommitmentEndsAt;\n }\n return toReturn;\n }\n}\nclass UpdatePricingPlanProductResponse {\n static fromProto(proto) {\n let m = new UpdatePricingPlanProductResponse();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n return toReturn;\n }\n}\nclass UpsertWholesalePricingRequest {\n static fromProto(proto) {\n let m = new UpsertWholesalePricingRequest();\n m = Object.assign(m, proto);\n if (proto.pricing) {\n m.pricing = proto.pricing.map(PricingPlanProductPricing.fromProto);\n }\n if (proto.termCommitment) {\n m.termCommitment = Commitment.fromProto(proto.termCommitment);\n }\n if (proto.strategy) {\n m.strategy = enumStringToValue$e(BillingStrategy, proto.strategy);\n }\n if (proto.volumeCommitment) {\n m.volumeCommitment = parseInt(proto.volumeCommitment, 10);\n }\n if (proto.volumeCommitmentStartsAt) {\n m.volumeCommitmentStartsAt = new Date(proto.volumeCommitmentStartsAt);\n }\n if (proto.volumeCommitmentEndsAt) {\n m.volumeCommitmentEndsAt = new Date(proto.volumeCommitmentEndsAt);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.pricingPlanId !== 'undefined') {\n toReturn['pricingPlanId'] = this.pricingPlanId;\n }\n if (typeof this.sku !== 'undefined') {\n toReturn['sku'] = this.sku;\n }\n if (typeof this.pricing !== 'undefined' && this.pricing !== null) {\n toReturn['pricing'] = 'toApiJson' in this.pricing ? this.pricing.toApiJson() : this.pricing;\n }\n if (typeof this.termCommitment !== 'undefined' && this.termCommitment !== null) {\n toReturn['termCommitment'] = 'toApiJson' in this.termCommitment ? this.termCommitment.toApiJson() : this.termCommitment;\n }\n if (typeof this.strategy !== 'undefined') {\n toReturn['strategy'] = this.strategy;\n }\n if (typeof this.volumeCommitment !== 'undefined') {\n toReturn['volumeCommitment'] = this.volumeCommitment;\n }\n if (typeof this.volumeCommitmentStartsAt !== 'undefined' && this.volumeCommitmentStartsAt !== null) {\n toReturn['volumeCommitmentStartsAt'] = 'toApiJson' in this.volumeCommitmentStartsAt ? this.volumeCommitmentStartsAt.toApiJson() : this.volumeCommitmentStartsAt;\n }\n if (typeof this.volumeCommitmentEndsAt !== 'undefined' && this.volumeCommitmentEndsAt !== null) {\n toReturn['volumeCommitmentEndsAt'] = 'toApiJson' in this.volumeCommitmentEndsAt ? this.volumeCommitmentEndsAt.toApiJson() : this.volumeCommitmentEndsAt;\n }\n return toReturn;\n }\n}\nfunction enumStringToValue$d(enumRef, value) {\n if (typeof value === 'number') {\n return value;\n }\n return enumRef[value];\n}\nclass CreateProductRequest {\n static fromProto(proto) {\n let m = new CreateProductRequest();\n m = Object.assign(m, proto);\n if (proto.productType) {\n m.productType = enumStringToValue$d(ProductType, proto.productType);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.sku !== 'undefined') {\n toReturn['sku'] = this.sku;\n }\n if (typeof this.productId !== 'undefined') {\n toReturn['productId'] = this.productId;\n }\n if (typeof this.editionId !== 'undefined') {\n toReturn['editionId'] = this.editionId;\n }\n if (typeof this.name !== 'undefined') {\n toReturn['name'] = this.name;\n }\n if (typeof this.reportingCode !== 'undefined') {\n toReturn['reportingCode'] = this.reportingCode;\n }\n if (typeof this.productType !== 'undefined') {\n toReturn['productType'] = this.productType;\n }\n if (typeof this.metered !== 'undefined') {\n toReturn['metered'] = this.metered;\n }\n return toReturn;\n }\n}\nclass DeleteProductRequest {\n static fromProto(proto) {\n let m = new DeleteProductRequest();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.sku !== 'undefined') {\n toReturn['sku'] = this.sku;\n }\n return toReturn;\n }\n}\nclass GetMultiProductRequest {\n static fromProto(proto) {\n let m = new GetMultiProductRequest();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.skus !== 'undefined') {\n toReturn['skus'] = this.skus;\n }\n return toReturn;\n }\n}\nclass GetMultiProductResponse {\n static fromProto(proto) {\n let m = new GetMultiProductResponse();\n m = Object.assign(m, proto);\n if (proto.products) {\n m.products = Object.keys(proto.products).reduce((obj, k) => {\n obj[k] = Product.fromProto(proto.products[k]);\n return obj;\n }, {});\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.products !== 'undefined' && this.products !== null) {\n toReturn['products'] = 'toApiJson' in this.products ? this.products.toApiJson() : this.products;\n }\n return toReturn;\n }\n}\nclass ListProductsRequestListProductsFilters {\n static fromProto(proto) {\n let m = new ListProductsRequestListProductsFilters();\n m = Object.assign(m, proto);\n if (proto.productType) {\n m.productType = proto.productType.map(v => enumStringToValue$d(ProductType, v));\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.hasDiscount !== 'undefined') {\n toReturn['hasDiscount'] = this.hasDiscount;\n }\n if (typeof this.hasPricingOverride !== 'undefined') {\n toReturn['hasPricingOverride'] = this.hasPricingOverride;\n }\n if (typeof this.productType !== 'undefined') {\n toReturn['productType'] = this.productType;\n }\n if (typeof this.skus !== 'undefined') {\n toReturn['skus'] = this.skus;\n }\n return toReturn;\n }\n}\nclass ListProductsRequest {\n static fromProto(proto) {\n let m = new ListProductsRequest();\n m = Object.assign(m, proto);\n if (proto.filters) {\n m.filters = ListProductsRequestListProductsFilters.fromProto(proto.filters);\n }\n if (proto.pagingOptions) {\n m.pagingOptions = PagedRequestOptions.fromProto(proto.pagingOptions);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.merchantId !== 'undefined') {\n toReturn['merchantId'] = this.merchantId;\n }\n if (typeof this.searchTerm !== 'undefined') {\n toReturn['searchTerm'] = this.searchTerm;\n }\n if (typeof this.filters !== 'undefined' && this.filters !== null) {\n toReturn['filters'] = 'toApiJson' in this.filters ? this.filters.toApiJson() : this.filters;\n }\n if (typeof this.pagingOptions !== 'undefined' && this.pagingOptions !== null) {\n toReturn['pagingOptions'] = 'toApiJson' in this.pagingOptions ? this.pagingOptions.toApiJson() : this.pagingOptions;\n }\n return toReturn;\n }\n}\nclass ListProductsResponse {\n static fromProto(proto) {\n let m = new ListProductsResponse();\n m = Object.assign(m, proto);\n if (proto.products) {\n m.products = proto.products.map(Product.fromProto);\n }\n if (proto.pagingMetadata) {\n m.pagingMetadata = PagedResponseMetadata.fromProto(proto.pagingMetadata);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.products !== 'undefined' && this.products !== null) {\n toReturn['products'] = 'toApiJson' in this.products ? this.products.toApiJson() : this.products;\n }\n if (typeof this.pagingMetadata !== 'undefined' && this.pagingMetadata !== null) {\n toReturn['pagingMetadata'] = 'toApiJson' in this.pagingMetadata ? this.pagingMetadata.toApiJson() : this.pagingMetadata;\n }\n return toReturn;\n }\n}\nclass Product {\n static fromProto(proto) {\n let m = new Product();\n m = Object.assign(m, proto);\n if (proto.productType) {\n m.productType = enumStringToValue$d(ProductType, proto.productType);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.name !== 'undefined') {\n toReturn['name'] = this.name;\n }\n if (typeof this.sku !== 'undefined') {\n toReturn['sku'] = this.sku;\n }\n if (typeof this.iconUrl !== 'undefined') {\n toReturn['iconUrl'] = this.iconUrl;\n }\n if (typeof this.hasPricingOverride !== 'undefined') {\n toReturn['hasPricingOverride'] = this.hasPricingOverride;\n }\n if (typeof this.hasDiscount !== 'undefined') {\n toReturn['hasDiscount'] = this.hasDiscount;\n }\n if (typeof this.productType !== 'undefined') {\n toReturn['productType'] = this.productType;\n }\n if (typeof this.metered !== 'undefined') {\n toReturn['metered'] = this.metered;\n }\n return toReturn;\n }\n}\nclass GetMultiProductResponseProductsEntry {\n static fromProto(proto) {\n let m = new GetMultiProductResponseProductsEntry();\n m = Object.assign(m, proto);\n if (proto.value) {\n m.value = Product.fromProto(proto.value);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.key !== 'undefined') {\n toReturn['key'] = this.key;\n }\n if (typeof this.value !== 'undefined' && this.value !== null) {\n toReturn['value'] = 'toApiJson' in this.value ? this.value.toApiJson() : this.value;\n }\n return toReturn;\n }\n}\nclass UpdateProductRequest {\n static fromProto(proto) {\n let m = new UpdateProductRequest();\n m = Object.assign(m, proto);\n if (proto.productType) {\n m.productType = enumStringToValue$d(ProductType, proto.productType);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.sku !== 'undefined') {\n toReturn['sku'] = this.sku;\n }\n if (typeof this.name !== 'undefined') {\n toReturn['name'] = this.name;\n }\n if (typeof this.reportingCode !== 'undefined') {\n toReturn['reportingCode'] = this.reportingCode;\n }\n if (typeof this.productType !== 'undefined') {\n toReturn['productType'] = this.productType;\n }\n if (typeof this.metered !== 'undefined') {\n toReturn['metered'] = this.metered;\n }\n return toReturn;\n }\n}\nfunction enumStringToValue$c(enumRef, value) {\n if (typeof value === 'number') {\n return value;\n }\n return enumRef[value];\n}\nclass AppliedCredit {\n static fromProto(proto) {\n let m = new AppliedCredit();\n m = Object.assign(m, proto);\n if (proto.appliedAmount) {\n m.appliedAmount = parseInt(proto.appliedAmount, 10);\n }\n if (proto.referenceType) {\n m.referenceType = enumStringToValue$c(CreditType, proto.referenceType);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.appliedAmount !== 'undefined') {\n toReturn['appliedAmount'] = this.appliedAmount;\n }\n if (typeof this.referenceId !== 'undefined') {\n toReturn['referenceId'] = this.referenceId;\n }\n if (typeof this.referenceType !== 'undefined') {\n toReturn['referenceType'] = this.referenceType;\n }\n return toReturn;\n }\n}\nclass ListPurchaseRequestListPurchaseBillingStrategyFilter {\n static fromProto(proto) {\n let m = new ListPurchaseRequestListPurchaseBillingStrategyFilter();\n m = Object.assign(m, proto);\n if (proto.billingStrategy) {\n m.billingStrategy = proto.billingStrategy.map(v => enumStringToValue$c(BillingStrategy, v));\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.billingStrategy !== 'undefined') {\n toReturn['billingStrategy'] = this.billingStrategy;\n }\n return toReturn;\n }\n}\nclass ListPurchaseRequestListPurchaseFilters {\n static fromProto(proto) {\n let m = new ListPurchaseRequestListPurchaseFilters();\n m = Object.assign(m, proto);\n if (proto.start) {\n m.start = new Date(proto.start);\n }\n if (proto.end) {\n m.end = new Date(proto.end);\n }\n if (proto.billingStrategyFilter) {\n m.billingStrategyFilter = ListPurchaseRequestListPurchaseBillingStrategyFilter.fromProto(proto.billingStrategyFilter);\n }\n if (proto.state) {\n m.state = enumStringToValue$c(ListPurchaseRequestState, proto.state);\n }\n if (proto.minPrice) {\n m.minPrice = parseInt(proto.minPrice, 10);\n }\n if (proto.status) {\n m.status = enumStringToValue$c(PurchaseStatus, proto.status);\n }\n if (proto.dunningPauseStart) {\n m.dunningPauseStart = new Date(proto.dunningPauseStart);\n }\n if (proto.dunningPauseEnd) {\n m.dunningPauseEnd = new Date(proto.dunningPauseEnd);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.merchantId !== 'undefined') {\n toReturn['merchantId'] = this.merchantId;\n }\n if (typeof this.purchaseId !== 'undefined') {\n toReturn['purchaseId'] = this.purchaseId;\n }\n if (typeof this.start !== 'undefined' && this.start !== null) {\n toReturn['start'] = 'toApiJson' in this.start ? this.start.toApiJson() : this.start;\n }\n if (typeof this.end !== 'undefined' && this.end !== null) {\n toReturn['end'] = 'toApiJson' in this.end ? this.end.toApiJson() : this.end;\n }\n if (typeof this.billingStrategyFilter !== 'undefined' && this.billingStrategyFilter !== null) {\n toReturn['billingStrategyFilter'] = 'toApiJson' in this.billingStrategyFilter ? this.billingStrategyFilter.toApiJson() : this.billingStrategyFilter;\n }\n if (typeof this.state !== 'undefined') {\n toReturn['state'] = this.state;\n }\n if (typeof this.minPrice !== 'undefined') {\n toReturn['minPrice'] = this.minPrice;\n }\n if (typeof this.status !== 'undefined') {\n toReturn['status'] = this.status;\n }\n if (typeof this.includeVoided !== 'undefined') {\n toReturn['includeVoided'] = this.includeVoided;\n }\n if (typeof this.dunningPauseStart !== 'undefined' && this.dunningPauseStart !== null) {\n toReturn['dunningPauseStart'] = 'toApiJson' in this.dunningPauseStart ? this.dunningPauseStart.toApiJson() : this.dunningPauseStart;\n }\n if (typeof this.dunningPauseEnd !== 'undefined' && this.dunningPauseEnd !== null) {\n toReturn['dunningPauseEnd'] = 'toApiJson' in this.dunningPauseEnd ? this.dunningPauseEnd.toApiJson() : this.dunningPauseEnd;\n }\n return toReturn;\n }\n}\nclass ListPurchaseItemsRequestListPurchaseItemsFilters {\n static fromProto(proto) {\n let m = new ListPurchaseItemsRequestListPurchaseItemsFilters();\n m = Object.assign(m, proto);\n if (proto.start) {\n m.start = new Date(proto.start);\n }\n if (proto.end) {\n m.end = new Date(proto.end);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.merchantId !== 'undefined') {\n toReturn['merchantId'] = this.merchantId;\n }\n if (typeof this.customerId !== 'undefined') {\n toReturn['customerId'] = this.customerId;\n }\n if (typeof this.start !== 'undefined' && this.start !== null) {\n toReturn['start'] = 'toApiJson' in this.start ? this.start.toApiJson() : this.start;\n }\n if (typeof this.end !== 'undefined' && this.end !== null) {\n toReturn['end'] = 'toApiJson' in this.end ? this.end.toApiJson() : this.end;\n }\n return toReturn;\n }\n}\nclass ListPurchaseItemsRequest {\n static fromProto(proto) {\n let m = new ListPurchaseItemsRequest();\n m = Object.assign(m, proto);\n if (proto.filters) {\n m.filters = ListPurchaseItemsRequestListPurchaseItemsFilters.fromProto(proto.filters);\n }\n if (proto.pagingOptions) {\n m.pagingOptions = PagedRequestOptions.fromProto(proto.pagingOptions);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.filters !== 'undefined' && this.filters !== null) {\n toReturn['filters'] = 'toApiJson' in this.filters ? this.filters.toApiJson() : this.filters;\n }\n if (typeof this.pagingOptions !== 'undefined' && this.pagingOptions !== null) {\n toReturn['pagingOptions'] = 'toApiJson' in this.pagingOptions ? this.pagingOptions.toApiJson() : this.pagingOptions;\n }\n return toReturn;\n }\n}\nclass ListPurchaseItemsResponse {\n static fromProto(proto) {\n let m = new ListPurchaseItemsResponse();\n m = Object.assign(m, proto);\n if (proto.purchaseItems) {\n m.purchaseItems = proto.purchaseItems.map(PurchaseItem.fromProto);\n }\n if (proto.pagingMetadata) {\n m.pagingMetadata = PagedResponseMetadata.fromProto(proto.pagingMetadata);\n }\n if (proto.currency) {\n m.currency = enumStringToValue$c(Currency, proto.currency);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.purchaseItems !== 'undefined' && this.purchaseItems !== null) {\n toReturn['purchaseItems'] = 'toApiJson' in this.purchaseItems ? this.purchaseItems.toApiJson() : this.purchaseItems;\n }\n if (typeof this.pagingMetadata !== 'undefined' && this.pagingMetadata !== null) {\n toReturn['pagingMetadata'] = 'toApiJson' in this.pagingMetadata ? this.pagingMetadata.toApiJson() : this.pagingMetadata;\n }\n if (typeof this.currency !== 'undefined') {\n toReturn['currency'] = this.currency;\n }\n return toReturn;\n }\n}\nclass ListPurchaseRequest {\n static fromProto(proto) {\n let m = new ListPurchaseRequest();\n m = Object.assign(m, proto);\n if (proto.filters) {\n m.filters = ListPurchaseRequestListPurchaseFilters.fromProto(proto.filters);\n }\n if (proto.pagingOptions) {\n m.pagingOptions = PagedRequestOptions.fromProto(proto.pagingOptions);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.filters !== 'undefined' && this.filters !== null) {\n toReturn['filters'] = 'toApiJson' in this.filters ? this.filters.toApiJson() : this.filters;\n }\n if (typeof this.pagingOptions !== 'undefined' && this.pagingOptions !== null) {\n toReturn['pagingOptions'] = 'toApiJson' in this.pagingOptions ? this.pagingOptions.toApiJson() : this.pagingOptions;\n }\n return toReturn;\n }\n}\nclass ListPurchaseResponse {\n static fromProto(proto) {\n let m = new ListPurchaseResponse();\n m = Object.assign(m, proto);\n if (proto.purchases) {\n m.purchases = proto.purchases.map(Purchase.fromProto);\n }\n if (proto.pagingMetadata) {\n m.pagingMetadata = PagedResponseMetadata.fromProto(proto.pagingMetadata);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.purchases !== 'undefined' && this.purchases !== null) {\n toReturn['purchases'] = 'toApiJson' in this.purchases ? this.purchases.toApiJson() : this.purchases;\n }\n if (typeof this.pagingMetadata !== 'undefined' && this.pagingMetadata !== null) {\n toReturn['pagingMetadata'] = 'toApiJson' in this.pagingMetadata ? this.pagingMetadata.toApiJson() : this.pagingMetadata;\n }\n return toReturn;\n }\n}\nclass PauseDunningRequest {\n static fromProto(proto) {\n let m = new PauseDunningRequest();\n m = Object.assign(m, proto);\n if (proto.pauseDunningUntil) {\n m.pauseDunningUntil = new Date(proto.pauseDunningUntil);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.purchaseId !== 'undefined') {\n toReturn['purchaseId'] = this.purchaseId;\n }\n if (typeof this.merchantId !== 'undefined') {\n toReturn['merchantId'] = this.merchantId;\n }\n if (typeof this.day !== 'undefined') {\n toReturn['day'] = this.day;\n }\n if (typeof this.pauseDunningUntil !== 'undefined' && this.pauseDunningUntil !== null) {\n toReturn['pauseDunningUntil'] = 'toApiJson' in this.pauseDunningUntil ? this.pauseDunningUntil.toApiJson() : this.pauseDunningUntil;\n }\n return toReturn;\n }\n}\nclass Purchase {\n static fromProto(proto) {\n let m = new Purchase();\n m = Object.assign(m, proto);\n if (proto.timestamp) {\n m.timestamp = new Date(proto.timestamp);\n }\n if (proto.total) {\n m.total = parseInt(proto.total, 10);\n }\n if (proto.currency) {\n m.currency = enumStringToValue$c(Currency, proto.currency);\n }\n if (proto.items) {\n m.items = proto.items.map(PurchaseItem.fromProto);\n }\n if (proto.billingStrategy) {\n m.billingStrategy = enumStringToValue$c(BillingStrategy, proto.billingStrategy);\n }\n if (proto.dunningAttempt) {\n m.dunningAttempt = parseInt(proto.dunningAttempt, 10);\n }\n if (proto.voided) {\n m.voided = new Date(proto.voided);\n }\n if (proto.status) {\n m.status = enumStringToValue$c(PurchaseStatus, proto.status);\n }\n if (proto.creditAmount) {\n m.creditAmount = parseInt(proto.creditAmount, 10);\n }\n if (proto.appliedCredits) {\n m.appliedCredits = proto.appliedCredits.map(AppliedCredit.fromProto);\n }\n if (proto.taxAmount) {\n m.taxAmount = parseInt(proto.taxAmount, 10);\n }\n if (proto.appliedTaxRates) {\n m.appliedTaxRates = proto.appliedTaxRates.map(AppliedTaxRate.fromProto);\n }\n if (proto.pauseDunningUntil) {\n m.pauseDunningUntil = new Date(proto.pauseDunningUntil);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.merchantId !== 'undefined') {\n toReturn['merchantId'] = this.merchantId;\n }\n if (typeof this.timestamp !== 'undefined' && this.timestamp !== null) {\n toReturn['timestamp'] = 'toApiJson' in this.timestamp ? this.timestamp.toApiJson() : this.timestamp;\n }\n if (typeof this.purchaseId !== 'undefined') {\n toReturn['purchaseId'] = this.purchaseId;\n }\n if (typeof this.total !== 'undefined') {\n toReturn['total'] = this.total;\n }\n if (typeof this.currency !== 'undefined') {\n toReturn['currency'] = this.currency;\n }\n if (typeof this.renewal !== 'undefined') {\n toReturn['renewal'] = this.renewal;\n }\n if (typeof this.items !== 'undefined' && this.items !== null) {\n toReturn['items'] = 'toApiJson' in this.items ? this.items.toApiJson() : this.items;\n }\n if (typeof this.billingStrategy !== 'undefined') {\n toReturn['billingStrategy'] = this.billingStrategy;\n }\n if (typeof this.isDunning !== 'undefined') {\n toReturn['isDunning'] = this.isDunning;\n }\n if (typeof this.dunningAttempt !== 'undefined') {\n toReturn['dunningAttempt'] = this.dunningAttempt;\n }\n if (typeof this.voided !== 'undefined' && this.voided !== null) {\n toReturn['voided'] = 'toApiJson' in this.voided ? this.voided.toApiJson() : this.voided;\n }\n if (typeof this.paid !== 'undefined') {\n toReturn['paid'] = this.paid;\n }\n if (typeof this.status !== 'undefined') {\n toReturn['status'] = this.status;\n }\n if (typeof this.creditAmount !== 'undefined') {\n toReturn['creditAmount'] = this.creditAmount;\n }\n if (typeof this.appliedCredits !== 'undefined' && this.appliedCredits !== null) {\n toReturn['appliedCredits'] = 'toApiJson' in this.appliedCredits ? this.appliedCredits.toApiJson() : this.appliedCredits;\n }\n if (typeof this.taxAmount !== 'undefined') {\n toReturn['taxAmount'] = this.taxAmount;\n }\n if (typeof this.appliedTaxRates !== 'undefined' && this.appliedTaxRates !== null) {\n toReturn['appliedTaxRates'] = 'toApiJson' in this.appliedTaxRates ? this.appliedTaxRates.toApiJson() : this.appliedTaxRates;\n }\n if (typeof this.pauseDunningUntil !== 'undefined' && this.pauseDunningUntil !== null) {\n toReturn['pauseDunningUntil'] = 'toApiJson' in this.pauseDunningUntil ? this.pauseDunningUntil.toApiJson() : this.pauseDunningUntil;\n }\n return toReturn;\n }\n}\nclass PurchaseItem {\n static fromProto(proto) {\n let m = new PurchaseItem();\n m = Object.assign(m, proto);\n if (proto.amount) {\n m.amount = parseInt(proto.amount, 10);\n }\n if (proto.discountAmount) {\n m.discountAmount = parseInt(proto.discountAmount, 10);\n }\n if (proto.total) {\n m.total = parseInt(proto.total, 10);\n }\n if (proto.appliedDiscounts) {\n m.appliedDiscounts = proto.appliedDiscounts.map(AppliedDiscount.fromProto);\n }\n if (proto.taxAmount) {\n m.taxAmount = parseInt(proto.taxAmount, 10);\n }\n if (proto.appliedTaxRates) {\n m.appliedTaxRates = proto.appliedTaxRates.map(AppliedTaxRate.fromProto);\n }\n if (proto.setupFee) {\n m.setupFee = parseInt(proto.setupFee, 10);\n }\n if (proto.feeAmount) {\n m.feeAmount = parseInt(proto.feeAmount, 10);\n }\n if (proto.appliedFees) {\n m.appliedFees = proto.appliedFees.map(AppliedFee.fromProto);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.sku !== 'undefined') {\n toReturn['sku'] = this.sku;\n }\n if (typeof this.amount !== 'undefined') {\n toReturn['amount'] = this.amount;\n }\n if (typeof this.orderId !== 'undefined') {\n toReturn['orderId'] = this.orderId;\n }\n if (typeof this.customerId !== 'undefined') {\n toReturn['customerId'] = this.customerId;\n }\n if (typeof this.discountAmount !== 'undefined') {\n toReturn['discountAmount'] = this.discountAmount;\n }\n if (typeof this.total !== 'undefined') {\n toReturn['total'] = this.total;\n }\n if (typeof this.appliedDiscounts !== 'undefined' && this.appliedDiscounts !== null) {\n toReturn['appliedDiscounts'] = 'toApiJson' in this.appliedDiscounts ? this.appliedDiscounts.toApiJson() : this.appliedDiscounts;\n }\n if (typeof this.merchantId !== 'undefined') {\n toReturn['merchantId'] = this.merchantId;\n }\n if (typeof this.day !== 'undefined') {\n toReturn['day'] = this.day;\n }\n if (typeof this.purchaseId !== 'undefined') {\n toReturn['purchaseId'] = this.purchaseId;\n }\n if (typeof this.description !== 'undefined') {\n toReturn['description'] = this.description;\n }\n if (typeof this.taxAmount !== 'undefined') {\n toReturn['taxAmount'] = this.taxAmount;\n }\n if (typeof this.appliedTaxRates !== 'undefined' && this.appliedTaxRates !== null) {\n toReturn['appliedTaxRates'] = 'toApiJson' in this.appliedTaxRates ? this.appliedTaxRates.toApiJson() : this.appliedTaxRates;\n }\n if (typeof this.setupFee !== 'undefined') {\n toReturn['setupFee'] = this.setupFee;\n }\n if (typeof this.feeAmount !== 'undefined') {\n toReturn['feeAmount'] = this.feeAmount;\n }\n if (typeof this.appliedFees !== 'undefined' && this.appliedFees !== null) {\n toReturn['appliedFees'] = 'toApiJson' in this.appliedFees ? this.appliedFees.toApiJson() : this.appliedFees;\n }\n return toReturn;\n }\n}\nclass ResumeDunningRequest {\n static fromProto(proto) {\n let m = new ResumeDunningRequest();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.purchaseId !== 'undefined') {\n toReturn['purchaseId'] = this.purchaseId;\n }\n if (typeof this.merchantId !== 'undefined') {\n toReturn['merchantId'] = this.merchantId;\n }\n if (typeof this.day !== 'undefined') {\n toReturn['day'] = this.day;\n }\n return toReturn;\n }\n}\nclass RetryPurchaseRequest {\n static fromProto(proto) {\n let m = new RetryPurchaseRequest();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.purchaseId !== 'undefined') {\n toReturn['purchaseId'] = this.purchaseId;\n }\n if (typeof this.merchantId !== 'undefined') {\n toReturn['merchantId'] = this.merchantId;\n }\n if (typeof this.day !== 'undefined') {\n toReturn['day'] = this.day;\n }\n if (typeof this.shouldEnterDunning !== 'undefined') {\n toReturn['shouldEnterDunning'] = this.shouldEnterDunning;\n }\n return toReturn;\n }\n}\nclass StopDunningRequest {\n static fromProto(proto) {\n let m = new StopDunningRequest();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.purchaseId !== 'undefined') {\n toReturn['purchaseId'] = this.purchaseId;\n }\n if (typeof this.merchantId !== 'undefined') {\n toReturn['merchantId'] = this.merchantId;\n }\n if (typeof this.day !== 'undefined') {\n toReturn['day'] = this.day;\n }\n return toReturn;\n }\n}\nclass VoidPurchaseRequest {\n static fromProto(proto) {\n let m = new VoidPurchaseRequest();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.purchaseId !== 'undefined') {\n toReturn['purchaseId'] = this.purchaseId;\n }\n if (typeof this.merchantId !== 'undefined') {\n toReturn['merchantId'] = this.merchantId;\n }\n if (typeof this.day !== 'undefined') {\n toReturn['day'] = this.day;\n }\n return toReturn;\n }\n}\nfunction enumStringToValue$b(enumRef, value) {\n if (typeof value === 'number') {\n return value;\n }\n return enumRef[value];\n}\nclass CreateRefundRequest {\n static fromProto(proto) {\n let m = new CreateRefundRequest();\n m = Object.assign(m, proto);\n if (proto.amount) {\n m.amount = parseInt(proto.amount, 10);\n }\n if (proto.reason) {\n m.reason = enumStringToValue$b(RefundReason, proto.reason);\n }\n if (proto.referenceType) {\n m.referenceType = enumStringToValue$b(ReferenceType, proto.referenceType);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.merchantId !== 'undefined') {\n toReturn['merchantId'] = this.merchantId;\n }\n if (typeof this.paymentId !== 'undefined') {\n toReturn['paymentId'] = this.paymentId;\n }\n if (typeof this.amount !== 'undefined') {\n toReturn['amount'] = this.amount;\n }\n if (typeof this.reason !== 'undefined') {\n toReturn['reason'] = this.reason;\n }\n if (typeof this.referenceType !== 'undefined') {\n toReturn['referenceType'] = this.referenceType;\n }\n if (typeof this.referenceId !== 'undefined') {\n toReturn['referenceId'] = this.referenceId;\n }\n if (typeof this.description !== 'undefined') {\n toReturn['description'] = this.description;\n }\n return toReturn;\n }\n}\nclass ListRefundsRequest {\n static fromProto(proto) {\n let m = new ListRefundsRequest();\n m = Object.assign(m, proto);\n if (proto.pageSize) {\n m.pageSize = parseInt(proto.pageSize, 10);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.paymentIds !== 'undefined') {\n toReturn['paymentIds'] = this.paymentIds;\n }\n if (typeof this.cursor !== 'undefined') {\n toReturn['cursor'] = this.cursor;\n }\n if (typeof this.pageSize !== 'undefined') {\n toReturn['pageSize'] = this.pageSize;\n }\n if (typeof this.merchantId !== 'undefined') {\n toReturn['merchantId'] = this.merchantId;\n }\n return toReturn;\n }\n}\nclass ListRefundsResponse {\n static fromProto(proto) {\n let m = new ListRefundsResponse();\n m = Object.assign(m, proto);\n if (proto.refunds) {\n m.refunds = proto.refunds.map(Refund.fromProto);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.refunds !== 'undefined' && this.refunds !== null) {\n toReturn['refunds'] = 'toApiJson' in this.refunds ? this.refunds.toApiJson() : this.refunds;\n }\n if (typeof this.nextCursor !== 'undefined') {\n toReturn['nextCursor'] = this.nextCursor;\n }\n if (typeof this.hasMore !== 'undefined') {\n toReturn['hasMore'] = this.hasMore;\n }\n return toReturn;\n }\n}\nclass Refund {\n static fromProto(proto) {\n let m = new Refund();\n m = Object.assign(m, proto);\n if (proto.amount) {\n m.amount = parseInt(proto.amount, 10);\n }\n if (proto.reason) {\n m.reason = enumStringToValue$b(RefundReason, proto.reason);\n }\n if (proto.status) {\n m.status = enumStringToValue$b(RefundStatus, proto.status);\n }\n if (proto.created) {\n m.created = new Date(proto.created);\n }\n if (proto.updated) {\n m.updated = new Date(proto.updated);\n }\n if (proto.referenceType) {\n m.referenceType = enumStringToValue$b(ReferenceType, proto.referenceType);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.merchantId !== 'undefined') {\n toReturn['merchantId'] = this.merchantId;\n }\n if (typeof this.chargeId !== 'undefined') {\n toReturn['chargeId'] = this.chargeId;\n }\n if (typeof this.refundId !== 'undefined') {\n toReturn['refundId'] = this.refundId;\n }\n if (typeof this.amount !== 'undefined') {\n toReturn['amount'] = this.amount;\n }\n if (typeof this.email !== 'undefined') {\n toReturn['email'] = this.email;\n }\n if (typeof this.reason !== 'undefined') {\n toReturn['reason'] = this.reason;\n }\n if (typeof this.status !== 'undefined') {\n toReturn['status'] = this.status;\n }\n if (typeof this.created !== 'undefined' && this.created !== null) {\n toReturn['created'] = 'toApiJson' in this.created ? this.created.toApiJson() : this.created;\n }\n if (typeof this.updated !== 'undefined' && this.updated !== null) {\n toReturn['updated'] = 'toApiJson' in this.updated ? this.updated.toApiJson() : this.updated;\n }\n if (typeof this.referenceType !== 'undefined') {\n toReturn['referenceType'] = this.referenceType;\n }\n if (typeof this.referenceId !== 'undefined') {\n toReturn['referenceId'] = this.referenceId;\n }\n if (typeof this.description !== 'undefined') {\n toReturn['description'] = this.description;\n }\n return toReturn;\n }\n}\nfunction enumStringToValue$a(enumRef, value) {\n if (typeof value === 'number') {\n return value;\n }\n return enumRef[value];\n}\nclass CreateSalesCreditNoteRequest {\n static fromProto(proto) {\n let m = new CreateSalesCreditNoteRequest();\n m = Object.assign(m, proto);\n if (proto.creditNoteDate) {\n m.creditNoteDate = new Date(proto.creditNoteDate);\n }\n if (proto.dueDate) {\n m.dueDate = new Date(proto.dueDate);\n }\n if (proto.total) {\n m.total = parseInt(proto.total, 10);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.merchantId !== 'undefined') {\n toReturn['merchantId'] = this.merchantId;\n }\n if (typeof this.creditNoteReason !== 'undefined') {\n toReturn['creditNoteReason'] = this.creditNoteReason;\n }\n if (typeof this.creditNoteDate !== 'undefined' && this.creditNoteDate !== null) {\n toReturn['creditNoteDate'] = 'toApiJson' in this.creditNoteDate ? this.creditNoteDate.toApiJson() : this.creditNoteDate;\n }\n if (typeof this.dueDate !== 'undefined' && this.dueDate !== null) {\n toReturn['dueDate'] = 'toApiJson' in this.dueDate ? this.dueDate.toApiJson() : this.dueDate;\n }\n if (typeof this.total !== 'undefined') {\n toReturn['total'] = this.total;\n }\n if (typeof this.sku !== 'undefined') {\n toReturn['sku'] = this.sku;\n }\n return toReturn;\n }\n}\nclass ListSalesCreditNoteRequestListSalesCreditNoteFilters {\n static fromProto(proto) {\n let m = new ListSalesCreditNoteRequestListSalesCreditNoteFilters();\n m = Object.assign(m, proto);\n if (proto.statuses) {\n m.statuses = proto.statuses.map(v => enumStringToValue$a(SalesCreditNoteStatus, v));\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.merchantId !== 'undefined') {\n toReturn['merchantId'] = this.merchantId;\n }\n if (typeof this.statuses !== 'undefined') {\n toReturn['statuses'] = this.statuses;\n }\n return toReturn;\n }\n}\nclass ListSalesCreditNoteRequest {\n static fromProto(proto) {\n let m = new ListSalesCreditNoteRequest();\n m = Object.assign(m, proto);\n if (proto.filters) {\n m.filters = ListSalesCreditNoteRequestListSalesCreditNoteFilters.fromProto(proto.filters);\n }\n if (proto.pagingOptions) {\n m.pagingOptions = PagedRequestOptions.fromProto(proto.pagingOptions);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.filters !== 'undefined' && this.filters !== null) {\n toReturn['filters'] = 'toApiJson' in this.filters ? this.filters.toApiJson() : this.filters;\n }\n if (typeof this.pagingOptions !== 'undefined' && this.pagingOptions !== null) {\n toReturn['pagingOptions'] = 'toApiJson' in this.pagingOptions ? this.pagingOptions.toApiJson() : this.pagingOptions;\n }\n return toReturn;\n }\n}\nclass ListSalesCreditNoteResponse {\n static fromProto(proto) {\n let m = new ListSalesCreditNoteResponse();\n m = Object.assign(m, proto);\n if (proto.creditNote) {\n m.creditNote = proto.creditNote.map(SalesCreditNote.fromProto);\n }\n if (proto.pagingMetadata) {\n m.pagingMetadata = PagedResponseMetadata.fromProto(proto.pagingMetadata);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.creditNote !== 'undefined' && this.creditNote !== null) {\n toReturn['creditNote'] = 'toApiJson' in this.creditNote ? this.creditNote.toApiJson() : this.creditNote;\n }\n if (typeof this.pagingMetadata !== 'undefined' && this.pagingMetadata !== null) {\n toReturn['pagingMetadata'] = 'toApiJson' in this.pagingMetadata ? this.pagingMetadata.toApiJson() : this.pagingMetadata;\n }\n return toReturn;\n }\n}\nclass SalesCreditNote {\n static fromProto(proto) {\n let m = new SalesCreditNote();\n m = Object.assign(m, proto);\n if (proto.creditNoteDate) {\n m.creditNoteDate = new Date(proto.creditNoteDate);\n }\n if (proto.dueDate) {\n m.dueDate = new Date(proto.dueDate);\n }\n if (proto.currency) {\n m.currency = enumStringToValue$a(Currency, proto.currency);\n }\n if (proto.total) {\n m.total = parseInt(proto.total, 10);\n }\n if (proto.outstanding) {\n m.outstanding = parseInt(proto.outstanding, 10);\n }\n if (proto.status) {\n m.status = enumStringToValue$a(SalesCreditNoteStatus, proto.status);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.creditNoteId !== 'undefined') {\n toReturn['creditNoteId'] = this.creditNoteId;\n }\n if (typeof this.creditNoteNumber !== 'undefined') {\n toReturn['creditNoteNumber'] = this.creditNoteNumber;\n }\n if (typeof this.merchantId !== 'undefined') {\n toReturn['merchantId'] = this.merchantId;\n }\n if (typeof this.creditNoteReason !== 'undefined') {\n toReturn['creditNoteReason'] = this.creditNoteReason;\n }\n if (typeof this.creditNoteDate !== 'undefined' && this.creditNoteDate !== null) {\n toReturn['creditNoteDate'] = 'toApiJson' in this.creditNoteDate ? this.creditNoteDate.toApiJson() : this.creditNoteDate;\n }\n if (typeof this.dueDate !== 'undefined' && this.dueDate !== null) {\n toReturn['dueDate'] = 'toApiJson' in this.dueDate ? this.dueDate.toApiJson() : this.dueDate;\n }\n if (typeof this.currency !== 'undefined') {\n toReturn['currency'] = this.currency;\n }\n if (typeof this.total !== 'undefined') {\n toReturn['total'] = this.total;\n }\n if (typeof this.outstanding !== 'undefined') {\n toReturn['outstanding'] = this.outstanding;\n }\n if (typeof this.invoiceId !== 'undefined') {\n toReturn['invoiceId'] = this.invoiceId;\n }\n if (typeof this.invoiceNumber !== 'undefined') {\n toReturn['invoiceNumber'] = this.invoiceNumber;\n }\n if (typeof this.status !== 'undefined') {\n toReturn['status'] = this.status;\n }\n if (typeof this.paymentStatus !== 'undefined') {\n toReturn['paymentStatus'] = this.paymentStatus;\n }\n if (typeof this.externalId !== 'undefined') {\n toReturn['externalId'] = this.externalId;\n }\n return toReturn;\n }\n}\nfunction enumStringToValue$9(enumRef, value) {\n if (typeof value === 'number') {\n return value;\n }\n return enumRef[value];\n}\nclass GetSalesInvoiceRequest {\n static fromProto(proto) {\n let m = new GetSalesInvoiceRequest();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.invoiceId !== 'undefined') {\n toReturn['invoiceId'] = this.invoiceId;\n }\n if (typeof this.merchantId !== 'undefined') {\n toReturn['merchantId'] = this.merchantId;\n }\n return toReturn;\n }\n}\nclass GetSalesInvoiceResponse {\n static fromProto(proto) {\n let m = new GetSalesInvoiceResponse();\n m = Object.assign(m, proto);\n if (proto.invoice) {\n m.invoice = SalesInvoice.fromProto(proto.invoice);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.invoice !== 'undefined' && this.invoice !== null) {\n toReturn['invoice'] = 'toApiJson' in this.invoice ? this.invoice.toApiJson() : this.invoice;\n }\n return toReturn;\n }\n}\nclass ListSalesInvoiceRequestListSalesInvoiceFilters {\n static fromProto(proto) {\n let m = new ListSalesInvoiceRequestListSalesInvoiceFilters();\n m = Object.assign(m, proto);\n if (proto.statuses) {\n m.statuses = proto.statuses.map(v => enumStringToValue$9(SalesInvoiceStatus, v));\n }\n if (proto.paymentStatuses) {\n m.paymentStatuses = proto.paymentStatuses.map(v => enumStringToValue$9(PaymentStatuses, v));\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.merchantId !== 'undefined') {\n toReturn['merchantId'] = this.merchantId;\n }\n if (typeof this.statuses !== 'undefined') {\n toReturn['statuses'] = this.statuses;\n }\n if (typeof this.paymentStatuses !== 'undefined') {\n toReturn['paymentStatuses'] = this.paymentStatuses;\n }\n if (typeof this.invoiceId !== 'undefined') {\n toReturn['invoiceId'] = this.invoiceId;\n }\n return toReturn;\n }\n}\nclass ListSalesInvoiceRequest {\n static fromProto(proto) {\n let m = new ListSalesInvoiceRequest();\n m = Object.assign(m, proto);\n if (proto.filters) {\n m.filters = ListSalesInvoiceRequestListSalesInvoiceFilters.fromProto(proto.filters);\n }\n if (proto.pagingOptions) {\n m.pagingOptions = PagedRequestOptions.fromProto(proto.pagingOptions);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.filters !== 'undefined' && this.filters !== null) {\n toReturn['filters'] = 'toApiJson' in this.filters ? this.filters.toApiJson() : this.filters;\n }\n if (typeof this.pagingOptions !== 'undefined' && this.pagingOptions !== null) {\n toReturn['pagingOptions'] = 'toApiJson' in this.pagingOptions ? this.pagingOptions.toApiJson() : this.pagingOptions;\n }\n if (typeof this.searchTerm !== 'undefined') {\n toReturn['searchTerm'] = this.searchTerm;\n }\n return toReturn;\n }\n}\nclass ListSalesInvoiceResponse {\n static fromProto(proto) {\n let m = new ListSalesInvoiceResponse();\n m = Object.assign(m, proto);\n if (proto.invoice) {\n m.invoice = proto.invoice.map(SalesInvoice.fromProto);\n }\n if (proto.pagingMetadata) {\n m.pagingMetadata = PagedResponseMetadata.fromProto(proto.pagingMetadata);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.invoice !== 'undefined' && this.invoice !== null) {\n toReturn['invoice'] = 'toApiJson' in this.invoice ? this.invoice.toApiJson() : this.invoice;\n }\n if (typeof this.pagingMetadata !== 'undefined' && this.pagingMetadata !== null) {\n toReturn['pagingMetadata'] = 'toApiJson' in this.pagingMetadata ? this.pagingMetadata.toApiJson() : this.pagingMetadata;\n }\n return toReturn;\n }\n}\nclass PostSalesInvoiceRequest {\n static fromProto(proto) {\n let m = new PostSalesInvoiceRequest();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.invoiceId !== 'undefined') {\n toReturn['invoiceId'] = this.invoiceId;\n }\n return toReturn;\n }\n}\nclass SalesInvoice {\n static fromProto(proto) {\n let m = new SalesInvoice();\n m = Object.assign(m, proto);\n if (proto.invoiceDate) {\n m.invoiceDate = new Date(proto.invoiceDate);\n }\n if (proto.startDate) {\n m.startDate = new Date(proto.startDate);\n }\n if (proto.endDate) {\n m.endDate = new Date(proto.endDate);\n }\n if (proto.dueDate) {\n m.dueDate = new Date(proto.dueDate);\n }\n if (proto.total) {\n m.total = parseInt(proto.total, 10);\n }\n if (proto.currency) {\n m.currency = enumStringToValue$9(Currency, proto.currency);\n }\n if (proto.status) {\n m.status = enumStringToValue$9(SalesInvoiceStatus, proto.status);\n }\n if (proto.outstanding) {\n m.outstanding = parseInt(proto.outstanding, 10);\n }\n if (proto.type) {\n m.type = enumStringToValue$9(SalesInvoiceType, proto.type);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.invoiceId !== 'undefined') {\n toReturn['invoiceId'] = this.invoiceId;\n }\n if (typeof this.invoiceNumber !== 'undefined') {\n toReturn['invoiceNumber'] = this.invoiceNumber;\n }\n if (typeof this.merchantId !== 'undefined') {\n toReturn['merchantId'] = this.merchantId;\n }\n if (typeof this.invoiceDate !== 'undefined' && this.invoiceDate !== null) {\n toReturn['invoiceDate'] = 'toApiJson' in this.invoiceDate ? this.invoiceDate.toApiJson() : this.invoiceDate;\n }\n if (typeof this.startDate !== 'undefined' && this.startDate !== null) {\n toReturn['startDate'] = 'toApiJson' in this.startDate ? this.startDate.toApiJson() : this.startDate;\n }\n if (typeof this.endDate !== 'undefined' && this.endDate !== null) {\n toReturn['endDate'] = 'toApiJson' in this.endDate ? this.endDate.toApiJson() : this.endDate;\n }\n if (typeof this.dueDate !== 'undefined' && this.dueDate !== null) {\n toReturn['dueDate'] = 'toApiJson' in this.dueDate ? this.dueDate.toApiJson() : this.dueDate;\n }\n if (typeof this.total !== 'undefined') {\n toReturn['total'] = this.total;\n }\n if (typeof this.currency !== 'undefined') {\n toReturn['currency'] = this.currency;\n }\n if (typeof this.status !== 'undefined') {\n toReturn['status'] = this.status;\n }\n if (typeof this.paymentStatus !== 'undefined') {\n toReturn['paymentStatus'] = this.paymentStatus;\n }\n if (typeof this.outstanding !== 'undefined') {\n toReturn['outstanding'] = this.outstanding;\n }\n if (typeof this.type !== 'undefined') {\n toReturn['type'] = this.type;\n }\n if (typeof this.externalId !== 'undefined') {\n toReturn['externalId'] = this.externalId;\n }\n return toReturn;\n }\n}\nclass SendSalesInvoiceEmailRequest {\n static fromProto(proto) {\n let m = new SendSalesInvoiceEmailRequest();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.merchantId !== 'undefined') {\n toReturn['merchantId'] = this.merchantId;\n }\n if (typeof this.invoiceId !== 'undefined') {\n toReturn['invoiceId'] = this.invoiceId;\n }\n return toReturn;\n }\n}\nclass SendSalesInvoiceReceiptEmailRequest {\n static fromProto(proto) {\n let m = new SendSalesInvoiceReceiptEmailRequest();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.merchantId !== 'undefined') {\n toReturn['merchantId'] = this.merchantId;\n }\n if (typeof this.invoiceId !== 'undefined') {\n toReturn['invoiceId'] = this.invoiceId;\n }\n return toReturn;\n }\n}\nfunction enumStringToValue$8(enumRef, value) {\n if (typeof value === 'number') {\n return value;\n }\n return enumRef[value];\n}\nclass ContractDocument {\n static fromProto(proto) {\n let m = new ContractDocument();\n m = Object.assign(m, proto);\n if (proto.created) {\n m.created = new Date(proto.created);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.merchantId !== 'undefined') {\n toReturn['merchantId'] = this.merchantId;\n }\n if (typeof this.id !== 'undefined') {\n toReturn['id'] = this.id;\n }\n if (typeof this.filename !== 'undefined') {\n toReturn['filename'] = this.filename;\n }\n if (typeof this.created !== 'undefined' && this.created !== null) {\n toReturn['created'] = 'toApiJson' in this.created ? this.created.toApiJson() : this.created;\n }\n return toReturn;\n }\n}\nclass DeleteContractDocumentRequest {\n static fromProto(proto) {\n let m = new DeleteContractDocumentRequest();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.merchantId !== 'undefined') {\n toReturn['merchantId'] = this.merchantId;\n }\n if (typeof this.id !== 'undefined') {\n toReturn['id'] = this.id;\n }\n return toReturn;\n }\n}\nclass ListContractDocumentsRequestFilters {\n static fromProto(proto) {\n let m = new ListContractDocumentsRequestFilters();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.merchantId !== 'undefined') {\n toReturn['merchantId'] = this.merchantId;\n }\n return toReturn;\n }\n}\nclass ListContractDocumentsRequest {\n static fromProto(proto) {\n let m = new ListContractDocumentsRequest();\n m = Object.assign(m, proto);\n if (proto.filters) {\n m.filters = ListContractDocumentsRequestFilters.fromProto(proto.filters);\n }\n if (proto.pagingOptions) {\n m.pagingOptions = PagedRequestOptions.fromProto(proto.pagingOptions);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.filters !== 'undefined' && this.filters !== null) {\n toReturn['filters'] = 'toApiJson' in this.filters ? this.filters.toApiJson() : this.filters;\n }\n if (typeof this.pagingOptions !== 'undefined' && this.pagingOptions !== null) {\n toReturn['pagingOptions'] = 'toApiJson' in this.pagingOptions ? this.pagingOptions.toApiJson() : this.pagingOptions;\n }\n return toReturn;\n }\n}\nclass ListContractDocumentsResponse {\n static fromProto(proto) {\n let m = new ListContractDocumentsResponse();\n m = Object.assign(m, proto);\n if (proto.contractDocuments) {\n m.contractDocuments = proto.contractDocuments.map(ContractDocument.fromProto);\n }\n if (proto.pagingMetadata) {\n m.pagingMetadata = PagedResponseMetadata.fromProto(proto.pagingMetadata);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.contractDocuments !== 'undefined' && this.contractDocuments !== null) {\n toReturn['contractDocuments'] = 'toApiJson' in this.contractDocuments ? this.contractDocuments.toApiJson() : this.contractDocuments;\n }\n if (typeof this.pagingMetadata !== 'undefined' && this.pagingMetadata !== null) {\n toReturn['pagingMetadata'] = 'toApiJson' in this.pagingMetadata ? this.pagingMetadata.toApiJson() : this.pagingMetadata;\n }\n return toReturn;\n }\n}\nfunction enumStringToValue$7(enumRef, value) {\n if (typeof value === 'number') {\n return value;\n }\n return enumRef[value];\n}\nclass GetRetailCustomerConfigurationRequest {\n static fromProto(proto) {\n let m = new GetRetailCustomerConfigurationRequest();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.customerId !== 'undefined') {\n toReturn['customerId'] = this.customerId;\n }\n if (typeof this.merchantId !== 'undefined') {\n toReturn['merchantId'] = this.merchantId;\n }\n return toReturn;\n }\n}\nclass GetRetailCustomerConfigurationResponse {\n static fromProto(proto) {\n let m = new GetRetailCustomerConfigurationResponse();\n m = Object.assign(m, proto);\n if (proto.configuration) {\n m.configuration = RetailCustomerConfiguration.fromProto(proto.configuration);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.configuration !== 'undefined' && this.configuration !== null) {\n toReturn['configuration'] = 'toApiJson' in this.configuration ? this.configuration.toApiJson() : this.configuration;\n }\n return toReturn;\n }\n}\nclass RetailCustomerConfiguration {\n static fromProto(proto) {\n let m = new RetailCustomerConfiguration();\n m = Object.assign(m, proto);\n if (proto.invoiceDay) {\n m.invoiceDay = parseInt(proto.invoiceDay, 10);\n }\n if (proto.nextInvoiceDate) {\n m.nextInvoiceDate = new Date(proto.nextInvoiceDate);\n }\n if (proto.netD) {\n m.netD = parseInt(proto.netD, 10);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.customerId !== 'undefined') {\n toReturn['customerId'] = this.customerId;\n }\n if (typeof this.merchantId !== 'undefined') {\n toReturn['merchantId'] = this.merchantId;\n }\n if (typeof this.invoiceDay !== 'undefined') {\n toReturn['invoiceDay'] = this.invoiceDay;\n }\n if (typeof this.nextInvoiceDate !== 'undefined' && this.nextInvoiceDate !== null) {\n toReturn['nextInvoiceDate'] = 'toApiJson' in this.nextInvoiceDate ? this.nextInvoiceDate.toApiJson() : this.nextInvoiceDate;\n }\n if (typeof this.autoPost !== 'undefined') {\n toReturn['autoPost'] = this.autoPost;\n }\n if (typeof this.collectionMethod !== 'undefined') {\n toReturn['collectionMethod'] = this.collectionMethod;\n }\n if (typeof this.netD !== 'undefined') {\n toReturn['netD'] = this.netD;\n }\n if (typeof this.autoGenerate !== 'undefined') {\n toReturn['autoGenerate'] = this.autoGenerate;\n }\n if (typeof this.contactId !== 'undefined') {\n toReturn['contactId'] = this.contactId;\n }\n if (typeof this.useTemplateInvoice !== 'undefined') {\n toReturn['useTemplateInvoice'] = this.useTemplateInvoice;\n }\n if (typeof this.memo !== 'undefined') {\n toReturn['memo'] = this.memo;\n }\n if (typeof this.additionalContactIds !== 'undefined') {\n toReturn['additionalContactIds'] = this.additionalContactIds;\n }\n if (typeof this.autoGenerateRetailSubscriptions !== 'undefined') {\n toReturn['autoGenerateRetailSubscriptions'] = this.autoGenerateRetailSubscriptions;\n }\n return toReturn;\n }\n}\nclass UpsertRetailCustomerConfigurationRequest {\n static fromProto(proto) {\n let m = new UpsertRetailCustomerConfigurationRequest();\n m = Object.assign(m, proto);\n if (proto.invoiceDay) {\n m.invoiceDay = parseInt(proto.invoiceDay, 10);\n }\n if (proto.netD) {\n m.netD = parseInt(proto.netD, 10);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.customerId !== 'undefined') {\n toReturn['customerId'] = this.customerId;\n }\n if (typeof this.merchantId !== 'undefined') {\n toReturn['merchantId'] = this.merchantId;\n }\n if (typeof this.invoiceDay !== 'undefined') {\n toReturn['invoiceDay'] = this.invoiceDay;\n }\n if (typeof this.autoPost !== 'undefined') {\n toReturn['autoPost'] = this.autoPost;\n }\n if (typeof this.netD !== 'undefined') {\n toReturn['netD'] = this.netD;\n }\n if (typeof this.autoGenerate !== 'undefined') {\n toReturn['autoGenerate'] = this.autoGenerate;\n }\n if (typeof this.contactId !== 'undefined') {\n toReturn['contactId'] = this.contactId;\n }\n if (typeof this.collectionMethod !== 'undefined') {\n toReturn['collectionMethod'] = this.collectionMethod;\n }\n if (typeof this.useTemplateInvoice !== 'undefined') {\n toReturn['useTemplateInvoice'] = this.useTemplateInvoice;\n }\n if (typeof this.memo !== 'undefined') {\n toReturn['memo'] = this.memo;\n }\n if (typeof this.additionalContactIds !== 'undefined') {\n toReturn['additionalContactIds'] = this.additionalContactIds;\n }\n if (typeof this.autoGenerateRetailSubscriptions !== 'undefined') {\n toReturn['autoGenerateRetailSubscriptions'] = this.autoGenerateRetailSubscriptions;\n }\n return toReturn;\n }\n}\nfunction enumStringToValue$6(enumRef, value) {\n if (typeof value === 'number') {\n return value;\n }\n return enumRef[value];\n}\nclass AddCreditRequest {\n static fromProto(proto) {\n let m = new AddCreditRequest();\n m = Object.assign(m, proto);\n if (proto.amount) {\n m.amount = parseInt(proto.amount, 10);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.merchantId !== 'undefined') {\n toReturn['merchantId'] = this.merchantId;\n }\n if (typeof this.currency !== 'undefined') {\n toReturn['currency'] = this.currency;\n }\n if (typeof this.amount !== 'undefined') {\n toReturn['amount'] = this.amount;\n }\n if (typeof this.idempotencyKey !== 'undefined') {\n toReturn['idempotencyKey'] = this.idempotencyKey;\n }\n if (typeof this.reason !== 'undefined') {\n toReturn['reason'] = this.reason;\n }\n return toReturn;\n }\n}\nclass CreditBalance {\n static fromProto(proto) {\n let m = new CreditBalance();\n m = Object.assign(m, proto);\n if (proto.amount) {\n m.amount = parseInt(proto.amount, 10);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.merchantId !== 'undefined') {\n toReturn['merchantId'] = this.merchantId;\n }\n if (typeof this.currency !== 'undefined') {\n toReturn['currency'] = this.currency;\n }\n if (typeof this.amount !== 'undefined') {\n toReturn['amount'] = this.amount;\n }\n return toReturn;\n }\n}\nclass GetBalanceRequest {\n static fromProto(proto) {\n let m = new GetBalanceRequest();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.merchantId !== 'undefined') {\n toReturn['merchantId'] = this.merchantId;\n }\n return toReturn;\n }\n}\nclass GetBalanceResponse {\n static fromProto(proto) {\n let m = new GetBalanceResponse();\n m = Object.assign(m, proto);\n if (proto.creditBalance) {\n m.creditBalance = CreditBalance.fromProto(proto.creditBalance);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.creditBalance !== 'undefined' && this.creditBalance !== null) {\n toReturn['creditBalance'] = 'toApiJson' in this.creditBalance ? this.creditBalance.toApiJson() : this.creditBalance;\n }\n return toReturn;\n }\n}\nfunction enumStringToValue$5(enumRef, value) {\n if (typeof value === 'number') {\n return value;\n }\n return enumRef[value];\n}\nclass RecurringInvoiceCustomerAddress {\n static fromProto(proto) {\n let m = new RecurringInvoiceCustomerAddress();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.address !== 'undefined') {\n toReturn['address'] = this.address;\n }\n if (typeof this.city !== 'undefined') {\n toReturn['city'] = this.city;\n }\n if (typeof this.state !== 'undefined') {\n toReturn['state'] = this.state;\n }\n if (typeof this.zip !== 'undefined') {\n toReturn['zip'] = this.zip;\n }\n if (typeof this.country !== 'undefined') {\n toReturn['country'] = this.country;\n }\n if (typeof this.address2 !== 'undefined') {\n toReturn['address2'] = this.address2;\n }\n return toReturn;\n }\n}\nclass ListRecurringInvoicesFiltersDateFilter {\n static fromProto(proto) {\n let m = new ListRecurringInvoicesFiltersDateFilter();\n m = Object.assign(m, proto);\n if (proto.dateLte) {\n m.dateLte = new Date(proto.dateLte);\n }\n if (proto.dateGte) {\n m.dateGte = new Date(proto.dateGte);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.dateLte !== 'undefined' && this.dateLte !== null) {\n toReturn['dateLte'] = 'toApiJson' in this.dateLte ? this.dateLte.toApiJson() : this.dateLte;\n }\n if (typeof this.dateGte !== 'undefined' && this.dateGte !== null) {\n toReturn['dateGte'] = 'toApiJson' in this.dateGte ? this.dateGte.toApiJson() : this.dateGte;\n }\n return toReturn;\n }\n}\nclass DeleteRecurringInvoiceRequest {\n static fromProto(proto) {\n let m = new DeleteRecurringInvoiceRequest();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.id !== 'undefined') {\n toReturn['id'] = this.id;\n }\n return toReturn;\n }\n}\nclass ListRecurringInvoicesFiltersDetailedInterval {\n static fromProto(proto) {\n let m = new ListRecurringInvoicesFiltersDetailedInterval();\n m = Object.assign(m, proto);\n if (proto.interval) {\n m.interval = enumStringToValue$5(Interval, proto.interval);\n }\n if (proto.intervalCount) {\n m.intervalCount = parseInt(proto.intervalCount, 10);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.interval !== 'undefined') {\n toReturn['interval'] = this.interval;\n }\n if (typeof this.intervalCount !== 'undefined') {\n toReturn['intervalCount'] = this.intervalCount;\n }\n return toReturn;\n }\n}\nclass GetRecurringInvoiceRequest {\n static fromProto(proto) {\n let m = new GetRecurringInvoiceRequest();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.id !== 'undefined') {\n toReturn['id'] = this.id;\n }\n return toReturn;\n }\n}\nclass ListRecurringInvoicesFilters {\n static fromProto(proto) {\n let m = new ListRecurringInvoicesFilters();\n m = Object.assign(m, proto);\n if (proto.statuses) {\n m.statuses = proto.statuses.map(v => enumStringToValue$5(RecurringInvoiceStatus, v));\n }\n if (proto.intervals) {\n m.intervals = proto.intervals.map(ListRecurringInvoicesFiltersDetailedInterval.fromProto);\n }\n if (proto.nextIssuedDate) {\n m.nextIssuedDate = ListRecurringInvoicesFiltersDateFilter.fromProto(proto.nextIssuedDate);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.statuses !== 'undefined') {\n toReturn['statuses'] = this.statuses;\n }\n if (typeof this.intervals !== 'undefined' && this.intervals !== null) {\n toReturn['intervals'] = 'toApiJson' in this.intervals ? this.intervals.toApiJson() : this.intervals;\n }\n if (typeof this.nextIssuedDate !== 'undefined' && this.nextIssuedDate !== null) {\n toReturn['nextIssuedDate'] = 'toApiJson' in this.nextIssuedDate ? this.nextIssuedDate.toApiJson() : this.nextIssuedDate;\n }\n return toReturn;\n }\n}\nclass ListRecurringInvoicesRequest {\n static fromProto(proto) {\n let m = new ListRecurringInvoicesRequest();\n m = Object.assign(m, proto);\n if (proto.pagingOptions) {\n m.pagingOptions = PagedRequestOptions.fromProto(proto.pagingOptions);\n }\n if (proto.filters) {\n m.filters = ListRecurringInvoicesFilters.fromProto(proto.filters);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.pagingOptions !== 'undefined' && this.pagingOptions !== null) {\n toReturn['pagingOptions'] = 'toApiJson' in this.pagingOptions ? this.pagingOptions.toApiJson() : this.pagingOptions;\n }\n if (typeof this.merchantId !== 'undefined') {\n toReturn['merchantId'] = this.merchantId;\n }\n if (typeof this.customerId !== 'undefined') {\n toReturn['customerId'] = this.customerId;\n }\n if (typeof this.filters !== 'undefined' && this.filters !== null) {\n toReturn['filters'] = 'toApiJson' in this.filters ? this.filters.toApiJson() : this.filters;\n }\n return toReturn;\n }\n}\nclass ListRecurringInvoicesResponse {\n static fromProto(proto) {\n let m = new ListRecurringInvoicesResponse();\n m = Object.assign(m, proto);\n if (proto.recurringInvoices) {\n m.recurringInvoices = proto.recurringInvoices.map(RecurringInvoice.fromProto);\n }\n if (proto.pagingMetadata) {\n m.pagingMetadata = PagedResponseMetadata.fromProto(proto.pagingMetadata);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.recurringInvoices !== 'undefined' && this.recurringInvoices !== null) {\n toReturn['recurringInvoices'] = 'toApiJson' in this.recurringInvoices ? this.recurringInvoices.toApiJson() : this.recurringInvoices;\n }\n if (typeof this.pagingMetadata !== 'undefined' && this.pagingMetadata !== null) {\n toReturn['pagingMetadata'] = 'toApiJson' in this.pagingMetadata ? this.pagingMetadata.toApiJson() : this.pagingMetadata;\n }\n return toReturn;\n }\n}\nclass RecurringInvoice {\n static fromProto(proto) {\n let m = new RecurringInvoice();\n m = Object.assign(m, proto);\n if (proto.created) {\n m.created = new Date(proto.created);\n }\n if (proto.updated) {\n m.updated = new Date(proto.updated);\n }\n if (proto.status) {\n m.status = enumStringToValue$5(RecurringInvoiceStatus, proto.status);\n }\n if (proto.nextIssue) {\n m.nextIssue = new Date(proto.nextIssue);\n }\n if (proto.intervalCount) {\n m.intervalCount = parseInt(proto.intervalCount, 10);\n }\n if (proto.interval) {\n m.interval = enumStringToValue$5(Interval, proto.interval);\n }\n if (proto.repeatOnDayOfMonth) {\n m.repeatOnDayOfMonth = parseInt(proto.repeatOnDayOfMonth, 10);\n }\n if (proto.collectionMethod) {\n m.collectionMethod = enumStringToValue$5(CollectionMethod, proto.collectionMethod);\n }\n if (proto.paymentProcessor) {\n m.paymentProcessor = enumStringToValue$5(PaymentProcessor, proto.paymentProcessor);\n }\n if (proto.items) {\n m.items = proto.items.map(RecurringInvoiceItem.fromProto);\n }\n if (proto.totalAmount) {\n m.totalAmount = parseInt(proto.totalAmount, 10);\n }\n if (proto.endsAt) {\n m.endsAt = new Date(proto.endsAt);\n }\n if (proto.customerAddress) {\n m.customerAddress = RecurringInvoiceCustomerAddress.fromProto(proto.customerAddress);\n }\n if (proto.netD) {\n m.netD = parseInt(proto.netD, 10);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.id !== 'undefined') {\n toReturn['id'] = this.id;\n }\n if (typeof this.created !== 'undefined' && this.created !== null) {\n toReturn['created'] = 'toApiJson' in this.created ? this.created.toApiJson() : this.created;\n }\n if (typeof this.updated !== 'undefined' && this.updated !== null) {\n toReturn['updated'] = 'toApiJson' in this.updated ? this.updated.toApiJson() : this.updated;\n }\n if (typeof this.customerId !== 'undefined') {\n toReturn['customerId'] = this.customerId;\n }\n if (typeof this.status !== 'undefined') {\n toReturn['status'] = this.status;\n }\n if (typeof this.nextIssue !== 'undefined' && this.nextIssue !== null) {\n toReturn['nextIssue'] = 'toApiJson' in this.nextIssue ? this.nextIssue.toApiJson() : this.nextIssue;\n }\n if (typeof this.intervalCount !== 'undefined') {\n toReturn['intervalCount'] = this.intervalCount;\n }\n if (typeof this.interval !== 'undefined') {\n toReturn['interval'] = this.interval;\n }\n if (typeof this.repeatOnDayOfMonth !== 'undefined') {\n toReturn['repeatOnDayOfMonth'] = this.repeatOnDayOfMonth;\n }\n if (typeof this.collectionMethod !== 'undefined') {\n toReturn['collectionMethod'] = this.collectionMethod;\n }\n if (typeof this.recipientUserId !== 'undefined') {\n toReturn['recipientUserId'] = this.recipientUserId;\n }\n if (typeof this.paymentProcessor !== 'undefined') {\n toReturn['paymentProcessor'] = this.paymentProcessor;\n }\n if (typeof this.paymentProcessorId !== 'undefined') {\n toReturn['paymentProcessorId'] = this.paymentProcessorId;\n }\n if (typeof this.items !== 'undefined' && this.items !== null) {\n toReturn['items'] = 'toApiJson' in this.items ? this.items.toApiJson() : this.items;\n }\n if (typeof this.totalAmount !== 'undefined') {\n toReturn['totalAmount'] = this.totalAmount;\n }\n if (typeof this.currencyCode !== 'undefined') {\n toReturn['currencyCode'] = this.currencyCode;\n }\n if (typeof this.memo !== 'undefined') {\n toReturn['memo'] = this.memo;\n }\n if (typeof this.endsAt !== 'undefined' && this.endsAt !== null) {\n toReturn['endsAt'] = 'toApiJson' in this.endsAt ? this.endsAt.toApiJson() : this.endsAt;\n }\n if (typeof this.customerName !== 'undefined') {\n toReturn['customerName'] = this.customerName;\n }\n if (typeof this.customerAddress !== 'undefined' && this.customerAddress !== null) {\n toReturn['customerAddress'] = 'toApiJson' in this.customerAddress ? this.customerAddress.toApiJson() : this.customerAddress;\n }\n if (typeof this.netD !== 'undefined') {\n toReturn['netD'] = this.netD;\n }\n if (typeof this.additionalRecipientIds !== 'undefined') {\n toReturn['additionalRecipientIds'] = this.additionalRecipientIds;\n }\n return toReturn;\n }\n}\nclass RecurringInvoiceBundle {\n static fromProto(proto) {\n let m = new RecurringInvoiceBundle();\n m = Object.assign(m, proto);\n if (proto.lineItems) {\n m.lineItems = proto.lineItems.map(RecurringInvoiceLineItem.fromProto);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.name !== 'undefined') {\n toReturn['name'] = this.name;\n }\n if (typeof this.hideLineItems !== 'undefined') {\n toReturn['hideLineItems'] = this.hideLineItems;\n }\n if (typeof this.lineItems !== 'undefined' && this.lineItems !== null) {\n toReturn['lineItems'] = 'toApiJson' in this.lineItems ? this.lineItems.toApiJson() : this.lineItems;\n }\n return toReturn;\n }\n}\nclass RecurringInvoiceItem {\n static fromProto(proto) {\n let m = new RecurringInvoiceItem();\n m = Object.assign(m, proto);\n if (proto.lineItem) {\n m.lineItem = RecurringInvoiceLineItem.fromProto(proto.lineItem);\n }\n if (proto.bundle) {\n m.bundle = RecurringInvoiceBundle.fromProto(proto.bundle);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.lineItem !== 'undefined' && this.lineItem !== null) {\n toReturn['lineItem'] = 'toApiJson' in this.lineItem ? this.lineItem.toApiJson() : this.lineItem;\n }\n if (typeof this.bundle !== 'undefined' && this.bundle !== null) {\n toReturn['bundle'] = 'toApiJson' in this.bundle ? this.bundle.toApiJson() : this.bundle;\n }\n return toReturn;\n }\n}\nclass RecurringInvoiceLineItem {\n static fromProto(proto) {\n let m = new RecurringInvoiceLineItem();\n m = Object.assign(m, proto);\n if (proto.unitPrice) {\n m.unitPrice = parseInt(proto.unitPrice, 10);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.sku !== 'undefined') {\n toReturn['sku'] = this.sku;\n }\n if (typeof this.unitPrice !== 'undefined') {\n toReturn['unitPrice'] = this.unitPrice;\n }\n if (typeof this.quantity !== 'undefined') {\n toReturn['quantity'] = this.quantity;\n }\n if (typeof this.name !== 'undefined') {\n toReturn['name'] = this.name;\n }\n if (typeof this.taxRateIds !== 'undefined') {\n toReturn['taxRateIds'] = this.taxRateIds;\n }\n return toReturn;\n }\n}\nclass UpdateRecurringInvoiceRequest {\n static fromProto(proto) {\n let m = new UpdateRecurringInvoiceRequest();\n m = Object.assign(m, proto);\n if (proto.recurringInvoice) {\n m.recurringInvoice = RecurringInvoice.fromProto(proto.recurringInvoice);\n }\n if (proto.updateMask) {\n m.updateMask = FieldMask.fromProto(proto.updateMask);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.recurringInvoice !== 'undefined' && this.recurringInvoice !== null) {\n toReturn['recurringInvoice'] = 'toApiJson' in this.recurringInvoice ? this.recurringInvoice.toApiJson() : this.recurringInvoice;\n }\n if (typeof this.updateMask !== 'undefined' && this.updateMask !== null) {\n toReturn['updateMask'] = 'toApiJson' in this.updateMask ? this.updateMask.toApiJson() : this.updateMask;\n }\n return toReturn;\n }\n}\nfunction enumStringToValue$4(enumRef, value) {\n if (typeof value === 'number') {\n return value;\n }\n return enumRef[value];\n}\nclass CreateMerchantServicesReportRun {\n static fromProto(proto) {\n let m = new CreateMerchantServicesReportRun();\n m = Object.assign(m, proto);\n if (proto.reportType) {\n m.reportType = enumStringToValue$4(MerchantServicesReportRunType, proto.reportType);\n }\n if (proto.intervalStart) {\n m.intervalStart = new Date(proto.intervalStart);\n }\n if (proto.intervalEnd) {\n m.intervalEnd = new Date(proto.intervalEnd);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.merchantId !== 'undefined') {\n toReturn['merchantId'] = this.merchantId;\n }\n if (typeof this.reportType !== 'undefined') {\n toReturn['reportType'] = this.reportType;\n }\n if (typeof this.intervalStart !== 'undefined' && this.intervalStart !== null) {\n toReturn['intervalStart'] = 'toApiJson' in this.intervalStart ? this.intervalStart.toApiJson() : this.intervalStart;\n }\n if (typeof this.intervalEnd !== 'undefined' && this.intervalEnd !== null) {\n toReturn['intervalEnd'] = 'toApiJson' in this.intervalEnd ? this.intervalEnd.toApiJson() : this.intervalEnd;\n }\n if (typeof this.currencyCode !== 'undefined') {\n toReturn['currencyCode'] = this.currencyCode;\n }\n return toReturn;\n }\n}\nclass GetMerchantServicesReportRun {\n static fromProto(proto) {\n let m = new GetMerchantServicesReportRun();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.id !== 'undefined') {\n toReturn['id'] = this.id;\n }\n return toReturn;\n }\n}\nclass MerchantServicesReportRun {\n static fromProto(proto) {\n let m = new MerchantServicesReportRun();\n m = Object.assign(m, proto);\n if (proto.created) {\n m.created = new Date(proto.created);\n }\n if (proto.reportType) {\n m.reportType = enumStringToValue$4(MerchantServicesReportRunType, proto.reportType);\n }\n if (proto.status) {\n m.status = enumStringToValue$4(MerchantServicesReportRunStatus, proto.status);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.id !== 'undefined') {\n toReturn['id'] = this.id;\n }\n if (typeof this.created !== 'undefined' && this.created !== null) {\n toReturn['created'] = 'toApiJson' in this.created ? this.created.toApiJson() : this.created;\n }\n if (typeof this.reportType !== 'undefined') {\n toReturn['reportType'] = this.reportType;\n }\n if (typeof this.status !== 'undefined') {\n toReturn['status'] = this.status;\n }\n if (typeof this.error !== 'undefined') {\n toReturn['error'] = this.error;\n }\n return toReturn;\n }\n}\nfunction enumStringToValue$3(enumRef, value) {\n if (typeof value === 'number') {\n return value;\n }\n return enumRef[value];\n}\nclass Access {\n static fromProto(proto) {\n let m = new Access();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.scope !== 'undefined') {\n toReturn['scope'] = this.scope;\n }\n if (typeof this.public !== 'undefined') {\n toReturn['public'] = this.public;\n }\n return toReturn;\n }\n}\nfunction enumStringToValue$2(enumRef, value) {\n if (typeof value === 'number') {\n return value;\n }\n return enumRef[value];\n}\nclass ListSubscriptionRelationshipsRequestFilters {\n static fromProto(proto) {\n let m = new ListSubscriptionRelationshipsRequestFilters();\n m = Object.assign(m, proto);\n if (proto.originType) {\n m.originType = enumStringToValue$2(EntityType, proto.originType);\n }\n if (proto.targetType) {\n m.targetType = enumStringToValue$2(EntityType, proto.targetType);\n }\n if (proto.relationshipType) {\n m.relationshipType = enumStringToValue$2(RelationshipType, proto.relationshipType);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.merchantId !== 'undefined') {\n toReturn['merchantId'] = this.merchantId;\n }\n if (typeof this.customerId !== 'undefined') {\n toReturn['customerId'] = this.customerId;\n }\n if (typeof this.originId !== 'undefined') {\n toReturn['originId'] = this.originId;\n }\n if (typeof this.originType !== 'undefined') {\n toReturn['originType'] = this.originType;\n }\n if (typeof this.targetId !== 'undefined') {\n toReturn['targetId'] = this.targetId;\n }\n if (typeof this.targetType !== 'undefined') {\n toReturn['targetType'] = this.targetType;\n }\n if (typeof this.relationshipType !== 'undefined') {\n toReturn['relationshipType'] = this.relationshipType;\n }\n return toReturn;\n }\n}\nclass GetMultiSubscriptionRelationshipsRequest {\n static fromProto(proto) {\n let m = new GetMultiSubscriptionRelationshipsRequest();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.subscriptionRelationshipIds !== 'undefined') {\n toReturn['subscriptionRelationshipIds'] = this.subscriptionRelationshipIds;\n }\n return toReturn;\n }\n}\nclass GetMultiSubscriptionRelationshipsResponse {\n static fromProto(proto) {\n let m = new GetMultiSubscriptionRelationshipsResponse();\n m = Object.assign(m, proto);\n if (proto.subscriptionRelationships) {\n m.subscriptionRelationships = proto.subscriptionRelationships.map(SubscriptionRelationship.fromProto);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.subscriptionRelationships !== 'undefined' && this.subscriptionRelationships !== null) {\n toReturn['subscriptionRelationships'] = 'toApiJson' in this.subscriptionRelationships ? this.subscriptionRelationships.toApiJson() : this.subscriptionRelationships;\n }\n return toReturn;\n }\n}\nclass ListSubscriptionRelationshipsRequest {\n static fromProto(proto) {\n let m = new ListSubscriptionRelationshipsRequest();\n m = Object.assign(m, proto);\n if (proto.filters) {\n m.filters = ListSubscriptionRelationshipsRequestFilters.fromProto(proto.filters);\n }\n if (proto.pagingOptions) {\n m.pagingOptions = PagedRequestOptions.fromProto(proto.pagingOptions);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.filters !== 'undefined' && this.filters !== null) {\n toReturn['filters'] = 'toApiJson' in this.filters ? this.filters.toApiJson() : this.filters;\n }\n if (typeof this.pagingOptions !== 'undefined' && this.pagingOptions !== null) {\n toReturn['pagingOptions'] = 'toApiJson' in this.pagingOptions ? this.pagingOptions.toApiJson() : this.pagingOptions;\n }\n return toReturn;\n }\n}\nclass ListSubscriptionRelationshipsResponse {\n static fromProto(proto) {\n let m = new ListSubscriptionRelationshipsResponse();\n m = Object.assign(m, proto);\n if (proto.subscriptionRelationships) {\n m.subscriptionRelationships = proto.subscriptionRelationships.map(SubscriptionRelationship.fromProto);\n }\n if (proto.pagingMetadata) {\n m.pagingMetadata = PagedResponseMetadata.fromProto(proto.pagingMetadata);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.subscriptionRelationships !== 'undefined' && this.subscriptionRelationships !== null) {\n toReturn['subscriptionRelationships'] = 'toApiJson' in this.subscriptionRelationships ? this.subscriptionRelationships.toApiJson() : this.subscriptionRelationships;\n }\n if (typeof this.pagingMetadata !== 'undefined' && this.pagingMetadata !== null) {\n toReturn['pagingMetadata'] = 'toApiJson' in this.pagingMetadata ? this.pagingMetadata.toApiJson() : this.pagingMetadata;\n }\n return toReturn;\n }\n}\nclass ReplaceSubscriptionRelationshipsRequest {\n static fromProto(proto) {\n let m = new ReplaceSubscriptionRelationshipsRequest();\n m = Object.assign(m, proto);\n if (proto.toAdd) {\n m.toAdd = proto.toAdd.map(SubscriptionRelationship.fromProto);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.toAdd !== 'undefined' && this.toAdd !== null) {\n toReturn['toAdd'] = 'toApiJson' in this.toAdd ? this.toAdd.toApiJson() : this.toAdd;\n }\n if (typeof this.toRemove !== 'undefined') {\n toReturn['toRemove'] = this.toRemove;\n }\n return toReturn;\n }\n}\nclass ReplaceSubscriptionRelationshipsResponse {\n static fromProto(proto) {\n let m = new ReplaceSubscriptionRelationshipsResponse();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.addedSubscriptionRelationshipIds !== 'undefined') {\n toReturn['addedSubscriptionRelationshipIds'] = this.addedSubscriptionRelationshipIds;\n }\n return toReturn;\n }\n}\nclass SubscriptionRelationship {\n static fromProto(proto) {\n let m = new SubscriptionRelationship();\n m = Object.assign(m, proto);\n if (proto.originType) {\n m.originType = enumStringToValue$2(EntityType, proto.originType);\n }\n if (proto.targetType) {\n m.targetType = enumStringToValue$2(EntityType, proto.targetType);\n }\n if (proto.relationshipType) {\n m.relationshipType = enumStringToValue$2(RelationshipType, proto.relationshipType);\n }\n if (proto.created) {\n m.created = new Date(proto.created);\n }\n if (proto.updated) {\n m.updated = new Date(proto.updated);\n }\n if (proto.deleted) {\n m.deleted = new Date(proto.deleted);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.subscriptionRelationshipId !== 'undefined') {\n toReturn['subscriptionRelationshipId'] = this.subscriptionRelationshipId;\n }\n if (typeof this.merchantId !== 'undefined') {\n toReturn['merchantId'] = this.merchantId;\n }\n if (typeof this.customerId !== 'undefined') {\n toReturn['customerId'] = this.customerId;\n }\n if (typeof this.originId !== 'undefined') {\n toReturn['originId'] = this.originId;\n }\n if (typeof this.originType !== 'undefined') {\n toReturn['originType'] = this.originType;\n }\n if (typeof this.targetId !== 'undefined') {\n toReturn['targetId'] = this.targetId;\n }\n if (typeof this.targetType !== 'undefined') {\n toReturn['targetType'] = this.targetType;\n }\n if (typeof this.relationshipType !== 'undefined') {\n toReturn['relationshipType'] = this.relationshipType;\n }\n if (typeof this.created !== 'undefined' && this.created !== null) {\n toReturn['created'] = 'toApiJson' in this.created ? this.created.toApiJson() : this.created;\n }\n if (typeof this.updated !== 'undefined' && this.updated !== null) {\n toReturn['updated'] = 'toApiJson' in this.updated ? this.updated.toApiJson() : this.updated;\n }\n if (typeof this.deleted !== 'undefined' && this.deleted !== null) {\n toReturn['deleted'] = 'toApiJson' in this.deleted ? this.deleted.toApiJson() : this.deleted;\n }\n return toReturn;\n }\n}\nfunction enumStringToValue$1(enumRef, value) {\n if (typeof value === 'number') {\n return value;\n }\n return enumRef[value];\n}\nclass ReplaceSubscriptionPresetsRequest {\n static fromProto(proto) {\n let m = new ReplaceSubscriptionPresetsRequest();\n m = Object.assign(m, proto);\n if (proto.presets) {\n m.presets = proto.presets.map(SubscriptionPreset.fromProto);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.presets !== 'undefined' && this.presets !== null) {\n toReturn['presets'] = 'toApiJson' in this.presets ? this.presets.toApiJson() : this.presets;\n }\n return toReturn;\n }\n}\nclass ReplaceSubscriptionPresetsResponse {\n static fromProto(proto) {\n let m = new ReplaceSubscriptionPresetsResponse();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.subscriptionIds !== 'undefined') {\n toReturn['subscriptionIds'] = this.subscriptionIds;\n }\n return toReturn;\n }\n}\nclass SubscriptionPreset {\n static fromProto(proto) {\n let m = new SubscriptionPreset();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.subscriptionId !== 'undefined') {\n toReturn['subscriptionId'] = this.subscriptionId;\n }\n if (typeof this.autoBillable !== 'undefined') {\n toReturn['autoBillable'] = this.autoBillable;\n }\n if (typeof this.salesOrderId !== 'undefined') {\n toReturn['salesOrderId'] = this.salesOrderId;\n }\n if (typeof this.paymentIntentId !== 'undefined') {\n toReturn['paymentIntentId'] = this.paymentIntentId;\n }\n if (typeof this.merchantId !== 'undefined') {\n toReturn['merchantId'] = this.merchantId;\n }\n return toReturn;\n }\n}\nfunction enumStringToValue(enumRef, value) {\n if (typeof value === 'number') {\n return value;\n }\n return enumRef[value];\n}\nclass DeleteRetailPricingRequest {\n static fromProto(proto) {\n let m = new DeleteRetailPricingRequest();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.merchantId !== 'undefined') {\n toReturn['merchantId'] = this.merchantId;\n }\n if (typeof this.sku !== 'undefined') {\n toReturn['sku'] = this.sku;\n }\n if (typeof this.groupId !== 'undefined') {\n toReturn['groupId'] = this.groupId;\n }\n if (typeof this.customerId !== 'undefined') {\n toReturn['customerId'] = this.customerId;\n }\n if (typeof this.subscriptionId !== 'undefined') {\n toReturn['subscriptionId'] = this.subscriptionId;\n }\n return toReturn;\n }\n}\nclass GenerateBillableItemsCSVRequest {\n static fromProto(proto) {\n let m = new GenerateBillableItemsCSVRequest();\n m = Object.assign(m, proto);\n if (proto.periodStart) {\n m.periodStart = new Date(proto.periodStart);\n }\n if (proto.periodEnd) {\n m.periodEnd = new Date(proto.periodEnd);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.merchantId !== 'undefined') {\n toReturn['merchantId'] = this.merchantId;\n }\n if (typeof this.periodStart !== 'undefined' && this.periodStart !== null) {\n toReturn['periodStart'] = 'toApiJson' in this.periodStart ? this.periodStart.toApiJson() : this.periodStart;\n }\n if (typeof this.periodEnd !== 'undefined' && this.periodEnd !== null) {\n toReturn['periodEnd'] = 'toApiJson' in this.periodEnd ? this.periodEnd.toApiJson() : this.periodEnd;\n }\n return toReturn;\n }\n}\nclass GenerateBillableItemsCSVResponse {\n static fromProto(proto) {\n let m = new GenerateBillableItemsCSVResponse();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.url !== 'undefined') {\n toReturn['url'] = this.url;\n }\n return toReturn;\n }\n}\nclass GenerateVendorReportRequest {\n static fromProto(proto) {\n let m = new GenerateVendorReportRequest();\n m = Object.assign(m, proto);\n if (proto.periodStart) {\n m.periodStart = new Date(proto.periodStart);\n }\n if (proto.periodEnd) {\n m.periodEnd = new Date(proto.periodEnd);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.skus !== 'undefined') {\n toReturn['skus'] = this.skus;\n }\n if (typeof this.periodStart !== 'undefined' && this.periodStart !== null) {\n toReturn['periodStart'] = 'toApiJson' in this.periodStart ? this.periodStart.toApiJson() : this.periodStart;\n }\n if (typeof this.periodEnd !== 'undefined' && this.periodEnd !== null) {\n toReturn['periodEnd'] = 'toApiJson' in this.periodEnd ? this.periodEnd.toApiJson() : this.periodEnd;\n }\n if (typeof this.vendorName !== 'undefined') {\n toReturn['vendorName'] = this.vendorName;\n }\n if (typeof this.markAsApproved !== 'undefined') {\n toReturn['markAsApproved'] = this.markAsApproved;\n }\n return toReturn;\n }\n}\nclass GenerateVendorReportResponse {\n static fromProto(proto) {\n let m = new GenerateVendorReportResponse();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.url !== 'undefined') {\n toReturn['url'] = this.url;\n }\n if (typeof this.bucket !== 'undefined') {\n toReturn['bucket'] = this.bucket;\n }\n if (typeof this.filename !== 'undefined') {\n toReturn['filename'] = this.filename;\n }\n return toReturn;\n }\n}\nclass GetMultiBundleRetailPricingRequest {\n static fromProto(proto) {\n let m = new GetMultiBundleRetailPricingRequest();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.merchantId !== 'undefined') {\n toReturn['merchantId'] = this.merchantId;\n }\n if (typeof this.storeId !== 'undefined') {\n toReturn['storeId'] = this.storeId;\n }\n if (typeof this.bundleIds !== 'undefined') {\n toReturn['bundleIds'] = this.bundleIds;\n }\n return toReturn;\n }\n}\nclass GetMultiBundleRetailPricingResponse {\n static fromProto(proto) {\n let m = new GetMultiBundleRetailPricingResponse();\n m = Object.assign(m, proto);\n if (proto.prices) {\n m.prices = Object.keys(proto.prices).reduce((obj, k) => {\n obj[k] = BundlePricing.fromProto(proto.prices[k]);\n return obj;\n }, {});\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.prices !== 'undefined' && this.prices !== null) {\n toReturn['prices'] = 'toApiJson' in this.prices ? this.prices.toApiJson() : this.prices;\n }\n return toReturn;\n }\n}\nclass GetMultiProductPricingRequest {\n static fromProto(proto) {\n let m = new GetMultiProductPricingRequest();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.merchantId !== 'undefined') {\n toReturn['merchantId'] = this.merchantId;\n }\n if (typeof this.skus !== 'undefined') {\n toReturn['skus'] = this.skus;\n }\n if (typeof this.pricingPlanId !== 'undefined') {\n toReturn['pricingPlanId'] = this.pricingPlanId;\n }\n return toReturn;\n }\n}\nclass GetMultiProductPricingResponse {\n static fromProto(proto) {\n let m = new GetMultiProductPricingResponse();\n m = Object.assign(m, proto);\n if (proto.productPrices) {\n m.productPrices = Object.keys(proto.productPrices).reduce((obj, k) => {\n obj[k] = ProductPricing.fromProto(proto.productPrices[k]);\n return obj;\n }, {});\n }\n if (proto.prices) {\n m.prices = proto.prices.map(ProductPrices.fromProto);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.productPrices !== 'undefined' && this.productPrices !== null) {\n toReturn['productPrices'] = 'toApiJson' in this.productPrices ? this.productPrices.toApiJson() : this.productPrices;\n }\n if (typeof this.prices !== 'undefined' && this.prices !== null) {\n toReturn['prices'] = 'toApiJson' in this.prices ? this.prices.toApiJson() : this.prices;\n }\n return toReturn;\n }\n}\nclass GetMultiRetailPricingRequest {\n static fromProto(proto) {\n let m = new GetMultiRetailPricingRequest();\n m = Object.assign(m, proto);\n if (proto.currency) {\n m.currency = enumStringToValue(Currency, proto.currency);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.merchantId !== 'undefined') {\n toReturn['merchantId'] = this.merchantId;\n }\n if (typeof this.currency !== 'undefined') {\n toReturn['currency'] = this.currency;\n }\n if (typeof this.skus !== 'undefined') {\n toReturn['skus'] = this.skus;\n }\n if (typeof this.groupId !== 'undefined') {\n toReturn['groupId'] = this.groupId;\n }\n if (typeof this.customerId !== 'undefined') {\n toReturn['customerId'] = this.customerId;\n }\n return toReturn;\n }\n}\nclass GetMultiRetailPricingResponse {\n static fromProto(proto) {\n let m = new GetMultiRetailPricingResponse();\n m = Object.assign(m, proto);\n if (proto.productPrices) {\n m.productPrices = Object.keys(proto.productPrices).reduce((obj, k) => {\n obj[k] = ProductPricing.fromProto(proto.productPrices[k]);\n return obj;\n }, {});\n }\n if (proto.prices) {\n m.prices = proto.prices.map(ProductPrices.fromProto);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.productPrices !== 'undefined' && this.productPrices !== null) {\n toReturn['productPrices'] = 'toApiJson' in this.productPrices ? this.productPrices.toApiJson() : this.productPrices;\n }\n if (typeof this.prices !== 'undefined' && this.prices !== null) {\n toReturn['prices'] = 'toApiJson' in this.prices ? this.prices.toApiJson() : this.prices;\n }\n return toReturn;\n }\n}\nclass GetMultiWholesaleCostRequest {\n static fromProto(proto) {\n let m = new GetMultiWholesaleCostRequest();\n m = Object.assign(m, proto);\n if (proto.items) {\n m.items = proto.items.map(WholesaleCostItemRequest.fromProto);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.merchantId !== 'undefined') {\n toReturn['merchantId'] = this.merchantId;\n }\n if (typeof this.items !== 'undefined' && this.items !== null) {\n toReturn['items'] = 'toApiJson' in this.items ? this.items.toApiJson() : this.items;\n }\n return toReturn;\n }\n}\nclass GetMultiWholesaleCostResponse {\n static fromProto(proto) {\n let m = new GetMultiWholesaleCostResponse();\n m = Object.assign(m, proto);\n if (proto.costs) {\n m.costs = proto.costs.map(GetPurchaseCostResponse.fromProto);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.costs !== 'undefined' && this.costs !== null) {\n toReturn['costs'] = 'toApiJson' in this.costs ? this.costs.toApiJson() : this.costs;\n }\n return toReturn;\n }\n}\nclass GetPurchaseCostRequest {\n static fromProto(proto) {\n let m = new GetPurchaseCostRequest();\n m = Object.assign(m, proto);\n if (proto.quantity) {\n m.quantity = parseInt(proto.quantity, 10);\n }\n if (proto.frequency) {\n m.frequency = enumStringToValue(Frequency, proto.frequency);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.merchantId !== 'undefined') {\n toReturn['merchantId'] = this.merchantId;\n }\n if (typeof this.sku !== 'undefined') {\n toReturn['sku'] = this.sku;\n }\n if (typeof this.quantity !== 'undefined') {\n toReturn['quantity'] = this.quantity;\n }\n if (typeof this.frequency !== 'undefined') {\n toReturn['frequency'] = this.frequency;\n }\n return toReturn;\n }\n}\nclass GetPurchaseCostResponse {\n static fromProto(proto) {\n let m = new GetPurchaseCostResponse();\n m = Object.assign(m, proto);\n if (proto.totalCost) {\n m.totalCost = parseInt(proto.totalCost, 10);\n }\n if (proto.currency) {\n m.currency = enumStringToValue(Currency, proto.currency);\n }\n if (proto.strategy) {\n m.strategy = enumStringToValue(BillingStrategy, proto.strategy);\n }\n if (proto.commitment) {\n m.commitment = Commitment.fromProto(proto.commitment);\n }\n if (proto.discountAmount) {\n m.discountAmount = parseInt(proto.discountAmount, 10);\n }\n if (proto.subtotalCost) {\n m.subtotalCost = parseInt(proto.subtotalCost, 10);\n }\n if (proto.setupFee) {\n m.setupFee = parseInt(proto.setupFee, 10);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.billingFrequency !== 'undefined') {\n toReturn['billingFrequency'] = this.billingFrequency;\n }\n if (typeof this.totalCost !== 'undefined') {\n toReturn['totalCost'] = this.totalCost;\n }\n if (typeof this.currency !== 'undefined') {\n toReturn['currency'] = this.currency;\n }\n if (typeof this.strategy !== 'undefined') {\n toReturn['strategy'] = this.strategy;\n }\n if (typeof this.commitment !== 'undefined' && this.commitment !== null) {\n toReturn['commitment'] = 'toApiJson' in this.commitment ? this.commitment.toApiJson() : this.commitment;\n }\n if (typeof this.isStartingPrice !== 'undefined') {\n toReturn['isStartingPrice'] = this.isStartingPrice;\n }\n if (typeof this.discountAmount !== 'undefined') {\n toReturn['discountAmount'] = this.discountAmount;\n }\n if (typeof this.subtotalCost !== 'undefined') {\n toReturn['subtotalCost'] = this.subtotalCost;\n }\n if (typeof this.setupFee !== 'undefined') {\n toReturn['setupFee'] = this.setupFee;\n }\n return toReturn;\n }\n}\nclass GetRevenueStatsRequest {\n static fromProto(proto) {\n let m = new GetRevenueStatsRequest();\n m = Object.assign(m, proto);\n if (proto.periodStart) {\n m.periodStart = new Date(proto.periodStart);\n }\n if (proto.periodEnd) {\n m.periodEnd = new Date(proto.periodEnd);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.skus !== 'undefined') {\n toReturn['skus'] = this.skus;\n }\n if (typeof this.periodStart !== 'undefined' && this.periodStart !== null) {\n toReturn['periodStart'] = 'toApiJson' in this.periodStart ? this.periodStart.toApiJson() : this.periodStart;\n }\n if (typeof this.periodEnd !== 'undefined' && this.periodEnd !== null) {\n toReturn['periodEnd'] = 'toApiJson' in this.periodEnd ? this.periodEnd.toApiJson() : this.periodEnd;\n }\n return toReturn;\n }\n}\nclass GetRevenueStatsResponse {\n static fromProto(proto) {\n let m = new GetRevenueStatsResponse();\n m = Object.assign(m, proto);\n if (proto.totalRevenue) {\n m.totalRevenue = parseInt(proto.totalRevenue, 10);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.totalRevenue !== 'undefined') {\n toReturn['totalRevenue'] = this.totalRevenue;\n }\n return toReturn;\n }\n}\nclass GetStatisticsRequest {\n static fromProto(proto) {\n let m = new GetStatisticsRequest();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.merchantId !== 'undefined') {\n toReturn['merchantId'] = this.merchantId;\n }\n return toReturn;\n }\n}\nclass GetStatisticsResponse {\n static fromProto(proto) {\n let m = new GetStatisticsResponse();\n m = Object.assign(m, proto);\n if (proto.totalBillableCustomers) {\n m.totalBillableCustomers = parseInt(proto.totalBillableCustomers, 10);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.totalBillableCustomers !== 'undefined') {\n toReturn['totalBillableCustomers'] = this.totalBillableCustomers;\n }\n if (typeof this.currentBasketSize !== 'undefined') {\n toReturn['currentBasketSize'] = this.currentBasketSize;\n }\n if (typeof this.changeInBasketSize30Days !== 'undefined') {\n toReturn['changeInBasketSize30Days'] = this.changeInBasketSize30Days;\n }\n return toReturn;\n }\n}\nclass GetWholesaleComparisonRequestGetWholesaleComparisonFilters {\n static fromProto(proto) {\n let m = new GetWholesaleComparisonRequestGetWholesaleComparisonFilters();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.sku !== 'undefined') {\n toReturn['sku'] = this.sku;\n }\n if (typeof this.currencyCode !== 'undefined') {\n toReturn['currencyCode'] = this.currencyCode;\n }\n return toReturn;\n }\n}\nclass GetWholesaleComparisonRequest {\n static fromProto(proto) {\n let m = new GetWholesaleComparisonRequest();\n m = Object.assign(m, proto);\n if (proto.filter) {\n m.filter = GetWholesaleComparisonRequestGetWholesaleComparisonFilters.fromProto(proto.filter);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.pricingPlanId !== 'undefined') {\n toReturn['pricingPlanId'] = this.pricingPlanId;\n }\n if (typeof this.filter !== 'undefined' && this.filter !== null) {\n toReturn['filter'] = 'toApiJson' in this.filter ? this.filter.toApiJson() : this.filter;\n }\n return toReturn;\n }\n}\nclass GetWholesaleComparisonResponse {\n static fromProto(proto) {\n let m = new GetWholesaleComparisonResponse();\n m = Object.assign(m, proto);\n if (proto.results) {\n m.results = proto.results.map(GetWholesaleComparisonResponseGetWholesaleComparisonResult.fromProto);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.results !== 'undefined' && this.results !== null) {\n toReturn['results'] = 'toApiJson' in this.results ? this.results.toApiJson() : this.results;\n }\n return toReturn;\n }\n}\nclass GetWholesaleComparisonResponseGetWholesaleComparisonResult {\n static fromProto(proto) {\n let m = new GetWholesaleComparisonResponseGetWholesaleComparisonResult();\n m = Object.assign(m, proto);\n if (proto.productPricing) {\n m.productPricing = ProductPricing.fromProto(proto.productPricing);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.pricingPlanId !== 'undefined') {\n toReturn['pricingPlanId'] = this.pricingPlanId;\n }\n if (typeof this.sku !== 'undefined') {\n toReturn['sku'] = this.sku;\n }\n if (typeof this.productPricing !== 'undefined' && this.productPricing !== null) {\n toReturn['productPricing'] = 'toApiJson' in this.productPricing ? this.productPricing.toApiJson() : this.productPricing;\n }\n return toReturn;\n }\n}\nclass GetMultiBundleRetailPricingResponsePricesEntry {\n static fromProto(proto) {\n let m = new GetMultiBundleRetailPricingResponsePricesEntry();\n m = Object.assign(m, proto);\n if (proto.value) {\n m.value = BundlePricing.fromProto(proto.value);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.key !== 'undefined') {\n toReturn['key'] = this.key;\n }\n if (typeof this.value !== 'undefined' && this.value !== null) {\n toReturn['value'] = 'toApiJson' in this.value ? this.value.toApiJson() : this.value;\n }\n return toReturn;\n }\n}\nclass UpsertRetailPricingRequestPricingEntry {\n static fromProto(proto) {\n let m = new UpsertRetailPricingRequestPricingEntry();\n m = Object.assign(m, proto);\n if (proto.value) {\n m.value = PricingPlanProductPricing.fromProto(proto.value);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.key !== 'undefined') {\n toReturn['key'] = this.key;\n }\n if (typeof this.value !== 'undefined' && this.value !== null) {\n toReturn['value'] = 'toApiJson' in this.value ? this.value.toApiJson() : this.value;\n }\n return toReturn;\n }\n}\nclass GetMultiRetailPricingResponseProductPricesEntry {\n static fromProto(proto) {\n let m = new GetMultiRetailPricingResponseProductPricesEntry();\n m = Object.assign(m, proto);\n if (proto.value) {\n m.value = ProductPricing.fromProto(proto.value);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.key !== 'undefined') {\n toReturn['key'] = this.key;\n }\n if (typeof this.value !== 'undefined' && this.value !== null) {\n toReturn['value'] = 'toApiJson' in this.value ? this.value.toApiJson() : this.value;\n }\n return toReturn;\n }\n}\nclass GetMultiProductPricingResponseProductPricesEntry {\n static fromProto(proto) {\n let m = new GetMultiProductPricingResponseProductPricesEntry();\n m = Object.assign(m, proto);\n if (proto.value) {\n m.value = ProductPricing.fromProto(proto.value);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.key !== 'undefined') {\n toReturn['key'] = this.key;\n }\n if (typeof this.value !== 'undefined' && this.value !== null) {\n toReturn['value'] = 'toApiJson' in this.value ? this.value.toApiJson() : this.value;\n }\n return toReturn;\n }\n}\nclass SetWholesaleProductStrategyRequest {\n static fromProto(proto) {\n let m = new SetWholesaleProductStrategyRequest();\n m = Object.assign(m, proto);\n if (proto.strategy) {\n m.strategy = enumStringToValue(BillingStrategy, proto.strategy);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.merchantId !== 'undefined') {\n toReturn['merchantId'] = this.merchantId;\n }\n if (typeof this.sku !== 'undefined') {\n toReturn['sku'] = this.sku;\n }\n if (typeof this.strategy !== 'undefined') {\n toReturn['strategy'] = this.strategy;\n }\n return toReturn;\n }\n}\nclass SetWholesaleProductVolumeCommitmentRequest {\n static fromProto(proto) {\n let m = new SetWholesaleProductVolumeCommitmentRequest();\n m = Object.assign(m, proto);\n if (proto.volumeCommitment) {\n m.volumeCommitment = parseInt(proto.volumeCommitment, 10);\n }\n if (proto.volumeCommitmentStartsAt) {\n m.volumeCommitmentStartsAt = new Date(proto.volumeCommitmentStartsAt);\n }\n if (proto.volumeCommitmentEndsAt) {\n m.volumeCommitmentEndsAt = new Date(proto.volumeCommitmentEndsAt);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.merchantId !== 'undefined') {\n toReturn['merchantId'] = this.merchantId;\n }\n if (typeof this.sku !== 'undefined') {\n toReturn['sku'] = this.sku;\n }\n if (typeof this.volumeCommitment !== 'undefined') {\n toReturn['volumeCommitment'] = this.volumeCommitment;\n }\n if (typeof this.volumeCommitmentStartsAt !== 'undefined' && this.volumeCommitmentStartsAt !== null) {\n toReturn['volumeCommitmentStartsAt'] = 'toApiJson' in this.volumeCommitmentStartsAt ? this.volumeCommitmentStartsAt.toApiJson() : this.volumeCommitmentStartsAt;\n }\n if (typeof this.volumeCommitmentEndsAt !== 'undefined' && this.volumeCommitmentEndsAt !== null) {\n toReturn['volumeCommitmentEndsAt'] = 'toApiJson' in this.volumeCommitmentEndsAt ? this.volumeCommitmentEndsAt.toApiJson() : this.volumeCommitmentEndsAt;\n }\n return toReturn;\n }\n}\nclass StartRevRecTemplateBackfillRequest {\n static fromProto(proto) {\n let m = new StartRevRecTemplateBackfillRequest();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n return toReturn;\n }\n}\nclass UpsertRetailPricingRequest {\n static fromProto(proto) {\n let m = new UpsertRetailPricingRequest();\n m = Object.assign(m, proto);\n if (proto.frequency) {\n m.frequency = enumStringToValue(Frequency, proto.frequency);\n }\n if (proto.pricing) {\n m.pricing = Object.keys(proto.pricing).reduce((obj, k) => {\n obj[k] = PricingPlanProductPricing.fromProto(proto.pricing[k]);\n return obj;\n }, {});\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.merchantId !== 'undefined') {\n toReturn['merchantId'] = this.merchantId;\n }\n if (typeof this.sku !== 'undefined') {\n toReturn['sku'] = this.sku;\n }\n if (typeof this.frequency !== 'undefined') {\n toReturn['frequency'] = this.frequency;\n }\n if (typeof this.pricing !== 'undefined' && this.pricing !== null) {\n toReturn['pricing'] = 'toApiJson' in this.pricing ? this.pricing.toApiJson() : this.pricing;\n }\n if (typeof this.groupId !== 'undefined') {\n toReturn['groupId'] = this.groupId;\n }\n if (typeof this.customerId !== 'undefined') {\n toReturn['customerId'] = this.customerId;\n }\n if (typeof this.subscriptionId !== 'undefined') {\n toReturn['subscriptionId'] = this.subscriptionId;\n }\n return toReturn;\n }\n}\n\n// *********************************\n// Code generated by sdkgen\n// DO NOT EDIT!.\n//\n// Objects Index.\n// *********************************\n\nconst environment = (window ? window['environment'] : 'prod') ?? 'prod';\nconst hostMap = {\n 'local': 'billing-api.vendasta-local.com',\n 'test': '',\n 'demo': 'billing-demo.apigateway.co',\n 'prod': 'billing-prod.apigateway.co',\n 'production': 'billing-prod.apigateway.co'\n};\nlet HostService = /*#__PURE__*/(() => {\n class HostService {\n get host() {\n return hostMap[environment.toLowerCase()];\n }\n get hostWithScheme() {\n return 'https://' + this.host;\n }\n static {\n this.ɵfac = function HostService_Factory(t) {\n return new (t || HostService)();\n };\n }\n static {\n this.ɵprov = /* @__PURE__ */i0.ɵɵdefineInjectable({\n token: HostService,\n factory: HostService.ɵfac,\n providedIn: 'root'\n });\n }\n }\n return HostService;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n\n// *********************************\n// Code generated by sdkgen\n// DO NOT EDIT!.\n//\n// API Service.\n// *********************************\nlet BankReconciliationApiService = /*#__PURE__*/(() => {\n class BankReconciliationApiService {\n constructor(http, hostService) {\n this.http = http;\n this.hostService = hostService;\n this._host = this.hostService.hostWithScheme;\n }\n apiOptions() {\n return {\n headers: new HttpHeaders({\n 'Content-Type': 'application/json'\n }),\n withCredentials: true\n };\n }\n listPayouts(r) {\n const request = r.toApiJson ? r : new ListPayoutsRequest(r);\n return this.http.post(this._host + \"/billing.v1.BankReconciliationService/ListPayouts\", request.toApiJson(), this.apiOptions()).pipe(map(resp => ListPayoutsResponse.fromProto(resp)));\n }\n reconcilePayout(r) {\n const request = r.toApiJson ? r : new ReconcilePayoutRequest(r);\n return this.http.post(this._host + \"/billing.v1.BankReconciliationService/ReconcilePayout\", request.toApiJson(), this.apiOptions()).pipe(map(resp => ReconcilePayoutResponse.fromProto(resp)));\n }\n static {\n this.ɵfac = function BankReconciliationApiService_Factory(t) {\n return new (t || BankReconciliationApiService)(i0.ɵɵinject(i1.HttpClient), i0.ɵɵinject(HostService));\n };\n }\n static {\n this.ɵprov = /* @__PURE__ */i0.ɵɵdefineInjectable({\n token: BankReconciliationApiService,\n factory: BankReconciliationApiService.ɵfac,\n providedIn: 'root'\n });\n }\n }\n return BankReconciliationApiService;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n\n// *********************************\n// Code generated by sdkgen\n// DO NOT EDIT!.\n//\n// API Service.\n// *********************************\nlet BillingApiService = /*#__PURE__*/(() => {\n class BillingApiService {\n constructor(http, hostService) {\n this.http = http;\n this.hostService = hostService;\n this._host = this.hostService.hostWithScheme;\n }\n apiOptions() {\n return {\n headers: new HttpHeaders({\n 'Content-Type': 'application/json'\n }),\n withCredentials: true\n };\n }\n canBillItem(r) {\n const request = r.toApiJson ? r : new CanBillItemRequest(r);\n return this.http.post(this._host + \"/billing.v1.Billing/CanBillItem\", request.toApiJson(), {\n ...this.apiOptions(),\n observe: 'response'\n });\n }\n canCreateSubscriptions(r) {\n const request = r.toApiJson ? r : new CanCreateSubscriptionsRequest(r);\n return this.http.post(this._host + \"/billing.v1.Billing/CanCreateSubscriptions\", request.toApiJson(), this.apiOptions()).pipe(map(resp => CanCreateSubscriptionsResponse.fromProto(resp)));\n }\n createSubscription(r) {\n const request = r.toApiJson ? r : new CreateSubscriptionRequest(r);\n return this.http.post(this._host + \"/billing.v1.Billing/CreateSubscription\", request.toApiJson(), this.apiOptions()).pipe(map(resp => CreateSubscriptionResponse.fromProto(resp)));\n }\n createSubscriptions(r) {\n const request = r.toApiJson ? r : new CreateSubscriptionsRequest(r);\n return this.http.post(this._host + \"/billing.v1.Billing/CreateSubscriptions\", request.toApiJson(), this.apiOptions()).pipe(map(resp => CreateSubscriptionsResponse.fromProto(resp)));\n }\n reverseSubscription(r) {\n const request = r.toApiJson ? r : new ReverseSubscriptionRequest(r);\n return this.http.post(this._host + \"/billing.v1.Billing/ReverseSubscription\", request.toApiJson(), {\n ...this.apiOptions(),\n observe: 'response'\n });\n }\n setAutoBillable(r) {\n const request = r.toApiJson ? r : new SetAutoBillableRequest(r);\n return this.http.post(this._host + \"/billing.v1.Billing/SetAutoBillable\", request.toApiJson(), {\n ...this.apiOptions(),\n observe: 'response'\n });\n }\n setRenewalStart(r) {\n const request = r.toApiJson ? r : new SetRenewalStartRequest(r);\n return this.http.post(this._host + \"/billing.v1.Billing/SetRenewalStart\", request.toApiJson(), {\n ...this.apiOptions(),\n observe: 'response'\n });\n }\n billItem(r) {\n const request = r.toApiJson ? r : new BillItemRequest(r);\n return this.http.post(this._host + \"/billing.v1.Billing/BillItem\", request.toApiJson(), {\n ...this.apiOptions(),\n observe: 'response'\n });\n }\n billMultipleItems(r) {\n const request = r.toApiJson ? r : new BillMultipleItemsRequest(r);\n return this.http.post(this._host + \"/billing.v1.Billing/BillMultipleItems\", request.toApiJson(), this.apiOptions()).pipe(map(resp => BillMultipleItemsResponse.fromProto(resp)));\n }\n getBillableItem(r) {\n const request = r.toApiJson ? r : new GetBillableItemRequest(r);\n return this.http.post(this._host + \"/billing.v1.Billing/GetBillableItem\", request.toApiJson(), this.apiOptions()).pipe(map(resp => GetBillableItemResponse.fromProto(resp)));\n }\n getMultiSubscriptions(r) {\n const request = r.toApiJson ? r : new GetMultiSubscriptionsRequest(r);\n return this.http.post(this._host + \"/billing.v1.Billing/GetMultiSubscriptions\", request.toApiJson(), this.apiOptions()).pipe(map(resp => GetMultiSubscriptionsResponse.fromProto(resp)));\n }\n listSubscriptions(r) {\n const request = r.toApiJson ? r : new ListSubscriptionsRequest(r);\n return this.http.post(this._host + \"/billing.v1.Billing/ListSubscriptions\", request.toApiJson(), this.apiOptions()).pipe(map(resp => ListSubscriptionsResponse.fromProto(resp)));\n }\n exportSubscriptions(r) {\n const request = r.toApiJson ? r : new ExportSubscriptionsRequest(r);\n return this.http.post(this._host + \"/billing.v1.Billing/ExportSubscriptions\", request.toApiJson(), this.apiOptions()).pipe(map(resp => ExportResponse.fromProto(resp)));\n }\n listRetailSubscriptions(r) {\n const request = r.toApiJson ? r : new ListSubscriptionsRequest(r);\n return this.http.post(this._host + \"/billing.v1.Billing/ListRetailSubscriptions\", request.toApiJson(), this.apiOptions()).pipe(map(resp => ListSubscriptionsResponse.fromProto(resp)));\n }\n listBillableItems(r) {\n const request = r.toApiJson ? r : new ListBillableItemsRequest(r);\n return this.http.post(this._host + \"/billing.v1.Billing/ListBillableItems\", request.toApiJson(), this.apiOptions()).pipe(map(resp => ListBillableItemsResponse.fromProto(resp)));\n }\n expireBillableItem(r) {\n const request = r.toApiJson ? r : new ExpireBillableItemRequest(r);\n return this.http.post(this._host + \"/billing.v1.Billing/ExpireBillableItem\", request.toApiJson(), {\n ...this.apiOptions(),\n observe: 'response'\n });\n }\n unexpireBillableItem(r) {\n const request = r.toApiJson ? r : new UnexpireBillableItemRequest(r);\n return this.http.post(this._host + \"/billing.v1.Billing/UnexpireBillableItem\", request.toApiJson(), {\n ...this.apiOptions(),\n observe: 'response'\n });\n }\n deleteBillableItem(r) {\n const request = r.toApiJson ? r : new DeleteBillableItemRequest(r);\n return this.http.post(this._host + \"/billing.v1.Billing/DeleteBillableItem\", request.toApiJson(), {\n ...this.apiOptions(),\n observe: 'response'\n });\n }\n listMerchantBillingReports(r) {\n const request = r.toApiJson ? r : new ListMerchantBillingReportsRequest(r);\n return this.http.post(this._host + \"/billing.v1.Billing/ListMerchantBillingReports\", request.toApiJson(), this.apiOptions()).pipe(map(resp => ListMerchantBillingReportsResponse.fromProto(resp)));\n }\n listProductSummaries(r) {\n const request = r.toApiJson ? r : new ListProductSummariesRequest(r);\n return this.http.post(this._host + \"/billing.v1.Billing/ListProductSummaries\", request.toApiJson(), this.apiOptions()).pipe(map(resp => ListProductSummariesResponse.fromProto(resp)));\n }\n getProductSummariesTotal(r) {\n const request = r.toApiJson ? r : new GetProductSummariesTotalRequest(r);\n return this.http.post(this._host + \"/billing.v1.Billing/GetProductSummariesTotal\", request.toApiJson(), this.apiOptions()).pipe(map(resp => GetProductSummariesTotalResponse.fromProto(resp)));\n }\n generateBillableItemsCsv(r) {\n const request = r.toApiJson ? r : new GenerateBillableItemsCSVRequest(r);\n return this.http.post(this._host + \"/billing.v1.Billing/GenerateBillableItemsCSV\", request.toApiJson(), this.apiOptions()).pipe(map(resp => GenerateBillableItemsCSVResponse.fromProto(resp)));\n }\n createPricingPlan(r) {\n const request = r.toApiJson ? r : new CreatePricingPlanRequest(r);\n return this.http.post(this._host + \"/billing.v1.Billing/CreatePricingPlan\", request.toApiJson(), this.apiOptions()).pipe(map(resp => CreatePricingPlanResponse.fromProto(resp)));\n }\n updatePricingPlan(r) {\n const request = r.toApiJson ? r : new UpdatePricingPlanRequest(r);\n return this.http.post(this._host + \"/billing.v1.Billing/UpdatePricingPlan\", request.toApiJson(), this.apiOptions()).pipe(map(resp => UpdatePricingPlanResponse.fromProto(resp)));\n }\n getMultiPricingPlan(r) {\n const request = r.toApiJson ? r : new GetMultiPricingPlanRequest(r);\n return this.http.post(this._host + \"/billing.v1.Billing/GetMultiPricingPlan\", request.toApiJson(), this.apiOptions()).pipe(map(resp => GetMultiPricingPlanResponse.fromProto(resp)));\n }\n createPricingPlanProduct(r) {\n const request = r.toApiJson ? r : new CreatePricingPlanProductRequest(r);\n return this.http.post(this._host + \"/billing.v1.Billing/CreatePricingPlanProduct\", request.toApiJson(), this.apiOptions()).pipe(map(resp => CreatePricingPlanProductResponse.fromProto(resp)));\n }\n updatePricingPlanProduct(r) {\n const request = r.toApiJson ? r : new UpdatePricingPlanProductRequest(r);\n return this.http.post(this._host + \"/billing.v1.Billing/UpdatePricingPlanProduct\", request.toApiJson(), this.apiOptions()).pipe(map(resp => UpdatePricingPlanProductResponse.fromProto(resp)));\n }\n deletePricingPlanProduct(r) {\n const request = r.toApiJson ? r : new DeletePricingPlanProductRequest(r);\n return this.http.post(this._host + \"/billing.v1.Billing/DeletePricingPlanProduct\", request.toApiJson(), {\n ...this.apiOptions(),\n observe: 'response'\n });\n }\n listPricingPlanProducts(r) {\n const request = r.toApiJson ? r : new ListPricingPlanProductsRequest(r);\n return this.http.post(this._host + \"/billing.v1.Billing/ListPricingPlanProducts\", request.toApiJson(), this.apiOptions()).pipe(map(resp => ListPricingPlanProductsResponse.fromProto(resp)));\n }\n getPricingPlanProduct(r) {\n const request = r.toApiJson ? r : new GetPricingPlanProductRequest(r);\n return this.http.post(this._host + \"/billing.v1.Billing/GetPricingPlanProduct\", request.toApiJson(), this.apiOptions()).pipe(map(resp => GetPricingPlanProductResponse.fromProto(resp)));\n }\n getMultiPricingPlanProduct(r) {\n const request = r.toApiJson ? r : new GetMultiPricingPlanProductRequest(r);\n return this.http.post(this._host + \"/billing.v1.Billing/GetMultiPricingPlanProduct\", request.toApiJson(), this.apiOptions()).pipe(map(resp => GetMultiPricingPlanProductResponse.fromProto(resp)));\n }\n getMultiProductPricing(r) {\n const request = r.toApiJson ? r : new GetMultiProductPricingRequest(r);\n return this.http.post(this._host + \"/billing.v1.Billing/GetMultiProductPricing\", request.toApiJson(), this.apiOptions()).pipe(map(resp => GetMultiProductPricingResponse.fromProto(resp)));\n }\n tickComponentUsage(r) {\n const request = r.toApiJson ? r : new TickComponentUsageRequest(r);\n return this.http.post(this._host + \"/billing.v1.Billing/TickComponentUsage\", request.toApiJson(), {\n ...this.apiOptions(),\n observe: 'response'\n });\n }\n createMeteredComponent(r) {\n const request = r.toApiJson ? r : new CreateMeteredComponentRequest(r);\n return this.http.post(this._host + \"/billing.v1.Billing/CreateMeteredComponent\", request.toApiJson(), {\n ...this.apiOptions(),\n observe: 'response'\n });\n }\n createUsage(r) {\n const request = r.toApiJson ? r : new CreateUsageRequest(r);\n return this.http.post(this._host + \"/billing.v1.Billing/CreateUsage\", request.toApiJson(), {\n ...this.apiOptions(),\n observe: 'response'\n });\n }\n listContracts(r) {\n const request = r.toApiJson ? r : new ListContractsRequest(r);\n return this.http.post(this._host + \"/billing.v1.Billing/ListContracts\", request.toApiJson(), this.apiOptions()).pipe(map(resp => ListContractsResponse.fromProto(resp)));\n }\n getMultiContract(r) {\n const request = r.toApiJson ? r : new GetMultiContractsRequest(r);\n return this.http.post(this._host + \"/billing.v1.Billing/GetMultiContract\", request.toApiJson(), this.apiOptions()).pipe(map(resp => GetMultiContractsResponse.fromProto(resp)));\n }\n getMerchantWholesaleCurrency(r) {\n const request = r.toApiJson ? r : new GetMerchantWholesaleCurrencyRequest(r);\n return this.http.post(this._host + \"/billing.v1.Billing/GetMerchantWholesaleCurrency\", request.toApiJson(), this.apiOptions()).pipe(map(resp => GetMerchantWholesaleCurrencyResponse.fromProto(resp)));\n }\n listProducts(r) {\n const request = r.toApiJson ? r : new ListProductsRequest(r);\n return this.http.post(this._host + \"/billing.v1.Billing/ListProducts\", request.toApiJson(), this.apiOptions()).pipe(map(resp => ListProductsResponse.fromProto(resp)));\n }\n getMultiProduct(r) {\n const request = r.toApiJson ? r : new GetMultiProductRequest(r);\n return this.http.post(this._host + \"/billing.v1.Billing/GetMultiProduct\", request.toApiJson(), this.apiOptions()).pipe(map(resp => GetMultiProductResponse.fromProto(resp)));\n }\n resetContractPricing(r) {\n const request = r.toApiJson ? r : new ResetContractPricingRequest(r);\n return this.http.post(this._host + \"/billing.v1.Billing/ResetContractPricing\", request.toApiJson(), {\n ...this.apiOptions(),\n observe: 'response'\n });\n }\n getPurchaseCost(r) {\n const request = r.toApiJson ? r : new GetPurchaseCostRequest(r);\n return this.http.post(this._host + \"/billing.v1.Billing/GetPurchaseCost\", request.toApiJson(), this.apiOptions()).pipe(map(resp => GetPurchaseCostResponse.fromProto(resp)));\n }\n changeFrequency(r) {\n const request = r.toApiJson ? r : new ChangeFrequencyRequest(r);\n return this.http.post(this._host + \"/billing.v1.Billing/ChangeFrequency\", request.toApiJson(), {\n ...this.apiOptions(),\n observe: 'response'\n });\n }\n changeRenewalDate(r) {\n const request = r.toApiJson ? r : new ChangeRenewalDateRequest(r);\n return this.http.post(this._host + \"/billing.v1.Billing/ChangeRenewalDate\", request.toApiJson(), {\n ...this.apiOptions(),\n observe: 'response'\n });\n }\n changeCustomUnitPrice(r) {\n const request = r.toApiJson ? r : new ChangeCustomUnitPriceRequest(r);\n return this.http.post(this._host + \"/billing.v1.Billing/ChangeCustomUnitPrice\", request.toApiJson(), {\n ...this.apiOptions(),\n observe: 'response'\n });\n }\n startRevRecTemplateBackfill(r) {\n const request = r.toApiJson ? r : new StartRevRecTemplateBackfillRequest(r);\n return this.http.post(this._host + \"/billing.v1.Billing/StartRevRecTemplateBackfill\", request.toApiJson(), {\n ...this.apiOptions(),\n observe: 'response'\n });\n }\n replaceSubscriptionPresets(r) {\n const request = r.toApiJson ? r : new ReplaceSubscriptionPresetsRequest(r);\n return this.http.post(this._host + \"/billing.v1.Billing/ReplaceSubscriptionPresets\", request.toApiJson(), this.apiOptions()).pipe(map(resp => ReplaceSubscriptionPresetsResponse.fromProto(resp)));\n }\n updateSubscription(r) {\n const request = r.toApiJson ? r : new UpdateSubscriptionRequest(r);\n return this.http.post(this._host + \"/billing.v1.Billing/UpdateSubscription\", request.toApiJson(), this.apiOptions()).pipe(map(resp => UpdateSubscriptionResponse.fromProto(resp)));\n }\n static {\n this.ɵfac = function BillingApiService_Factory(t) {\n return new (t || BillingApiService)(i0.ɵɵinject(i1.HttpClient), i0.ɵɵinject(HostService));\n };\n }\n static {\n this.ɵprov = /* @__PURE__ */i0.ɵɵdefineInjectable({\n token: BillingApiService,\n factory: BillingApiService.ɵfac,\n providedIn: 'root'\n });\n }\n }\n return BillingApiService;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n\n// *********************************\n// Code generated by sdkgen\n// DO NOT EDIT!.\n//\n// API Service.\n// *********************************\nlet BundleApiService = /*#__PURE__*/(() => {\n class BundleApiService {\n constructor(http, hostService) {\n this.http = http;\n this.hostService = hostService;\n this._host = this.hostService.hostWithScheme;\n }\n apiOptions() {\n return {\n headers: new HttpHeaders({\n 'Content-Type': 'application/json'\n }),\n withCredentials: true\n };\n }\n upsert(r) {\n const request = r.toApiJson ? r : new UpsertBundleRequest(r);\n return this.http.post(this._host + \"/billing.v1.BundleService/Upsert\", request.toApiJson(), {\n ...this.apiOptions(),\n observe: 'response'\n });\n }\n getMulti(r) {\n const request = r.toApiJson ? r : new GetMultiBundleRequest(r);\n return this.http.post(this._host + \"/billing.v1.BundleService/GetMulti\", request.toApiJson(), this.apiOptions()).pipe(map(resp => GetMultiBundleResponse.fromProto(resp)));\n }\n list(r) {\n const request = r.toApiJson ? r : new ListBundlesRequest(r);\n return this.http.post(this._host + \"/billing.v1.BundleService/List\", request.toApiJson(), this.apiOptions()).pipe(map(resp => ListBundlesResponse.fromProto(resp)));\n }\n static {\n this.ɵfac = function BundleApiService_Factory(t) {\n return new (t || BundleApiService)(i0.ɵɵinject(i1.HttpClient), i0.ɵɵinject(HostService));\n };\n }\n static {\n this.ɵprov = /* @__PURE__ */i0.ɵɵdefineInjectable({\n token: BundleApiService,\n factory: BundleApiService.ɵfac,\n providedIn: 'root'\n });\n }\n }\n return BundleApiService;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n\n// *********************************\n// Code generated by sdkgen\n// DO NOT EDIT!.\n//\n// API Service.\n// *********************************\nlet ContractDocumentApiService = /*#__PURE__*/(() => {\n class ContractDocumentApiService {\n constructor(http, hostService) {\n this.http = http;\n this.hostService = hostService;\n this._host = this.hostService.hostWithScheme;\n }\n apiOptions() {\n return {\n headers: new HttpHeaders({\n 'Content-Type': 'application/json'\n }),\n withCredentials: true\n };\n }\n list(r) {\n const request = r.toApiJson ? r : new ListContractDocumentsRequest(r);\n return this.http.post(this._host + \"/billing.v1.ContractDocumentService/List\", request.toApiJson(), this.apiOptions()).pipe(map(resp => ListContractDocumentsResponse.fromProto(resp)));\n }\n delete(r) {\n const request = r.toApiJson ? r : new DeleteContractDocumentRequest(r);\n return this.http.post(this._host + \"/billing.v1.ContractDocumentService/Delete\", request.toApiJson(), {\n ...this.apiOptions(),\n observe: 'response'\n });\n }\n static {\n this.ɵfac = function ContractDocumentApiService_Factory(t) {\n return new (t || ContractDocumentApiService)(i0.ɵɵinject(i1.HttpClient), i0.ɵɵinject(HostService));\n };\n }\n static {\n this.ɵprov = /* @__PURE__ */i0.ɵɵdefineInjectable({\n token: ContractDocumentApiService,\n factory: ContractDocumentApiService.ɵfac,\n providedIn: 'root'\n });\n }\n }\n return ContractDocumentApiService;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n\n// *********************************\n// Code generated by sdkgen\n// DO NOT EDIT!.\n//\n// API Service.\n// *********************************\nlet ContractApiService = /*#__PURE__*/(() => {\n class ContractApiService {\n constructor(http, hostService) {\n this.http = http;\n this.hostService = hostService;\n this._host = this.hostService.hostWithScheme;\n }\n apiOptions() {\n return {\n headers: new HttpHeaders({\n 'Content-Type': 'application/json'\n }),\n withCredentials: true\n };\n }\n get(r) {\n const request = r.toApiJson ? r : new GetContractRequest(r);\n return this.http.post(this._host + \"/billing.v1.ContractService/Get\", request.toApiJson(), this.apiOptions()).pipe(map(resp => GetContractResponse.fromProto(resp)));\n }\n updateSubscription(r) {\n const request = r.toApiJson ? r : new UpdateContractSubscriptionRequest(r);\n return this.http.post(this._host + \"/billing.v1.ContractService/UpdateSubscription\", request.toApiJson(), {\n ...this.apiOptions(),\n observe: 'response'\n });\n }\n create(r) {\n const request = r.toApiJson ? r : new CreateContractRequest(r);\n return this.http.post(this._host + \"/billing.v1.ContractService/Create\", request.toApiJson(), this.apiOptions()).pipe(map(resp => CreateContractResponse.fromProto(resp)));\n }\n update(r) {\n const request = r.toApiJson ? r : new UpdateContractRequest(r);\n return this.http.post(this._host + \"/billing.v1.ContractService/Update\", request.toApiJson(), this.apiOptions()).pipe(map(resp => UpdateContractResponse.fromProto(resp)));\n }\n static {\n this.ɵfac = function ContractApiService_Factory(t) {\n return new (t || ContractApiService)(i0.ɵɵinject(i1.HttpClient), i0.ɵɵinject(HostService));\n };\n }\n static {\n this.ɵprov = /* @__PURE__ */i0.ɵɵdefineInjectable({\n token: ContractApiService,\n factory: ContractApiService.ɵfac,\n providedIn: 'root'\n });\n }\n }\n return ContractApiService;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n\n// *********************************\n// Code generated by sdkgen\n// DO NOT EDIT!.\n//\n// API Service.\n// *********************************\nlet CreditApiService = /*#__PURE__*/(() => {\n class CreditApiService {\n constructor(http, hostService) {\n this.http = http;\n this.hostService = hostService;\n this._host = this.hostService.hostWithScheme;\n }\n apiOptions() {\n return {\n headers: new HttpHeaders({\n 'Content-Type': 'application/json'\n }),\n withCredentials: true\n };\n }\n add(r) {\n const request = r.toApiJson ? r : new AddCreditRequest(r);\n return this.http.post(this._host + \"/billing.v1.CreditService/Add\", request.toApiJson(), {\n ...this.apiOptions(),\n observe: 'response'\n });\n }\n getBalance(r) {\n const request = r.toApiJson ? r : new GetBalanceRequest(r);\n return this.http.post(this._host + \"/billing.v1.CreditService/GetBalance\", request.toApiJson(), this.apiOptions()).pipe(map(resp => GetBalanceResponse.fromProto(resp)));\n }\n static {\n this.ɵfac = function CreditApiService_Factory(t) {\n return new (t || CreditApiService)(i0.ɵɵinject(i1.HttpClient), i0.ɵɵinject(HostService));\n };\n }\n static {\n this.ɵprov = /* @__PURE__ */i0.ɵɵdefineInjectable({\n token: CreditApiService,\n factory: CreditApiService.ɵfac,\n providedIn: 'root'\n });\n }\n }\n return CreditApiService;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n\n// *********************************\n// Code generated by sdkgen\n// DO NOT EDIT!.\n//\n// API Service.\n// *********************************\nlet DiscountApiService = /*#__PURE__*/(() => {\n class DiscountApiService {\n constructor(http, hostService) {\n this.http = http;\n this.hostService = hostService;\n this._host = this.hostService.hostWithScheme;\n }\n apiOptions() {\n return {\n headers: new HttpHeaders({\n 'Content-Type': 'application/json'\n }),\n withCredentials: true\n };\n }\n list(r) {\n const request = r.toApiJson ? r : new ListDiscountsRequest(r);\n return this.http.post(this._host + \"/billing.v1.DiscountService/List\", request.toApiJson(), this.apiOptions()).pipe(map(resp => ListDiscountsResponse.fromProto(resp)));\n }\n create(r) {\n const request = r.toApiJson ? r : new CreateDiscountRequest(r);\n return this.http.post(this._host + \"/billing.v1.DiscountService/Create\", request.toApiJson(), this.apiOptions()).pipe(map(resp => CreateDiscountResponse.fromProto(resp)));\n }\n update(r) {\n const request = r.toApiJson ? r : new UpdateDiscountRequest(r);\n return this.http.post(this._host + \"/billing.v1.DiscountService/Update\", request.toApiJson(), {\n ...this.apiOptions(),\n observe: 'response'\n });\n }\n expire(r) {\n const request = r.toApiJson ? r : new ExpireDiscountRequest(r);\n return this.http.post(this._host + \"/billing.v1.DiscountService/Expire\", request.toApiJson(), {\n ...this.apiOptions(),\n observe: 'response'\n });\n }\n static {\n this.ɵfac = function DiscountApiService_Factory(t) {\n return new (t || DiscountApiService)(i0.ɵɵinject(i1.HttpClient), i0.ɵɵinject(HostService));\n };\n }\n static {\n this.ɵprov = /* @__PURE__ */i0.ɵɵdefineInjectable({\n token: DiscountApiService,\n factory: DiscountApiService.ɵfac,\n providedIn: 'root'\n });\n }\n }\n return DiscountApiService;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n\n// *********************************\n// Code generated by sdkgen\n// DO NOT EDIT!.\n//\n// API Service.\n// *********************************\nlet InvoiceApiService = /*#__PURE__*/(() => {\n class InvoiceApiService {\n constructor(http, hostService) {\n this.http = http;\n this.hostService = hostService;\n this._host = this.hostService.hostWithScheme;\n }\n apiOptions() {\n return {\n headers: new HttpHeaders({\n 'Content-Type': 'application/json'\n }),\n withCredentials: true\n };\n }\n addBundle(r) {\n const request = r.toApiJson ? r : new AddBundleRequest(r);\n return this.http.post(this._host + \"/billing.v1.InvoiceService/AddBundle\", request.toApiJson(), this.apiOptions()).pipe(map(resp => AddBundleResponse.fromProto(resp)));\n }\n addLineItem(r) {\n const request = r.toApiJson ? r : new AddLineItemRequest(r);\n return this.http.post(this._host + \"/billing.v1.InvoiceService/AddLineItem\", request.toApiJson(), this.apiOptions()).pipe(map(resp => AddLineItemResponse.fromProto(resp)));\n }\n charge(r) {\n const request = r.toApiJson ? r : new ChargeInvoiceRequest(r);\n return this.http.post(this._host + \"/billing.v1.InvoiceService/Charge\", request.toApiJson(), {\n ...this.apiOptions(),\n observe: 'response'\n });\n }\n create(r) {\n const request = r.toApiJson ? r : new CreateInvoiceRequest(r);\n return this.http.post(this._host + \"/billing.v1.InvoiceService/Create\", request.toApiJson(), this.apiOptions()).pipe(map(resp => CreateInvoiceResponse.fromProto(resp)));\n }\n delete(r) {\n const request = r.toApiJson ? r : new DeleteInvoiceRequest(r);\n return this.http.post(this._host + \"/billing.v1.InvoiceService/Delete\", request.toApiJson(), {\n ...this.apiOptions(),\n observe: 'response'\n });\n }\n deleteLineItem(r) {\n const request = r.toApiJson ? r : new DeleteLineItemRequest(r);\n return this.http.post(this._host + \"/billing.v1.InvoiceService/DeleteLineItem\", request.toApiJson(), this.apiOptions()).pipe(map(resp => DeleteLineItemResponse.fromProto(resp)));\n }\n get(r) {\n const request = r.toApiJson ? r : new GetInvoiceRequest(r);\n return this.http.post(this._host + \"/billing.v1.InvoiceService/Get\", request.toApiJson(), this.apiOptions()).pipe(map(resp => GetInvoiceResponse.fromProto(resp)));\n }\n removeBundle(r) {\n const request = r.toApiJson ? r : new RemoveBundleRequest(r);\n return this.http.post(this._host + \"/billing.v1.InvoiceService/RemoveBundle\", request.toApiJson(), this.apiOptions()).pipe(map(resp => RemoveBundleResponse.fromProto(resp)));\n }\n send(r) {\n const request = r.toApiJson ? r : new SendInvoiceRequest(r);\n return this.http.post(this._host + \"/billing.v1.InvoiceService/Send\", request.toApiJson(), {\n ...this.apiOptions(),\n observe: 'response'\n });\n }\n list(r) {\n const request = r.toApiJson ? r : new ListInvoicesRequest(r);\n return this.http.post(this._host + \"/billing.v1.InvoiceService/List\", request.toApiJson(), this.apiOptions()).pipe(map(resp => ListInvoicesResponse.fromProto(resp)));\n }\n update(r) {\n const request = r.toApiJson ? r : new UpdateInvoiceRequest(r);\n return this.http.post(this._host + \"/billing.v1.InvoiceService/Update\", request.toApiJson(), this.apiOptions()).pipe(map(resp => UpdateInvoiceResponse.fromProto(resp)));\n }\n pay(r) {\n const request = r.toApiJson ? r : new PayInvoiceRequest(r);\n return this.http.post(this._host + \"/billing.v1.InvoiceService/Pay\", request.toApiJson(), {\n ...this.apiOptions(),\n observe: 'response'\n });\n }\n updateDefaultTaxRates(r) {\n const request = r.toApiJson ? r : new UpdateDefaultTaxRatesRequest(r);\n return this.http.post(this._host + \"/billing.v1.InvoiceService/UpdateDefaultTaxRates\", request.toApiJson(), this.apiOptions()).pipe(map(resp => UpdateDefaultTaxRatesResponse.fromProto(resp)));\n }\n updateLineItem(r) {\n const request = r.toApiJson ? r : new UpdateLineItemRequest(r);\n return this.http.post(this._host + \"/billing.v1.InvoiceService/UpdateLineItem\", request.toApiJson(), this.apiOptions()).pipe(map(resp => UpdateLineItemResponse.fromProto(resp)));\n }\n void(r) {\n const request = r.toApiJson ? r : new VoidInvoiceRequest(r);\n return this.http.post(this._host + \"/billing.v1.InvoiceService/Void\", request.toApiJson(), {\n ...this.apiOptions(),\n observe: 'response'\n });\n }\n duplicate(r) {\n const request = r.toApiJson ? r : new DuplicateInvoiceRequest(r);\n return this.http.post(this._host + \"/billing.v1.InvoiceService/Duplicate\", request.toApiJson(), this.apiOptions()).pipe(map(resp => DuplicateInvoiceResponse.fromProto(resp)));\n }\n updateBundle(r) {\n const request = r.toApiJson ? r : new UpdateBundleRequest(r);\n return this.http.post(this._host + \"/billing.v1.InvoiceService/UpdateBundle\", request.toApiJson(), this.apiOptions()).pipe(map(resp => UpdateBundleResponse.fromProto(resp)));\n }\n createPaymentLink(r) {\n const request = r.toApiJson ? r : new CreatePaymentLinkRequest(r);\n return this.http.post(this._host + \"/billing.v1.InvoiceService/CreatePaymentLink\", request.toApiJson(), this.apiOptions()).pipe(map(resp => CreatePaymentLinkResponse.fromProto(resp)));\n }\n getUpcomingInvoicePreview(r) {\n const request = r.toApiJson ? r : new GetUpcomingInvoicePreviewRequest(r);\n return this.http.post(this._host + \"/billing.v1.InvoiceService/GetUpcomingInvoicePreview\", request.toApiJson(), this.apiOptions()).pipe(map(resp => GetUpcomingInvoicePreviewResponse.fromProto(resp)));\n }\n static {\n this.ɵfac = function InvoiceApiService_Factory(t) {\n return new (t || InvoiceApiService)(i0.ɵɵinject(i1.HttpClient), i0.ɵɵinject(HostService));\n };\n }\n static {\n this.ɵprov = /* @__PURE__ */i0.ɵɵdefineInjectable({\n token: InvoiceApiService,\n factory: InvoiceApiService.ɵfac,\n providedIn: 'root'\n });\n }\n }\n return InvoiceApiService;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n\n// *********************************\n// Code generated by sdkgen\n// DO NOT EDIT!.\n//\n// API Service.\n// *********************************\nlet MerchantApiService = /*#__PURE__*/(() => {\n class MerchantApiService {\n constructor(http, hostService) {\n this.http = http;\n this.hostService = hostService;\n this._host = this.hostService.hostWithScheme;\n }\n apiOptions() {\n return {\n headers: new HttpHeaders({\n 'Content-Type': 'application/json'\n }),\n withCredentials: true\n };\n }\n create(r) {\n const request = r.toApiJson ? r : new CreateMerchantRequest(r);\n return this.http.post(this._host + \"/billing.v1.MerchantService/Create\", request.toApiJson(), {\n ...this.apiOptions(),\n observe: 'response'\n });\n }\n get(r) {\n const request = r.toApiJson ? r : new GetMerchantRequest(r);\n return this.http.post(this._host + \"/billing.v1.MerchantService/Get\", request.toApiJson(), this.apiOptions()).pipe(map(resp => GetMerchantResponse.fromProto(resp)));\n }\n getOutstandingBalance(r) {\n const request = r.toApiJson ? r : new GetOutstandingBalanceRequest(r);\n return this.http.post(this._host + \"/billing.v1.MerchantService/GetOutstandingBalance\", request.toApiJson(), this.apiOptions()).pipe(map(resp => GetOutstandingBalanceResponse.fromProto(resp)));\n }\n update(r) {\n const request = r.toApiJson ? r : new UpdateMerchantRequest(r);\n return this.http.post(this._host + \"/billing.v1.MerchantService/Update\", request.toApiJson(), {\n ...this.apiOptions(),\n observe: 'response'\n });\n }\n createPaymentCard(r) {\n const request = r.toApiJson ? r : new CreatePaymentCardRequest(r);\n return this.http.post(this._host + \"/billing.v1.MerchantService/CreatePaymentCard\", request.toApiJson(), {\n ...this.apiOptions(),\n observe: 'response'\n });\n }\n setDefaultPaymentCard(r) {\n const request = r.toApiJson ? r : new SetDefaultPaymentCardRequest(r);\n return this.http.post(this._host + \"/billing.v1.MerchantService/SetDefaultPaymentCard\", request.toApiJson(), {\n ...this.apiOptions(),\n observe: 'response'\n });\n }\n listPaymentCards(r) {\n const request = r.toApiJson ? r : new ListPaymentCardsRequest(r);\n return this.http.post(this._host + \"/billing.v1.MerchantService/ListPaymentCards\", request.toApiJson(), this.apiOptions()).pipe(map(resp => ListPaymentCardsResponse.fromProto(resp)));\n }\n updatePaymentCard(r) {\n const request = r.toApiJson ? r : new UpdatePaymentCardRequest(r);\n return this.http.post(this._host + \"/billing.v1.MerchantService/UpdatePaymentCard\", request.toApiJson(), {\n ...this.apiOptions(),\n observe: 'response'\n });\n }\n getStatistics(r) {\n const request = r.toApiJson ? r : new GetStatisticsRequest(r);\n return this.http.post(this._host + \"/billing.v1.MerchantService/GetStatistics\", request.toApiJson(), this.apiOptions()).pipe(map(resp => GetStatisticsResponse.fromProto(resp)));\n }\n search(r) {\n const request = r.toApiJson ? r : new SearchMerchantsRequest(r);\n return this.http.post(this._host + \"/billing.v1.MerchantService/Search\", request.toApiJson(), this.apiOptions()).pipe(map(resp => SearchMerchantsResponse.fromProto(resp)));\n }\n setAutoPostInvoices(r) {\n const request = r.toApiJson ? r : new SetAutoPostInvoicesRequest(r);\n return this.http.post(this._host + \"/billing.v1.MerchantService/SetAutoPostInvoices\", request.toApiJson(), {\n ...this.apiOptions(),\n observe: 'response'\n });\n }\n setAutoChargeInvoices(r) {\n const request = r.toApiJson ? r : new SetAutoChargeInvoicesRequest(r);\n return this.http.post(this._host + \"/billing.v1.MerchantService/SetAutoChargeInvoices\", request.toApiJson(), {\n ...this.apiOptions(),\n observe: 'response'\n });\n }\n setIncludeInFinancialRecords(r) {\n const request = r.toApiJson ? r : new SetIncludeInFinancialRecordsRequest(r);\n return this.http.post(this._host + \"/billing.v1.MerchantService/SetIncludeInFinancialRecords\", request.toApiJson(), {\n ...this.apiOptions(),\n observe: 'response'\n });\n }\n setHasAlternativePaymentMethod(r) {\n const request = r.toApiJson ? r : new SetHasAlternativePaymentMethodRequest(r);\n return this.http.post(this._host + \"/billing.v1.MerchantService/SetHasAlternativePaymentMethod\", request.toApiJson(), {\n ...this.apiOptions(),\n observe: 'response'\n });\n }\n sendSalesInvoiceEmail(r) {\n const request = r.toApiJson ? r : new SendSalesInvoiceEmailRequest(r);\n return this.http.post(this._host + \"/billing.v1.MerchantService/SendSalesInvoiceEmail\", request.toApiJson(), {\n ...this.apiOptions(),\n observe: 'response'\n });\n }\n chargeSalesInvoice(r) {\n const request = r.toApiJson ? r : new ChargeSalesInvoiceRequest(r);\n return this.http.post(this._host + \"/billing.v1.MerchantService/ChargeSalesInvoice\", request.toApiJson(), {\n ...this.apiOptions(),\n observe: 'response'\n });\n }\n sendSalesInvoiceReceiptEmail(r) {\n const request = r.toApiJson ? r : new SendSalesInvoiceReceiptEmailRequest(r);\n return this.http.post(this._host + \"/billing.v1.MerchantService/SendSalesInvoiceReceiptEmail\", request.toApiJson(), {\n ...this.apiOptions(),\n observe: 'response'\n });\n }\n createStripeExternalAccount(r) {\n const request = r.toApiJson ? r : new CreateStripeExternalAccountRequest(r);\n return this.http.post(this._host + \"/billing.v1.MerchantService/CreateStripeExternalAccount\", request.toApiJson(), {\n ...this.apiOptions(),\n observe: 'response'\n });\n }\n listBankAccounts(r) {\n const request = r.toApiJson ? r : new ListBankAccountsRequest(r);\n return this.http.post(this._host + \"/billing.v1.MerchantService/ListBankAccounts\", request.toApiJson(), this.apiOptions()).pipe(map(resp => ListBankAccountsResponse.fromProto(resp)));\n }\n setDefaultBankAccount(r) {\n const request = r.toApiJson ? r : new SetDefaultBankAccountRequest(r);\n return this.http.post(this._host + \"/billing.v1.MerchantService/SetDefaultBankAccount\", request.toApiJson(), {\n ...this.apiOptions(),\n observe: 'response'\n });\n }\n deleteBankAccount(r) {\n const request = r.toApiJson ? r : new DeleteBankAccountRequest(r);\n return this.http.post(this._host + \"/billing.v1.MerchantService/DeleteBankAccount\", request.toApiJson(), {\n ...this.apiOptions(),\n observe: 'response'\n });\n }\n getMultiRetailConfigurations(r) {\n const request = r.toApiJson ? r : new GetMultiRetailConfigurationsRequest(r);\n return this.http.post(this._host + \"/billing.v1.MerchantService/GetMultiRetailConfigurations\", request.toApiJson(), this.apiOptions()).pipe(map(resp => GetMultiRetailConfigurationsResponse.fromProto(resp)));\n }\n upsertRetailConfiguration(r) {\n const request = r.toApiJson ? r : new UpsertRetailConfigurationRequest(r);\n return this.http.post(this._host + \"/billing.v1.MerchantService/UpsertRetailConfiguration\", request.toApiJson(), {\n ...this.apiOptions(),\n observe: 'response'\n });\n }\n upsertDefaultRetailCustomerConfiguration(r) {\n const request = r.toApiJson ? r : new UpsertDefaultRetailCustomerConfigurationRequest(r);\n return this.http.post(this._host + \"/billing.v1.MerchantService/UpsertDefaultRetailCustomerConfiguration\", request.toApiJson(), {\n ...this.apiOptions(),\n observe: 'response'\n });\n }\n getRetailBalance(r) {\n const request = r.toApiJson ? r : new GetRetailBalanceRequest(r);\n return this.http.post(this._host + \"/billing.v1.MerchantService/GetRetailBalance\", request.toApiJson(), this.apiOptions()).pipe(map(resp => GetRetailBalanceResponse.fromProto(resp)));\n }\n getPayoutSummary(r) {\n const request = r.toApiJson ? r : new GetPayoutSummaryRequest(r);\n return this.http.post(this._host + \"/billing.v1.MerchantService/GetPayoutSummary\", request.toApiJson(), this.apiOptions()).pipe(map(resp => GetPayoutSummaryResponse.fromProto(resp)));\n }\n listRetailPayouts(r) {\n const request = r.toApiJson ? r : new ListRetailPayoutsRequest(r);\n return this.http.post(this._host + \"/billing.v1.MerchantService/ListRetailPayouts\", request.toApiJson(), this.apiOptions()).pipe(map(resp => ListRetailPayoutsResponse.fromProto(resp)));\n }\n getRetailPayout(r) {\n const request = r.toApiJson ? r : new GetRetailPayoutRequest(r);\n return this.http.post(this._host + \"/billing.v1.MerchantService/GetRetailPayout\", request.toApiJson(), this.apiOptions()).pipe(map(resp => GetRetailPayoutResponse.fromProto(resp)));\n }\n createReportRun(r) {\n const request = r.toApiJson ? r : new CreateMerchantServicesReportRun(r);\n return this.http.post(this._host + \"/billing.v1.MerchantService/CreateReportRun\", request.toApiJson(), this.apiOptions()).pipe(map(resp => MerchantServicesReportRun.fromProto(resp)));\n }\n getReportRun(r) {\n const request = r.toApiJson ? r : new GetMerchantServicesReportRun(r);\n return this.http.post(this._host + \"/billing.v1.MerchantService/GetReportRun\", request.toApiJson(), this.apiOptions()).pipe(map(resp => MerchantServicesReportRun.fromProto(resp)));\n }\n getRetailAccountBalance(r) {\n const request = r.toApiJson ? r : new GetRetailAccountBalanceRequest(r);\n return this.http.post(this._host + \"/billing.v1.MerchantService/GetRetailAccountBalance\", request.toApiJson(), this.apiOptions()).pipe(map(resp => GetRetailAccountBalanceResponse.fromProto(resp)));\n }\n cancelRetailBilling(r) {\n const request = r.toApiJson ? r : new CancelRetailBillingRequest(r);\n return this.http.post(this._host + \"/billing.v1.MerchantService/CancelRetailBilling\", request.toApiJson(), {\n ...this.apiOptions(),\n observe: 'response'\n });\n }\n static {\n this.ɵfac = function MerchantApiService_Factory(t) {\n return new (t || MerchantApiService)(i0.ɵɵinject(i1.HttpClient), i0.ɵɵinject(HostService));\n };\n }\n static {\n this.ɵprov = /* @__PURE__ */i0.ɵɵdefineInjectable({\n token: MerchantApiService,\n factory: MerchantApiService.ɵfac,\n providedIn: 'root'\n });\n }\n }\n return MerchantApiService;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n\n// *********************************\n// Code generated by sdkgen\n// DO NOT EDIT!.\n//\n// API Service.\n// *********************************\nlet PaymentMethodApiService = /*#__PURE__*/(() => {\n class PaymentMethodApiService {\n constructor(http, hostService) {\n this.http = http;\n this.hostService = hostService;\n this._host = this.hostService.hostWithScheme;\n }\n apiOptions() {\n return {\n headers: new HttpHeaders({\n 'Content-Type': 'application/json'\n }),\n withCredentials: true\n };\n }\n listPaymentCards(r) {\n const request = r.toApiJson ? r : new ListPaymentCardsRequest(r);\n return this.http.post(this._host + \"/billing.v1.PaymentMethodService/ListPaymentCards\", request.toApiJson(), this.apiOptions()).pipe(map(resp => ListPaymentCardsResponse.fromProto(resp)));\n }\n deletePaymentCard(r) {\n const request = r.toApiJson ? r : new DeletePaymentCardRequest(r);\n return this.http.post(this._host + \"/billing.v1.PaymentMethodService/DeletePaymentCard\", request.toApiJson(), {\n ...this.apiOptions(),\n observe: 'response'\n });\n }\n setDefaultPaymentMethod(r) {\n const request = r.toApiJson ? r : new SetDefaultPaymentMethodRequest(r);\n return this.http.post(this._host + \"/billing.v1.PaymentMethodService/SetDefaultPaymentMethod\", request.toApiJson(), {\n ...this.apiOptions(),\n observe: 'response'\n });\n }\n static {\n this.ɵfac = function PaymentMethodApiService_Factory(t) {\n return new (t || PaymentMethodApiService)(i0.ɵɵinject(i1.HttpClient), i0.ɵɵinject(HostService));\n };\n }\n static {\n this.ɵprov = /* @__PURE__ */i0.ɵɵdefineInjectable({\n token: PaymentMethodApiService,\n factory: PaymentMethodApiService.ɵfac,\n providedIn: 'root'\n });\n }\n }\n return PaymentMethodApiService;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n\n// *********************************\n// Code generated by sdkgen\n// DO NOT EDIT!.\n//\n// API Service.\n// *********************************\nlet PaymentApiService = /*#__PURE__*/(() => {\n class PaymentApiService {\n constructor(http, hostService) {\n this.http = http;\n this.hostService = hostService;\n this._host = this.hostService.hostWithScheme;\n }\n apiOptions() {\n return {\n headers: new HttpHeaders({\n 'Content-Type': 'application/json'\n }),\n withCredentials: true\n };\n }\n list(r) {\n const request = r.toApiJson ? r : new ListPaymentRequest(r);\n return this.http.post(this._host + \"/billing.v1.PaymentService/List\", request.toApiJson(), this.apiOptions()).pipe(map(resp => ListPaymentResponse.fromProto(resp)));\n }\n getRetail(r) {\n const request = r.toApiJson ? r : new GetRetailPaymentRequest(r);\n return this.http.post(this._host + \"/billing.v1.PaymentService/GetRetail\", request.toApiJson(), this.apiOptions()).pipe(map(resp => GetRetailPaymentResponse.fromProto(resp)));\n }\n listRetail(r) {\n const request = r.toApiJson ? r : new ListRetailPaymentsRequest(r);\n return this.http.post(this._host + \"/billing.v1.PaymentService/ListRetail\", request.toApiJson(), this.apiOptions()).pipe(map(resp => ListRetailPaymentsResponse.fromProto(resp)));\n }\n listRetailTransactions(r) {\n const request = r.toApiJson ? r : new ListRetailTransactionsRequest(r);\n return this.http.post(this._host + \"/billing.v1.PaymentService/ListRetailTransactions\", request.toApiJson(), this.apiOptions()).pipe(map(resp => ListRetailTransactionsResponse.fromProto(resp)));\n }\n listRetailDisputes(r) {\n const request = r.toApiJson ? r : new ListRetailDisputesRequest(r);\n return this.http.post(this._host + \"/billing.v1.PaymentService/ListRetailDisputes\", request.toApiJson(), this.apiOptions()).pipe(map(resp => ListRetailDisputesResponse.fromProto(resp)));\n }\n getRetailDispute(r) {\n const request = r.toApiJson ? r : new GetRetailDisputeRequest(r);\n return this.http.post(this._host + \"/billing.v1.PaymentService/GetRetailDispute\", request.toApiJson(), this.apiOptions()).pipe(map(resp => GetRetailDisputeResponse.fromProto(resp)));\n }\n closeRetailDispute(r) {\n const request = r.toApiJson ? r : new CloseRetailDisputeRequest(r);\n return this.http.post(this._host + \"/billing.v1.PaymentService/CloseRetailDispute\", request.toApiJson(), {\n ...this.apiOptions(),\n observe: 'response'\n });\n }\n prepareRetail(r) {\n const request = r.toApiJson ? r : new PrepareRetailPaymentRequest(r);\n return this.http.post(this._host + \"/billing.v1.PaymentService/PrepareRetail\", request.toApiJson(), this.apiOptions()).pipe(map(resp => PrepareRetailPaymentResponse.fromProto(resp)));\n }\n confirmRetail(r) {\n const request = r.toApiJson ? r : new ConfirmRetailPaymentRequest(r);\n return this.http.post(this._host + \"/billing.v1.PaymentService/ConfirmRetail\", request.toApiJson(), {\n ...this.apiOptions(),\n observe: 'response'\n });\n }\n retailStatus(r) {\n const request = r.toApiJson ? r : new RetailStatusRequest(r);\n return this.http.post(this._host + \"/billing.v1.PaymentService/RetailStatus\", request.toApiJson(), this.apiOptions()).pipe(map(resp => RetailStatusResponse.fromProto(resp)));\n }\n retailPaymentsEnabled(r) {\n const request = r.toApiJson ? r : new RetailPaymentsEnabledRequest(r);\n return this.http.post(this._host + \"/billing.v1.PaymentService/RetailPaymentsEnabled\", request.toApiJson(), this.apiOptions()).pipe(map(resp => RetailPaymentsEnabledResponse.fromProto(resp)));\n }\n configureRetailProvider(r) {\n const request = r.toApiJson ? r : new ConfigureRetailPaymentProviderRequest(r);\n return this.http.post(this._host + \"/billing.v1.PaymentService/ConfigureRetailProvider\", request.toApiJson(), this.apiOptions()).pipe(map(resp => ConfigureRetailPaymentProviderResponse.fromProto(resp)));\n }\n updateRetailProvider(r) {\n const request = r.toApiJson ? r : new UpdateRetailPaymentProviderRequest(r);\n return this.http.post(this._host + \"/billing.v1.PaymentService/UpdateRetailProvider\", request.toApiJson(), {\n ...this.apiOptions(),\n observe: 'response'\n });\n }\n getRetailProvider(r) {\n const request = r.toApiJson ? r : new GetRetailPaymentProviderRequest(r);\n return this.http.post(this._host + \"/billing.v1.PaymentService/GetRetailProvider\", request.toApiJson(), this.apiOptions()).pipe(map(resp => GetRetailPaymentProviderResponse.fromProto(resp)));\n }\n submitEvidence(r) {\n const request = r.toApiJson ? r : new SubmitEvidenceRequest(r);\n return this.http.post(this._host + \"/billing.v1.PaymentService/SubmitEvidence\", request.toApiJson(), {\n ...this.apiOptions(),\n observe: 'response'\n });\n }\n getWholesaleProviderPublicKey(r) {\n const request = r.toApiJson ? r : new GetWholesaleProviderPublicKeyRequest(r);\n return this.http.post(this._host + \"/billing.v1.PaymentService/GetWholesaleProviderPublicKey\", request.toApiJson(), this.apiOptions()).pipe(map(resp => GetWholesaleProviderPublicKeyResponse.fromProto(resp)));\n }\n refundRetail(r) {\n const request = r.toApiJson ? r : new RefundRetailPaymentRequest(r);\n return this.http.post(this._host + \"/billing.v1.PaymentService/RefundRetail\", request.toApiJson(), this.apiOptions()).pipe(map(resp => RefundRetailPaymentResponse.fromProto(resp)));\n }\n static {\n this.ɵfac = function PaymentApiService_Factory(t) {\n return new (t || PaymentApiService)(i0.ɵɵinject(i1.HttpClient), i0.ɵɵinject(HostService));\n };\n }\n static {\n this.ɵprov = /* @__PURE__ */i0.ɵɵdefineInjectable({\n token: PaymentApiService,\n factory: PaymentApiService.ɵfac,\n providedIn: 'root'\n });\n }\n }\n return PaymentApiService;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n\n// *********************************\n// Code generated by sdkgen\n// DO NOT EDIT!.\n//\n// API Service.\n// *********************************\nlet PricingApiService = /*#__PURE__*/(() => {\n class PricingApiService {\n constructor(http, hostService) {\n this.http = http;\n this.hostService = hostService;\n this._host = this.hostService.hostWithScheme;\n }\n apiOptions() {\n return {\n headers: new HttpHeaders({\n 'Content-Type': 'application/json'\n }),\n withCredentials: true\n };\n }\n getMultiRetail(r) {\n const request = r.toApiJson ? r : new GetMultiRetailPricingRequest(r);\n return this.http.post(this._host + \"/billing.v1.PricingService/GetMultiRetail\", request.toApiJson(), this.apiOptions()).pipe(map(resp => GetMultiRetailPricingResponse.fromProto(resp)));\n }\n upsertRetail(r) {\n const request = r.toApiJson ? r : new UpsertRetailPricingRequest(r);\n return this.http.post(this._host + \"/billing.v1.PricingService/UpsertRetail\", request.toApiJson(), {\n ...this.apiOptions(),\n observe: 'response'\n });\n }\n deleteRetail(r) {\n const request = r.toApiJson ? r : new DeleteRetailPricingRequest(r);\n return this.http.post(this._host + \"/billing.v1.PricingService/DeleteRetail\", request.toApiJson(), {\n ...this.apiOptions(),\n observe: 'response'\n });\n }\n getMultiBundleRetail(r) {\n const request = r.toApiJson ? r : new GetMultiBundleRetailPricingRequest(r);\n return this.http.post(this._host + \"/billing.v1.PricingService/GetMultiBundleRetail\", request.toApiJson(), this.apiOptions()).pipe(map(resp => GetMultiBundleRetailPricingResponse.fromProto(resp)));\n }\n getWholesaleComparison(r) {\n const request = r.toApiJson ? r : new GetWholesaleComparisonRequest(r);\n return this.http.post(this._host + \"/billing.v1.PricingService/GetWholesaleComparison\", request.toApiJson(), this.apiOptions()).pipe(map(resp => GetWholesaleComparisonResponse.fromProto(resp)));\n }\n setWholesaleProductStrategy(r) {\n const request = r.toApiJson ? r : new SetWholesaleProductStrategyRequest(r);\n return this.http.post(this._host + \"/billing.v1.PricingService/SetWholesaleProductStrategy\", request.toApiJson(), {\n ...this.apiOptions(),\n observe: 'response'\n });\n }\n setWholesaleProductVolumeCommitment(r) {\n const request = r.toApiJson ? r : new SetWholesaleProductVolumeCommitmentRequest(r);\n return this.http.post(this._host + \"/billing.v1.PricingService/SetWholesaleProductVolumeCommitment\", request.toApiJson(), {\n ...this.apiOptions(),\n observe: 'response'\n });\n }\n getPurchaseCost(r) {\n const request = r.toApiJson ? r : new GetPurchaseCostRequest(r);\n return this.http.post(this._host + \"/billing.v1.PricingService/GetPurchaseCost\", request.toApiJson(), this.apiOptions()).pipe(map(resp => GetPurchaseCostResponse.fromProto(resp)));\n }\n getMultiWholesaleCost(r) {\n const request = r.toApiJson ? r : new GetMultiWholesaleCostRequest(r);\n return this.http.post(this._host + \"/billing.v1.PricingService/GetMultiWholesaleCost\", request.toApiJson(), this.apiOptions()).pipe(map(resp => GetMultiWholesaleCostResponse.fromProto(resp)));\n }\n upsertWholesale(r) {\n const request = r.toApiJson ? r : new UpsertWholesalePricingRequest(r);\n return this.http.post(this._host + \"/billing.v1.PricingService/UpsertWholesale\", request.toApiJson(), {\n ...this.apiOptions(),\n observe: 'response'\n });\n }\n static {\n this.ɵfac = function PricingApiService_Factory(t) {\n return new (t || PricingApiService)(i0.ɵɵinject(i1.HttpClient), i0.ɵɵinject(HostService));\n };\n }\n static {\n this.ɵprov = /* @__PURE__ */i0.ɵɵdefineInjectable({\n token: PricingApiService,\n factory: PricingApiService.ɵfac,\n providedIn: 'root'\n });\n }\n }\n return PricingApiService;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n\n// *********************************\n// Code generated by sdkgen\n// DO NOT EDIT!.\n//\n// API Service.\n// *********************************\nlet ProductApiService = /*#__PURE__*/(() => {\n class ProductApiService {\n constructor(http, hostService) {\n this.http = http;\n this.hostService = hostService;\n this._host = this.hostService.hostWithScheme;\n }\n apiOptions() {\n return {\n headers: new HttpHeaders({\n 'Content-Type': 'application/json'\n }),\n withCredentials: true\n };\n }\n create(r) {\n const request = r.toApiJson ? r : new CreateProductRequest(r);\n return this.http.post(this._host + \"/billing.v1.ProductService/Create\", request.toApiJson(), {\n ...this.apiOptions(),\n observe: 'response'\n });\n }\n update(r) {\n const request = r.toApiJson ? r : new UpdateProductRequest(r);\n return this.http.post(this._host + \"/billing.v1.ProductService/Update\", request.toApiJson(), {\n ...this.apiOptions(),\n observe: 'response'\n });\n }\n delete(r) {\n const request = r.toApiJson ? r : new DeleteProductRequest(r);\n return this.http.post(this._host + \"/billing.v1.ProductService/Delete\", request.toApiJson(), {\n ...this.apiOptions(),\n observe: 'response'\n });\n }\n static {\n this.ɵfac = function ProductApiService_Factory(t) {\n return new (t || ProductApiService)(i0.ɵɵinject(i1.HttpClient), i0.ɵɵinject(HostService));\n };\n }\n static {\n this.ɵprov = /* @__PURE__ */i0.ɵɵdefineInjectable({\n token: ProductApiService,\n factory: ProductApiService.ɵfac,\n providedIn: 'root'\n });\n }\n }\n return ProductApiService;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n\n// *********************************\n// Code generated by sdkgen\n// DO NOT EDIT!.\n//\n// API Service.\n// *********************************\nlet ProductSummaryApiService = /*#__PURE__*/(() => {\n class ProductSummaryApiService {\n constructor(http, hostService) {\n this.http = http;\n this.hostService = hostService;\n this._host = this.hostService.hostWithScheme;\n }\n apiOptions() {\n return {\n headers: new HttpHeaders({\n 'Content-Type': 'application/json'\n }),\n withCredentials: true\n };\n }\n listSubscriptionRetentionByGroup(r) {\n const request = r.toApiJson ? r : new ListSubscriptionRetentionRequest(r);\n return this.http.post(this._host + \"/billing.v1.ProductSummaryService/ListSubscriptionRetentionByGroup\", request.toApiJson(), this.apiOptions()).pipe(map(resp => ListSubscriptionRetentionByGroupResponse.fromProto(resp)));\n }\n listSubscriptionRetentionBySku(r) {\n const request = r.toApiJson ? r : new ListSubscriptionRetentionRequest(r);\n return this.http.post(this._host + \"/billing.v1.ProductSummaryService/ListSubscriptionRetentionBySKU\", request.toApiJson(), this.apiOptions()).pipe(map(resp => ListSubscriptionRetentionBySKUResponse.fromProto(resp)));\n }\n static {\n this.ɵfac = function ProductSummaryApiService_Factory(t) {\n return new (t || ProductSummaryApiService)(i0.ɵɵinject(i1.HttpClient), i0.ɵɵinject(HostService));\n };\n }\n static {\n this.ɵprov = /* @__PURE__ */i0.ɵɵdefineInjectable({\n token: ProductSummaryApiService,\n factory: ProductSummaryApiService.ɵfac,\n providedIn: 'root'\n });\n }\n }\n return ProductSummaryApiService;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n\n// *********************************\n// Code generated by sdkgen\n// DO NOT EDIT!.\n//\n// API Service.\n// *********************************\nlet PurchaseApiService = /*#__PURE__*/(() => {\n class PurchaseApiService {\n constructor(http, hostService) {\n this.http = http;\n this.hostService = hostService;\n this._host = this.hostService.hostWithScheme;\n }\n apiOptions() {\n return {\n headers: new HttpHeaders({\n 'Content-Type': 'application/json'\n }),\n withCredentials: true\n };\n }\n list(r) {\n const request = r.toApiJson ? r : new ListPurchaseRequest(r);\n return this.http.post(this._host + \"/billing.v1.PurchaseService/List\", request.toApiJson(), this.apiOptions()).pipe(map(resp => ListPurchaseResponse.fromProto(resp)));\n }\n getMultiCustomerSummaries(r) {\n const request = r.toApiJson ? r : new GetMultiCustomerSummariesRequest(r);\n return this.http.post(this._host + \"/billing.v1.PurchaseService/GetMultiCustomerSummaries\", request.toApiJson(), this.apiOptions()).pipe(map(resp => GetMultiCustomerSummariesResponse.fromProto(resp)));\n }\n listPurchaseItems(r) {\n const request = r.toApiJson ? r : new ListPurchaseItemsRequest(r);\n return this.http.post(this._host + \"/billing.v1.PurchaseService/ListPurchaseItems\", request.toApiJson(), this.apiOptions()).pipe(map(resp => ListPurchaseItemsResponse.fromProto(resp)));\n }\n retry(r) {\n const request = r.toApiJson ? r : new RetryPurchaseRequest(r);\n return this.http.post(this._host + \"/billing.v1.PurchaseService/Retry\", request.toApiJson(), {\n ...this.apiOptions(),\n observe: 'response'\n });\n }\n void(r) {\n const request = r.toApiJson ? r : new VoidPurchaseRequest(r);\n return this.http.post(this._host + \"/billing.v1.PurchaseService/Void\", request.toApiJson(), {\n ...this.apiOptions(),\n observe: 'response'\n });\n }\n pauseDunning(r) {\n const request = r.toApiJson ? r : new PauseDunningRequest(r);\n return this.http.post(this._host + \"/billing.v1.PurchaseService/PauseDunning\", request.toApiJson(), {\n ...this.apiOptions(),\n observe: 'response'\n });\n }\n resumeDunning(r) {\n const request = r.toApiJson ? r : new ResumeDunningRequest(r);\n return this.http.post(this._host + \"/billing.v1.PurchaseService/ResumeDunning\", request.toApiJson(), {\n ...this.apiOptions(),\n observe: 'response'\n });\n }\n stopDunning(r) {\n const request = r.toApiJson ? r : new StopDunningRequest(r);\n return this.http.post(this._host + \"/billing.v1.PurchaseService/StopDunning\", request.toApiJson(), {\n ...this.apiOptions(),\n observe: 'response'\n });\n }\n static {\n this.ɵfac = function PurchaseApiService_Factory(t) {\n return new (t || PurchaseApiService)(i0.ɵɵinject(i1.HttpClient), i0.ɵɵinject(HostService));\n };\n }\n static {\n this.ɵprov = /* @__PURE__ */i0.ɵɵdefineInjectable({\n token: PurchaseApiService,\n factory: PurchaseApiService.ɵfac,\n providedIn: 'root'\n });\n }\n }\n return PurchaseApiService;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n\n// *********************************\n// Code generated by sdkgen\n// DO NOT EDIT!.\n//\n// API Service.\n// *********************************\nlet RecurringInvoiceApiService = /*#__PURE__*/(() => {\n class RecurringInvoiceApiService {\n constructor(http, hostService) {\n this.http = http;\n this.hostService = hostService;\n this._host = this.hostService.hostWithScheme;\n }\n apiOptions() {\n return {\n headers: new HttpHeaders({\n 'Content-Type': 'application/json'\n }),\n withCredentials: true\n };\n }\n createRecurringInvoice(r) {\n const request = r.toApiJson ? r : new RecurringInvoice(r);\n return this.http.post(this._host + \"/billing.v1.RecurringInvoiceService/CreateRecurringInvoice\", request.toApiJson(), this.apiOptions()).pipe(map(resp => RecurringInvoice.fromProto(resp)));\n }\n updateRecurringInvoice(r) {\n const request = r.toApiJson ? r : new UpdateRecurringInvoiceRequest(r);\n return this.http.post(this._host + \"/billing.v1.RecurringInvoiceService/UpdateRecurringInvoice\", request.toApiJson(), this.apiOptions()).pipe(map(resp => RecurringInvoice.fromProto(resp)));\n }\n getRecurringInvoice(r) {\n const request = r.toApiJson ? r : new GetRecurringInvoiceRequest(r);\n return this.http.post(this._host + \"/billing.v1.RecurringInvoiceService/GetRecurringInvoice\", request.toApiJson(), this.apiOptions()).pipe(map(resp => RecurringInvoice.fromProto(resp)));\n }\n listRecurringInvoices(r) {\n const request = r.toApiJson ? r : new ListRecurringInvoicesRequest(r);\n return this.http.post(this._host + \"/billing.v1.RecurringInvoiceService/ListRecurringInvoices\", request.toApiJson(), this.apiOptions()).pipe(map(resp => ListRecurringInvoicesResponse.fromProto(resp)));\n }\n deleteRecurringInvoice(r) {\n const request = r.toApiJson ? r : new DeleteRecurringInvoiceRequest(r);\n return this.http.post(this._host + \"/billing.v1.RecurringInvoiceService/DeleteRecurringInvoice\", request.toApiJson(), {\n ...this.apiOptions(),\n observe: 'response'\n });\n }\n static {\n this.ɵfac = function RecurringInvoiceApiService_Factory(t) {\n return new (t || RecurringInvoiceApiService)(i0.ɵɵinject(i1.HttpClient), i0.ɵɵinject(HostService));\n };\n }\n static {\n this.ɵprov = /* @__PURE__ */i0.ɵɵdefineInjectable({\n token: RecurringInvoiceApiService,\n factory: RecurringInvoiceApiService.ɵfac,\n providedIn: 'root'\n });\n }\n }\n return RecurringInvoiceApiService;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n\n// *********************************\n// Code generated by sdkgen\n// DO NOT EDIT!.\n//\n// API Service.\n// *********************************\nlet RefundApiService = /*#__PURE__*/(() => {\n class RefundApiService {\n constructor(http, hostService) {\n this.http = http;\n this.hostService = hostService;\n this._host = this.hostService.hostWithScheme;\n }\n apiOptions() {\n return {\n headers: new HttpHeaders({\n 'Content-Type': 'application/json'\n }),\n withCredentials: true\n };\n }\n create(r) {\n const request = r.toApiJson ? r : new CreateRefundRequest(r);\n return this.http.post(this._host + \"/billing.v1.RefundService/Create\", request.toApiJson(), {\n ...this.apiOptions(),\n observe: 'response'\n });\n }\n list(r) {\n const request = r.toApiJson ? r : new ListRefundsRequest(r);\n return this.http.post(this._host + \"/billing.v1.RefundService/List\", request.toApiJson(), this.apiOptions()).pipe(map(resp => ListRefundsResponse.fromProto(resp)));\n }\n static {\n this.ɵfac = function RefundApiService_Factory(t) {\n return new (t || RefundApiService)(i0.ɵɵinject(i1.HttpClient), i0.ɵɵinject(HostService));\n };\n }\n static {\n this.ɵprov = /* @__PURE__ */i0.ɵɵdefineInjectable({\n token: RefundApiService,\n factory: RefundApiService.ɵfac,\n providedIn: 'root'\n });\n }\n }\n return RefundApiService;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n\n// *********************************\n// Code generated by sdkgen\n// DO NOT EDIT!.\n//\n// API Service.\n// *********************************\nlet RetailCustomerConfigurationApiService = /*#__PURE__*/(() => {\n class RetailCustomerConfigurationApiService {\n constructor(http, hostService) {\n this.http = http;\n this.hostService = hostService;\n this._host = this.hostService.hostWithScheme;\n }\n apiOptions() {\n return {\n headers: new HttpHeaders({\n 'Content-Type': 'application/json'\n }),\n withCredentials: true\n };\n }\n get(r) {\n const request = r.toApiJson ? r : new GetRetailCustomerConfigurationRequest(r);\n return this.http.post(this._host + \"/billing.v1.RetailCustomerConfigurationService/Get\", request.toApiJson(), this.apiOptions()).pipe(map(resp => GetRetailCustomerConfigurationResponse.fromProto(resp)));\n }\n upsert(r) {\n const request = r.toApiJson ? r : new UpsertRetailCustomerConfigurationRequest(r);\n return this.http.post(this._host + \"/billing.v1.RetailCustomerConfigurationService/Upsert\", request.toApiJson(), {\n ...this.apiOptions(),\n observe: 'response'\n });\n }\n static {\n this.ɵfac = function RetailCustomerConfigurationApiService_Factory(t) {\n return new (t || RetailCustomerConfigurationApiService)(i0.ɵɵinject(i1.HttpClient), i0.ɵɵinject(HostService));\n };\n }\n static {\n this.ɵprov = /* @__PURE__ */i0.ɵɵdefineInjectable({\n token: RetailCustomerConfigurationApiService,\n factory: RetailCustomerConfigurationApiService.ɵfac,\n providedIn: 'root'\n });\n }\n }\n return RetailCustomerConfigurationApiService;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n\n// *********************************\n// Code generated by sdkgen\n// DO NOT EDIT!.\n//\n// API Service.\n// *********************************\nlet SalesCreditNoteApiService = /*#__PURE__*/(() => {\n class SalesCreditNoteApiService {\n constructor(http, hostService) {\n this.http = http;\n this.hostService = hostService;\n this._host = this.hostService.hostWithScheme;\n }\n apiOptions() {\n return {\n headers: new HttpHeaders({\n 'Content-Type': 'application/json'\n }),\n withCredentials: true\n };\n }\n create(r) {\n const request = r.toApiJson ? r : new CreateSalesCreditNoteRequest(r);\n return this.http.post(this._host + \"/billing.v1.SalesCreditNoteService/Create\", request.toApiJson(), {\n ...this.apiOptions(),\n observe: 'response'\n });\n }\n list(r) {\n const request = r.toApiJson ? r : new ListSalesCreditNoteRequest(r);\n return this.http.post(this._host + \"/billing.v1.SalesCreditNoteService/List\", request.toApiJson(), this.apiOptions()).pipe(map(resp => ListSalesCreditNoteResponse.fromProto(resp)));\n }\n static {\n this.ɵfac = function SalesCreditNoteApiService_Factory(t) {\n return new (t || SalesCreditNoteApiService)(i0.ɵɵinject(i1.HttpClient), i0.ɵɵinject(HostService));\n };\n }\n static {\n this.ɵprov = /* @__PURE__ */i0.ɵɵdefineInjectable({\n token: SalesCreditNoteApiService,\n factory: SalesCreditNoteApiService.ɵfac,\n providedIn: 'root'\n });\n }\n }\n return SalesCreditNoteApiService;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n\n// *********************************\n// Code generated by sdkgen\n// DO NOT EDIT!.\n//\n// API Service.\n// *********************************\nlet SalesInvoiceApiService = /*#__PURE__*/(() => {\n class SalesInvoiceApiService {\n constructor(http, hostService) {\n this.http = http;\n this.hostService = hostService;\n this._host = this.hostService.hostWithScheme;\n }\n apiOptions() {\n return {\n headers: new HttpHeaders({\n 'Content-Type': 'application/json'\n }),\n withCredentials: true\n };\n }\n list(r) {\n const request = r.toApiJson ? r : new ListSalesInvoiceRequest(r);\n return this.http.post(this._host + \"/billing.v1.SalesInvoiceService/List\", request.toApiJson(), this.apiOptions()).pipe(map(resp => ListSalesInvoiceResponse.fromProto(resp)));\n }\n post(r) {\n const request = r.toApiJson ? r : new PostSalesInvoiceRequest(r);\n return this.http.post(this._host + \"/billing.v1.SalesInvoiceService/Post\", request.toApiJson(), {\n ...this.apiOptions(),\n observe: 'response'\n });\n }\n get(r) {\n const request = r.toApiJson ? r : new GetSalesInvoiceRequest(r);\n return this.http.post(this._host + \"/billing.v1.SalesInvoiceService/Get\", request.toApiJson(), this.apiOptions()).pipe(map(resp => GetSalesInvoiceResponse.fromProto(resp)));\n }\n static {\n this.ɵfac = function SalesInvoiceApiService_Factory(t) {\n return new (t || SalesInvoiceApiService)(i0.ɵɵinject(i1.HttpClient), i0.ɵɵinject(HostService));\n };\n }\n static {\n this.ɵprov = /* @__PURE__ */i0.ɵɵdefineInjectable({\n token: SalesInvoiceApiService,\n factory: SalesInvoiceApiService.ɵfac,\n providedIn: 'root'\n });\n }\n }\n return SalesInvoiceApiService;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n\n// *********************************\n// Code generated by sdkgen\n// DO NOT EDIT!.\n//\n// API Service.\n// *********************************\nlet SubscriptionRelationshipApiService = /*#__PURE__*/(() => {\n class SubscriptionRelationshipApiService {\n constructor(http, hostService) {\n this.http = http;\n this.hostService = hostService;\n this._host = this.hostService.hostWithScheme;\n }\n apiOptions() {\n return {\n headers: new HttpHeaders({\n 'Content-Type': 'application/json'\n }),\n withCredentials: true\n };\n }\n replace(r) {\n const request = r.toApiJson ? r : new ReplaceSubscriptionRelationshipsRequest(r);\n return this.http.post(this._host + \"/billing.v1.SubscriptionRelationshipService/Replace\", request.toApiJson(), this.apiOptions()).pipe(map(resp => ReplaceSubscriptionRelationshipsResponse.fromProto(resp)));\n }\n list(r) {\n const request = r.toApiJson ? r : new ListSubscriptionRelationshipsRequest(r);\n return this.http.post(this._host + \"/billing.v1.SubscriptionRelationshipService/List\", request.toApiJson(), this.apiOptions()).pipe(map(resp => ListSubscriptionRelationshipsResponse.fromProto(resp)));\n }\n getMulti(r) {\n const request = r.toApiJson ? r : new GetMultiSubscriptionRelationshipsRequest(r);\n return this.http.post(this._host + \"/billing.v1.SubscriptionRelationshipService/GetMulti\", request.toApiJson(), this.apiOptions()).pipe(map(resp => GetMultiSubscriptionRelationshipsResponse.fromProto(resp)));\n }\n static {\n this.ɵfac = function SubscriptionRelationshipApiService_Factory(t) {\n return new (t || SubscriptionRelationshipApiService)(i0.ɵɵinject(i1.HttpClient), i0.ɵɵinject(HostService));\n };\n }\n static {\n this.ɵprov = /* @__PURE__ */i0.ɵɵdefineInjectable({\n token: SubscriptionRelationshipApiService,\n factory: SubscriptionRelationshipApiService.ɵfac,\n providedIn: 'root'\n });\n }\n }\n return SubscriptionRelationshipApiService;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n\n// *********************************\n// Code generated by sdkgen\n// DO NOT EDIT!.\n//\n// API Service.\n// *********************************\nlet TaxApiService = /*#__PURE__*/(() => {\n class TaxApiService {\n constructor(http, hostService) {\n this.http = http;\n this.hostService = hostService;\n this._host = this.hostService.hostWithScheme;\n }\n apiOptions() {\n return {\n headers: new HttpHeaders({\n 'Content-Type': 'application/json'\n }),\n withCredentials: true\n };\n }\n calculate(r) {\n const request = r.toApiJson ? r : new CalculateTaxRequest(r);\n return this.http.post(this._host + \"/billing.v1.TaxService/Calculate\", request.toApiJson(), this.apiOptions()).pipe(map(resp => CalculateTaxResponse.fromProto(resp)));\n }\n calculateLineItems(r) {\n const request = r.toApiJson ? r : new CalculateLineItemTaxesRequest(r);\n return this.http.post(this._host + \"/billing.v1.TaxService/CalculateLineItems\", request.toApiJson(), this.apiOptions()).pipe(map(resp => CalculateLineItemTaxesResponse.fromProto(resp)));\n }\n create(r) {\n const request = r.toApiJson ? r : new CreateTaxRequest(r);\n return this.http.post(this._host + \"/billing.v1.TaxService/Create\", request.toApiJson(), {\n ...this.apiOptions(),\n observe: 'response'\n });\n }\n getMulti(r) {\n const request = r.toApiJson ? r : new GetMultiTaxRequest(r);\n return this.http.post(this._host + \"/billing.v1.TaxService/GetMulti\", request.toApiJson(), this.apiOptions()).pipe(map(resp => GetMultiTaxResponse.fromProto(resp)));\n }\n update(r) {\n const request = r.toApiJson ? r : new UpdateTaxRequest(r);\n return this.http.post(this._host + \"/billing.v1.TaxService/Update\", request.toApiJson(), {\n ...this.apiOptions(),\n observe: 'response'\n });\n }\n list(r) {\n const request = r.toApiJson ? r : new ListTaxRequest(r);\n return this.http.post(this._host + \"/billing.v1.TaxService/List\", request.toApiJson(), this.apiOptions()).pipe(map(resp => ListTaxResponse.fromProto(resp)));\n }\n archive(r) {\n const request = r.toApiJson ? r : new ArchiveTaxRequest(r);\n return this.http.post(this._host + \"/billing.v1.TaxService/Archive\", request.toApiJson(), {\n ...this.apiOptions(),\n observe: 'response'\n });\n }\n static {\n this.ɵfac = function TaxApiService_Factory(t) {\n return new (t || TaxApiService)(i0.ɵɵinject(i1.HttpClient), i0.ɵɵinject(HostService));\n };\n }\n static {\n this.ɵprov = /* @__PURE__ */i0.ɵɵdefineInjectable({\n token: TaxApiService,\n factory: TaxApiService.ɵfac,\n providedIn: 'root'\n });\n }\n }\n return TaxApiService;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n\n// *********************************\n// Code generated by sdkgen\n// DO NOT EDIT!.\n//\n// API Service.\n// *********************************\nlet VendorApiService = /*#__PURE__*/(() => {\n class VendorApiService {\n constructor(http, hostService) {\n this.http = http;\n this.hostService = hostService;\n this._host = this.hostService.hostWithScheme;\n }\n apiOptions() {\n return {\n headers: new HttpHeaders({\n 'Content-Type': 'application/json'\n }),\n withCredentials: true\n };\n }\n generateReport(r) {\n const request = r.toApiJson ? r : new GenerateVendorReportRequest(r);\n return this.http.post(this._host + \"/billing.v1.VendorService/GenerateReport\", request.toApiJson(), this.apiOptions()).pipe(map(resp => GenerateVendorReportResponse.fromProto(resp)));\n }\n getRevenueStats(r) {\n const request = r.toApiJson ? r : new GetRevenueStatsRequest(r);\n return this.http.post(this._host + \"/billing.v1.VendorService/GetRevenueStats\", request.toApiJson(), this.apiOptions()).pipe(map(resp => GetRevenueStatsResponse.fromProto(resp)));\n }\n static {\n this.ɵfac = function VendorApiService_Factory(t) {\n return new (t || VendorApiService)(i0.ɵɵinject(i1.HttpClient), i0.ɵɵinject(HostService));\n };\n }\n static {\n this.ɵprov = /* @__PURE__ */i0.ɵɵdefineInjectable({\n token: VendorApiService,\n factory: VendorApiService.ɵfac,\n providedIn: 'root'\n });\n }\n }\n return VendorApiService;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n\n// *********************************\n// Code generated by sdkgen\n// DO NOT EDIT!.\n//\n// Index.\n// *********************************\n\n// Hardcoded conversion rate of 1.4 for our currently supported currencies (CAD and AUD)\nconst usdConversionRate = 1.4;\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { Access, AccountBalance, AddBundleRequest, AddBundleResponse, AddCreditRequest, AddLineItemRequest, AddLineItemResponse, Adjustment, AlignmentSubscription, AppliedBundle, AppliedBundleItem, AppliedCredit, AppliedDiscount, AppliedFee, AppliedTaxRate, ArchiveTaxRequest, Balance, BalanceAmount, BankAccount, BankReconciliationApiService, BillItemRequest, BillMultipleItemsRequest, BillMultipleItemsResponse, BillableItem, BillableItemCustomerAddress, BillingApiService, BillingStrategy, Bundle, BundleApiService, BundleItem, BundleItemPrice, BundlePricing, BundlePricingPriceAndFrequency, CalculateLineItemTaxesRequest, CalculateLineItemTaxesRequestLineItem, CalculateLineItemTaxesResponse, CalculateLineItemTaxesResponseLineItemTaxes, CalculateTaxRequest, CalculateTaxResponse, CanBillItemRequest, CanCreateSubscriptionsRequest, CanCreateSubscriptionsRequestSkusEntry, CanCreateSubscriptionsRequestSubscriptionItem, CanCreateSubscriptionsResponse, CancelRetailBillingRequest, CardType, ChangeCustomUnitPriceRequest, ChangeFrequencyRequest, ChangeRenewalDateRequest, ChargeInvoiceRequest, ChargeSalesInvoiceRequest, CloseRetailDisputeRequest, CollectionMethod, Commitment, ComponentPricing, ConfigureRetailPaymentProviderRequest, ConfigureRetailPaymentProviderResponse, ConfirmRetailPaymentRequest, ConnectStripeAccountRequest, ConnectStripeAccountResponse, Consumer, Contract, ContractApiService, ContractDocument, ContractDocumentApiService, ContractSubscriptionStatus, CreateContractRequest, CreateContractResponse, CreateDiscountRequest, CreateDiscountResponse, CreateInvoiceRequest, CreateInvoiceResponse, CreateMerchantRequest, CreateMerchantRequestIncludeInFinancialRecords, CreateMerchantServicesReportRun, CreateMeteredComponentRequest, CreatePaymentCardRequest, CreatePaymentLinkRequest, CreatePaymentLinkResponse, CreatePricingPlanProductRequest, CreatePricingPlanProductRequestPricingEntry, CreatePricingPlanProductResponse, CreatePricingPlanRequest, CreatePricingPlanResponse, CreateProductRequest, CreateRefundRequest, CreateSalesCreditNoteRequest, CreateStripeExternalAccountRequest, CreateSubscriptionRequest, CreateSubscriptionResponse, CreateSubscriptionsRequest, CreateSubscriptionsResponse, CreateTaxRequest, CreateUsageRequest, CreditApiService, CreditBalance, CreditType, Currency, CustomerSummary, DateRange, DefaultCustomerConfiguration, DeleteBankAccountRequest, DeleteBillableItemRequest, DeleteContractDocumentRequest, DeleteInvoiceRequest, DeleteLineItemRequest, DeleteLineItemResponse, DeletePaymentCardRequest, DeletePricingPlanProductRequest, DeleteProductRequest, DeleteRecurringInvoiceRequest, DeleteRetailPricingRequest, Discount, DiscountApiService, DiscountType, Dispute, DisputeEvidence, DisputeEvidenceDetails, DisputeStatus, DuplicateInvoiceRequest, DuplicateInvoiceResponse, EntityType, ExpireBillableItemRequest, ExpireDiscountRequest, ExportResponse, ExportSubscriptionsRequest, Fee, FeeAmountType, FeeType, FieldMask, File, Frequency, GenerateBillableItemsCSVRequest, GenerateBillableItemsCSVResponse, GenerateVendorReportRequest, GenerateVendorReportResponse, GetBalanceRequest, GetBalanceResponse, GetBillableItemRequest, GetBillableItemResponse, GetContractRequest, GetContractResponse, GetInvoiceRequest, GetInvoiceResponse, GetMerchantRequest, GetMerchantResponse, GetMerchantServicesReportRun, GetMerchantWholesaleCurrencyRequest, GetMerchantWholesaleCurrencyResponse, GetMultiBundleRequest, GetMultiBundleResponse, GetMultiBundleResponseBundlesEntry, GetMultiBundleRetailPricingRequest, GetMultiBundleRetailPricingResponse, GetMultiBundleRetailPricingResponsePricesEntry, GetMultiContractsRequest, GetMultiContractsResponse, GetMultiContractsResponseContractsEntry, GetMultiCustomerSummariesRequest, GetMultiCustomerSummariesResponse, GetMultiPricingPlanProductRequest, GetMultiPricingPlanProductResponse, GetMultiPricingPlanRequest, GetMultiPricingPlanResponse, GetMultiProductPricingRequest, GetMultiProductPricingResponse, GetMultiProductPricingResponseProductPricesEntry, GetMultiProductRequest, GetMultiProductResponse, GetMultiProductResponseProductsEntry, GetMultiRetailConfigurationsRequest, GetMultiRetailConfigurationsResponse, GetMultiRetailConfigurationsResponseRetailConfigurationsEntry, GetMultiRetailPricingRequest, GetMultiRetailPricingResponse, GetMultiRetailPricingResponseProductPricesEntry, GetMultiSubscriptionRelationshipsRequest, GetMultiSubscriptionRelationshipsResponse, GetMultiSubscriptionsRequest, GetMultiSubscriptionsRequestKey, GetMultiSubscriptionsResponse, GetMultiTaxRequest, GetMultiTaxResponse, GetMultiWholesaleCostRequest, GetMultiWholesaleCostResponse, GetOutstandingBalanceRequest, GetOutstandingBalanceResponse, GetPayoutSummaryRequest, GetPayoutSummaryResponse, GetPricingPlanProductRequest, GetPricingPlanProductResponse, GetProductSummariesTotalRequest, GetProductSummariesTotalResponse, GetPurchaseCostRequest, GetPurchaseCostResponse, GetRecurringInvoiceRequest, GetRetailAccountBalanceRequest, GetRetailAccountBalanceResponse, GetRetailBalanceRequest, GetRetailBalanceResponse, GetRetailCustomerConfigurationRequest, GetRetailCustomerConfigurationResponse, GetRetailDisputeRequest, GetRetailDisputeResponse, GetRetailPaymentProviderRequest, GetRetailPaymentProviderResponse, GetRetailPaymentRequest, GetRetailPaymentResponse, GetRetailPayoutRequest, GetRetailPayoutResponse, GetRevenueStatsRequest, GetRevenueStatsResponse, GetSalesInvoiceRequest, GetSalesInvoiceResponse, GetStatisticsRequest, GetStatisticsResponse, GetUpcomingInvoicePreviewRequest, GetUpcomingInvoicePreviewResponse, GetWholesaleComparisonRequest, GetWholesaleComparisonRequestGetWholesaleComparisonFilters, GetWholesaleComparisonResponse, GetWholesaleComparisonResponseGetWholesaleComparisonResult, GetWholesaleProviderPublicKeyRequest, GetWholesaleProviderPublicKeyResponse, HostService, Interval, Invoice, InvoiceApiService, InvoiceCustomerAddress, InvoiceItem, InvoiceStatus, Item, ListBankAccountsRequest, ListBankAccountsResponse, ListBillableItemsRequest, ListBillableItemsRequestFilters, ListBillableItemsResponse, ListBundlesRequest, ListBundlesRequestFilters, ListBundlesResponse, ListContractDocumentsRequest, ListContractDocumentsRequestFilters, ListContractDocumentsResponse, ListContractsRequest, ListContractsResponse, ListDiscountsRequest, ListDiscountsRequestFilters, ListDiscountsResponse, ListInvoicesRequest, ListInvoicesRequestFilters, ListInvoicesRequestFiltersDateFilter, ListInvoicesRequestFiltersDateFilterDateField, ListInvoicesResponse, ListMerchantBillingReportsRequest, ListMerchantBillingReportsResponse, ListPaymentCardsRequest, ListPaymentCardsResponse, ListPaymentRequest, ListPaymentRequestListPaymentFilters, ListPaymentResponse, ListPayoutsRequest, ListPayoutsRequestFilters, ListPayoutsResponse, ListPricingPlanProductsRequest, ListPricingPlanProductsRequestListPricingPlanProductsFilters, ListPricingPlanProductsResponse, ListProductSummariesRequest, ListProductSummariesResponse, ListProductsRequest, ListProductsRequestListProductsFilters, ListProductsResponse, ListPurchaseItemsRequest, ListPurchaseItemsRequestListPurchaseItemsFilters, ListPurchaseItemsResponse, ListPurchaseRequest, ListPurchaseRequestListPurchaseBillingStrategyFilter, ListPurchaseRequestListPurchaseFilters, ListPurchaseRequestState, ListPurchaseResponse, ListRecurringInvoicesFilters, ListRecurringInvoicesFiltersDateFilter, ListRecurringInvoicesFiltersDetailedInterval, ListRecurringInvoicesRequest, ListRecurringInvoicesResponse, ListRefundsRequest, ListRefundsResponse, ListRetailDisputesRequest, ListRetailDisputesResponse, ListRetailPaymentsRequest, ListRetailPaymentsRequestListRetailPaymentsFilters, ListRetailPaymentsResponse, ListRetailPayoutsRequest, ListRetailPayoutsResponse, ListRetailTransactionsRequest, ListRetailTransactionsRequestListRetailTransactionsFilters, ListRetailTransactionsResponse, ListSalesCreditNoteRequest, ListSalesCreditNoteRequestListSalesCreditNoteFilters, ListSalesCreditNoteResponse, ListSalesInvoiceRequest, ListSalesInvoiceRequestListSalesInvoiceFilters, ListSalesInvoiceResponse, ListSubscriptionRelationshipsRequest, ListSubscriptionRelationshipsRequestFilters, ListSubscriptionRelationshipsResponse, ListSubscriptionRetentionByGroupResponse, ListSubscriptionRetentionByGroupResponseSubscriptionRetentionByGroup, ListSubscriptionRetentionBySKUResponse, ListSubscriptionRetentionRequest, ListSubscriptionRetentionRequestFilters, ListSubscriptionsRequest, ListSubscriptionsRequestFilters, ListSubscriptionsResponse, ListTaxRequest, ListTaxRequestFilters, ListTaxResponse, Merchant, MerchantApiService, MerchantReport, MerchantReportStatus, MerchantServicesReportRun, MerchantServicesReportRunStatus, MerchantServicesReportRunType, MerchantType, MeteredComponent, Month, Note, PagedRequestOptions, PagedResponseMetadata, PauseDunningRequest, PayInvoiceRequest, Payment, PaymentAllocationType, PaymentApiService, PaymentCard, PaymentCardCARD_TYPE, PaymentCardFUNDING_TYPE, PaymentLinkItem, PaymentMethodApiService, PaymentPaymentAllocation, PaymentProcessor, PaymentSource, PaymentStatus, PaymentStatuses, Payout, PayoutStatus, PayoutType, PostSalesInvoiceRequest, PrepareRetailPaymentRequest, PrepareRetailPaymentRequestOrder, PrepareRetailPaymentResponse, Pricing, PricingApiService, PricingPlan, PricingPlanProduct, PricingPlanProductPricing, PricingPlanProductPricingEntry, PricingRule, PricingRuleType, Product, ProductApiService, ProductPrices, ProductPricing, ProductPricingRule, ProductPricingType, ProductSummary, ProductSummaryApiService, ProductSummaryBillingStrategy, ProductSummaryDiscount, ProductSummaryDiscountDiscountType, ProductSummaryProductType, ProductType, Purchase, PurchaseApiService, PurchaseItem, PurchaseStatus, ReconcilePayoutRequest, ReconcilePayoutResponse, RecurringInvoice, RecurringInvoiceApiService, RecurringInvoiceBundle, RecurringInvoiceCustomerAddress, RecurringInvoiceItem, RecurringInvoiceLineItem, RecurringInvoiceStatus, ReferenceType, Refund, RefundApiService, RefundReason, RefundRetailPaymentRequest, RefundRetailPaymentResponse, RefundStatus, RelationshipType, RemoveBundleRequest, RemoveBundleResponse, RenewalState, ReplaceSubscriptionPresetsRequest, ReplaceSubscriptionPresetsResponse, ReplaceSubscriptionRelationshipsRequest, ReplaceSubscriptionRelationshipsResponse, ResetContractPricingRequest, ResumeDunningRequest, RetailConfiguration, RetailCustomerConfiguration, RetailCustomerConfigurationApiService, RetailPayment, RetailPaymentCardDetails, RetailPaymentReferenceType, RetailPaymentsEnabledRequest, RetailPaymentsEnabledResponse, RetailPayout, RetailRefund, RetailRefundFailureReason, RetailRefundReason, RetailRefundStatus, RetailStatusRequest, RetailStatusResponse, RetailStatusResponseVerificationError, RetailStatusResponseVerificationRequirements, RetailTransaction, RetailTransactionType, RetentionMetrics, RetryPurchaseRequest, ReverseSubscriptionRequest, SalesCreditNote, SalesCreditNoteApiService, SalesCreditNoteStatus, SalesInvoice, SalesInvoiceApiService, SalesInvoiceStatus, SalesInvoiceType, SearchMerchantsRequest, SearchMerchantsRequestSortBy, SearchMerchantsResponse, SendInvoiceRequest, SendSalesInvoiceEmailRequest, SendSalesInvoiceReceiptEmailRequest, SetAutoBillableRequest, SetAutoChargeInvoicesRequest, SetAutoPostInvoicesRequest, SetDefaultBankAccountRequest, SetDefaultPaymentCardRequest, SetDefaultPaymentMethodRequest, SetHasAlternativePaymentMethodRequest, SetIncludeInFinancialRecordsRequest, SetRenewalStartRequest, SetWholesaleProductStrategyRequest, SetWholesaleProductVolumeCommitmentRequest, SortDirection, Source, StartRevRecTemplateBackfillRequest, StopDunningRequest, SubmitEvidenceRequest, SubmitEvidenceRequestDisputeEvidence, SubscribeValidation, SubscribeValidationStatus, Subscription, SubscriptionPreset, SubscriptionProjectionFilter, SubscriptionRelationship, SubscriptionRelationshipApiService, SubscriptionStatus, TaxApiService, TaxRate, TickComponentUsageRequest, UnexpireBillableItemRequest, UpdateBundleRequest, UpdateBundleResponse, UpdateContractRequest, UpdateContractRequestMutation, UpdateContractResponse, UpdateContractSubscriptionRequest, UpdateDefaultTaxRatesRequest, UpdateDefaultTaxRatesResponse, UpdateDiscountRequest, UpdateInvoiceRequest, UpdateInvoiceResponse, UpdateLineItemRequest, UpdateLineItemResponse, UpdateMerchantRequest, UpdateMerchantRequestIncludeInFinancialRecords, UpdatePaymentCardRequest, UpdatePricingPlanProductRequest, UpdatePricingPlanProductRequestPricingEntry, UpdatePricingPlanProductResponse, UpdatePricingPlanRequest, UpdatePricingPlanResponse, UpdateProductRequest, UpdateRecurringInvoiceRequest, UpdateRetailPaymentProviderRequest, UpdateSubscriptionRequest, UpdateSubscriptionRequestSubscription, UpdateSubscriptionResponse, UpdateTaxRequest, UpsertBundleRequest, UpsertDefaultRetailCustomerConfigurationRequest, UpsertRetailConfigurationRequest, UpsertRetailCustomerConfigurationRequest, UpsertRetailPricingRequest, UpsertRetailPricingRequestPricingEntry, UpsertWholesalePricingRequest, ValidateResponse, VendorApiService, VoidInvoiceRequest, VoidPurchaseRequest, WholesaleCostItemRequest, usdConversionRate };\n","import {\n Dispute as DisputeApi,\n DisputeEvidence as DisputeEvidenceApi,\n DisputeEvidenceDetails as DisputeEvidenceDetailsApi,\n DisputeStatus as DisputeStatusApi,\n File as FileApi,\n} from '@vendasta/billing';\n\nexport enum DisputeStatus {\n WARNING_NEEDS_RESPONSE = 'Warning Needs Response',\n WARNING_UNDER_REVIEW = 'Warning Under Review',\n WARNING_CLOSED = 'Warning Closed',\n NEEDS_RESPONSE = 'Needs Response',\n UNDER_REVIEW = 'Under Review',\n CHARGE_REFUNDED = 'Charge Refunded',\n LOST = 'Lost',\n WON = 'Won',\n UNKNOWN = 'Unknown',\n}\n\nexport interface Dispute {\n id: string;\n paymentId: string;\n status?: DisputeStatus;\n amount: number;\n created: Date;\n currencyCode: string;\n evidence?: DisputeEvidence;\n evidenceDetails?: DisputeEvidenceDetails;\n isChargeRefundable: boolean;\n reason: string;\n fee: number;\n feeCurrencyCode: string;\n}\n\nexport interface DisputeEvidence {\n customerCommunication?: File;\n customerSignature?: File;\n shippingDocumentation?: File;\n receipt?: File;\n uncategorizedFile?: File;\n billingAddress: string;\n customerEmailAddress: string;\n customerName: string;\n productDescription: string;\n}\n\nexport interface DisputeEvidenceRequest {\n billingAddress?: string;\n customerEmailAddress?: string;\n customerName?: string;\n productDescription?: string;\n customerSignatureFileId?: string;\n customerCommunicationFileId?: string;\n receiptFileId?: string;\n shippingDocumentationFileId?: string;\n uncategorizedFileId?: string;\n}\n\nexport interface File {\n created: Date;\n id: string;\n filename: string;\n url: string;\n}\n\nexport interface DisputeEvidenceDetails {\n dueBy: Date;\n hasEvidence: boolean;\n pastDue: boolean;\n submissionCount: number;\n}\n\nexport function disputeFromApi(dispute: DisputeApi): Dispute | undefined {\n if (!dispute) {\n return undefined;\n }\n return {\n id: dispute.id || '',\n paymentId: dispute.paymentId || '',\n status: disputeStatusFromApi(dispute.status),\n amount: dispute.amount || 0,\n created: dispute.created,\n currencyCode: dispute.currencyCode,\n evidence: disputeEvidenceFromApi(dispute.evidence),\n evidenceDetails: disputeEvidenceDetailsFromApi(dispute.evidenceDetails),\n isChargeRefundable: dispute.isChargeRefundable || false,\n reason: dispute.reason || '',\n fee: dispute.fee,\n feeCurrencyCode: dispute.feeCurrencyCode,\n };\n}\n\nfunction disputeEvidenceFromApi(evidence: DisputeEvidenceApi): DisputeEvidence | undefined {\n if (!evidence) {\n return undefined;\n }\n return {\n customerCommunication: fileFromApi(evidence.customerCommunication),\n customerSignature: fileFromApi(evidence.customerSignature),\n shippingDocumentation: fileFromApi(evidence.shippingDocumentation),\n receipt: fileFromApi(evidence.receipt),\n uncategorizedFile: fileFromApi(evidence.uncategorizedFile),\n billingAddress: evidence.billingAddress || '',\n customerEmailAddress: evidence.customerEmailAddress || '',\n customerName: evidence.customerName || '',\n productDescription: evidence.productDescription || '',\n };\n}\n\nfunction fileFromApi(file: FileApi): File | undefined {\n if (!file) {\n return undefined;\n }\n return {\n id: file.id || '',\n created: file.created,\n filename: file.filename || '',\n url: file.url || '',\n };\n}\n\nfunction disputeEvidenceDetailsFromApi(evidence: DisputeEvidenceDetailsApi): DisputeEvidenceDetails | undefined {\n if (!evidence) {\n return undefined;\n }\n return {\n dueBy: evidence.dueBy,\n hasEvidence: evidence.hasEvidence,\n pastDue: evidence.pastDue,\n submissionCount: evidence.submissionCount,\n };\n}\n\nexport function disputeStatusFromApi(status: DisputeStatusApi): DisputeStatus | undefined {\n switch (status) {\n case DisputeStatusApi.DISPUTE_STATUS_WARNING_NEEDS_RESPONSE:\n return DisputeStatus.WARNING_NEEDS_RESPONSE;\n case DisputeStatusApi.DISPUTE_STATUS_WARNING_UNDER_REVIEW:\n return DisputeStatus.WARNING_UNDER_REVIEW;\n case DisputeStatusApi.DISPUTE_STATUS_WARNING_CLOSED:\n return DisputeStatus.WARNING_CLOSED;\n case DisputeStatusApi.DISPUTE_STATUS_NEEDS_RESPONSE:\n return DisputeStatus.NEEDS_RESPONSE;\n case DisputeStatusApi.DISPUTE_STATUS_UNDER_REVIEW:\n return DisputeStatus.UNDER_REVIEW;\n case DisputeStatusApi.DISPUTE_STATUS_CHARGE_REFUNDED:\n return DisputeStatus.CHARGE_REFUNDED;\n case DisputeStatusApi.DISPUTE_STATUS_LOST:\n return DisputeStatus.LOST;\n case DisputeStatusApi.DISPUTE_STATUS_WON:\n return DisputeStatus.WON;\n default:\n return undefined;\n }\n}\n","import { BillingStrategy as PricingPlanBillingStrategy } from '@vendasta/billing';\n\nexport enum BillingStrategy {\n Invalid = 'INVALID',\n EndOfPeriod = 'END_OF_PERIOD',\n StartOfPeriod = 'START_OF_PERIOD',\n Instantly = 'INSTANTLY',\n EndOfDay = 'END_OF_DAY',\n}\n\nexport function isBillingStrategyInstant(strategy: BillingStrategy): boolean {\n return strategy === BillingStrategy.Instantly || strategy === BillingStrategy.EndOfDay;\n}\n\nexport function billingStrategyFromAPI(bsAPI: PricingPlanBillingStrategy | undefined): BillingStrategy {\n switch (bsAPI) {\n case PricingPlanBillingStrategy.BILLING_STRATEGY_END_OF_PERIOD:\n return BillingStrategy.EndOfPeriod;\n case PricingPlanBillingStrategy.BILLING_STRATEGY_START_OF_PERIOD:\n return BillingStrategy.StartOfPeriod;\n case PricingPlanBillingStrategy.BILLING_STRATEGY_INSTANTLY:\n return BillingStrategy.Instantly;\n case PricingPlanBillingStrategy.BILLING_STRATEGY_END_OF_DAY:\n return BillingStrategy.EndOfDay;\n }\n return BillingStrategy.Invalid;\n}\n\nexport function billingStrategyToAPI(strategy: BillingStrategy | undefined): PricingPlanBillingStrategy {\n switch (strategy) {\n case BillingStrategy.EndOfPeriod:\n return PricingPlanBillingStrategy.BILLING_STRATEGY_END_OF_PERIOD;\n case BillingStrategy.StartOfPeriod:\n return PricingPlanBillingStrategy.BILLING_STRATEGY_START_OF_PERIOD;\n case BillingStrategy.Instantly:\n return PricingPlanBillingStrategy.BILLING_STRATEGY_INSTANTLY;\n case BillingStrategy.EndOfDay:\n return PricingPlanBillingStrategy.BILLING_STRATEGY_END_OF_DAY;\n }\n return PricingPlanBillingStrategy.BILLING_STRATEGY_NONE;\n}\n","import { Currency as CurrencyApi } from '@vendasta/billing';\n\nexport enum Currency {\n USD = 'USD',\n CAD = 'CAD',\n EUR = 'EUR',\n AUD = 'AUD',\n GBP = 'GBP',\n NZD = 'NZD',\n BRL = 'BRL',\n CHF = 'CHF',\n CNY = 'CNY',\n CZK = 'CZK',\n INR = 'INR',\n JPY = 'JPY',\n KHR = 'KHR',\n KRW = 'KRW',\n MXN = 'MXN',\n NOK = 'NOK',\n RUB = 'RUB',\n SEK = 'SEK',\n SGD = 'SGD',\n TRY = 'TRY',\n ZAR = 'ZAR',\n DZD = 'DZD',\n AWG = 'AWG',\n FJD = 'FJD',\n KYD = 'KYD',\n}\n\nexport function currencyFromApi(cApi: CurrencyApi | undefined): Currency {\n switch (cApi) {\n case CurrencyApi.USD:\n return Currency.USD;\n case CurrencyApi.CAD:\n return Currency.CAD;\n case CurrencyApi.EUR:\n return Currency.EUR;\n case CurrencyApi.AUD:\n return Currency.AUD;\n case CurrencyApi.GBP:\n return Currency.GBP;\n case CurrencyApi.NZD:\n return Currency.NZD;\n case CurrencyApi.BRL:\n return Currency.BRL;\n case CurrencyApi.CHF:\n return Currency.CHF;\n case CurrencyApi.CNY:\n return Currency.CNY;\n case CurrencyApi.CZK:\n return Currency.CZK;\n case CurrencyApi.INR:\n return Currency.INR;\n case CurrencyApi.JPY:\n return Currency.JPY;\n case CurrencyApi.KHR:\n return Currency.KHR;\n case CurrencyApi.KRW:\n return Currency.KRW;\n case CurrencyApi.MXN:\n return Currency.MXN;\n case CurrencyApi.NOK:\n return Currency.NOK;\n case CurrencyApi.RUB:\n return Currency.RUB;\n case CurrencyApi.SEK:\n return Currency.SEK;\n case CurrencyApi.SGD:\n return Currency.SGD;\n case CurrencyApi.TRY:\n return Currency.TRY;\n case CurrencyApi.ZAR:\n return Currency.ZAR;\n case CurrencyApi.DZD:\n return Currency.DZD;\n case CurrencyApi.AWG:\n return Currency.AWG;\n case CurrencyApi.FJD:\n return Currency.FJD;\n case CurrencyApi.KYD:\n return Currency.KYD;\n default:\n return Currency.USD;\n }\n}\n","import { Frequency as FrequencyApi } from '@vendasta/billing';\n\nexport enum Frequency {\n Invalid = 'INVALID',\n Monthly = 'MONTHLY',\n Yearly = 'YEARLY',\n OneTime = 'ONE_TIME',\n}\n\nexport function frequencyFromLegacyApi(fApi: string): Frequency {\n switch (fApi) {\n case 'monthly':\n return Frequency.Monthly;\n case 'yearly':\n return Frequency.Yearly;\n case 'one_time':\n return Frequency.OneTime;\n }\n return Frequency.Invalid;\n}\n\nexport function frequencyFromApi(fApi: FrequencyApi | undefined): Frequency {\n switch (fApi) {\n case FrequencyApi.MONTHLY:\n return Frequency.Monthly;\n case FrequencyApi.YEARLY:\n return Frequency.Yearly;\n case FrequencyApi.ONE_TIME:\n return Frequency.OneTime;\n }\n return Frequency.Invalid;\n}\n\nexport function frequencyToApi(frequency: Frequency | undefined): FrequencyApi {\n switch (frequency) {\n case Frequency.Monthly:\n return FrequencyApi.MONTHLY;\n case Frequency.Yearly:\n return FrequencyApi.YEARLY;\n case Frequency.OneTime:\n return FrequencyApi.ONE_TIME;\n }\n return FrequencyApi.INVALID;\n}\n","import { ProductPricingRuleInterface } from '@vendasta/billing';\n\nexport interface ProductPricingRules {\n price: number;\n minUnits: number;\n maxUnits: number;\n}\n\nexport function productPricingRulesFromApi(pprApi: ProductPricingRuleInterface[] | undefined): ProductPricingRules[] {\n return (pprApi || []).map((r) => {\n return {\n price: r.price || 0,\n minUnits: r.minUnits,\n maxUnits: r.maxUnits,\n } as ProductPricingRules;\n });\n}\n","import { ProductPricingType as ProductPricingTypeApi } from '@vendasta/billing';\n\nexport enum ProductPricingType {\n Invalid = 'INVALID',\n Standard = 'STANDARD',\n Stairstep = 'STAIRSTEP',\n Tiered = 'TIERED',\n}\n\nexport function productPricingTypeFromApi(pptApi: ProductPricingTypeApi | undefined): ProductPricingType {\n switch (pptApi) {\n case ProductPricingTypeApi.PRODUCT_PRICING_TYPE_STANDARD:\n return ProductPricingType.Standard;\n case ProductPricingTypeApi.PRODUCT_PRICING_TYPE_STAIRSTEP:\n return ProductPricingType.Stairstep;\n case ProductPricingTypeApi.PRODUCT_PRICING_TYPE_TIERED:\n return ProductPricingType.Tiered;\n }\n return ProductPricingType.Invalid;\n}\n\nexport function productPricingTypeToApi(ppt: ProductPricingType): ProductPricingTypeApi {\n switch (ppt) {\n case ProductPricingType.Standard:\n return ProductPricingTypeApi.PRODUCT_PRICING_TYPE_STANDARD;\n case ProductPricingType.Stairstep:\n return ProductPricingTypeApi.PRODUCT_PRICING_TYPE_STAIRSTEP;\n case ProductPricingType.Tiered:\n return ProductPricingTypeApi.PRODUCT_PRICING_TYPE_TIERED;\n }\n return ProductPricingTypeApi.PRODUCT_PRICING_TYPE_INVALID;\n}\n","import { CommitmentInterface } from '@vendasta/billing';\n\nexport interface Commitment {\n initial: number;\n recurring: number;\n}\n\nexport function commitmentFromAPI(comAPI: CommitmentInterface | undefined): Commitment {\n return {\n initial: comAPI?.initial || 0,\n recurring: comAPI?.recurring || 0,\n };\n}\n","import { FeeInterface as FeeProto } from '@vendasta/billing';\n\nexport interface Fee {\n amount?: number;\n amountType?: FeeAmountType;\n feeType?: FeeType;\n}\n\nexport enum FeeAmountType {\n FEE_AMOUNT_TYPE_INVALID = 0,\n FEE_AMOUNT_TYPE_FIXED = 1,\n FEE_AMOUNT_TYPE_PERCENTAGE = 2,\n}\n\nexport enum FeeType {\n FEE_TYPE_INVALID = 0,\n FEE_TYPE_MANAGEMENT = 1,\n}\n\nexport function feesFromApi(protos: FeeProto[]): Fee[] {\n if (!protos || protos.length < 1) {\n return [];\n }\n return protos.map((proto) => {\n return {\n amount: proto.amount || 0,\n amountType: proto.amountType,\n feeType: proto.feeType,\n };\n });\n}\n\nexport function feesToApi(fees: Fee[]): FeeProto[] {\n if (!fees || fees.length < 1) {\n return [];\n }\n return fees.map((fee) => {\n return {\n amount: fee.amount || 0,\n amountType: fee.amountType,\n feeType: fee.feeType,\n };\n });\n}\n","import {\n PricingPlanProduct as ApiPricingPlanProduct,\n PricingPlanProductPricing as ApiPricing,\n ProductPricingRule as ApiRule,\n} from '@vendasta/billing';\nimport { BillingStrategy, billingStrategyFromAPI } from './billing-strategy';\nimport { Commitment, commitmentFromAPI } from './commitment';\nimport { Currency } from './currency';\nimport { Frequency, frequencyFromApi, frequencyToApi } from './frequency';\nimport { ProductPricingRules, productPricingRulesFromApi } from './product-pricing-rules';\nimport { ProductPricingType, productPricingTypeFromApi, productPricingTypeToApi } from './product-pricing-type';\nimport { Fee, feesFromApi, feesToApi } from './fee';\n\nexport interface CurrencyPricingMap {\n [key: string]: PricingPlanProductPricing;\n}\n\nexport interface PricingPlanProductPricing {\n type: ProductPricingType;\n rules: ProductPricingRules[];\n setupFee: number;\n fees: Fee[];\n frequency?: Frequency;\n currencyCode?: string;\n}\n\nexport interface PricingPlanProduct {\n pricingPlanId: string;\n sku: string;\n frequency?: Frequency;\n pricing: CurrencyPricingMap;\n commitment: Commitment;\n created: Date;\n modified: Date;\n strategy: BillingStrategy;\n volumeCommitment: number;\n volumeCommitmentStartsAt?: Date;\n volumeCommitmentEndsAt?: Date;\n defaultStrategy?: BillingStrategy;\n}\n\nexport function pricingPlanProductFromApi(apiProduct: ApiPricingPlanProduct): PricingPlanProduct {\n const pricingMap: CurrencyPricingMap = {};\n for (const apiCurrency in apiProduct.pricing) {\n if (!Object.prototype.hasOwnProperty.call(apiProduct.pricing, apiCurrency)) {\n continue;\n }\n\n const pricingApi = apiProduct.pricing[apiCurrency];\n pricingMap[apiCurrency] = {\n type: productPricingTypeFromApi(pricingApi.type),\n rules: productPricingRulesFromApi(pricingApi.rules),\n setupFee: pricingApi.setupFee || 0,\n fees: feesFromApi(pricingApi.fees),\n frequency: frequencyFromApi(pricingApi.frequency),\n };\n }\n\n return {\n pricingPlanId: apiProduct.pricingPlanId,\n sku: apiProduct.sku,\n frequency: frequencyFromApi(apiProduct.frequency),\n pricing: pricingMap,\n commitment: commitmentFromAPI(apiProduct.commitment),\n created: apiProduct.created,\n modified: apiProduct.modified,\n strategy: billingStrategyFromAPI(apiProduct.strategy),\n volumeCommitment: apiProduct.volumeCommitment,\n volumeCommitmentStartsAt:\n apiProduct.volumeCommitmentStartsAt?.getTime() !== 0 ? apiProduct.volumeCommitmentStartsAt : undefined,\n volumeCommitmentEndsAt:\n apiProduct.volumeCommitmentEndsAt?.getTime() !== 0 ? apiProduct.volumeCommitmentEndsAt : undefined,\n };\n}\n\nexport function currencyPricingMapToApi(currencyPricingMap: CurrencyPricingMap | undefined): {\n [key: string]: ApiPricing;\n} {\n if (!currencyPricingMap) {\n return {};\n }\n return Object.keys(currencyPricingMap)\n .filter((c) => c in Currency)\n .reduce((apiPricingMap: { [key: string]: ApiPricing }, c: string) => {\n apiPricingMap[c] = pricingPlanProductPricingToApi(currencyPricingMap[c]);\n return apiPricingMap;\n }, {});\n}\n\nexport function productPricingRulesToApi(rules: ProductPricingRules[]): ApiRule[] {\n return rules.map((rule) => new ApiRule(rule));\n}\n\nexport function pricingPlanProductPricingToApi(pricing: PricingPlanProductPricing): ApiPricing {\n return new ApiPricing({\n type: productPricingTypeToApi(pricing.type),\n rules: productPricingRulesToApi(pricing.rules),\n setupFee: pricing.setupFee,\n fees: feesToApi(pricing.fees),\n frequency: frequencyToApi(pricing.frequency),\n currencyCode: pricing.currencyCode,\n });\n}\n","import {\n GetPurchaseCostResponse,\n ProductPricesInterface,\n ProductPricingInterface,\n PricingPlanProductPricing as ApiPricingPlanProductPricing,\n} from '@vendasta/billing';\nimport { BillingStrategy, billingStrategyFromAPI } from './billing-strategy';\nimport { Commitment, commitmentFromAPI } from './commitment';\nimport { Currency, currencyFromApi } from './currency';\nimport { Frequency, frequencyFromApi, frequencyFromLegacyApi, frequencyToApi } from './frequency';\nimport { ProductPricingRules, productPricingRulesFromApi } from './product-pricing-rules';\nimport { ProductPricingType, productPricingTypeFromApi, productPricingTypeToApi } from './product-pricing-type';\nimport { Fee, feesFromApi, feesToApi } from './fee';\nimport { productPricingRulesToApi } from './pricing-plan-product';\n\nexport interface PurchaseCost {\n billingFrequency: Frequency;\n total: number;\n subtotal: number;\n currency: Currency;\n strategy: BillingStrategy;\n commitment: Commitment;\n isStartingPrice: boolean;\n discountTotal: number;\n setupFee: number;\n}\n\nexport interface ProductPricing {\n strategy: BillingStrategy;\n pricingType: ProductPricingType;\n currency: Currency;\n frequency: Frequency;\n pricingRules: ProductPricingRules[];\n commitment: Commitment;\n volumeCommitment: number;\n isStartingPrice: boolean;\n resolvedFrom?: string;\n setupFee: number;\n fees: Fee[];\n}\n\nexport interface ProductPrices {\n sku: string;\n prices: ProductPricing[];\n}\n\nexport function purchaseCostFromAPI(pcApi: GetPurchaseCostResponse): PurchaseCost {\n const subtotal = pcApi.subtotalCost || 0;\n const discountTotal = pcApi.discountAmount || 0;\n const total = pcApi.totalCost || 0;\n const setupFee = pcApi.setupFee || 0;\n\n return {\n subtotal: subtotal,\n discountTotal: discountTotal,\n total: total,\n billingFrequency: frequencyFromLegacyApi(pcApi.billingFrequency),\n currency: currencyFromApi(pcApi.currency),\n strategy: billingStrategyFromAPI(pcApi.strategy),\n commitment: commitmentFromAPI(pcApi.commitment),\n isStartingPrice: pcApi.isStartingPrice,\n setupFee: setupFee,\n };\n}\n\nexport function productPricingFromApi(pApi: ProductPricingInterface): ProductPricing {\n return {\n strategy: billingStrategyFromAPI(pApi.strategy),\n pricingType: productPricingTypeFromApi(pApi.pricingType),\n currency: currencyFromApi(pApi.currency),\n frequency: frequencyFromApi(pApi.frequency),\n pricingRules: productPricingRulesFromApi(pApi.pricingRules),\n commitment: commitmentFromAPI(pApi.commitment),\n volumeCommitment: pApi.volumeCommitment || 0,\n isStartingPrice: pApi.isStartingPrice || false,\n resolvedFrom: pApi.resolvedFrom,\n setupFee: pApi.setupFee || 0,\n fees: feesFromApi(pApi.fees || []),\n };\n}\n\nexport function pricesFromApi(pApi: ProductPricesInterface[]): ProductPrices[] {\n return pApi?.map(\n (p) =>\n p &&\n ({\n sku: p.sku,\n prices: (p.prices || []).map((price) => price && productPricingFromApi(price)),\n } as ProductPrices),\n );\n}\n\nexport function productPricingToApiCurrencyMap(productPricing: ProductPricing): {\n [currencyCode: string]: ApiPricingPlanProductPricing;\n} {\n if (!productPricing) {\n return {};\n }\n const apiPricing = productPricingToApi(productPricing);\n return { [apiPricing.currencyCode]: apiPricing };\n}\n\nexport function productPricingToApi(productPricing: ProductPricing): ApiPricingPlanProductPricing {\n return new ApiPricingPlanProductPricing({\n type: productPricingTypeToApi(productPricing.pricingType),\n rules: productPricingRulesToApi(productPricing.pricingRules),\n setupFee: productPricing.setupFee,\n fees: feesToApi(productPricing.fees),\n frequency: frequencyToApi(productPricing.frequency),\n currencyCode: productPricing.currency,\n });\n}\n","import { HttpResponse } from '@angular/common/http';\nimport { Injectable } from '@angular/core';\nimport { Observable } from 'rxjs';\nimport { map } from 'rxjs/operators';\nimport { BillingApiService, Commitment, PricingApiService, UpsertWholesalePricingRequest } from '@vendasta/billing';\nimport { BillingStrategy, billingStrategyToAPI } from './billing-strategy';\nimport { PricingPlanProductPricing, pricingPlanProductPricingToApi } from './pricing-plan-product';\nimport { pricesFromApi, ProductPrices, PurchaseCost, purchaseCostFromAPI } from './product-pricing';\n\n@Injectable({ providedIn: 'root' })\nexport class WholesalePricingService {\n constructor(private pricingService: PricingApiService, private billingApi: BillingApiService) {}\n\n setProductBillingStrategy(merchantId: string, sku: string, billingStrategy: BillingStrategy): Observable {\n const strategy = billingStrategyToAPI(billingStrategy);\n return this.pricingService.setWholesaleProductStrategy({ merchantId, sku, strategy }).pipe(map(() => null));\n }\n\n setProductVolumeCommitment(\n merchantId: string,\n sku: string,\n volumeCommitment: number,\n volumeCommitmentStartsAt?: Date,\n volumeCommitmentEndsAt?: Date,\n ): Observable {\n return this.pricingService\n .setWholesaleProductVolumeCommitment({\n merchantId,\n sku,\n volumeCommitment,\n volumeCommitmentStartsAt: volumeCommitmentStartsAt,\n volumeCommitmentEndsAt: volumeCommitmentEndsAt,\n })\n .pipe(map(() => null));\n }\n\n getPurchaseCost(merchantId: string, sku: string, quantity: number): Observable {\n return this.pricingService\n .getPurchaseCost({ merchantId, sku, quantity })\n .pipe(map((resp) => purchaseCostFromAPI(resp)));\n }\n\n getMultiWholesalePrices(merchantId: string, skus: string[], pricingPlanId?: string): Observable {\n return this.billingApi\n .getMultiProductPricing({ merchantId, skus, pricingPlanId })\n .pipe(map((r) => pricesFromApi(r.prices)));\n }\n\n upsertPricing(\n pricingPlanId: string,\n sku: string,\n pricing: PricingPlanProductPricing[],\n termCommitment: Commitment,\n strategy: BillingStrategy,\n volumeCommitment: number,\n volumeCommitmentStartsAt?: Date,\n volumeCommitmentEndsAt?: Date,\n ): Observable> {\n const request = new UpsertWholesalePricingRequest({\n pricingPlanId,\n sku,\n pricing: (pricing || []).map((p) => pricingPlanProductPricingToApi(p)),\n strategy: billingStrategyToAPI(strategy),\n termCommitment,\n volumeCommitment,\n volumeCommitmentStartsAt,\n volumeCommitmentEndsAt,\n });\n return this.pricingService.upsertWholesale(request);\n }\n}\n","import { Injectable } from '@angular/core';\nimport { Observable } from 'rxjs';\nimport { map } from 'rxjs/operators';\nimport { pricesFromApi, ProductPrices, ProductPricing, productPricingToApiCurrencyMap } from './product-pricing';\nimport { PricingApiService, UpsertRetailPricingRequest } from '@vendasta/billing';\nimport { Frequency, frequencyToApi } from './frequency';\nimport { HttpResponse } from '@angular/common/http';\n\nexport class RetailPricingForSubscriptionId {\n subscriptionId: string;\n\n constructor(subscriptionId: string) {\n this.subscriptionId = subscriptionId;\n }\n}\n\nexport class RetailPricingForCustomerId {\n customerId: string;\n\n constructor(customerId: string) {\n this.customerId = customerId;\n }\n}\n\nexport class RetailPricingForGroupId {\n groupId: string;\n\n constructor(groupId: string) {\n this.groupId = groupId;\n }\n}\n\n@Injectable({ providedIn: 'root' })\nexport class RetailPricingService {\n constructor(private pricingApi: PricingApiService) {}\n\n getMultiRetailPrices(merchantId: string, skus: string[], groupId?: string): Observable {\n const requestGroupId: string = groupId || '';\n return this.pricingApi\n .getMultiRetail({ merchantId, skus, groupId: requestGroupId })\n .pipe(map((r) => pricesFromApi(r.prices)));\n }\n\n upsertPricing(\n merchantId: string,\n sku: string,\n frequency: Frequency,\n pricing: ProductPricing,\n identifier: RetailPricingForSubscriptionId | RetailPricingForCustomerId | RetailPricingForGroupId,\n ): Observable> {\n const req = new UpsertRetailPricingRequest({\n merchantId,\n sku,\n frequency: frequencyToApi(frequency),\n pricing: productPricingToApiCurrencyMap(pricing),\n });\n if (identifier instanceof RetailPricingForSubscriptionId) {\n req.subscriptionId = identifier.subscriptionId;\n } else if (identifier instanceof RetailPricingForCustomerId) {\n req.customerId = identifier.customerId;\n } else if (identifier instanceof RetailPricingForGroupId) {\n req.groupId = identifier.groupId;\n }\n return this.pricingApi.upsertRetail(req);\n }\n}\n","import { PricingPlanInterface as PricingPlanProto } from '@vendasta/billing';\nimport { BillingStrategy, billingStrategyFromAPI } from './billing-strategy';\n\nexport interface PricingPlan {\n id: string;\n name: string;\n subscriptionName?: string;\n defaultStrategy: BillingStrategy;\n}\n\nexport enum Distribution {\n Retail = 'Retail',\n Wholesale = 'Wholesale',\n}\n\nexport function pricingPlanFromAPI(proto: PricingPlanProto): PricingPlan {\n return {\n id: proto.id || '',\n name: proto.name || '',\n defaultStrategy: billingStrategyFromAPI(proto.defaultBillingStrategy),\n };\n}\n","import { Injectable } from '@angular/core';\nimport { Environment, EnvironmentService } from '@galaxy/core';\nimport { BillingApiService, UpdatePricingPlanResponse } from '@vendasta/billing';\nimport { Observable } from 'rxjs';\nimport { map } from 'rxjs/operators';\nimport { BillingStrategy, billingStrategyToAPI } from './billing-strategy';\nimport { Distribution, PricingPlan, pricingPlanFromAPI } from './pricing-plan';\n\n@Injectable({ providedIn: 'root' })\nexport class PricingPlanService {\n constructor(private environmentService: EnvironmentService, private billingService: BillingApiService) {}\n\n list(distribution?: Distribution): PricingPlan[] {\n const env = this.environmentService.getEnvironment();\n switch (distribution) {\n case Distribution.Retail:\n return retailPlans.get(env) || [];\n case Distribution.Wholesale:\n return wholesalePlans.get(env) || [];\n default:\n return pricingPlans.get(env) || [];\n }\n }\n\n isDefault(pricingPlanId: string): boolean {\n const defaultPlan = this.list().find((p) => p.name === WholesalePricingPlanName.Default);\n return defaultPlan ? pricingPlanId === defaultPlan.id : false;\n }\n\n nameForId(pricingPlanId: string): string {\n return this.list().find((p) => p.id === pricingPlanId)?.name || '';\n }\n\n idForName(pricingPlanName: string): string {\n return this.list().find((p) => p.name === pricingPlanName)?.id || '';\n }\n\n idForSubscriptionName(subscriptionName: string): string {\n return this.list().find((p) => p.subscriptionName === subscriptionName)?.id || '';\n }\n\n setDefaultStrategy(pricingPlanId: string, strategy: BillingStrategy): Observable {\n const request = {\n id: pricingPlanId,\n fieldMask: {\n paths: ['default_billing_strategy'],\n },\n defaultBillingStrategy: billingStrategyToAPI(strategy),\n };\n return this.billingService.updatePricingPlan(request);\n }\n\n getMulti(pricingPlanIds: string[]): Observable {\n return this.billingService\n .getMultiPricingPlan({ pricingPlanIds })\n .pipe(map((resp) => resp.plans.map((p) => pricingPlanFromAPI(p))));\n }\n}\n\nenum RetailPricingPlanName {\n MSRP = 'MSRP',\n}\n\nconst demoRetailPricingPlans: PricingPlan[] = [\n {\n id: 'PP-5049b4b2-fe28-473f-96d6-84d4ea91ada9',\n name: RetailPricingPlanName.MSRP,\n subscriptionName: 'msrp',\n defaultStrategy: BillingStrategy.Invalid,\n },\n];\n\nconst prodRetailPricingPlans: PricingPlan[] = [\n {\n id: 'PP-148b6d8c-6222-4fce-9cd2-f0587f0db563',\n name: RetailPricingPlanName.MSRP,\n subscriptionName: 'msrp',\n defaultStrategy: BillingStrategy.Invalid,\n },\n];\n\nenum WholesalePricingPlanName {\n // Instant\n VBPFree = 'Free',\n VBPStarter = 'Starter',\n VBPBasic = 'Basic+',\n VBPProfessional = 'Professional+',\n VBPEnterprise = 'Enterprise+',\n VBPEnterprisePilot = 'Enterprise+ Pilot',\n VBP2Startup = 'Startup+',\n VBP2Essentials = 'Essentials+',\n VBP2Growth = 'Growth+',\n VBP2Scale = 'Scale+',\n\n // Invoiced\n BasicSubscription = 'Basic',\n ProfessionalSubscription = 'Professional',\n EnterpriseSubscription = 'Enterprise',\n EliteSubscription = 'Elite',\n PremiumSubscription = 'Premium (Legacy)',\n VBP2Premium = 'Premium',\n\n IndividualSubscription = 'Individual',\n TeamSubscription = 'Team',\n AdvanceSubscription = 'Advance',\n CustomSubscription = 'Custom',\n\n Essentials2022Subscription = 'Essentials',\n Professional2022Subscription = 'Professional',\n Premium2022Subscription = 'Premium',\n Custom2022Subscription = 'Custom',\n\n Starter2023Subscription = 'Starter',\n\n Default = 'Default',\n}\n\nconst demoWholesalePricingPlans: PricingPlan[] = [\n {\n id: 'PP-587f8f25-b278-4727-b7c4-3ce60e542c8b',\n name: WholesalePricingPlanName.VBPFree,\n subscriptionName: 'free_subscription',\n defaultStrategy: BillingStrategy.Invalid,\n },\n {\n id: 'PP-a5ad2825-8225-4bbe-a868-c1b2a7d2a2e3',\n name: WholesalePricingPlanName.VBPStarter,\n subscriptionName: 'starter_subscription',\n defaultStrategy: BillingStrategy.Invalid,\n },\n {\n id: 'PP-438ccc87-eaff-4180-ad79-f5d3d51e1bc0',\n name: WholesalePricingPlanName.VBPBasic,\n subscriptionName: 'vbp_basic_subscription',\n defaultStrategy: BillingStrategy.Invalid,\n },\n {\n id: 'PP-7201f892-3d44-44b8-b9db-4b23dd34d112',\n name: WholesalePricingPlanName.VBPProfessional,\n subscriptionName: 'vbp_professional_subscription',\n defaultStrategy: BillingStrategy.Invalid,\n },\n {\n id: 'PP-3cc1ec9f-17a8-46c8-9e79-b337e4ea651b',\n name: WholesalePricingPlanName.VBPEnterprise,\n subscriptionName: 'vbp_enterprise_subscription',\n defaultStrategy: BillingStrategy.Invalid,\n },\n {\n id: 'PP-7ffa4745-4ea1-4603-983b-81a1404faa3b',\n name: WholesalePricingPlanName.VBPEnterprisePilot,\n subscriptionName: 'vbp_enterprise_pilot_subscription',\n defaultStrategy: BillingStrategy.Invalid,\n },\n {\n id: 'PP-02895bb5-ff6b-4f37-ae1e-8473b895a59d',\n name: WholesalePricingPlanName.VBP2Startup,\n subscriptionName: 'vbp2_startup_subscription',\n defaultStrategy: BillingStrategy.Invalid,\n },\n {\n id: 'PP-c69f1724-d380-432f-8f50-5778da6ea250',\n name: WholesalePricingPlanName.VBP2Essentials,\n subscriptionName: 'vbp2_essentials_subscription',\n defaultStrategy: BillingStrategy.Invalid,\n },\n {\n id: 'PP-8abe2c53-be4a-43d5-bd2c-a8d9be1c82db',\n name: WholesalePricingPlanName.VBP2Growth,\n subscriptionName: 'vbp2_growth_subscription',\n defaultStrategy: BillingStrategy.Invalid,\n },\n {\n id: 'PP-0a872f89-e582-420a-90b0-c98e19b174a4',\n name: WholesalePricingPlanName.VBP2Scale,\n subscriptionName: 'vbp2_scale_subscription',\n defaultStrategy: BillingStrategy.Invalid,\n },\n {\n id: 'PP-7abd1cb2-317b-40d2-9fdc-d2b365d645b7',\n name: WholesalePricingPlanName.VBP2Premium,\n subscriptionName: 'vbp2_premium_subscription',\n defaultStrategy: BillingStrategy.Invalid,\n },\n {\n id: 'PP-a7eca7c3-84fd-4fc2-86a5-87a743f6c3d1',\n name: WholesalePricingPlanName.BasicSubscription,\n subscriptionName: 'basic_subscription',\n defaultStrategy: BillingStrategy.Invalid,\n },\n {\n id: 'PP-7d0053b8-fab4-407d-ae69-33c67d5314eb',\n name: WholesalePricingPlanName.ProfessionalSubscription,\n subscriptionName: 'professional_subscription',\n defaultStrategy: BillingStrategy.Invalid,\n },\n {\n id: 'PP-e85cdb56-2944-4fe0-9e78-a98520eb1489',\n name: WholesalePricingPlanName.EnterpriseSubscription,\n subscriptionName: 'enterprise_subscription',\n defaultStrategy: BillingStrategy.Invalid,\n },\n {\n id: 'PP-9a0d6430-5e73-41d2-bd3d-dc3645664bb9',\n name: WholesalePricingPlanName.EliteSubscription,\n subscriptionName: 'elite_subscription',\n defaultStrategy: BillingStrategy.Invalid,\n },\n {\n id: 'PP-a03a1c1e-d03e-4c77-8132-34908012a65c',\n name: WholesalePricingPlanName.PremiumSubscription,\n subscriptionName: 'premium_subscription',\n defaultStrategy: BillingStrategy.Invalid,\n },\n {\n id: 'PP-6ef8b121-c6de-49c2-b24f-971cfecb5fe6',\n name: WholesalePricingPlanName.IndividualSubscription,\n subscriptionName: 'm3_solo_subscription',\n defaultStrategy: BillingStrategy.Invalid,\n },\n {\n id: 'PP-ffd605c1-feb6-4066-8dc1-ad0f1a8efb9d',\n name: WholesalePricingPlanName.TeamSubscription,\n subscriptionName: 'm3_small_subscription',\n defaultStrategy: BillingStrategy.Invalid,\n },\n {\n id: 'PP-246b1485-018c-4dc2-96c1-b6e0b2c18edb',\n name: WholesalePricingPlanName.AdvanceSubscription,\n subscriptionName: 'm3_medium_subscription',\n defaultStrategy: BillingStrategy.Invalid,\n },\n {\n id: 'PP-0e9f5ea4-d6bd-4ea8-927e-de55134fa92f',\n name: WholesalePricingPlanName.CustomSubscription,\n subscriptionName: 'm3_large_subscription',\n defaultStrategy: BillingStrategy.Invalid,\n },\n {\n id: 'PP-268f67e8-1854-4cdd-97a5-4e8b2c52a957',\n name: WholesalePricingPlanName.Essentials2022Subscription,\n subscriptionName: 'vbp_2022_essentials_subscription',\n defaultStrategy: BillingStrategy.Invalid,\n },\n {\n id: 'PP-231bb4f5-ab25-4570-a342-6c2548494fbb',\n name: WholesalePricingPlanName.Professional2022Subscription,\n subscriptionName: 'vbp_2022_professional_subscription',\n defaultStrategy: BillingStrategy.Invalid,\n },\n {\n id: 'PP-88e09af4-137f-4b5f-a860-8cfc30675dd5',\n name: WholesalePricingPlanName.Premium2022Subscription,\n subscriptionName: 'vbp_2022_premium_subscription',\n defaultStrategy: BillingStrategy.Invalid,\n },\n {\n id: 'PP-073e3bc9-121f-4fb9-b30f-9e6e48783be8',\n name: WholesalePricingPlanName.Custom2022Subscription,\n subscriptionName: 'vbp_2022_custom_subscription',\n defaultStrategy: BillingStrategy.Invalid,\n },\n {\n id: 'PP-2559d108-f406-43f6-b04c-36463f3b1935',\n name: WholesalePricingPlanName.Starter2023Subscription,\n subscriptionName: 'vbp_2023_starter_subscription',\n defaultStrategy: BillingStrategy.Invalid,\n },\n {\n id: 'PP-cf943a15-3eea-40cf-8d3e-e7ea5a5a9817',\n name: WholesalePricingPlanName.Default,\n subscriptionName: '',\n defaultStrategy: BillingStrategy.Invalid,\n },\n];\n\nconst prodWholesalePricingPlans: PricingPlan[] = [\n {\n id: 'PP-77912c15-00af-4a56-bfc0-e8e6c27c7a53',\n name: WholesalePricingPlanName.VBPFree,\n subscriptionName: 'free_subscription',\n defaultStrategy: BillingStrategy.Invalid,\n },\n {\n id: 'PP-1cc75309-ddff-4d8b-aedf-88a7472e2b4e',\n name: WholesalePricingPlanName.VBPStarter,\n subscriptionName: 'starter_subscription',\n defaultStrategy: BillingStrategy.Invalid,\n },\n {\n id: 'PP-52f98211-bd1e-4112-88cd-e78040173198',\n name: WholesalePricingPlanName.VBPBasic,\n subscriptionName: 'vbp_basic_subscription',\n defaultStrategy: BillingStrategy.Invalid,\n },\n {\n id: 'PP-c278bcc6-bd5d-43e5-9ff5-a27e70b48ba9',\n name: WholesalePricingPlanName.VBPProfessional,\n subscriptionName: 'vbp_professional_subscription',\n defaultStrategy: BillingStrategy.Invalid,\n },\n {\n id: 'PP-4133fc94-a58a-4fcd-91cd-9ed111182e77',\n name: WholesalePricingPlanName.VBPEnterprise,\n subscriptionName: 'vbp_enterprise_subscription',\n defaultStrategy: BillingStrategy.Invalid,\n },\n {\n id: 'PP-dbbac61e-132f-468f-aa62-7a691b59bb74',\n name: WholesalePricingPlanName.VBPEnterprisePilot,\n subscriptionName: 'vbp_enterprise_pilot_subscription',\n defaultStrategy: BillingStrategy.Invalid,\n },\n {\n id: 'PP-45f8099f-d3f3-4302-83bf-bbf64f431e31',\n name: WholesalePricingPlanName.VBP2Startup,\n subscriptionName: 'vbp2_startup_subscription',\n defaultStrategy: BillingStrategy.Invalid,\n },\n {\n id: 'PP-d44c5a8b-f3b6-4b63-b203-8b7253060984',\n name: WholesalePricingPlanName.VBP2Essentials,\n subscriptionName: 'vbp2_essentials_subscription',\n defaultStrategy: BillingStrategy.Invalid,\n },\n {\n id: 'PP-c1761320-62df-41d7-8df3-008554a4b592',\n name: WholesalePricingPlanName.VBP2Growth,\n subscriptionName: 'vbp2_growth_subscription',\n defaultStrategy: BillingStrategy.Invalid,\n },\n {\n id: 'PP-b6607aae-606f-4fd5-84e4-c48f38b59892',\n name: WholesalePricingPlanName.VBP2Scale,\n subscriptionName: 'vbp2_scale_subscription',\n defaultStrategy: BillingStrategy.Invalid,\n },\n {\n id: 'PP-7375d567-8890-4cb1-930c-5673ea89acba',\n name: WholesalePricingPlanName.VBP2Premium,\n subscriptionName: 'vbp2_premium_subscription',\n defaultStrategy: BillingStrategy.Invalid,\n },\n {\n id: 'PP-38a06671-526b-4d28-b425-bbce3be34699',\n name: WholesalePricingPlanName.BasicSubscription,\n subscriptionName: 'basic_subscription',\n defaultStrategy: BillingStrategy.Invalid,\n },\n {\n id: 'PP-d9717300-f1c3-4471-8433-c3ac7baf003d',\n name: WholesalePricingPlanName.ProfessionalSubscription,\n subscriptionName: 'professional_subscription',\n defaultStrategy: BillingStrategy.Invalid,\n },\n {\n id: 'PP-f6a60130-878b-4a33-9a10-d5bdeac0cdef',\n name: WholesalePricingPlanName.EnterpriseSubscription,\n subscriptionName: 'enterprise_subscription',\n defaultStrategy: BillingStrategy.Invalid,\n },\n {\n id: 'PP-dff68124-2223-4c88-91dc-b638a3135fc5',\n name: WholesalePricingPlanName.EliteSubscription,\n subscriptionName: 'elite_subscription',\n defaultStrategy: BillingStrategy.Invalid,\n },\n {\n id: 'PP-15641015-560e-4cd7-977b-b1fc627b18d1',\n name: WholesalePricingPlanName.PremiumSubscription,\n subscriptionName: 'premium_subscription',\n defaultStrategy: BillingStrategy.Invalid,\n },\n {\n id: 'PP-46fe3624-0af5-4674-b612-2c39d7dc1f82',\n name: WholesalePricingPlanName.IndividualSubscription,\n subscriptionName: 'm3_solo_subscription',\n defaultStrategy: BillingStrategy.Invalid,\n },\n {\n id: 'PP-8153423f-af6e-459e-ac9b-ac10e8f789b6',\n name: WholesalePricingPlanName.TeamSubscription,\n subscriptionName: 'm3_small_subscription',\n defaultStrategy: BillingStrategy.Invalid,\n },\n {\n id: 'PP-54de0158-18c3-4dca-bcac-a26e945ac8c0',\n name: WholesalePricingPlanName.AdvanceSubscription,\n subscriptionName: 'm3_medium_subscription',\n defaultStrategy: BillingStrategy.Invalid,\n },\n {\n id: 'PP-f81375af-43a0-4986-9b90-e56c67922195',\n name: WholesalePricingPlanName.CustomSubscription,\n subscriptionName: 'm3_large_subscription',\n defaultStrategy: BillingStrategy.Invalid,\n },\n {\n id: 'PP-589c64da-e354-4103-bf21-26596bf0fb66',\n name: WholesalePricingPlanName.Essentials2022Subscription,\n subscriptionName: 'vbp_2022_essentials_subscription',\n defaultStrategy: BillingStrategy.Invalid,\n },\n {\n id: 'PP-528f7285-8040-4432-a4ca-9e53e12f903c',\n name: WholesalePricingPlanName.Professional2022Subscription,\n subscriptionName: 'vbp_2022_professional_subscription',\n defaultStrategy: BillingStrategy.Invalid,\n },\n {\n id: 'PP-aceec94d-e714-4a77-b45c-133d9ce788a6',\n name: WholesalePricingPlanName.Premium2022Subscription,\n subscriptionName: 'vbp_2022_premium_subscription',\n defaultStrategy: BillingStrategy.Invalid,\n },\n {\n id: 'PP-0a9ff4cf-6135-4994-add3-8cd02c7da795',\n name: WholesalePricingPlanName.Custom2022Subscription,\n subscriptionName: 'vbp_2022_custom_subscription',\n defaultStrategy: BillingStrategy.Invalid,\n },\n {\n id: 'PP-c8810795-4d7c-4194-a551-e7f654fca4d7',\n name: WholesalePricingPlanName.Starter2023Subscription,\n subscriptionName: 'vbp_2023_starter_subscription',\n defaultStrategy: BillingStrategy.Invalid,\n },\n {\n id: 'PP-0e9ac148-a2d0-42d0-9250-8c42189bf432',\n name: WholesalePricingPlanName.Default,\n subscriptionName: '',\n defaultStrategy: BillingStrategy.Invalid,\n },\n];\n\nconst pricingPlans = new Map([\n [Environment.DEMO, [...demoWholesalePricingPlans, ...demoRetailPricingPlans]],\n [Environment.PROD, [...prodWholesalePricingPlans, ...prodRetailPricingPlans]],\n]);\n\nconst wholesalePlans = new Map([\n [Environment.DEMO, [...demoWholesalePricingPlans]],\n [Environment.PROD, [...prodWholesalePricingPlans]],\n]);\n\nconst retailPlans = new Map([\n [Environment.DEMO, [...demoRetailPricingPlans]],\n [Environment.PROD, [...prodRetailPricingPlans]],\n]);\n","export {};\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6W10sInNvdXJjZXMiOlsibGlzdC1wcmljaW5nLXBsYW4tcHJvZHVjdC1maWx0ZXIudHMiXSwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGludGVyZmFjZSBMaXN0UHJpY2luZ1BsYW5Qcm9kdWN0RmlsdGVyIHtcbiAgc2t1Pzogc3RyaW5nO1xuICBwcmljaW5nUGxhbklkcz86IHN0cmluZ1tdO1xufVxuIl0sIm1hcHBpbmdzIjoiIiwiaWdub3JlTGlzdCI6W119","import { SubscriptionStatus as SubscriptionStatusApi } from '@vendasta/billing';\n\nexport enum SubscriptionStatus {\n Unset = 'Unset',\n Active = 'Active',\n Inactive = 'Inactive',\n}\n\nexport function subscriptionStatusFromApi(sApi: SubscriptionStatusApi | undefined): SubscriptionStatus {\n switch (sApi) {\n case SubscriptionStatusApi.SUBSCRIPTION_STATUS_ACTIVE:\n return SubscriptionStatus.Active;\n case SubscriptionStatusApi.SUBSCRIPTION_STATUS_EXPIRED:\n return SubscriptionStatus.Inactive;\n default:\n return SubscriptionStatus.Unset;\n }\n}\n\nexport function subscriptionStatusToApi(subscriptionStatus: SubscriptionStatus): SubscriptionStatusApi {\n switch (subscriptionStatus) {\n case SubscriptionStatus.Active:\n return SubscriptionStatusApi.SUBSCRIPTION_STATUS_ACTIVE;\n case SubscriptionStatus.Inactive:\n return SubscriptionStatusApi.SUBSCRIPTION_STATUS_EXPIRED;\n default:\n return SubscriptionStatusApi.SUBSCRIPTION_STATUS_UNSET;\n }\n}\n\nexport function isSubscriptionStatus(str: string): str is SubscriptionStatus {\n return Object.values(SubscriptionStatus).includes(str as SubscriptionStatus);\n}\n","import { Source as SubscriptionSourceApi } from '@vendasta/billing';\n\nexport enum SubscriptionSource {\n Unset = '',\n System = 'System',\n User = 'User',\n}\n\nexport function subscriptionSourceFromApi(sApi: SubscriptionSourceApi | undefined): SubscriptionSource {\n switch (sApi) {\n case SubscriptionSourceApi.SOURCE_SYSTEM:\n return SubscriptionSource.System;\n case SubscriptionSourceApi.SOURCE_USER:\n return SubscriptionSource.User;\n default:\n return SubscriptionSource.Unset;\n }\n}\n\nexport function subscriptionSourceToApi(source: SubscriptionSource): SubscriptionSourceApi {\n switch (source) {\n case SubscriptionSource.System:\n return SubscriptionSourceApi.SOURCE_SYSTEM;\n case SubscriptionSource.User:\n return SubscriptionSourceApi.SOURCE_USER;\n default:\n return SubscriptionSourceApi.SOURCE_UNSET;\n }\n}\n","export * from './billing-strategy';\nexport * from './currency';\nexport * from './frequency';\nexport * from './product-pricing-rules';\nexport * from './product-pricing-type';\nexport * from './product-pricing';\nexport * from './pricing-plan-product';\nexport * from './wholesale-pricing.service';\nexport * from './retail-pricing.service';\nexport * from './pricing-plan';\nexport * from './pricing-plan.service';\nexport * from './list-pricing-plan-product-filter';\nexport * from './status';\nexport * from './source';\nexport * from './fee';\n","import { PaymentSource as PaymentSourceApi } from '@vendasta/billing';\n\nexport enum PaymentSource {\n UNSET = 'Unset',\n STRIPE = 'Stripe',\n VCASH = 'vCash',\n}\n\nexport function paymentSourceFromApi(pApi: PaymentSourceApi | undefined): PaymentSource {\n switch (pApi) {\n case PaymentSourceApi.PAYMENT_SOURCE_STRIPE:\n return PaymentSource.STRIPE;\n case PaymentSourceApi.PAYMENT_SOURCE_VCASH:\n return PaymentSource.VCASH;\n default:\n return PaymentSource.UNSET;\n }\n}\n","import { PaymentStatus as PaymentStatusApi } from '@vendasta/billing';\n\nexport enum PaymentStatus {\n Unset = 'UNSET',\n Failed = 'FAILED',\n Succeeded = 'SUCCEEDED',\n}\n\nexport function paymentStatusFromApi(psApi: PaymentStatusApi | undefined): PaymentStatus {\n switch (psApi) {\n case PaymentStatusApi.PAYMENT_STATUS_FAILED:\n return PaymentStatus.Failed;\n case PaymentStatusApi.PAYMENT_STATUS_SUCCEEDED:\n return PaymentStatus.Succeeded;\n }\n return PaymentStatus.Unset;\n}\n","import { PaymentAllocationType as PaymentAllocationTypeApi } from '@vendasta/billing';\n\nexport enum PaymentAllocationType {\n UNSET = 'UNSET',\n PURCHASE = 'PURCHASE',\n INVOICE = 'INVOICE',\n}\n\nexport function paymentAllocationTypeFromApi(pApi: PaymentAllocationTypeApi): PaymentAllocationType {\n switch (pApi) {\n case PaymentAllocationTypeApi.PAYMENT_ALLOCATION_TYPE_INVOICE:\n return PaymentAllocationType.INVOICE;\n case PaymentAllocationTypeApi.PAYMENT_ALLOCATION_TYPE_PURCHASE:\n return PaymentAllocationType.PURCHASE;\n default:\n return PaymentAllocationType.UNSET;\n }\n}\n","import { PaymentPaymentAllocationInterface, PaymentInterface } from '@vendasta/billing';\nimport { Currency, currencyFromApi } from '../pricing';\nimport { PaymentSource, paymentSourceFromApi } from './payment-source';\nimport { PaymentStatus, paymentStatusFromApi } from './payment-status';\nimport { PaymentAllocationType, paymentAllocationTypeFromApi } from './payment-allocation-type';\n\nexport interface Intent {\n stripeClientSecret?: string;\n intentId?: string;\n}\n\nexport interface ListPaymentsFilter {\n merchantId?: string;\n allocationIds?: string[];\n start?: Date;\n end?: Date;\n}\n\nexport interface Payment {\n merchantId: string;\n created?: Date;\n currency: Currency;\n paymentSource: PaymentSource;\n allocations: PaymentAllocation[];\n total: number;\n description: string;\n externalReferenceId: string;\n status: PaymentStatus;\n}\n\nexport interface PaymentAllocation {\n referenceId: string;\n amount: number;\n type: PaymentAllocationType;\n}\n\nexport function paymentFromApi(pApi: PaymentInterface): Payment {\n return {\n merchantId: pApi.merchantId || '',\n created: pApi.created ? new Date(pApi.created) : undefined,\n currency: pApi.currency ? currencyFromApi(pApi.currency) : Currency.USD,\n paymentSource: paymentSourceFromApi(pApi.paymentSource),\n allocations: pApi.allocations ? pApi.allocations.map((p) => paymentAllocationFromApi(p)) : [],\n total: pApi.total || 0,\n description: pApi.description || '',\n externalReferenceId: pApi.externalReferenceId || '',\n status: paymentStatusFromApi(pApi.status),\n };\n}\n\nexport function paymentAllocationFromApi(pApi: PaymentPaymentAllocationInterface): PaymentAllocation {\n return {\n referenceId: pApi.referenceId || '',\n amount: pApi.amount || 0,\n type: pApi.type ? paymentAllocationTypeFromApi(pApi.type) : PaymentAllocationType.UNSET,\n };\n}\n\nexport interface RetailProvider {\n statementDescriptor: string;\n stripeConnectId: string;\n}\n\nexport interface DeclineReason {\n description: string;\n nextSteps: string;\n}\n\nexport const DeclineReasons: Map = new Map([\n [\n 'authentication_required',\n {\n description: 'The card was declined as the transaction requires authentication.',\n nextSteps: 'The customer should try again and authenticate their card when prompted during the transaction.',\n },\n ],\n [\n 'approve_with_id',\n {\n description: 'The payment cannot be authorized.',\n nextSteps:\n 'The payment should be attempted again. If it still cannot be processed, the customer needs to contact their card issuer.',\n },\n ],\n [\n 'call_issuer',\n {\n description: 'The card has been declined for an unknown reason.',\n nextSteps: 'The customer needs to contact their card issuer for more information.',\n },\n ],\n [\n 'card_not_supported',\n {\n description: 'The card does not support the specified currency.',\n nextSteps:\n 'The customer needs to check with the issuer whether the card can be used for the type of currency specified.',\n },\n ],\n [\n 'do_not_honor',\n {\n description: 'The card has been declined for an unknown reason.',\n nextSteps: 'The customer needs to contact their card issuer for more information.',\n },\n ],\n [\n 'do_not_try_again',\n {\n description: 'The card has been declined for an unknown reason.',\n nextSteps: 'The customer should contact their card issuer for more information.',\n },\n ],\n [\n 'duplicate_transaction',\n {\n description: 'A transaction with identical amount and credit card information was submitted very recently.',\n nextSteps: 'Check to see if a recent payment already exists.',\n },\n ],\n [\n 'expired_card',\n {\n description: 'The card has expired.',\n nextSteps: 'The customer should use another card.',\n },\n ],\n [\n 'fraudulent',\n {\n description: 'The payment has been declined as Stripe suspects it is fraudulent.',\n nextSteps:\n 'Do not report more detailed information to your customer. Instead, present as you would the generic_decline described below.',\n },\n ],\n [\n 'generic_decline',\n {\n description: 'The card has been declined for an unknown reason.',\n nextSteps: 'The customer needs to contact their card issuer for more information.',\n },\n ],\n [\n 'incorrect_number',\n {\n description: 'The card number is incorrect.',\n nextSteps: 'The customer should try again using the correct card number.',\n },\n ],\n [\n 'incorrect_cvc',\n {\n description: 'The CVC number is incorrect.',\n nextSteps: 'The customer should try again using the correct CVC.',\n },\n ],\n [\n 'incorrect_pin',\n {\n description: 'The PIN entered is incorrect. This decline code only applies to payments made with a card reader.',\n nextSteps: 'The customer should try again using the correct PIN.',\n },\n ],\n [\n 'incorrect_zip',\n {\n description: 'The ZIP/postal code is incorrect.',\n nextSteps: 'The customer should try again using the correct billing ZIP/postal code.',\n },\n ],\n [\n 'insufficient_funds',\n {\n description: 'The card has insufficient funds to complete the purchase.',\n nextSteps: 'The customer should use an alternative payment method.',\n },\n ],\n [\n 'invalid_account',\n {\n description: 'The card, or account the card is connected to, is invalid.',\n nextSteps: 'The customer needs to contact their card issuer to check that the card is working correctly.',\n },\n ],\n [\n 'invalid_amount',\n {\n description: 'The payment amount is invalid, or exceeds the amount that is allowed.',\n nextSteps:\n 'If the amount appears to be correct, the customer needs to check with their card issuer that they can make purchases of that amount.',\n },\n ],\n [\n 'invalid_cvc',\n {\n description: 'The CVC number is incorrect.',\n nextSteps: 'The customer should try again using the correct CVC.',\n },\n ],\n [\n 'invalid_expiry_year',\n {\n description: 'The expiration year invalid.',\n nextSteps: 'The customer should try again using the correct expiration date.',\n },\n ],\n [\n 'invalid_number',\n {\n description: 'The card number is incorrect.',\n nextSteps: 'The customer should try again using the correct card number.',\n },\n ],\n [\n 'invalid_pin',\n {\n description: 'The PIN entered is incorrect. This decline code only applies to payments made with a card reader.',\n nextSteps: 'The customer should try again using the correct PIN.',\n },\n ],\n [\n 'issuer_not_available',\n {\n description: 'The card issuer could not be reached, so the payment could not be authorized.',\n nextSteps:\n 'The payment should be attempted again. If it still cannot be processed, the customer needs to contact their card issuer.',\n },\n ],\n [\n 'lost_card',\n {\n description: 'The payment has been declined because the card is reported lost.',\n nextSteps:\n 'The specific reason for the decline should not be reported to the customer. Instead, it needs to be presented as a generic decline.',\n },\n ],\n [\n 'merchant_blacklist',\n {\n description: \"The payment has been declined because it matches a value on the Stripe user's block list.\",\n nextSteps:\n 'Do not report more detailed information to your customer. Instead, present as you would the generic_decline described above.',\n },\n ],\n [\n 'new_account_information_available',\n {\n description: 'The card, or account the card is connected to, is invalid.',\n nextSteps: 'The customer needs to contact their card issuer for more information.',\n },\n ],\n [\n 'no_action_taken',\n {\n description: 'The card has been declined for an unknown reason.',\n nextSteps: 'The customer should contact their card issuer for more information.',\n },\n ],\n [\n 'not_permitted',\n {\n description: 'The payment is not permitted.',\n nextSteps: 'The customer needs to contact their card issuer for more information.',\n },\n ],\n [\n 'offline_pin_required',\n {\n description: 'The card has been declined as it requires a PIN.',\n nextSteps: 'The customer should try again by inserting their card and entering a PIN.',\n },\n ],\n [\n 'online_or_offline_pin_required',\n {\n description: 'The card has been declined as it requires a PIN.',\n nextSteps:\n 'If the card reader supports Online PIN, the customer should be prompted for a PIN without a new transaction being created. If the card reader does not support Online PIN, the customer should try again by inserting their card and entering a PIN.',\n },\n ],\n [\n 'pickup_card',\n {\n description: 'The card cannot be used to make this payment (it is possible it has been reported lost or stolen).',\n nextSteps: 'The customer needs to contact their card issuer for more information.',\n },\n ],\n [\n 'pin_try_exceeded',\n {\n description: 'The allowable number of PIN tries has been exceeded.',\n nextSteps: 'The customer must use another card or method of payment.',\n },\n ],\n [\n 'processing_error',\n {\n description: 'An error occurred while processing the card.',\n nextSteps: 'The payment should be attempted again. If it still cannot be processed, try again later.',\n },\n ],\n [\n 'reenter_transaction',\n {\n description: 'The payment could not be processed by the issuer for an unknown reason.',\n nextSteps:\n 'The payment should be attempted again. If it still cannot be processed, the customer needs to contact their card issuer.',\n },\n ],\n [\n 'restricted_card',\n {\n description: 'The card cannot be used to make this payment (it is possible it has been reported lost or stolen).',\n nextSteps: 'The customer needs to contact their card issuer for more information.',\n },\n ],\n [\n 'revocation_of_all_authorizations',\n {\n description: 'The card has been declined for an unknown reason.',\n nextSteps: 'The customer should contact their card issuer for more information.',\n },\n ],\n [\n 'revocation_of_authorization',\n {\n description: 'The card has been declined for an unknown reason.',\n nextSteps: 'The customer should contact their card issuer for more information.',\n },\n ],\n [\n 'security_violation',\n {\n description: 'The card has been declined for an unknown reason.',\n nextSteps: 'The customer needs to contact their card issuer for more information.',\n },\n ],\n [\n 'service_not_allowed',\n {\n description: 'The card has been declined for an unknown reason.',\n nextSteps: 'The customer should contact their card issuer for more information.',\n },\n ],\n [\n 'stolen_card',\n {\n description: 'The payment has been declined because the card is reported stolen.',\n nextSteps:\n 'The specific reason for the decline should not be reported to the customer. Instead, it needs to be presented as a generic decline.',\n },\n ],\n [\n 'stop_payment_order',\n {\n description: 'The card has been declined for an unknown reason.',\n nextSteps: 'The customer should contact their card issuer for more information.',\n },\n ],\n [\n 'testmode_decline',\n {\n description: 'A Stripe test card number was used.',\n nextSteps: 'A genuine card must be used to make a payment.',\n },\n ],\n [\n 'transaction_not_allowed',\n {\n description: 'The card has been declined for an unknown reason.',\n nextSteps: 'The customer needs to contact their card issuer for more information.',\n },\n ],\n [\n 'try_again_later',\n {\n description: 'The card has been declined for an unknown reason.',\n nextSteps:\n 'Ask the customer to attempt the payment again. If subsequent payments are declined, the customer should contact their card issuer for more information.',\n },\n ],\n [\n 'withdrawal_count_limit_exceeded',\n {\n description: 'The customer has exceeded the balance or credit limit available on their card.',\n nextSteps: 'The customer should use an alternative payment method.',\n },\n ],\n]);\n","import { PaymentCard as ApiPaymentCard, PaymentCardCARD_TYPE, PaymentCardFUNDING_TYPE } from '@vendasta/billing';\n\nexport interface PaymentCard {\n cardType: PaymentCardTypeLabel;\n fundingType: FundingTypeLabel;\n cardId: string;\n lastFourDigits: string;\n expiryMonth: number;\n expiryYear: number;\n cardholderName?: string;\n address?: string;\n city?: string;\n state?: string;\n country?: string;\n zipCode?: string;\n default?: boolean;\n}\n\nexport enum FundingType {\n PREPAID = 'Pre-paid',\n DEBIT = 'Debit',\n CREDIT = 'Credit',\n UNKNOWN = 'Unknown',\n}\n\nexport interface FundingTypeLabel {\n value: string;\n id: FundingType;\n}\n\nexport enum PaymentCardType {\n AMEX = 'American Express',\n VISA = 'Visa',\n MASTERCARD = 'Mastercard',\n JCB = 'JCB',\n DINERS_CLUB = 'Diners Club',\n DISCOVER = 'Discover',\n UNKNOWN = 'Unknown',\n}\n\nexport interface PaymentCardTypeLabel {\n id: PaymentCardType;\n value: string;\n}\n\nconst unknownCardType = { id: PaymentCardType.UNKNOWN, value: 'Unknown' };\nconst paymentCardTypeLabelMap = new Map([\n [PaymentCardCARD_TYPE.AMEX, { id: PaymentCardType.AMEX, value: 'American Express' }],\n [PaymentCardCARD_TYPE.VISA, { id: PaymentCardType.VISA, value: 'Visa' }],\n [PaymentCardCARD_TYPE.MASTERCARD, { id: PaymentCardType.MASTERCARD, value: 'Mastercard' }],\n [PaymentCardCARD_TYPE.JCB, { id: PaymentCardType.JCB, value: 'JCB' }],\n [PaymentCardCARD_TYPE.DINERS_CLUB, { id: PaymentCardType.DINERS_CLUB, value: 'Diners Club' }],\n [PaymentCardCARD_TYPE.DISCOVER, { id: PaymentCardType.DISCOVER, value: 'Discover' }],\n [PaymentCardCARD_TYPE.UNKNOWN, unknownCardType],\n]);\n\nfunction convertApiPaymentCardType(t: PaymentCardCARD_TYPE): PaymentCardTypeLabel {\n return paymentCardTypeLabelMap.get(t) || unknownCardType;\n}\n\nconst unknownFundingType = { id: FundingType.UNKNOWN, value: 'Unknown' };\nconst fundingTypeLabelMap = new Map([\n [PaymentCardFUNDING_TYPE.FUNDING_TYPE_DEBIT, { id: FundingType.DEBIT, value: 'Debit' }],\n [PaymentCardFUNDING_TYPE.FUNDING_TYPE_CREDIT, { id: FundingType.CREDIT, value: 'Credit' }],\n [PaymentCardFUNDING_TYPE.FUNDING_TYPE_PREPAID, { id: FundingType.PREPAID, value: 'Pre-paid' }],\n [PaymentCardFUNDING_TYPE.FUNDING_TYPE_UNKNOWN, unknownFundingType],\n]);\n\nexport function convertApiFundingType(t: PaymentCardFUNDING_TYPE): FundingTypeLabel {\n return fundingTypeLabelMap.get(t) || unknownFundingType;\n}\n\nexport function convertApiPaymentCardDetails(c: ApiPaymentCard): PaymentCard {\n return {\n cardType: convertApiPaymentCardType(c.cardType),\n fundingType: convertApiFundingType(c.fundingType),\n cardId: c.cardId,\n lastFourDigits: c.lastFourDigits,\n expiryMonth: c.expiryMonth,\n expiryYear: c.expiryYear,\n cardholderName: c.cardholderName,\n address: c.address,\n city: c.city,\n state: c.state,\n country: c.country,\n zipCode: c.zipCode,\n default: c.default,\n } as PaymentCard;\n}\n","export { PaymentCardService } from './payment-card.service';\nexport { PaymentCard, PaymentCardTypeLabel, PaymentCardType, FundingTypeLabel, FundingType } from './payment-card';\n","import {\n CardType,\n PaymentStatus as PaymentStatusApi,\n RetailPayment as RetailPaymentApi,\n RetailPaymentCardDetails as RetailPaymentCardDetailsApi,\n RetailPaymentReferenceType as RetailPaymentReferenceTypeApi,\n RetailRefundReason as ApiRefundReason,\n RetailRefundFailureReason as ApiFailureReason,\n RetailRefundStatus as ApiRefundStatus,\n RetailRefund as RetailRefundApi,\n RetailPayout as RetailPayoutApi,\n PayoutStatus as RetailPayoutStatusApi,\n PayoutType as RetailPayoutTypeApi,\n RetailTransaction as RetailTransactionApi,\n Adjustment as AdjustmentApi,\n} from '@vendasta/billing';\nimport { Dispute, disputeFromApi } from './dispute';\nimport { PaymentCardType } from '../payment-card';\n\nexport enum RetailPaymentStatus {\n Failed = 'Failed',\n Succeeded = 'Succeeded',\n Refunded = 'Refunded',\n PartialyRefunded = 'Partially refunded',\n Disputed = 'Disputed',\n}\n\nexport enum RetailRefundReason {\n Unset = 'Unset',\n Duplicate = 'Duplicate',\n Fraudulent = 'Fraudulent',\n RequestedByCustomer = 'Requested by customer',\n}\n\nexport enum RetailRefundFailureReason {\n Unset = 'Unset',\n LostOrStolenCard = 'Lost or stolen card',\n ExpiredOrCanceledCard = 'Expired or canceled card',\n Unknown = 'Unknown',\n}\n\nexport enum RetailRefundStatus {\n Unset = 'Unset',\n Pending = 'Pending',\n Succeeded = 'Succeeded',\n Failed = 'Failed',\n RequiresAction = 'Requires action',\n Canceled = 'Canceled',\n}\n\nexport enum RetailPayoutStatus {\n Unset = 'Unset',\n Paid = 'Paid',\n Pending = 'Pending',\n InTransit = 'In transit',\n Canceled = 'Canceled',\n Failed = 'Failed',\n}\n\nexport enum RetailPayoutType {\n Unset = 'Unset',\n BankAccount = 'Bank Account',\n Card = 'Card',\n}\n\nexport function isRefundableStatus(status: RetailPaymentStatus): boolean {\n return [RetailPaymentStatus.Succeeded, RetailPaymentStatus.PartialyRefunded].includes(status);\n}\n\nexport function retailRefundReasonFromApi(r: ApiRefundReason): RetailRefundReason | undefined {\n switch (r) {\n case ApiRefundReason.RETAIL_REFUND_REASON_UNSET:\n return RetailRefundReason.Unset;\n case ApiRefundReason.RETAIL_REFUND_REASON_DUPLICATE:\n return RetailRefundReason.Duplicate;\n case ApiRefundReason.RETAIL_REFUND_REASON_FRAUDULENT:\n return RetailRefundReason.Fraudulent;\n case ApiRefundReason.RETAIL_REFUND_REASON_REQUESTED_BY_CUSTOMER:\n return RetailRefundReason.RequestedByCustomer;\n default:\n return undefined;\n }\n}\n\nexport function retailRefundReasonToApi(r: RetailRefundReason): ApiRefundReason {\n switch (r) {\n case RetailRefundReason.Duplicate:\n return ApiRefundReason.RETAIL_REFUND_REASON_DUPLICATE;\n case RetailRefundReason.Fraudulent:\n return ApiRefundReason.RETAIL_REFUND_REASON_FRAUDULENT;\n case RetailRefundReason.RequestedByCustomer:\n return ApiRefundReason.RETAIL_REFUND_REASON_REQUESTED_BY_CUSTOMER;\n default:\n return ApiRefundReason.RETAIL_REFUND_REASON_UNSET;\n }\n}\n\nexport function retailRefundFailureReasonFromApi(r: ApiFailureReason): RetailRefundFailureReason | undefined {\n switch (r) {\n case ApiFailureReason.RETAIL_REFUND_FAILURE_REASON_UNSET:\n return RetailRefundFailureReason.Unset;\n case ApiFailureReason.RETAIL_REFUND_FAILURE_REASON_LOST_OR_STOLEN_CARD:\n return RetailRefundFailureReason.LostOrStolenCard;\n case ApiFailureReason.RETAIL_REFUND_FAILURE_REASON_EXPIRED_OR_CANCELED_CARD:\n return RetailRefundFailureReason.ExpiredOrCanceledCard;\n case ApiFailureReason.RETAIL_REFUND_FAILURE_REASON_UNKNOWN:\n return RetailRefundFailureReason.Unknown;\n default:\n return undefined;\n }\n}\n\nexport function retailRefundStatusFromApi(r: ApiRefundStatus): RetailRefundStatus | undefined {\n switch (r) {\n case ApiRefundStatus.RETAIL_REFUND_STATUS_UNSET:\n return RetailRefundStatus.Unset;\n case ApiRefundStatus.RETAIL_REFUND_STATUS_PENDING:\n return RetailRefundStatus.Pending;\n case ApiRefundStatus.RETAIL_REFUND_STATUS_SUCCEEDED:\n return RetailRefundStatus.Succeeded;\n case ApiRefundStatus.RETAIL_REFUND_STATUS_FAILED:\n return RetailRefundStatus.Failed;\n case ApiRefundStatus.RETAIL_REFUND_STATUS_REQUIRES_ACTION:\n return RetailRefundStatus.RequiresAction;\n case ApiRefundStatus.RETAIL_REFUND_STATUS_CANCELED:\n return RetailRefundStatus.Canceled;\n default:\n return undefined;\n }\n}\n\nexport interface CardDetails {\n cardType: PaymentCardType;\n lastFourDigits: string;\n}\n\nexport interface RetailRefund {\n id: string;\n amount: number;\n currency: string;\n refundReason?: RetailRefundReason;\n status?: RetailRefundStatus;\n failureReason?: RetailRefundFailureReason;\n created?: Date;\n payment?: RetailPayment;\n}\n\nexport interface RetailPayment {\n id: string;\n merchantId: string;\n created: Date;\n currencyCode: string;\n amount: number;\n referenceId: string;\n referenceType: RetailPaymentReferenceTypeApi;\n description: string;\n customerId: string;\n status?: RetailPaymentStatus;\n failureCode: string;\n failureMessage: string;\n applicationFee: number;\n dispute?: Dispute;\n cardDetails: CardDetails;\n refunds: RetailRefund[];\n}\n\nexport interface RetailPayout {\n id: string;\n arrivalDate: Date;\n amount: number;\n currencyCode: string;\n status: RetailPayoutStatus;\n type: RetailPayoutType;\n lastFourDigits: string;\n bankName: string;\n bankId: string;\n failureCode: string;\n failureMessage: string;\n}\n\nexport interface Adjustment {\n id: string;\n amount: number;\n currency: string;\n description: string;\n fee: number;\n net: number;\n refund?: RetailRefund;\n dispute?: Dispute;\n created: Date;\n}\n\nexport enum RetailTransactionType {\n payment = 'payment',\n refund = 'refund',\n}\n\nexport interface RetailTransaction {\n payment?: RetailPayment;\n refund?: RetailRefund;\n payoutFailure?: RetailPayout;\n adjustment?: Adjustment;\n}\n\nexport function retailPaymentFromApi(pApi: RetailPaymentApi): RetailPayment {\n return {\n id: pApi.id || '',\n merchantId: pApi.merchantId || '',\n created: pApi.created || null,\n currencyCode: pApi.currencyCode || '',\n amount: pApi.amount || 0.0,\n referenceId: pApi.referenceId || '',\n referenceType: pApi.referenceType,\n description: pApi.description || '',\n customerId: pApi.customerId || '',\n status: retailPaymentStatusFromApi(pApi.status, pApi.disputed),\n failureCode: pApi.failureCode,\n failureMessage: pApi.failureMessage,\n applicationFee: pApi.applicationFee,\n dispute: disputeFromApi(pApi.dispute),\n cardDetails: cardDetailsFromApi(pApi.cardDetails),\n refunds: retailRefundsfromApi(pApi.refunds),\n };\n}\n\nexport function retailRefundsfromApi(refunds: RetailRefundApi[]): RetailRefund[] {\n return (refunds || []).map((refund: RetailRefundApi) => retailRefundFromApi(refund));\n}\n\nexport function retailRefundFromApi(refund: RetailRefundApi): RetailRefund {\n return {\n id: refund.id || '',\n amount: refund.amount || 0,\n currency: refund.currencyCode || '',\n refundReason: retailRefundReasonFromApi(refund.refundReason),\n status: retailRefundStatusFromApi(refund.status),\n failureReason: retailRefundFailureReasonFromApi(refund.failureReason),\n created: refund.created ? new Date(refund.created) : undefined,\n payment: refund.payment ? retailPaymentFromApi(refund.payment) : undefined,\n };\n}\n\nexport function retailPayoutFromApi(payout: RetailPayoutApi): RetailPayout {\n return {\n id: payout.id,\n arrivalDate: payout.arrivalDate,\n amount: payout.amount,\n currencyCode: payout.currencyCode,\n status: retailPayoutStatusFromApi(payout.status),\n type: retailPayoutTypeFromApi(payout.type),\n lastFourDigits: payout.lastFourDigits,\n bankName: payout.bankName,\n bankId: payout.bankId,\n failureCode: payout.failureCode,\n failureMessage: payout.failureMessage,\n };\n}\n\nexport function retailPayoutStatusFromApi(status: RetailPayoutStatusApi): RetailPayoutStatus {\n switch (status) {\n case RetailPayoutStatusApi.PAYOUT_STATUS_PAID:\n return RetailPayoutStatus.Paid;\n case RetailPayoutStatusApi.PAYOUT_STATUS_PENDING:\n return RetailPayoutStatus.Pending;\n case RetailPayoutStatusApi.PAYOUT_STATUS_IN_TRANSIT:\n return RetailPayoutStatus.InTransit;\n case RetailPayoutStatusApi.PAYOUT_STATUS_CANCELED:\n return RetailPayoutStatus.Canceled;\n case RetailPayoutStatusApi.PAYOUT_STATUS_FAILED:\n return RetailPayoutStatus.Failed;\n default:\n return RetailPayoutStatus.Unset;\n }\n}\n\nexport function retailPayoutTypeFromApi(t: RetailPayoutTypeApi): RetailPayoutType {\n switch (t) {\n case RetailPayoutTypeApi.PAYOUT_TYPE_BANK_ACCOUNT:\n return RetailPayoutType.BankAccount;\n case RetailPayoutTypeApi.PAYOUT_TYPE_CARD:\n return RetailPayoutType.Card;\n default:\n return RetailPayoutType.Unset;\n }\n}\n\nexport function adjustmentFromApi(adjustment: AdjustmentApi): Adjustment {\n return {\n amount: adjustment.amount,\n currency: adjustment.currency,\n description: adjustment.description,\n dispute: disputeFromApi(adjustment.dispute),\n fee: adjustment.fee,\n id: adjustment.id,\n net: adjustment.net,\n refund: adjustment.refund ? retailRefundFromApi(adjustment.refund) : undefined,\n created: adjustment.created,\n };\n}\n\nexport function retailTransactionFromApi(transaction: RetailTransactionApi): RetailTransaction {\n return {\n payment: transaction.payment ? retailPaymentFromApi(transaction.payment) : undefined,\n refund: transaction.refund ? retailRefundFromApi(transaction.refund) : undefined,\n payoutFailure: transaction.payoutFailure ? retailPayoutFromApi(transaction.payoutFailure) : undefined,\n adjustment: transaction.adjustment ? adjustmentFromApi(transaction.adjustment) : undefined,\n };\n}\n\nfunction cardDetailsFromApi(cardDetails: RetailPaymentCardDetailsApi): CardDetails {\n return {\n lastFourDigits: cardDetails.lastFourDigits,\n cardType: cardTypeFromApi(cardDetails.cardType),\n };\n}\n\nfunction cardTypeFromApi(cardType: CardType): PaymentCardType {\n switch (cardType) {\n case CardType.CARD_TYPE_VISA:\n return PaymentCardType.VISA;\n case CardType.CARD_TYPE_MASTERCARD:\n return PaymentCardType.MASTERCARD;\n case CardType.CARD_TYPE_AMEX:\n return PaymentCardType.AMEX;\n case CardType.CARD_TYPE_DISCOVER:\n return PaymentCardType.DISCOVER;\n case CardType.CARD_TYPE_JCB:\n return PaymentCardType.JCB;\n case CardType.CARD_TYPE_DINERS_CLUB:\n return PaymentCardType.DINERS_CLUB;\n default:\n return PaymentCardType.UNKNOWN;\n }\n}\n\nexport function retailPaymentStatusFromApi(\n status: PaymentStatusApi,\n disputed: boolean,\n): RetailPaymentStatus | undefined {\n if (disputed) {\n return RetailPaymentStatus.Disputed;\n }\n switch (status) {\n case PaymentStatusApi.PAYMENT_STATUS_SUCCEEDED:\n return RetailPaymentStatus.Succeeded;\n case PaymentStatusApi.PAYMENT_STATUS_FAILED:\n return RetailPaymentStatus.Failed;\n case PaymentStatusApi.PAYMENT_STATUS_REFUNDED:\n return RetailPaymentStatus.Refunded;\n case PaymentStatusApi.PAYMENT_STATUS_PARTIALLY_REFUNDED:\n return RetailPaymentStatus.PartialyRefunded;\n default:\n return undefined;\n }\n}\n","import {\n RetailStatusResponseInterface,\n RetailStatusResponseVerificationErrorInterface,\n RetailStatusResponseVerificationRequirementsInterface,\n} from '@vendasta/billing';\n\nexport interface RetailStatus {\n supportedRegion: boolean;\n canAcceptPayment: boolean;\n disabledReason?: string;\n requirements: Requirements;\n futureRequirements: Requirements;\n}\n\nexport type RetailStatusInterface = RetailStatus;\n\nexport interface Requirements {\n due: string[];\n errors: VerificationError[];\n // related to future requirements\n eventuallyDue: string[];\n // related to future requirements\n currentDeadline?: Date;\n}\n\nexport interface VerificationError {\n requirement: string;\n code: string;\n reason: string;\n}\n\nexport function isRejectedDisabledReason(disabledReason: string): boolean {\n return ['rejected.fraud', 'rejected.listed', 'rejected.other', 'rejected.terms_of_service'].includes(disabledReason);\n}\n\nfunction verificationErrorFromAPI(e: RetailStatusResponseVerificationErrorInterface): VerificationError {\n return {\n requirement: e.requirement || '',\n code: e.code || '',\n reason: e.reason || '',\n };\n}\n\nfunction requirementsFromAPI(\n requirements: RetailStatusResponseVerificationRequirementsInterface | undefined,\n): Requirements {\n if (!requirements) {\n return { due: [], errors: [], eventuallyDue: [] };\n }\n return {\n due: requirements.due || [],\n errors: (requirements.error || []).map((e) => verificationErrorFromAPI(e)),\n eventuallyDue: requirements.eventuallyDue || [],\n currentDeadline: new Date(requirements.currentDeadline || 0),\n };\n}\n\nexport function retailResponseFromAPI(proto: RetailStatusResponseInterface): RetailStatus {\n return {\n supportedRegion: proto.supportedRegion || false,\n canAcceptPayment: proto.canAcceptPayment || false,\n disabledReason: proto.disabledReason,\n requirements: requirementsFromAPI(proto.requirements),\n futureRequirements: requirementsFromAPI(proto.futureRequirements),\n };\n}\n","export class MerchantProviderDeterminant {\n merchantId: string;\n\n constructor(merchantId: string) {\n this.merchantId = merchantId;\n }\n}\n\nexport class CountryProviderDeterminant {\n countryCode: string;\n\n constructor(countryCode: string) {\n this.countryCode = countryCode;\n }\n}\n","import { Injectable } from '@angular/core';\nimport { Observable } from 'rxjs';\nimport { map, mapTo } from 'rxjs/operators';\nimport { PagedResponse } from '../core';\nimport {\n GetWholesaleProviderPublicKeyRequest,\n ListPaymentRequest,\n ListRetailDisputesRequest,\n ListRetailDisputesResponse,\n ListRetailPaymentsRequest,\n ListRetailPaymentsRequestListRetailPaymentsFilters,\n ListRetailPaymentsResponse,\n ListRetailTransactionsRequest,\n ListRetailTransactionsRequestListRetailTransactionsFilters,\n ListRetailTransactionsResponse,\n PagedRequestOptions,\n PaymentApiService,\n PrepareRetailPaymentRequest,\n RetailPaymentsEnabledRequest,\n RetailStatusRequest,\n RetailStatusResponse,\n RetailTransactionType,\n} from '@vendasta/billing';\nimport { Dispute, DisputeEvidenceRequest, disputeFromApi } from './dispute';\nimport { Intent, ListPaymentsFilter, Payment, paymentFromApi, RetailProvider } from './payment';\nimport {\n RetailPayment,\n retailPaymentFromApi,\n RetailRefundReason,\n retailRefundReasonToApi,\n RetailTransaction,\n retailTransactionFromApi,\n} from './retail-payment';\nimport { retailResponseFromAPI, RetailStatus } from './retail-status';\nimport { CountryProviderDeterminant, MerchantProviderDeterminant } from './provider-determinant';\n\n@Injectable({ providedIn: 'root' })\nexport class PaymentService {\n constructor(private paymentApi: PaymentApiService) {}\n\n listPayments(filters: ListPaymentsFilter, cursor: string, pageSize: number): Observable> {\n const req = new ListPaymentRequest({\n filters: filters,\n pagingOptions: new PagedRequestOptions({ cursor, pageSize }),\n });\n return this.paymentApi.list(req).pipe(\n map((response) => {\n const payments = (response.payments || []).map((payment) => paymentFromApi(payment));\n return new PagedResponse(payments, response.pagingMetadata.nextCursor, response.pagingMetadata.hasMore);\n }),\n );\n }\n\n prepareRetailPayment(merchantId: string, customerId: string): Observable {\n const req = new PrepareRetailPaymentRequest({\n merchantId: merchantId,\n customerId: customerId,\n });\n return this.paymentApi.prepareRetail(req).pipe(\n map((response) => {\n return {\n stripeClientSecret: response.stripeClientSecret,\n intentId: response.intentId,\n };\n }),\n );\n }\n\n getRetail(merchantId: string, paymentId: string): Observable {\n return this.paymentApi\n .getRetail({\n merchantId: merchantId,\n paymentId: paymentId,\n })\n .pipe(map((resp) => retailPaymentFromApi(resp.payment)));\n }\n\n listRetail(\n merchantId: string,\n cursor = '',\n pageSize = 10,\n payoutId?: string,\n customerId?: string,\n createdDateGte?: Date,\n createdDateLte?: Date,\n ): Observable> {\n const zeroDate = new Date('0001-01-01T00:00:00Z').valueOf();\n const filters: ListRetailPaymentsRequestListRetailPaymentsFilters =\n new ListRetailPaymentsRequestListRetailPaymentsFilters({\n payoutId: payoutId || '',\n });\n if (!!createdDateGte && createdDateGte.valueOf() !== zeroDate) {\n filters.createdDateGte = createdDateGte;\n }\n if (!!createdDateLte && createdDateLte.valueOf() !== zeroDate) {\n filters.createdDateLte = createdDateLte;\n }\n return this.paymentApi\n .listRetail(\n new ListRetailPaymentsRequest({\n merchantId: merchantId,\n filters: filters,\n pagingOptions: new PagedRequestOptions({ cursor, pageSize }),\n }),\n )\n .pipe(\n map((resp: ListRetailPaymentsResponse) => {\n const retailPayments = (resp.payments || []).map((payment) => retailPaymentFromApi(payment));\n return new PagedResponse(retailPayments, resp.pagingMetadata.nextCursor, resp.pagingMetadata.hasMore);\n }),\n );\n }\n\n listRetailTransactions(\n merchantId: string,\n cursor = '',\n pageSize = 10,\n payoutId?: string,\n createdDateGte?: Date,\n createdDateLte?: Date,\n paymentsOnly?: boolean,\n customerId?: string,\n ): Observable> {\n const zeroDate = new Date('0001-01-01T00:00:00Z').valueOf();\n const filters: ListRetailTransactionsRequestListRetailTransactionsFilters =\n new ListRetailTransactionsRequestListRetailTransactionsFilters({\n payoutId: payoutId || '',\n });\n if (!!createdDateGte && createdDateGte.valueOf() !== zeroDate) {\n filters.createdDateGte = createdDateGte;\n }\n if (!!createdDateLte && createdDateLte.valueOf() !== zeroDate) {\n filters.createdDateLte = createdDateLte;\n }\n if (paymentsOnly === undefined || paymentsOnly) {\n filters.type = RetailTransactionType.RETAIL_TRANSACTION_TYPE_PAYMENT;\n }\n if (customerId) {\n filters.customerId = customerId;\n }\n return this.paymentApi\n .listRetailTransactions(\n new ListRetailTransactionsRequest({\n merchantId: merchantId,\n filters: filters,\n pagingOptions: new PagedRequestOptions({ cursor, pageSize }),\n }),\n )\n .pipe(\n map((resp: ListRetailTransactionsResponse) => {\n const retailTransactions = (resp.transactions || []).map((transaction) =>\n retailTransactionFromApi(transaction),\n );\n return new PagedResponse(retailTransactions, resp.pagingMetadata.nextCursor, resp.pagingMetadata.hasMore);\n }),\n );\n }\n\n getRetailDispute(merchantId: string, disputeId: string): Observable {\n return this.paymentApi\n .getRetailDispute({\n merchantId: merchantId,\n disputeId: disputeId,\n })\n .pipe(map((resp) => disputeFromApi(resp.dispute)));\n }\n\n listRetailDisputes(merchantId: string, cursor = '', pageSize = 10): Observable> {\n return this.paymentApi\n .listRetailDisputes(\n new ListRetailDisputesRequest({\n merchantId: merchantId,\n pagingOptions: new PagedRequestOptions({ cursor, pageSize }),\n }),\n )\n .pipe(\n map((resp: ListRetailDisputesResponse) => {\n const retailPayments = (resp?.disputes || []).map((d) => disputeFromApi(d));\n return new PagedResponse(\n retailPayments,\n resp?.pagingMetadata.nextCursor || '',\n resp?.pagingMetadata.hasMore || false,\n );\n }),\n );\n }\n\n retailStatus(merchantId: string): Observable {\n const req = new RetailStatusRequest({ merchantId });\n return this.paymentApi.retailStatus(req).pipe(map((r: RetailStatusResponse) => retailResponseFromAPI(r)));\n }\n\n retailPaymentsEnabled(merchantId: string): Observable {\n const req = new RetailPaymentsEnabledRequest({ merchantId });\n return this.paymentApi.retailPaymentsEnabled(req).pipe(map((resp) => resp.enabled));\n }\n\n configureRetailProvider(merchantId: string, successUrl: string, failureUrl: string): Observable {\n return this.paymentApi\n .configureRetailProvider({\n merchantId,\n successUrl,\n failureUrl,\n })\n .pipe(map((resp) => resp.stripeUrl));\n }\n\n getRetailProvider(merchantId: string): Observable {\n return this.paymentApi.getRetailProvider({ merchantId }).pipe(\n map((resp) => {\n return {\n statementDescriptor: resp.statementDescriptor,\n stripeConnectId: resp.stripeConnectId,\n };\n }),\n );\n }\n\n updateRetailProvider(merchantId: string, statementDescriptor: string): Observable {\n return this.paymentApi.updateRetailProvider({ merchantId, statementDescriptor }).pipe(mapTo(null));\n }\n\n submitEvidence(\n merchantId: string,\n disputeId: string,\n paymentId: string,\n submit: boolean,\n evidence?: DisputeEvidenceRequest,\n ): Observable {\n return this.paymentApi\n .submitEvidence({\n merchantId: merchantId,\n disputeId: disputeId,\n paymentId: paymentId,\n evidence: {\n billingAddress: evidence?.billingAddress,\n customerEmailAddress: evidence?.customerEmailAddress,\n customerName: evidence?.customerName,\n productDescription: evidence?.productDescription,\n customerSignatureFileId: evidence?.customerSignatureFileId,\n customerCommunicationFileId: evidence?.customerCommunicationFileId,\n receiptFileId: evidence?.receiptFileId,\n shippingDocumentationFileId: evidence?.shippingDocumentationFileId,\n uncategorizedFileId: evidence?.uncategorizedFileId,\n },\n submit: submit,\n })\n .pipe(mapTo(null));\n }\n\n closeDispute(merchantId: string, disputeId: string): Observable {\n return this.paymentApi\n .closeRetailDispute({\n merchantId: merchantId,\n disputeId: disputeId,\n })\n .pipe(mapTo(null));\n }\n\n getWholesaleProviderPublicKey(\n determinant: MerchantProviderDeterminant | CountryProviderDeterminant,\n ): Observable {\n let request: GetWholesaleProviderPublicKeyRequest;\n if (determinant instanceof MerchantProviderDeterminant) {\n request = new GetWholesaleProviderPublicKeyRequest({ merchantId: determinant.merchantId });\n } else {\n request = new GetWholesaleProviderPublicKeyRequest({ countryCode: determinant.countryCode });\n }\n return this.paymentApi.getWholesaleProviderPublicKey(request).pipe(map((resp) => resp.publcApiKey));\n }\n\n refundRetail(\n merchantId: string,\n paymentId: string,\n amount: number,\n reason: RetailRefundReason,\n ): Observable {\n return this.paymentApi\n .refundRetail({ merchantId, paymentId, amount, reason: retailRefundReasonToApi(reason) })\n .pipe(map((resp) => retailPaymentFromApi(resp.payment)));\n }\n}\n","export * from './dispute';\nexport * from './payment';\nexport * from './payment-source';\nexport * from './payment-status';\nexport * from './payment-allocation-type';\nexport { PaymentService } from './payment.service';\nexport * from './provider-determinant';\nexport * from './retail-payment';\nexport * from './retail-status';\nexport {\n ListPaymentRequest,\n ListPaymentResponse,\n PrepareRetailPaymentRequest,\n PrepareRetailPaymentResponse,\n ListRetailPaymentsRequest,\n ListRetailPaymentsResponse,\n} from '@vendasta/billing';\n","import { Injectable } from '@angular/core';\nimport { Environment, EnvironmentService } from '@galaxy/core';\nimport { Observable } from 'rxjs';\nimport { CountryProviderDeterminant, MerchantProviderDeterminant, PaymentService } from './payment';\n\n// Public API Key for Live Canadian Account\nconst CA_LIVE_API_KEY = 'pk_live_Nv6bm5YyuSb2cCj1Tv2laHeV';\n// Public API Key for Test Canadian Account\nconst CA_TEST_API_KEY = 'pk_test_d7arUvYIZ2TNTwmyDQUCHqUB';\n\n@Injectable({ providedIn: 'root' })\nexport class StripeService {\n private connectPublicKey: string;\n\n constructor(private environmentService: EnvironmentService, private paymentService: PaymentService) {\n this.connectPublicKey =\n this.environmentService.getEnvironment() === Environment.PROD ? CA_LIVE_API_KEY : CA_TEST_API_KEY;\n }\n\n // returns the public API key that is to be used for Stripe Connect Account requests, which is regardless of the merchant's subsidiary and is always corresponding to Vendasta's Canadian Stripe account.\n public getConnectPublicKey(): string {\n return this.connectPublicKey;\n }\n\n // returns the public API key that is associated to the corresponding merchant's susibidiary.\n public getPublicKeyByMerchant(merchantId: string): Observable {\n return this.paymentService.getWholesaleProviderPublicKey(new MerchantProviderDeterminant(merchantId));\n }\n\n // returns the public API key that is associated to the corresponding susibidiary location.\n // this should ONLY be used in the event we do not have an existing merchant record (i.e. during platform signup)\n public getPublicKeyByCountry(countryCode: string): Observable {\n return this.paymentService.getWholesaleProviderPublicKey(new CountryProviderDeterminant(countryCode));\n }\n}\n","import { AppliedBundle as ApiAppliedBundle } from '@vendasta/billing';\n\nexport const isAppliedBundle = (b: AppliedBundle | undefined): b is AppliedBundle => {\n return !!b;\n};\nexport interface AppliedBundle {\n bundleId?: string;\n bundleInstanceId?: string;\n name?: string;\n bundleItems?: AppliedBundleItem[];\n hideBundleItems?: boolean;\n}\n\nexport interface AppliedBundleItem {\n productId?: string;\n discountType?: string;\n discountAmount?: number;\n quantity?: number;\n}\n\nexport function convertApiAppliedBundle(ab: ApiAppliedBundle): AppliedBundle | undefined {\n if (!ab) {\n return undefined;\n }\n\n return {\n bundleId: ab.bundleId,\n bundleInstanceId: ab.bundleInstanceId,\n name: ab.name,\n hideBundleItems: ab.hideBundleItems || false,\n };\n}\n","export { AppliedBundle, AppliedBundleItem, convertApiAppliedBundle, isAppliedBundle } from './applied_bundle';\n","import { DiscountType as ApiDiscountType } from '@vendasta/billing';\n\nexport enum DiscountType {\n FIXED_AMOUNT = 'FIXED_AMOUNT',\n PERCENT_AMOUNT = 'PERCENT_AMOUNT',\n FIXED_NUMBER_OF_UNITS = 'FIXED_NUMBER_OF_UNITS',\n FIXED_AMOUNT_PER_UNIT = 'FIXED_AMOUNT_PER_UNIT',\n}\n\nexport function discountTypeFromApi(t: ApiDiscountType): DiscountType {\n switch (t) {\n case ApiDiscountType.DISCOUNT_TYPE_FIXED_AMOUNT_PER_UNIT:\n return DiscountType.FIXED_AMOUNT_PER_UNIT;\n case ApiDiscountType.DISCOUNT_TYPE_FIXED_NUMBER_OF_UNITS:\n return DiscountType.FIXED_NUMBER_OF_UNITS;\n case ApiDiscountType.DISCOUNT_TYPE_PERCENT_AMOUNT:\n return DiscountType.PERCENT_AMOUNT;\n }\n return DiscountType.FIXED_AMOUNT;\n}\n\nexport function discountTypeToApi(t: DiscountType): ApiDiscountType {\n switch (t) {\n case DiscountType.FIXED_AMOUNT_PER_UNIT:\n return ApiDiscountType.DISCOUNT_TYPE_FIXED_AMOUNT_PER_UNIT;\n case DiscountType.FIXED_NUMBER_OF_UNITS:\n return ApiDiscountType.DISCOUNT_TYPE_FIXED_NUMBER_OF_UNITS;\n case DiscountType.PERCENT_AMOUNT:\n return ApiDiscountType.DISCOUNT_TYPE_PERCENT_AMOUNT;\n }\n return ApiDiscountType.DISCOUNT_TYPE_FIXED_AMOUNT;\n}\n","import { Consumer, Discount as DiscountApi } from '@vendasta/billing';\nimport { discountTypeFromApi, DiscountType } from './discount_type';\n\nexport interface Discount {\n discountId: number;\n id: string;\n discountType: DiscountType;\n amount: number;\n start?: Date;\n end?: Date;\n resetEachPeriod: boolean;\n merchantId: string;\n created?: Date;\n updated?: Date;\n SKU: string;\n description: string;\n customerId?: string;\n consumer?: Consumer;\n subscriptionId?: string;\n}\n\nexport function discountFromApi(apiDiscount: DiscountApi): Discount {\n return {\n merchantId: apiDiscount.merchantId || '',\n discountId: apiDiscount.discountId || 0,\n id: apiDiscount.id || '',\n discountType: discountTypeFromApi(apiDiscount.discountType),\n amount: apiDiscount.amount || 0,\n start: apiDiscount.start ? new Date(apiDiscount.start) : undefined,\n end: apiDiscount.end ? new Date(apiDiscount.end) : undefined,\n resetEachPeriod: apiDiscount.resetEachPeriod || false,\n created: apiDiscount.created ? new Date(apiDiscount.created) : undefined,\n updated: apiDiscount.updated ? new Date(apiDiscount.updated) : undefined,\n SKU: apiDiscount.sku || '',\n description: apiDiscount.description || '',\n customerId: apiDiscount.customerId || '',\n consumer: apiDiscount.consumer || Consumer.CONSUMER_RETAIL,\n subscriptionId: apiDiscount.subscriptionId || '',\n };\n}\n","import { Consumer } from '@vendasta/billing';\n\nexport enum DiscountConsumer {\n RETAIL = 'retail',\n WHOLESALE = 'reseller',\n}\n\nexport function discountConsumerToApi(dc: DiscountConsumer): Consumer {\n switch (dc) {\n case DiscountConsumer.RETAIL:\n return Consumer.CONSUMER_RETAIL;\n case DiscountConsumer.WHOLESALE:\n return Consumer.CONSUMER_WHOLESALE;\n }\n}\n","import { HttpResponse } from '@angular/common/http';\nimport { Injectable } from '@angular/core';\nimport { Observable } from 'rxjs';\nimport { map } from 'rxjs/operators';\nimport { PagedResponse } from '../core';\nimport {\n CreateDiscountRequest,\n DiscountApiService,\n ExpireDiscountRequest,\n ListDiscountsRequest,\n PagedRequestOptions,\n UpdateDiscountRequest,\n} from '@vendasta/billing';\nimport { Discount, discountFromApi } from './discount';\nimport { DiscountType, discountTypeToApi } from './discount_type';\nimport { ListDiscountsFilter } from './list-discount';\nimport { DiscountConsumer, discountConsumerToApi } from './discount_consumer';\n\n@Injectable({ providedIn: 'root' })\nexport class DiscountService {\n constructor(private discountApi: DiscountApiService) {}\n\n list(filters: ListDiscountsFilter, cursor: string, pageSize: number): Observable> {\n const req = new ListDiscountsRequest({\n filters: filters,\n pagingOptions: new PagedRequestOptions({ cursor, pageSize }),\n });\n return this.discountApi.list(req).pipe(\n map((response) => {\n const discounts = (response.discounts || []).map((item) => discountFromApi(item));\n return new PagedResponse(discounts, response.pagingMetadata.nextCursor, response.pagingMetadata.hasMore);\n }),\n );\n }\n\n create(\n merchantId: string,\n sku: string,\n discountType: DiscountType,\n amount: number,\n startDateTime: string,\n endDateTime?: string,\n resetEachPeriodFlag?: boolean,\n description?: string,\n customerId?: string,\n discountConsumer = DiscountConsumer.WHOLESALE,\n subscriptionId?: string,\n ): Observable {\n const start = new Date(startDateTime);\n const dt = discountTypeToApi(discountType);\n const consumer = discountConsumerToApi(discountConsumer);\n\n const r = new CreateDiscountRequest({\n merchantId: merchantId,\n sku: sku,\n discountType: dt,\n amount: amount,\n start: start,\n resetEachPeriod: resetEachPeriodFlag,\n description: description,\n customerId: customerId,\n consumer: consumer,\n subscriptionId: subscriptionId,\n });\n\n if (endDateTime && endDateTime !== '') {\n r.end = new Date(endDateTime);\n }\n\n return this.discountApi.create(r).pipe(map((resp) => resp.id));\n }\n\n update(\n merchantId: string,\n id: string,\n discountType: DiscountType,\n amount: number,\n startDateTime: string,\n endDateTime?: string,\n resetEachPeriodFlag?: boolean,\n description?: string,\n customerId?: string,\n subscriptionId?: string,\n ): Observable> {\n const start = new Date(startDateTime);\n const dt = discountTypeToApi(discountType);\n\n const r = new UpdateDiscountRequest({\n merchantId: merchantId,\n id: id,\n discountType: dt,\n amount: amount,\n start: start,\n resetEachPeriod: resetEachPeriodFlag,\n description: description,\n customerId: customerId,\n subscriptionId: subscriptionId,\n });\n\n if (endDateTime && endDateTime !== '') {\n r.end = new Date(endDateTime);\n }\n return this.discountApi.update(r);\n }\n\n expire(merchantId: string, id: string): Observable> {\n return this.discountApi.expire(\n new ExpireDiscountRequest({\n merchantId: merchantId,\n id: id,\n }),\n );\n }\n}\n","export { Discount } from './discount';\nexport { DiscountType } from './discount_type';\nexport { DiscountService } from './discount.service';\nexport { ListDiscountsFilter } from './list-discount';\nexport { DiscountConsumer } from './discount_consumer';\n","import { AppliedDiscountInterface, DiscountType as APIDiscountType } from '@vendasta/billing';\nimport { DiscountType } from '../discount';\n\nexport function appliedDiscountTypeFromAPI(adt: APIDiscountType | undefined): DiscountType {\n switch (adt) {\n case APIDiscountType.DISCOUNT_TYPE_FIXED_AMOUNT_PER_UNIT:\n return DiscountType.FIXED_AMOUNT_PER_UNIT;\n case APIDiscountType.DISCOUNT_TYPE_FIXED_NUMBER_OF_UNITS:\n return DiscountType.FIXED_NUMBER_OF_UNITS;\n case APIDiscountType.DISCOUNT_TYPE_PERCENT_AMOUNT:\n return DiscountType.PERCENT_AMOUNT;\n }\n return DiscountType.FIXED_AMOUNT;\n}\n\nexport function appliedDiscountTypeToApi(adt: DiscountType): APIDiscountType {\n switch (adt) {\n case DiscountType.FIXED_AMOUNT_PER_UNIT:\n return APIDiscountType.DISCOUNT_TYPE_FIXED_AMOUNT_PER_UNIT;\n case DiscountType.FIXED_NUMBER_OF_UNITS:\n return APIDiscountType.DISCOUNT_TYPE_FIXED_NUMBER_OF_UNITS;\n case DiscountType.PERCENT_AMOUNT:\n return APIDiscountType.DISCOUNT_TYPE_PERCENT_AMOUNT;\n }\n return APIDiscountType.DISCOUNT_TYPE_FIXED_AMOUNT;\n}\n\nexport interface AppliedDiscount {\n type: DiscountType;\n value: number;\n totalAmount: number;\n description: string;\n referenceId: string;\n}\n\nexport function appliedDiscountFromApi(ad: AppliedDiscountInterface): AppliedDiscount {\n return {\n type: appliedDiscountTypeFromAPI(ad.type),\n value: ad.value || 0,\n totalAmount: ad.totalAmount || 0,\n description: ad.description || '',\n referenceId: ad.referenceId || '',\n };\n}\n\nexport function appliedDiscountToApi(ad: AppliedDiscount): AppliedDiscountInterface {\n return {\n type: appliedDiscountTypeToApi(ad.type),\n value: ad.value || 0,\n totalAmount: ad.totalAmount || 0,\n description: ad.description || '',\n referenceId: ad.referenceId || '',\n };\n}\n\n/** @deprecated use Discount interface from billing/discount */\nexport interface Discount {\n value: number;\n type: string;\n startDate: Date;\n id?: number;\n endDate?: Date;\n total?: number;\n}\n","export { AppliedDiscount, appliedDiscountFromApi, Discount } from './applied_discount';\n","import { Note as ApiNote } from '@vendasta/billing/lib/_internal/objects/invoice';\nimport { Note } from '../invoice/invoice';\n\nexport function convertAPINote(note: ApiNote): Note | undefined {\n return note ? { message: note.message } : {};\n}\n\nexport const isNote = (n: Note | undefined): n is Note => {\n return n ? !!n.message : false;\n};\n","import { RetailCustomerConfiguration as ApiRetailCustomerConfiguration } from '@vendasta/billing';\n\nexport interface RetailCustomerConfiguration {\n merchantId: string;\n customerId: string;\n contactId: string;\n additionalContactIds?: string[];\n autoGenerateRetailSubscriptions?: boolean;\n autoPost?: boolean;\n autoGenerate?: boolean;\n useTemplateInvoice?: boolean;\n collectionMethod?: CollectionMethod;\n invoiceDay?: number;\n netD?: number;\n memo?: string;\n nextInvoiceDate?: Date;\n}\n\nexport enum CollectionMethod {\n UNSET = '',\n MANUAL_COLLECTION = 'Manual Collection',\n CHARGE_AUTOMATICALLY = 'Charge Automatically',\n SEND_EMAIL = 'Send Email',\n}\n\nexport enum CollectionMethodAPI {\n UNSET = '',\n MANUAL_COLLECTION = 'manual-collection',\n CHARGE_AUTOMATICALLY = 'charge-automatically',\n SEND_EMAIL = 'send-email',\n}\n\nexport function collectionMethodToApi(m: CollectionMethod | undefined | string): string {\n switch (m) {\n case CollectionMethod.MANUAL_COLLECTION:\n return CollectionMethodAPI.MANUAL_COLLECTION;\n case CollectionMethod.CHARGE_AUTOMATICALLY:\n return CollectionMethodAPI.CHARGE_AUTOMATICALLY;\n case CollectionMethod.SEND_EMAIL:\n return CollectionMethodAPI.SEND_EMAIL;\n default:\n return CollectionMethodAPI.UNSET;\n }\n}\n\nexport function collectionMethodFromApi(m: string): CollectionMethod {\n switch (m) {\n case CollectionMethodAPI.MANUAL_COLLECTION:\n return CollectionMethod.MANUAL_COLLECTION;\n case CollectionMethodAPI.CHARGE_AUTOMATICALLY:\n return CollectionMethod.CHARGE_AUTOMATICALLY;\n case CollectionMethodAPI.SEND_EMAIL:\n return CollectionMethod.SEND_EMAIL;\n default:\n return CollectionMethod.UNSET;\n }\n}\n\nexport function retailCustomerConfigurationFromApi(\n config: ApiRetailCustomerConfiguration,\n): RetailCustomerConfiguration {\n return {\n merchantId: config.merchantId || '',\n customerId: config.customerId || '',\n contactId: config.contactId || '',\n additionalContactIds: config.additionalContactIds ?? [],\n autoGenerateRetailSubscriptions: config.autoGenerateRetailSubscriptions || false,\n autoPost: config.autoPost || false,\n autoGenerate: config.autoGenerate || false,\n useTemplateInvoice: config.useTemplateInvoice || false,\n collectionMethod: collectionMethodFromApi(config.collectionMethod),\n invoiceDay: config.invoiceDay || 0,\n netD: config.netD || 7,\n memo: config.memo || '',\n nextInvoiceDate: config.nextInvoiceDate,\n };\n}\n","export { RetailCustomerConfigurationService } from './retail-customer-configuration.service';\nexport * from './retail-customer-configuration';\n","import { TaxRateInterface } from '@vendasta/billing';\n\nexport const isTaxRate = (tr: TaxRate | undefined): tr is TaxRate => {\n return !!tr;\n};\n\nexport interface TaxRate {\n id?: string;\n merchantId?: string;\n countryCode?: string;\n stateCode?: string;\n name?: string;\n description?: string;\n percentage?: number;\n accountingSystemId?: string;\n}\n\nexport function taxRateFromApi(apiTaxRate: TaxRateInterface): TaxRate {\n return {\n id: apiTaxRate.id || '',\n merchantId: apiTaxRate.merchantId || '',\n countryCode: apiTaxRate.countryCode || '',\n stateCode: apiTaxRate.stateCode || '',\n name: apiTaxRate.name || '',\n description: apiTaxRate.description || '',\n percentage: apiTaxRate.percentage || 0.0,\n accountingSystemId: apiTaxRate.accountingSystemId || '',\n };\n}\n\nexport interface ListTaxRateFilter {\n merchantId?: string;\n includeArchived?: boolean;\n}\n\nexport interface CalculateTaxResponse {\n taxableAmount: number;\n taxRates: TaxRate[];\n}\n\nexport interface LineItem {\n sku: string;\n amount: number;\n}\n\nexport interface AppliedTax {\n amount: number;\n taxRateId: string;\n name: string;\n percentage: number;\n description: string;\n}\n\nexport interface CalculateLineItemsTaxResponse {\n appliedTaxes: AppliedTax[];\n lineItemTaxes: LineItem[];\n totalTaxableAmount: number;\n taxRates: TaxRate[];\n}\n","import { HttpResponse } from '@angular/common/http';\nimport { Injectable } from '@angular/core';\nimport { Observable, of } from 'rxjs';\nimport { catchError, map } from 'rxjs/operators';\nimport { PagedResponse } from '../core';\nimport {\n ArchiveTaxRequest,\n CalculateLineItemTaxesRequest,\n CalculateTaxRequest,\n CreateTaxRequest,\n GetMultiTaxRequest,\n ListTaxRequest,\n PagedRequestOptions,\n TaxApiService,\n UpdateTaxRequest,\n CalculateLineItemTaxesResponse,\n} from '@vendasta/billing';\nimport {\n CalculateLineItemsTaxResponse,\n CalculateTaxResponse,\n ListTaxRateFilter,\n TaxRate,\n taxRateFromApi,\n LineItem,\n} from './tax-rate';\n\n@Injectable({ providedIn: 'root' })\nexport class TaxRateService {\n constructor(private taxRateApi: TaxApiService) {}\n\n // NOTE: use calculateLineItems for more accurate precision\n calculate(merchantId: string, customerId: string, amount: number): Observable {\n const r = new CalculateTaxRequest({\n merchantId: merchantId,\n customerId: customerId,\n amount: amount,\n });\n return this.taxRateApi.calculate(r).pipe(\n map((response) => {\n const taxRates = (response.taxRates || []).map((item) => taxRateFromApi(item));\n return {\n taxableAmount: response.taxableAmount || 0,\n taxRates: taxRates,\n };\n }),\n );\n }\n\n // calculateLineItems calculates tax per line item and in total with a precision of 4 decimal places\n calculateLineItems(\n merchantId: string,\n customerId: string,\n lineItems: LineItem[],\n ): Observable {\n const r = new CalculateLineItemTaxesRequest({\n merchantId: merchantId,\n customerId: customerId,\n lineItems: lineItems,\n });\n return this.taxRateApi.calculateLineItems(r).pipe(\n map((response) => {\n return this.buildCalculateLineItemsTaxResponse(response);\n }),\n catchError(() => {\n return of({} as CalculateLineItemsTaxResponse);\n }),\n );\n }\n\n private buildCalculateLineItemsTaxResponse(response: CalculateLineItemTaxesResponse) {\n const taxRates = (response.taxRates || []).map((item) => taxRateFromApi(item));\n const lineItemTaxes = (response.lineItemTaxes || []).map((item) => {\n return {\n sku: item.sku,\n amount: item.taxableAmount,\n };\n });\n return {\n appliedTaxes: response.appliedTaxes || [],\n lineItemTaxes: lineItemTaxes,\n totalTaxableAmount: response.totalTaxableAmount || 0,\n taxRates: taxRates,\n };\n }\n\n create(\n merchantId: string,\n countryCode: string,\n stateCode: string,\n name: string,\n description: string,\n percentage: number,\n accountingSystemId: string,\n ): Observable> {\n const r = new CreateTaxRequest({\n merchantId: merchantId,\n countryCode: countryCode,\n stateCode: stateCode,\n name: name,\n description: description,\n percentage: percentage,\n accountingSystemId: accountingSystemId,\n });\n\n return this.taxRateApi.create(r);\n }\n\n update(\n merchantId: string,\n id: string,\n countryCode: string,\n stateCode: string,\n name: string,\n description: string,\n percentage: number,\n accountingSystemId: string,\n ): Observable> {\n const r = new UpdateTaxRequest({\n merchantId: merchantId,\n id: id,\n countryCode: countryCode,\n stateCode: stateCode,\n name: name,\n description: description,\n percentage: percentage,\n accountingSystemId: accountingSystemId,\n });\n\n return this.taxRateApi.update(r);\n }\n\n list(filters: ListTaxRateFilter, cursor: string, pageSize: number): Observable> {\n const req = new ListTaxRequest({\n filters: filters,\n pagingOptions: new PagedRequestOptions({ cursor, pageSize }),\n });\n return this.taxRateApi.list(req).pipe(\n map((response) => {\n const taxRates = (response.taxRates || []).map((item) => taxRateFromApi(item));\n return new PagedResponse(taxRates, response.pagingMetadata.nextCursor, response.pagingMetadata.hasMore);\n }),\n );\n }\n\n getMulti(merchantId: string, ids: string[]): Observable {\n const req = new GetMultiTaxRequest({\n merchantId: merchantId,\n ids: ids,\n });\n return this.taxRateApi.getMulti(req).pipe(\n map((response) => {\n const taxRates = (response.taxRates || []).map((item) => taxRateFromApi(item));\n return taxRates;\n }),\n );\n }\n\n archive(merchantId: string, id: string): Observable> {\n const req = new ArchiveTaxRequest({\n merchantId,\n id,\n });\n return this.taxRateApi.archive(req);\n }\n}\n","export {\n CalculateTaxResponse,\n ListTaxRateFilter,\n TaxRate,\n isTaxRate,\n CalculateLineItemsTaxResponse,\n LineItem,\n AppliedTax,\n} from './tax-rate';\nexport { TaxRateService } from './tax-rate.service';\n","import {\n AppliedTaxRate as ApiAppliedTaxRate,\n Invoice as ApiInvoice,\n InvoiceCustomerAddress as ApiInvoiceCustomerAddress,\n InvoiceItem as ApiInvoiceItem,\n InvoiceStatus as ApiInvoiceStatus,\n TaxRate as ApiTaxRate,\n InvoiceStatus as InternalInvoiceStatus,\n ListInvoicesRequestFilters,\n ListInvoicesRequestFiltersDateFilterDateField,\n} from '@vendasta/billing';\nimport { AppliedBundle, convertApiAppliedBundle, isAppliedBundle } from '../applied_bundle';\nimport { AppliedDiscount, appliedDiscountFromApi } from '../applied_discount';\nimport { convertAPINote, isNote } from '../note/note';\nimport { Currency, currencyFromApi } from '../pricing';\nimport { CollectionMethod, collectionMethodFromApi } from '../retail-customer-configuration';\nimport { TaxRate, isTaxRate } from '../tax-rate';\nimport { ListInvoicesFilter } from './list-invoice';\n\nexport enum InvoicePDFType {\n INVOICE = 'invoice',\n RECEIPT = 'receipt',\n}\n\nexport enum InvoiceStatus {\n DRAFT = 'Draft',\n DUE = 'Due',\n PAID = 'Paid',\n VOID = 'Void',\n}\n\nexport enum InvoiceDateField {\n CREATED = 'Created',\n}\n\nexport enum InvoiceOrigin {\n MANUAL = 'Manual',\n SALES_ORDER = 'Sales Order',\n RENEWAL = 'Renewal',\n TEMPLATE = 'Template',\n UNSET = 'Unset',\n}\n\nexport enum InvoiceOriginAPI {\n MANUAL = 'manual',\n SALES_ORDER = 'sales-order',\n RENEWAL = 'renewal',\n TEMPLATE = 'template',\n}\n\nconst isInvoiceItem = (ii: InvoiceItem | undefined): ii is InvoiceItem => {\n return !!ii;\n};\n\nexport interface InvoiceItem {\n id: string;\n sku: string;\n amount: number;\n quantity: number;\n description: string;\n subtotal: number;\n total: number;\n appliedTaxes?: AppliedTaxRate[];\n appliedDiscounts?: AppliedDiscount[];\n taxRates: TaxRate[];\n // DEPRECATED: a bundle is now represented as single item on the invoice rather than it being comprised of all individual products within said bundle.\n // New invoices will not be created with a bundle ID or bundle instance ID, however, we still need to support the fields to maintain the legacy bundle view so that we do not\n // break the historical representation of past invoices.\n bundleId: string;\n // DEPRECATED\n bundleInstanceId?: string;\n}\n\nexport const isInvoice = (i: Invoice | undefined): i is Invoice => {\n return !!i;\n};\n\nexport interface Invoice {\n id: string;\n number: string;\n customerId: string;\n customerName: string;\n contactId: string;\n status: InvoiceStatus;\n subtotal: number;\n discountTotal: number;\n total: number;\n paid?: Date;\n issued?: Date;\n due?: Date;\n created?: Date;\n updated?: Date;\n voided?: Date;\n autoAdvance?: Date;\n items: InvoiceItem[];\n currency: Currency;\n orderId: string;\n appliedTaxes: AppliedTaxRate[];\n defaultTaxRates: TaxRate[];\n // DEPRECATED: a bundle is now represented as single item on the invoice rather than it being comprised of all individual products within said bundle.\n // New invoices will not have applied bundles, however, we still need to support the field to maintain the legacy bundle view so that we do not\n // break the historical representation of past invoices.\n appliedBundles: AppliedBundle[];\n origin: InvoiceOrigin;\n collectionMethod: CollectionMethod;\n memo: string;\n defaultPaymentMethod: string;\n customerAddress: InvoiceCustomerAddress;\n externalCustomerIdentifier: string;\n notes: Note[];\n additionalContactIds?: string[];\n}\n\nexport interface Note {\n message: string;\n}\n\nconst isAppliedTaxRate = (tr: AppliedTaxRate | undefined): tr is AppliedTaxRate => {\n return !!tr;\n};\n\nexport interface AppliedTaxRate {\n amount?: number;\n taxRateId?: string;\n percentage?: number;\n name?: string;\n description?: string;\n}\n\nfunction convertApiStatus(s: ApiInvoiceStatus): InvoiceStatus {\n switch (s) {\n case ApiInvoiceStatus.DUE:\n return InvoiceStatus.DUE;\n case ApiInvoiceStatus.PAID:\n return InvoiceStatus.PAID;\n case ApiInvoiceStatus.VOID:\n return InvoiceStatus.VOID;\n default:\n return InvoiceStatus.DRAFT;\n }\n}\n\nfunction invoiceStatusToApi(status: InvoiceStatus): InternalInvoiceStatus {\n switch (status) {\n case InvoiceStatus.DUE:\n return InternalInvoiceStatus.DUE;\n case InvoiceStatus.PAID:\n return InternalInvoiceStatus.PAID;\n case InvoiceStatus.VOID:\n return InternalInvoiceStatus.VOID;\n default:\n return InternalInvoiceStatus.DRAFT;\n }\n}\n\nfunction invoiceDateFilterFieldToApi(dateField: InvoiceDateField): ListInvoicesRequestFiltersDateFilterDateField {\n switch (dateField) {\n default:\n return ListInvoicesRequestFiltersDateFilterDateField.CREATED;\n }\n}\n\nfunction convertApiOrigin(s: string): InvoiceOrigin {\n switch (s) {\n case InvoiceOriginAPI.MANUAL:\n return InvoiceOrigin.MANUAL;\n case InvoiceOriginAPI.SALES_ORDER:\n return InvoiceOrigin.SALES_ORDER;\n case InvoiceOriginAPI.RENEWAL:\n return InvoiceOrigin.RENEWAL;\n case InvoiceOriginAPI.TEMPLATE:\n return InvoiceOrigin.TEMPLATE;\n default:\n return InvoiceOrigin.UNSET;\n }\n}\n\nexport function convertApiAppliedTaxRate(at: ApiAppliedTaxRate): AppliedTaxRate | undefined {\n if (!at) {\n return undefined;\n }\n return {\n amount: at.amount || 0,\n taxRateId: at.taxRateId || '',\n percentage: at.percentage || 0,\n name: at.name || '',\n description: at.description || '',\n };\n}\n\nexport function convertAppliedTaxRate(at: AppliedTaxRate): ApiAppliedTaxRate | undefined {\n if (!at) {\n return undefined;\n }\n return new ApiAppliedTaxRate({\n amount: at.amount || 0,\n taxRateId: at.taxRateId || '',\n });\n}\n\nexport function convertApiTaxRate(tr: ApiTaxRate): TaxRate | undefined {\n if (!tr) {\n return undefined;\n }\n return {\n id: tr.id || '',\n name: tr.name || '',\n description: tr.description || '',\n percentage: tr.percentage || 0,\n };\n}\n\nexport function convertTaxRate(tr: TaxRate): ApiTaxRate | undefined {\n if (!tr) {\n return undefined;\n }\n return new ApiTaxRate({\n id: tr.id,\n name: tr.name,\n description: tr.description,\n percentage: tr.percentage,\n });\n}\n\nexport interface InvoiceCustomerAddress {\n address?: string;\n address2?: string;\n city?: string;\n state?: string;\n zip?: string;\n country?: string;\n}\n\nfunction convertApiCustomerAddress(ca: ApiInvoiceCustomerAddress): InvoiceCustomerAddress {\n return {\n address: ca?.address || '',\n address2: ca?.address2 || '',\n city: ca?.city || '',\n state: ca?.state || '',\n zip: ca?.zip || '',\n country: ca?.country || '',\n };\n}\n\nexport function convertApiInvoiceItem(ii: ApiInvoiceItem): InvoiceItem | undefined {\n if (!ii) {\n return undefined;\n }\n\n const appliedTaxes: AppliedTaxRate[] = (ii.appliedTaxes || [])\n .map((at) => convertApiAppliedTaxRate(at))\n .filter(isAppliedTaxRate);\n const taxRates: TaxRate[] = (ii.taxRates || []).map((tr) => convertApiTaxRate(tr)).filter(isTaxRate);\n const appliedDiscounts: AppliedDiscount[] = (ii.discounts || []).map((ad) => appliedDiscountFromApi(ad));\n\n return {\n id: ii.id || '',\n sku: ii.sku || '',\n amount: ii.amount || 0,\n quantity: ii.quantity || 0,\n description: ii.description || '',\n subtotal: ii.subtotal || 0,\n total: ii.total || 0,\n appliedDiscounts: appliedDiscounts || [],\n appliedTaxes: appliedTaxes || [],\n taxRates: taxRates || [],\n bundleId: ii.bundleId || '',\n bundleInstanceId: ii.bundleInstanceId || '',\n };\n}\n\nexport function convertInvoiceItem(ii: InvoiceItem): ApiInvoiceItem | undefined {\n if (!ii) {\n return undefined;\n }\n\n return new ApiInvoiceItem({\n sku: ii.sku,\n amount: ii.amount,\n quantity: ii.quantity,\n description: ii.description,\n total: ii.total,\n });\n}\n\nexport function convertApiInvoice(i: ApiInvoice): Invoice {\n const zeroDate = new Date('0001-01-01T00:00:00Z').valueOf();\n const invoiceItems: InvoiceItem[] = (i.items || []).map((ii) => convertApiInvoiceItem(ii)).filter(isInvoiceItem);\n const appliedTaxes: AppliedTaxRate[] = (i.appliedTaxes || [])\n .map((at) => convertApiAppliedTaxRate(at))\n .filter(isAppliedTaxRate);\n const taxRates: TaxRate[] = (i.defaultTaxRates || []).map((tr) => convertApiTaxRate(tr)).filter(isTaxRate);\n const appliedBundles: AppliedBundle[] = (i.appliedBundles || [])\n .map((at) => convertApiAppliedBundle(at))\n .filter(isAppliedBundle);\n const notes: Note[] = (i.notes || []).map((n) => convertAPINote(n)).filter(isNote);\n\n return {\n id: i.id || '',\n number: i.number || '',\n customerId: i.customerId || '',\n customerName: i.customerName || '',\n contactId: i.contactId || '',\n status: convertApiStatus(i.status),\n subtotal: i.subtotal || 0,\n total: i.total || 0,\n discountTotal: i.amountDiscount || 0,\n paid: i.paid && i.paid.valueOf() !== zeroDate ? i.paid : undefined,\n issued: i.issued && i.issued.valueOf() !== zeroDate ? i.issued : undefined,\n due: i.due && i.due.valueOf() !== zeroDate ? i.due : undefined,\n voided: i.voided && i.voided.valueOf() !== zeroDate ? i.voided : undefined,\n created: i.created.valueOf() !== zeroDate ? i.created : undefined,\n updated: i.updated.valueOf() !== zeroDate ? i.updated : undefined,\n autoAdvance: i.autoAdvance.valueOf() !== zeroDate ? i.autoAdvance : undefined,\n items: invoiceItems || [],\n currency: currencyFromApi(i.currency),\n orderId: i.orderId || '',\n appliedTaxes: appliedTaxes || [],\n defaultTaxRates: taxRates || [],\n appliedBundles: appliedBundles || [],\n origin: convertApiOrigin(i.origin),\n collectionMethod: collectionMethodFromApi(i.collectionMethod),\n memo: i.memo || '',\n defaultPaymentMethod: i.defaultPaymentMethod || '',\n customerAddress: convertApiCustomerAddress(i.customerAddress),\n externalCustomerIdentifier: i.externalCustomerIdentifier || '',\n notes: notes || [],\n additionalContactIds: i.additionalContactIds || [],\n };\n}\n\nexport function listInvoiceFiltersToApi(filters: ListInvoicesFilter): ListInvoicesRequestFilters {\n return new ListInvoicesRequestFilters({\n ...filters,\n statuses: (filters.statuses || []).map((s) => invoiceStatusToApi(s)),\n origins: filters.origins,\n collectionMethods: filters.collectionMethods,\n dateFilter: {\n dateGte: filters.dateFilter?.dateGte,\n dateLte: filters.dateFilter?.dateLte,\n dateField: filters.dateFilter?.dateField ? invoiceDateFilterFieldToApi(filters.dateFilter.dateField) : undefined,\n },\n });\n}\n","import * as i0 from '@angular/core';\nimport { Injectable } from '@angular/core';\nimport * as i1 from '@angular/common/http';\nimport { HttpHeaders } from '@angular/common/http';\nimport { map, share } from 'rxjs/operators';\n\n// *********************************\n// Code generated by sdkgen\n// DO NOT EDIT!.\n//\n// Enums.\n// *********************************\nvar ServiceProviderType = /*#__PURE__*/function (ServiceProviderType) {\n ServiceProviderType[ServiceProviderType[\"SERVICE_PROVIDER_TYPE_PRODUCT\"] = 0] = \"SERVICE_PROVIDER_TYPE_PRODUCT\";\n ServiceProviderType[ServiceProviderType[\"SERVICE_PROVIDER_TYPE_PLATFORM\"] = 1] = \"SERVICE_PROVIDER_TYPE_PLATFORM\";\n return ServiceProviderType;\n}(ServiceProviderType || {});\n// *********************************\n// Code generated by sdkgen\n// DO NOT EDIT!.\n//\n// Enums Index.\n// *********************************\n\nfunction enumStringToValue$7(enumRef, value) {\n if (typeof value === 'number') {\n return value;\n }\n return enumRef[value];\n}\nclass Access {\n static fromProto(proto) {\n let m = new Access();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.scope !== 'undefined') {\n toReturn['scope'] = this.scope;\n }\n if (typeof this.public !== 'undefined') {\n toReturn['public'] = this.public;\n }\n return toReturn;\n }\n}\nfunction enumStringToValue$6(enumRef, value) {\n if (typeof value === 'number') {\n return value;\n }\n return enumRef[value];\n}\nclass ServiceContextAccount {\n static fromProto(proto) {\n let m = new ServiceContextAccount();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.accountId !== 'undefined') {\n toReturn['accountId'] = this.accountId;\n }\n return toReturn;\n }\n}\nclass AutoImpersonation {\n static fromProto(proto) {\n let m = new AutoImpersonation();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n return toReturn;\n }\n}\nclass ServiceContextBrand {\n static fromProto(proto) {\n let m = new ServiceContextBrand();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.groupPath !== 'undefined') {\n toReturn['groupPath'] = this.groupPath;\n }\n return toReturn;\n }\n}\nclass NoImpersonation {\n static fromProto(proto) {\n let m = new NoImpersonation();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n return toReturn;\n }\n}\nclass ServiceContextPartner {\n static fromProto(proto) {\n let m = new ServiceContextPartner();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.partnerId !== 'undefined') {\n toReturn['partnerId'] = this.partnerId;\n }\n return toReturn;\n }\n}\nclass ServiceContext {\n static fromProto(proto) {\n let m = new ServiceContext();\n m = Object.assign(m, proto);\n if (proto.account) {\n m.account = ServiceContextAccount.fromProto(proto.account);\n }\n if (proto.partner) {\n m.partner = ServiceContextPartner.fromProto(proto.partner);\n }\n if (proto.superAdmin) {\n m.superAdmin = ServiceContextSuperAdmin.fromProto(proto.superAdmin);\n }\n if (proto.brand) {\n m.brand = ServiceContextBrand.fromProto(proto.brand);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.account !== 'undefined' && this.account !== null) {\n toReturn['account'] = 'toApiJson' in this.account ? this.account.toApiJson() : this.account;\n }\n if (typeof this.partner !== 'undefined' && this.partner !== null) {\n toReturn['partner'] = 'toApiJson' in this.partner ? this.partner.toApiJson() : this.partner;\n }\n if (typeof this.superAdmin !== 'undefined' && this.superAdmin !== null) {\n toReturn['superAdmin'] = 'toApiJson' in this.superAdmin ? this.superAdmin.toApiJson() : this.superAdmin;\n }\n if (typeof this.brand !== 'undefined' && this.brand !== null) {\n toReturn['brand'] = 'toApiJson' in this.brand ? this.brand.toApiJson() : this.brand;\n }\n return toReturn;\n }\n}\nclass ServiceContextSuperAdmin {\n static fromProto(proto) {\n let m = new ServiceContextSuperAdmin();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n return toReturn;\n }\n}\nfunction enumStringToValue$5(enumRef, value) {\n if (typeof value === 'number') {\n return value;\n }\n return enumRef[value];\n}\nclass AcsUrl {\n static fromProto(proto) {\n let m = new AcsUrl();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.binding !== 'undefined') {\n toReturn['binding'] = this.binding;\n }\n if (typeof this.location !== 'undefined') {\n toReturn['location'] = this.location;\n }\n return toReturn;\n }\n}\nclass SamlServiceProviderConfig {\n static fromProto(proto) {\n let m = new SamlServiceProviderConfig();\n m = Object.assign(m, proto);\n if (proto.acsUrls) {\n m.acsUrls = proto.acsUrls.map(AcsUrl.fromProto);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.entityId !== 'undefined') {\n toReturn['entityId'] = this.entityId;\n }\n if (typeof this.acsUrls !== 'undefined' && this.acsUrls !== null) {\n toReturn['acsUrls'] = 'toApiJson' in this.acsUrls ? this.acsUrls.toApiJson() : this.acsUrls;\n }\n if (typeof this.signedAuthRequest !== 'undefined') {\n toReturn['signedAuthRequest'] = this.signedAuthRequest;\n }\n if (typeof this.wantSignedAssertion !== 'undefined') {\n toReturn['wantSignedAssertion'] = this.wantSignedAssertion;\n }\n if (typeof this.wantEncryptedAssertion !== 'undefined') {\n toReturn['wantEncryptedAssertion'] = this.wantEncryptedAssertion;\n }\n if (typeof this.nameIdFormats !== 'undefined') {\n toReturn['nameIdFormats'] = this.nameIdFormats;\n }\n if (typeof this.signingCertificate !== 'undefined') {\n toReturn['signingCertificate'] = this.signingCertificate;\n }\n if (typeof this.encryptionCertificate !== 'undefined') {\n toReturn['encryptionCertificate'] = this.encryptionCertificate;\n }\n if (typeof this.serviceProviderConfigId !== 'undefined') {\n toReturn['serviceProviderConfigId'] = this.serviceProviderConfigId;\n }\n if (typeof this.serviceProviderId !== 'undefined') {\n toReturn['serviceProviderId'] = this.serviceProviderId;\n }\n return toReturn;\n }\n}\nclass ServiceProviderConfig {\n static fromProto(proto) {\n let m = new ServiceProviderConfig();\n m = Object.assign(m, proto);\n if (proto.serviceProviderType) {\n m.serviceProviderType = enumStringToValue$5(ServiceProviderType, proto.serviceProviderType);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.serviceProviderId !== 'undefined') {\n toReturn['serviceProviderId'] = this.serviceProviderId;\n }\n if (typeof this.entryUrl !== 'undefined') {\n toReturn['entryUrl'] = this.entryUrl;\n }\n if (typeof this.sessionUrl !== 'undefined') {\n toReturn['sessionUrl'] = this.sessionUrl;\n }\n if (typeof this.primaryDomain !== 'undefined') {\n toReturn['primaryDomain'] = this.primaryDomain;\n }\n if (typeof this.alternativeDomains !== 'undefined') {\n toReturn['alternativeDomains'] = this.alternativeDomains;\n }\n if (typeof this.ownedAndOperated !== 'undefined') {\n toReturn['ownedAndOperated'] = this.ownedAndOperated;\n }\n if (typeof this.logoutUrl !== 'undefined') {\n toReturn['logoutUrl'] = this.logoutUrl;\n }\n if (typeof this.serviceProviderType !== 'undefined') {\n toReturn['serviceProviderType'] = this.serviceProviderType;\n }\n if (typeof this.partnerId !== 'undefined') {\n toReturn['partnerId'] = this.partnerId;\n }\n return toReturn;\n }\n}\nfunction enumStringToValue$4(enumRef, value) {\n if (typeof value === 'number') {\n return value;\n }\n return enumRef[value];\n}\nclass Oauth2Config {\n static fromProto(proto) {\n let m = new Oauth2Config();\n m = Object.assign(m, proto);\n if (proto.created) {\n m.created = new Date(proto.created);\n }\n if (proto.updated) {\n m.updated = new Date(proto.updated);\n }\n if (proto.deleted) {\n m.deleted = new Date(proto.deleted);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.clientId !== 'undefined') {\n toReturn['clientId'] = this.clientId;\n }\n if (typeof this.serviceProviderId !== 'undefined') {\n toReturn['serviceProviderId'] = this.serviceProviderId;\n }\n if (typeof this.name !== 'undefined') {\n toReturn['name'] = this.name;\n }\n if (typeof this.redirectUris !== 'undefined') {\n toReturn['redirectUris'] = this.redirectUris;\n }\n if (typeof this.created !== 'undefined' && this.created !== null) {\n toReturn['created'] = 'toApiJson' in this.created ? this.created.toApiJson() : this.created;\n }\n if (typeof this.updated !== 'undefined' && this.updated !== null) {\n toReturn['updated'] = 'toApiJson' in this.updated ? this.updated.toApiJson() : this.updated;\n }\n if (typeof this.deleted !== 'undefined' && this.deleted !== null) {\n toReturn['deleted'] = 'toApiJson' in this.deleted ? this.deleted.toApiJson() : this.deleted;\n }\n if (typeof this.logoutUri !== 'undefined') {\n toReturn['logoutUri'] = this.logoutUri;\n }\n return toReturn;\n }\n}\nfunction enumStringToValue$3(enumRef, value) {\n if (typeof value === 'number') {\n return value;\n }\n return enumRef[value];\n}\nclass Scope {\n static fromProto(proto) {\n let m = new Scope();\n m = Object.assign(m, proto);\n if (proto.created) {\n m.created = new Date(proto.created);\n }\n if (proto.updated) {\n m.updated = new Date(proto.updated);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.id !== 'undefined') {\n toReturn['id'] = this.id;\n }\n if (typeof this.name !== 'undefined') {\n toReturn['name'] = this.name;\n }\n if (typeof this.description !== 'undefined') {\n toReturn['description'] = this.description;\n }\n if (typeof this.created !== 'undefined' && this.created !== null) {\n toReturn['created'] = 'toApiJson' in this.created ? this.created.toApiJson() : this.created;\n }\n if (typeof this.updated !== 'undefined' && this.updated !== null) {\n toReturn['updated'] = 'toApiJson' in this.updated ? this.updated.toApiJson() : this.updated;\n }\n return toReturn;\n }\n}\nfunction enumStringToValue$2(enumRef, value) {\n if (typeof value === 'number') {\n return value;\n }\n return enumRef[value];\n}\nclass IdentityProviderConfiguration {\n static fromProto(proto) {\n let m = new IdentityProviderConfiguration();\n m = Object.assign(m, proto);\n if (proto.created) {\n m.created = new Date(proto.created);\n }\n if (proto.updated) {\n m.updated = new Date(proto.updated);\n }\n if (proto.openId) {\n m.openId = OpenIDConnectConfiguration.fromProto(proto.openId);\n }\n if (proto.oauth2) {\n m.oauth2 = OAuth2Configuration.fromProto(proto.oauth2);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.partnerId !== 'undefined') {\n toReturn['partnerId'] = this.partnerId;\n }\n if (typeof this.created !== 'undefined' && this.created !== null) {\n toReturn['created'] = 'toApiJson' in this.created ? this.created.toApiJson() : this.created;\n }\n if (typeof this.updated !== 'undefined' && this.updated !== null) {\n toReturn['updated'] = 'toApiJson' in this.updated ? this.updated.toApiJson() : this.updated;\n }\n if (typeof this.clientId !== 'undefined') {\n toReturn['clientId'] = this.clientId;\n }\n if (typeof this.openId !== 'undefined' && this.openId !== null) {\n toReturn['openId'] = 'toApiJson' in this.openId ? this.openId.toApiJson() : this.openId;\n }\n if (typeof this.oauth2 !== 'undefined' && this.oauth2 !== null) {\n toReturn['oauth2'] = 'toApiJson' in this.oauth2 ? this.oauth2.toApiJson() : this.oauth2;\n }\n return toReturn;\n }\n}\nclass OAuth2Configuration {\n static fromProto(proto) {\n let m = new OAuth2Configuration();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.authorizationEndpoint !== 'undefined') {\n toReturn['authorizationEndpoint'] = this.authorizationEndpoint;\n }\n if (typeof this.tokenEndpoint !== 'undefined') {\n toReturn['tokenEndpoint'] = this.tokenEndpoint;\n }\n if (typeof this.userinfoEndpoint !== 'undefined') {\n toReturn['userinfoEndpoint'] = this.userinfoEndpoint;\n }\n return toReturn;\n }\n}\nclass OpenIDConnectConfiguration {\n static fromProto(proto) {\n let m = new OpenIDConnectConfiguration();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.discoveryEndpoint !== 'undefined') {\n toReturn['discoveryEndpoint'] = this.discoveryEndpoint;\n }\n return toReturn;\n }\n}\nfunction enumStringToValue$1(enumRef, value) {\n if (typeof value === 'number') {\n return value;\n }\n return enumRef[value];\n}\nclass GetMultiConfigResponseConfigContainer {\n static fromProto(proto) {\n let m = new GetMultiConfigResponseConfigContainer();\n m = Object.assign(m, proto);\n if (proto.config) {\n m.config = Oauth2Config.fromProto(proto.config);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.config !== 'undefined' && this.config !== null) {\n toReturn['config'] = 'toApiJson' in this.config ? this.config.toApiJson() : this.config;\n }\n return toReturn;\n }\n}\nclass CreateConfigRequest {\n static fromProto(proto) {\n let m = new CreateConfigRequest();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.name !== 'undefined') {\n toReturn['name'] = this.name;\n }\n if (typeof this.redirectUris !== 'undefined') {\n toReturn['redirectUris'] = this.redirectUris;\n }\n if (typeof this.serviceProviderId !== 'undefined') {\n toReturn['serviceProviderId'] = this.serviceProviderId;\n }\n if (typeof this.logoutUri !== 'undefined') {\n toReturn['logoutUri'] = this.logoutUri;\n }\n return toReturn;\n }\n}\nclass CreateConfigResponse {\n static fromProto(proto) {\n let m = new CreateConfigResponse();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.clientId !== 'undefined') {\n toReturn['clientId'] = this.clientId;\n }\n if (typeof this.clientSecret !== 'undefined') {\n toReturn['clientSecret'] = this.clientSecret;\n }\n return toReturn;\n }\n}\nclass CreateIdentityProviderConfigurationRequest {\n static fromProto(proto) {\n let m = new CreateIdentityProviderConfigurationRequest();\n m = Object.assign(m, proto);\n if (proto.openId) {\n m.openId = OpenIDConnectConfiguration.fromProto(proto.openId);\n }\n if (proto.oauth2) {\n m.oauth2 = OAuth2Configuration.fromProto(proto.oauth2);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.partnerId !== 'undefined') {\n toReturn['partnerId'] = this.partnerId;\n }\n if (typeof this.clientId !== 'undefined') {\n toReturn['clientId'] = this.clientId;\n }\n if (typeof this.clientSecret !== 'undefined') {\n toReturn['clientSecret'] = this.clientSecret;\n }\n if (typeof this.openId !== 'undefined' && this.openId !== null) {\n toReturn['openId'] = 'toApiJson' in this.openId ? this.openId.toApiJson() : this.openId;\n }\n if (typeof this.oauth2 !== 'undefined' && this.oauth2 !== null) {\n toReturn['oauth2'] = 'toApiJson' in this.oauth2 ? this.oauth2.toApiJson() : this.oauth2;\n }\n return toReturn;\n }\n}\nclass CreateSamlServiceProviderConfigRequest {\n static fromProto(proto) {\n let m = new CreateSamlServiceProviderConfigRequest();\n m = Object.assign(m, proto);\n if (proto.fields) {\n m.fields = SamlServiceProviderConfig.fromProto(proto.fields);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.fields !== 'undefined' && this.fields !== null) {\n toReturn['fields'] = 'toApiJson' in this.fields ? this.fields.toApiJson() : this.fields;\n }\n if (typeof this.metadataXmlString !== 'undefined') {\n toReturn['metadataXmlString'] = this.metadataXmlString;\n }\n if (typeof this.serviceProviderId !== 'undefined') {\n toReturn['serviceProviderId'] = this.serviceProviderId;\n }\n return toReturn;\n }\n}\nclass CreateSamlServiceProviderConfigResponse {\n static fromProto(proto) {\n let m = new CreateSamlServiceProviderConfigResponse();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.serviceProviderConfigId !== 'undefined') {\n toReturn['serviceProviderConfigId'] = this.serviceProviderConfigId;\n }\n return toReturn;\n }\n}\nclass CreateScopeRequest {\n static fromProto(proto) {\n let m = new CreateScopeRequest();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.id !== 'undefined') {\n toReturn['id'] = this.id;\n }\n if (typeof this.name !== 'undefined') {\n toReturn['name'] = this.name;\n }\n if (typeof this.description !== 'undefined') {\n toReturn['description'] = this.description;\n }\n return toReturn;\n }\n}\nclass CreateServiceProviderRequest {\n static fromProto(proto) {\n let m = new CreateServiceProviderRequest();\n m = Object.assign(m, proto);\n if (proto.serviceProvider) {\n m.serviceProvider = ServiceProviderConfig.fromProto(proto.serviceProvider);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.serviceProvider !== 'undefined' && this.serviceProvider !== null) {\n toReturn['serviceProvider'] = 'toApiJson' in this.serviceProvider ? this.serviceProvider.toApiJson() : this.serviceProvider;\n }\n return toReturn;\n }\n}\nclass DeleteConfigRequest {\n static fromProto(proto) {\n let m = new DeleteConfigRequest();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.clientId !== 'undefined') {\n toReturn['clientId'] = this.clientId;\n }\n return toReturn;\n }\n}\nclass DeleteIdentityProviderConfigurationRequest {\n static fromProto(proto) {\n let m = new DeleteIdentityProviderConfigurationRequest();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.partnerId !== 'undefined') {\n toReturn['partnerId'] = this.partnerId;\n }\n return toReturn;\n }\n}\nclass DeleteSAMLServiceProviderConfigRequest {\n static fromProto(proto) {\n let m = new DeleteSAMLServiceProviderConfigRequest();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.serviceProviderConfigId !== 'undefined') {\n toReturn['serviceProviderConfigId'] = this.serviceProviderConfigId;\n }\n return toReturn;\n }\n}\nclass DeleteScopeRequest {\n static fromProto(proto) {\n let m = new DeleteScopeRequest();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.scopeId !== 'undefined') {\n toReturn['scopeId'] = this.scopeId;\n }\n return toReturn;\n }\n}\nclass DeleteServiceProviderRequest {\n static fromProto(proto) {\n let m = new DeleteServiceProviderRequest();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.serviceProviderId !== 'undefined') {\n toReturn['serviceProviderId'] = this.serviceProviderId;\n }\n return toReturn;\n }\n}\nclass GetEntryURLRequest {\n static fromProto(proto) {\n let m = new GetEntryURLRequest();\n m = Object.assign(m, proto);\n if (proto.context) {\n m.context = ServiceContext.fromProto(proto.context);\n }\n if (proto.autoImpersonation) {\n m.autoImpersonation = AutoImpersonation.fromProto(proto.autoImpersonation);\n }\n if (proto.noImpersonation) {\n m.noImpersonation = NoImpersonation.fromProto(proto.noImpersonation);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.serviceProviderId !== 'undefined') {\n toReturn['serviceProviderId'] = this.serviceProviderId;\n }\n if (typeof this.context !== 'undefined' && this.context !== null) {\n toReturn['context'] = 'toApiJson' in this.context ? this.context.toApiJson() : this.context;\n }\n if (typeof this.path !== 'undefined') {\n toReturn['path'] = this.path;\n }\n if (typeof this.skipGatewayAuthentication !== 'undefined') {\n toReturn['skipGatewayAuthentication'] = this.skipGatewayAuthentication;\n }\n if (typeof this.impersonateeUserId !== 'undefined') {\n toReturn['impersonateeUserId'] = this.impersonateeUserId;\n }\n if (typeof this.autoImpersonation !== 'undefined' && this.autoImpersonation !== null) {\n toReturn['autoImpersonation'] = 'toApiJson' in this.autoImpersonation ? this.autoImpersonation.toApiJson() : this.autoImpersonation;\n }\n if (typeof this.explicitImpersonateeUserId !== 'undefined') {\n toReturn['explicitImpersonateeUserId'] = this.explicitImpersonateeUserId;\n }\n if (typeof this.noImpersonation !== 'undefined' && this.noImpersonation !== null) {\n toReturn['noImpersonation'] = 'toApiJson' in this.noImpersonation ? this.noImpersonation.toApiJson() : this.noImpersonation;\n }\n return toReturn;\n }\n}\nclass GetEntryURLResponse {\n static fromProto(proto) {\n let m = new GetEntryURLResponse();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.entryUrl !== 'undefined') {\n toReturn['entryUrl'] = this.entryUrl;\n }\n return toReturn;\n }\n}\nclass GetEntryURLWithCodeRequest {\n static fromProto(proto) {\n let m = new GetEntryURLWithCodeRequest();\n m = Object.assign(m, proto);\n if (proto.context) {\n m.context = ServiceContext.fromProto(proto.context);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.serviceProviderId !== 'undefined') {\n toReturn['serviceProviderId'] = this.serviceProviderId;\n }\n if (typeof this.sessionId !== 'undefined') {\n toReturn['sessionId'] = this.sessionId;\n }\n if (typeof this.userId !== 'undefined') {\n toReturn['userId'] = this.userId;\n }\n if (typeof this.email !== 'undefined') {\n toReturn['email'] = this.email;\n }\n if (typeof this.context !== 'undefined' && this.context !== null) {\n toReturn['context'] = 'toApiJson' in this.context ? this.context.toApiJson() : this.context;\n }\n if (typeof this.nextUrl !== 'undefined') {\n toReturn['nextUrl'] = this.nextUrl;\n }\n if (typeof this.backUrl !== 'undefined') {\n toReturn['backUrl'] = this.backUrl;\n }\n if (typeof this.backUrlText !== 'undefined') {\n toReturn['backUrlText'] = this.backUrlText;\n }\n if (typeof this.federatedIdentityProvider !== 'undefined') {\n toReturn['federatedIdentityProvider'] = this.federatedIdentityProvider;\n }\n if (typeof this.impersonatorUserId !== 'undefined') {\n toReturn['impersonatorUserId'] = this.impersonatorUserId;\n }\n return toReturn;\n }\n}\nclass GetEntryURLWithCodeResponse {\n static fromProto(proto) {\n let m = new GetEntryURLWithCodeResponse();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.entryUrl !== 'undefined') {\n toReturn['entryUrl'] = this.entryUrl;\n }\n return toReturn;\n }\n}\nclass GetIdentityProviderConfigurationRequest {\n static fromProto(proto) {\n let m = new GetIdentityProviderConfigurationRequest();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.partnerId !== 'undefined') {\n toReturn['partnerId'] = this.partnerId;\n }\n return toReturn;\n }\n}\nclass GetIdentityProviderConfigurationResponse {\n static fromProto(proto) {\n let m = new GetIdentityProviderConfigurationResponse();\n m = Object.assign(m, proto);\n if (proto.configuration) {\n m.configuration = IdentityProviderConfiguration.fromProto(proto.configuration);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.configuration !== 'undefined' && this.configuration !== null) {\n toReturn['configuration'] = 'toApiJson' in this.configuration ? this.configuration.toApiJson() : this.configuration;\n }\n return toReturn;\n }\n}\nclass GetLogoutURLRequest {\n static fromProto(proto) {\n let m = new GetLogoutURLRequest();\n m = Object.assign(m, proto);\n if (proto.context) {\n m.context = ServiceContext.fromProto(proto.context);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.sessionId !== 'undefined') {\n toReturn['sessionId'] = this.sessionId;\n }\n if (typeof this.context !== 'undefined' && this.context !== null) {\n toReturn['context'] = 'toApiJson' in this.context ? this.context.toApiJson() : this.context;\n }\n if (typeof this.serviceProviderId !== 'undefined') {\n toReturn['serviceProviderId'] = this.serviceProviderId;\n }\n return toReturn;\n }\n}\nclass GetLogoutURLResponse {\n static fromProto(proto) {\n let m = new GetLogoutURLResponse();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.logoutUrl !== 'undefined') {\n toReturn['logoutUrl'] = this.logoutUrl;\n }\n return toReturn;\n }\n}\nclass GetMultiConfigRequest {\n static fromProto(proto) {\n let m = new GetMultiConfigRequest();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.clientIds !== 'undefined') {\n toReturn['clientIds'] = this.clientIds;\n }\n return toReturn;\n }\n}\nclass GetMultiConfigResponse {\n static fromProto(proto) {\n let m = new GetMultiConfigResponse();\n m = Object.assign(m, proto);\n if (proto.configs) {\n m.configs = proto.configs.map(GetMultiConfigResponseConfigContainer.fromProto);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.configs !== 'undefined' && this.configs !== null) {\n toReturn['configs'] = 'toApiJson' in this.configs ? this.configs.toApiJson() : this.configs;\n }\n return toReturn;\n }\n}\nclass GetMultiEntryURLRequest {\n static fromProto(proto) {\n let m = new GetMultiEntryURLRequest();\n m = Object.assign(m, proto);\n if (proto.context) {\n m.context = ServiceContext.fromProto(proto.context);\n }\n if (proto.autoImpersonation) {\n m.autoImpersonation = AutoImpersonation.fromProto(proto.autoImpersonation);\n }\n if (proto.noImpersonation) {\n m.noImpersonation = NoImpersonation.fromProto(proto.noImpersonation);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.serviceProviderIds !== 'undefined') {\n toReturn['serviceProviderIds'] = this.serviceProviderIds;\n }\n if (typeof this.context !== 'undefined' && this.context !== null) {\n toReturn['context'] = 'toApiJson' in this.context ? this.context.toApiJson() : this.context;\n }\n if (typeof this.impersonateeUserId !== 'undefined') {\n toReturn['impersonateeUserId'] = this.impersonateeUserId;\n }\n if (typeof this.autoImpersonation !== 'undefined' && this.autoImpersonation !== null) {\n toReturn['autoImpersonation'] = 'toApiJson' in this.autoImpersonation ? this.autoImpersonation.toApiJson() : this.autoImpersonation;\n }\n if (typeof this.explicitImpersonateeUserId !== 'undefined') {\n toReturn['explicitImpersonateeUserId'] = this.explicitImpersonateeUserId;\n }\n if (typeof this.noImpersonation !== 'undefined' && this.noImpersonation !== null) {\n toReturn['noImpersonation'] = 'toApiJson' in this.noImpersonation ? this.noImpersonation.toApiJson() : this.noImpersonation;\n }\n return toReturn;\n }\n}\nclass GetMultiEntryURLResponse {\n static fromProto(proto) {\n let m = new GetMultiEntryURLResponse();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.entryUrls !== 'undefined') {\n toReturn['entryUrls'] = this.entryUrls;\n }\n return toReturn;\n }\n}\nclass GetMultiScopeRequest {\n static fromProto(proto) {\n let m = new GetMultiScopeRequest();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.scopeIds !== 'undefined') {\n toReturn['scopeIds'] = this.scopeIds;\n }\n return toReturn;\n }\n}\nclass GetMultiScopeResponse {\n static fromProto(proto) {\n let m = new GetMultiScopeResponse();\n m = Object.assign(m, proto);\n if (proto.scopes) {\n m.scopes = proto.scopes.map(GetMultiScopeResponseScopeContainer.fromProto);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.scopes !== 'undefined' && this.scopes !== null) {\n toReturn['scopes'] = 'toApiJson' in this.scopes ? this.scopes.toApiJson() : this.scopes;\n }\n return toReturn;\n }\n}\nclass GetSAMLIdentityProviderMetadataRequest {\n static fromProto(proto) {\n let m = new GetSAMLIdentityProviderMetadataRequest();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.serviceProviderConfigId !== 'undefined') {\n toReturn['serviceProviderConfigId'] = this.serviceProviderConfigId;\n }\n return toReturn;\n }\n}\nclass GetSAMLIdentityProviderMetadataResponse {\n static fromProto(proto) {\n let m = new GetSAMLIdentityProviderMetadataResponse();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.metadata !== 'undefined') {\n toReturn['metadata'] = this.metadata;\n }\n return toReturn;\n }\n}\nclass GetServiceProviderRequest {\n static fromProto(proto) {\n let m = new GetServiceProviderRequest();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.serviceProviderId !== 'undefined') {\n toReturn['serviceProviderId'] = this.serviceProviderId;\n }\n return toReturn;\n }\n}\nclass GetServiceProviderResponse {\n static fromProto(proto) {\n let m = new GetServiceProviderResponse();\n m = Object.assign(m, proto);\n if (proto.serviceProvider) {\n m.serviceProvider = ServiceProviderConfig.fromProto(proto.serviceProvider);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.serviceProvider !== 'undefined' && this.serviceProvider !== null) {\n toReturn['serviceProvider'] = 'toApiJson' in this.serviceProvider ? this.serviceProvider.toApiJson() : this.serviceProvider;\n }\n return toReturn;\n }\n}\nclass GetSessionTransferURLRequest {\n static fromProto(proto) {\n let m = new GetSessionTransferURLRequest();\n m = Object.assign(m, proto);\n if (proto.context) {\n m.context = ServiceContext.fromProto(proto.context);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.serviceProviderId !== 'undefined') {\n toReturn['serviceProviderId'] = this.serviceProviderId;\n }\n if (typeof this.context !== 'undefined' && this.context !== null) {\n toReturn['context'] = 'toApiJson' in this.context ? this.context.toApiJson() : this.context;\n }\n return toReturn;\n }\n}\nclass GetSessionTransferURLResponse {\n static fromProto(proto) {\n let m = new GetSessionTransferURLResponse();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.sessionTransferUrl !== 'undefined') {\n toReturn['sessionTransferUrl'] = this.sessionTransferUrl;\n }\n return toReturn;\n }\n}\nclass HasCustomIdentityProviderRequest {\n static fromProto(proto) {\n let m = new HasCustomIdentityProviderRequest();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.partnerId !== 'undefined') {\n toReturn['partnerId'] = this.partnerId;\n }\n if (typeof this.serviceProviderId !== 'undefined') {\n toReturn['serviceProviderId'] = this.serviceProviderId;\n }\n return toReturn;\n }\n}\nclass HasCustomIdentityProviderResponse {\n static fromProto(proto) {\n let m = new HasCustomIdentityProviderResponse();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.hasCustomIdp !== 'undefined') {\n toReturn['hasCustomIdp'] = this.hasCustomIdp;\n }\n return toReturn;\n }\n}\nclass ListConfigsRequest {\n static fromProto(proto) {\n let m = new ListConfigsRequest();\n m = Object.assign(m, proto);\n if (proto.pageSize) {\n m.pageSize = parseInt(proto.pageSize, 10);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.serviceProviderId !== 'undefined') {\n toReturn['serviceProviderId'] = this.serviceProviderId;\n }\n if (typeof this.pageSize !== 'undefined') {\n toReturn['pageSize'] = this.pageSize;\n }\n if (typeof this.cursor !== 'undefined') {\n toReturn['cursor'] = this.cursor;\n }\n return toReturn;\n }\n}\nclass ListConfigsResponse {\n static fromProto(proto) {\n let m = new ListConfigsResponse();\n m = Object.assign(m, proto);\n if (proto.clientConfigurations) {\n m.clientConfigurations = proto.clientConfigurations.map(Oauth2Config.fromProto);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.clientConfigurations !== 'undefined' && this.clientConfigurations !== null) {\n toReturn['clientConfigurations'] = 'toApiJson' in this.clientConfigurations ? this.clientConfigurations.toApiJson() : this.clientConfigurations;\n }\n if (typeof this.cursor !== 'undefined') {\n toReturn['cursor'] = this.cursor;\n }\n if (typeof this.hasMore !== 'undefined') {\n toReturn['hasMore'] = this.hasMore;\n }\n return toReturn;\n }\n}\nclass ListSAMLServiceProviderConfigsRequest {\n static fromProto(proto) {\n let m = new ListSAMLServiceProviderConfigsRequest();\n m = Object.assign(m, proto);\n if (proto.pageSize) {\n m.pageSize = parseInt(proto.pageSize, 10);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.serviceProviderId !== 'undefined') {\n toReturn['serviceProviderId'] = this.serviceProviderId;\n }\n if (typeof this.pageSize !== 'undefined') {\n toReturn['pageSize'] = this.pageSize;\n }\n if (typeof this.cursor !== 'undefined') {\n toReturn['cursor'] = this.cursor;\n }\n return toReturn;\n }\n}\nclass ListSAMLServiceProviderConfigsResponse {\n static fromProto(proto) {\n let m = new ListSAMLServiceProviderConfigsResponse();\n m = Object.assign(m, proto);\n if (proto.serviceProviderConfigs) {\n m.serviceProviderConfigs = proto.serviceProviderConfigs.map(SamlServiceProviderConfig.fromProto);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.serviceProviderConfigs !== 'undefined' && this.serviceProviderConfigs !== null) {\n toReturn['serviceProviderConfigs'] = 'toApiJson' in this.serviceProviderConfigs ? this.serviceProviderConfigs.toApiJson() : this.serviceProviderConfigs;\n }\n if (typeof this.cursor !== 'undefined') {\n toReturn['cursor'] = this.cursor;\n }\n if (typeof this.hasMore !== 'undefined') {\n toReturn['hasMore'] = this.hasMore;\n }\n return toReturn;\n }\n}\nclass ListScopesRequest {\n static fromProto(proto) {\n let m = new ListScopesRequest();\n m = Object.assign(m, proto);\n if (proto.pageSize) {\n m.pageSize = parseInt(proto.pageSize, 10);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.pageSize !== 'undefined') {\n toReturn['pageSize'] = this.pageSize;\n }\n if (typeof this.cursor !== 'undefined') {\n toReturn['cursor'] = this.cursor;\n }\n return toReturn;\n }\n}\nclass ListScopesResponse {\n static fromProto(proto) {\n let m = new ListScopesResponse();\n m = Object.assign(m, proto);\n if (proto.scopes) {\n m.scopes = proto.scopes.map(Scope.fromProto);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.scopes !== 'undefined' && this.scopes !== null) {\n toReturn['scopes'] = 'toApiJson' in this.scopes ? this.scopes.toApiJson() : this.scopes;\n }\n if (typeof this.cursor !== 'undefined') {\n toReturn['cursor'] = this.cursor;\n }\n if (typeof this.hasMore !== 'undefined') {\n toReturn['hasMore'] = this.hasMore;\n }\n return toReturn;\n }\n}\nclass ListServiceProvidersRequest {\n static fromProto(proto) {\n let m = new ListServiceProvidersRequest();\n m = Object.assign(m, proto);\n if (proto.pageSize) {\n m.pageSize = parseInt(proto.pageSize, 10);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.pageSize !== 'undefined') {\n toReturn['pageSize'] = this.pageSize;\n }\n if (typeof this.cursor !== 'undefined') {\n toReturn['cursor'] = this.cursor;\n }\n return toReturn;\n }\n}\nclass ListServiceProvidersResponse {\n static fromProto(proto) {\n let m = new ListServiceProvidersResponse();\n m = Object.assign(m, proto);\n if (proto.serviceProviders) {\n m.serviceProviders = proto.serviceProviders.map(ServiceProviderConfig.fromProto);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.serviceProviders !== 'undefined' && this.serviceProviders !== null) {\n toReturn['serviceProviders'] = 'toApiJson' in this.serviceProviders ? this.serviceProviders.toApiJson() : this.serviceProviders;\n }\n if (typeof this.cursor !== 'undefined') {\n toReturn['cursor'] = this.cursor;\n }\n if (typeof this.hasMore !== 'undefined') {\n toReturn['hasMore'] = this.hasMore;\n }\n return toReturn;\n }\n}\nclass LogoutRequest {\n static fromProto(proto) {\n let m = new LogoutRequest();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.sessionId !== 'undefined') {\n toReturn['sessionId'] = this.sessionId;\n }\n if (typeof this.userId !== 'undefined') {\n toReturn['userId'] = this.userId;\n }\n return toReturn;\n }\n}\nclass UpdateScopeRequestMutation {\n static fromProto(proto) {\n let m = new UpdateScopeRequestMutation();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.name !== 'undefined') {\n toReturn['name'] = this.name;\n }\n if (typeof this.description !== 'undefined') {\n toReturn['description'] = this.description;\n }\n return toReturn;\n }\n}\nclass UpdateIdentityProviderConfigurationRequestMutation {\n static fromProto(proto) {\n let m = new UpdateIdentityProviderConfigurationRequestMutation();\n m = Object.assign(m, proto);\n if (proto.openId) {\n m.openId = UpdateIdentityProviderConfigurationRequestMutationOpenIDConnectConfigurationMutation.fromProto(proto.openId);\n }\n if (proto.replaceOpenId) {\n m.replaceOpenId = OpenIDConnectConfiguration.fromProto(proto.replaceOpenId);\n }\n if (proto.oauth2) {\n m.oauth2 = UpdateIdentityProviderConfigurationRequestMutationOAuth2ConfigurationMutation.fromProto(proto.oauth2);\n }\n if (proto.replaceOauth2) {\n m.replaceOauth2 = OAuth2Configuration.fromProto(proto.replaceOauth2);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.clientId !== 'undefined') {\n toReturn['clientId'] = this.clientId;\n }\n if (typeof this.clientSecret !== 'undefined') {\n toReturn['clientSecret'] = this.clientSecret;\n }\n if (typeof this.openId !== 'undefined' && this.openId !== null) {\n toReturn['openId'] = 'toApiJson' in this.openId ? this.openId.toApiJson() : this.openId;\n }\n if (typeof this.replaceOpenId !== 'undefined' && this.replaceOpenId !== null) {\n toReturn['replaceOpenId'] = 'toApiJson' in this.replaceOpenId ? this.replaceOpenId.toApiJson() : this.replaceOpenId;\n }\n if (typeof this.oauth2 !== 'undefined' && this.oauth2 !== null) {\n toReturn['oauth2'] = 'toApiJson' in this.oauth2 ? this.oauth2.toApiJson() : this.oauth2;\n }\n if (typeof this.replaceOauth2 !== 'undefined' && this.replaceOauth2 !== null) {\n toReturn['replaceOauth2'] = 'toApiJson' in this.replaceOauth2 ? this.replaceOauth2.toApiJson() : this.replaceOauth2;\n }\n return toReturn;\n }\n}\nclass UpdateConfigRequestMutation {\n static fromProto(proto) {\n let m = new UpdateConfigRequestMutation();\n m = Object.assign(m, proto);\n if (proto.redirectUris) {\n m.redirectUris = UpdateConfigRequestMutationRepeatedStringMutation.fromProto(proto.redirectUris);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.name !== 'undefined') {\n toReturn['name'] = this.name;\n }\n if (typeof this.redirectUris !== 'undefined' && this.redirectUris !== null) {\n toReturn['redirectUris'] = 'toApiJson' in this.redirectUris ? this.redirectUris.toApiJson() : this.redirectUris;\n }\n if (typeof this.logoutUri !== 'undefined') {\n toReturn['logoutUri'] = this.logoutUri;\n }\n return toReturn;\n }\n}\nclass UpdateServiceProviderRequestMutation {\n static fromProto(proto) {\n let m = new UpdateServiceProviderRequestMutation();\n m = Object.assign(m, proto);\n if (proto.alternativeDomains) {\n m.alternativeDomains = UpdateServiceProviderRequestMutationRepeatedStringMutation.fromProto(proto.alternativeDomains);\n }\n if (proto.serviceProviderType) {\n m.serviceProviderType = enumStringToValue$1(ServiceProviderType, proto.serviceProviderType);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.entryUrl !== 'undefined') {\n toReturn['entryUrl'] = this.entryUrl;\n }\n if (typeof this.sessionUrl !== 'undefined') {\n toReturn['sessionUrl'] = this.sessionUrl;\n }\n if (typeof this.primaryDomain !== 'undefined') {\n toReturn['primaryDomain'] = this.primaryDomain;\n }\n if (typeof this.alternativeDomains !== 'undefined' && this.alternativeDomains !== null) {\n toReturn['alternativeDomains'] = 'toApiJson' in this.alternativeDomains ? this.alternativeDomains.toApiJson() : this.alternativeDomains;\n }\n if (typeof this.ownedAndOperated !== 'undefined') {\n toReturn['ownedAndOperated'] = this.ownedAndOperated;\n }\n if (typeof this.logoutUrl !== 'undefined') {\n toReturn['logoutUrl'] = this.logoutUrl;\n }\n if (typeof this.serviceProviderType !== 'undefined') {\n toReturn['serviceProviderType'] = this.serviceProviderType;\n }\n return toReturn;\n }\n}\nclass UpdateIdentityProviderConfigurationRequestMutationOAuth2ConfigurationMutation {\n static fromProto(proto) {\n let m = new UpdateIdentityProviderConfigurationRequestMutationOAuth2ConfigurationMutation();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.authorizationEndpoint !== 'undefined') {\n toReturn['authorizationEndpoint'] = this.authorizationEndpoint;\n }\n if (typeof this.tokenEndpoint !== 'undefined') {\n toReturn['tokenEndpoint'] = this.tokenEndpoint;\n }\n if (typeof this.userinfoEndpoint !== 'undefined') {\n toReturn['userinfoEndpoint'] = this.userinfoEndpoint;\n }\n return toReturn;\n }\n}\nclass UpdateIdentityProviderConfigurationRequestMutationOpenIDConnectConfigurationMutation {\n static fromProto(proto) {\n let m = new UpdateIdentityProviderConfigurationRequestMutationOpenIDConnectConfigurationMutation();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.discoveryEndpoint !== 'undefined') {\n toReturn['discoveryEndpoint'] = this.discoveryEndpoint;\n }\n return toReturn;\n }\n}\nclass RegenerateSAMLServiceProviderConfigCertificateRequest {\n static fromProto(proto) {\n let m = new RegenerateSAMLServiceProviderConfigCertificateRequest();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.serviceProviderConfigId !== 'undefined') {\n toReturn['serviceProviderConfigId'] = this.serviceProviderConfigId;\n }\n return toReturn;\n }\n}\nclass RegenerateSAMLServiceProviderConfigCertificateResponse {\n static fromProto(proto) {\n let m = new RegenerateSAMLServiceProviderConfigCertificateResponse();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.certificate !== 'undefined') {\n toReturn['certificate'] = this.certificate;\n }\n return toReturn;\n }\n}\nclass UpdateServiceProviderRequestMutationRepeatedStringMutation {\n static fromProto(proto) {\n let m = new UpdateServiceProviderRequestMutationRepeatedStringMutation();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.repeatedString !== 'undefined') {\n toReturn['repeatedString'] = this.repeatedString;\n }\n return toReturn;\n }\n}\nclass UpdateConfigRequestMutationRepeatedStringMutation {\n static fromProto(proto) {\n let m = new UpdateConfigRequestMutationRepeatedStringMutation();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.repeatedString !== 'undefined') {\n toReturn['repeatedString'] = this.repeatedString;\n }\n return toReturn;\n }\n}\nclass RevokeGrantRequest {\n static fromProto(proto) {\n let m = new RevokeGrantRequest();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.userId !== 'undefined') {\n toReturn['userId'] = this.userId;\n }\n if (typeof this.serviceProviderId !== 'undefined') {\n toReturn['serviceProviderId'] = this.serviceProviderId;\n }\n if (typeof this.scopeIds !== 'undefined') {\n toReturn['scopeIds'] = this.scopeIds;\n }\n return toReturn;\n }\n}\nclass GetMultiScopeResponseScopeContainer {\n static fromProto(proto) {\n let m = new GetMultiScopeResponseScopeContainer();\n m = Object.assign(m, proto);\n if (proto.scope) {\n m.scope = Scope.fromProto(proto.scope);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.scope !== 'undefined' && this.scope !== null) {\n toReturn['scope'] = 'toApiJson' in this.scope ? this.scope.toApiJson() : this.scope;\n }\n return toReturn;\n }\n}\nclass UpdateConfigRequest {\n static fromProto(proto) {\n let m = new UpdateConfigRequest();\n m = Object.assign(m, proto);\n if (proto.mutations) {\n m.mutations = proto.mutations.map(UpdateConfigRequestMutation.fromProto);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.clientId !== 'undefined') {\n toReturn['clientId'] = this.clientId;\n }\n if (typeof this.mutations !== 'undefined' && this.mutations !== null) {\n toReturn['mutations'] = 'toApiJson' in this.mutations ? this.mutations.toApiJson() : this.mutations;\n }\n return toReturn;\n }\n}\nclass UpdateIdentityProviderConfigurationRequest {\n static fromProto(proto) {\n let m = new UpdateIdentityProviderConfigurationRequest();\n m = Object.assign(m, proto);\n if (proto.mutations) {\n m.mutations = proto.mutations.map(UpdateIdentityProviderConfigurationRequestMutation.fromProto);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.partnerId !== 'undefined') {\n toReturn['partnerId'] = this.partnerId;\n }\n if (typeof this.mutations !== 'undefined' && this.mutations !== null) {\n toReturn['mutations'] = 'toApiJson' in this.mutations ? this.mutations.toApiJson() : this.mutations;\n }\n return toReturn;\n }\n}\nclass UpdateSAMLServiceProviderConfigRequest {\n static fromProto(proto) {\n let m = new UpdateSAMLServiceProviderConfigRequest();\n m = Object.assign(m, proto);\n if (proto.fields) {\n m.fields = SamlServiceProviderConfig.fromProto(proto.fields);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.fields !== 'undefined' && this.fields !== null) {\n toReturn['fields'] = 'toApiJson' in this.fields ? this.fields.toApiJson() : this.fields;\n }\n if (typeof this.metadataXmlString !== 'undefined') {\n toReturn['metadataXmlString'] = this.metadataXmlString;\n }\n if (typeof this.serviceProviderConfigId !== 'undefined') {\n toReturn['serviceProviderConfigId'] = this.serviceProviderConfigId;\n }\n return toReturn;\n }\n}\nclass UpdateScopeRequest {\n static fromProto(proto) {\n let m = new UpdateScopeRequest();\n m = Object.assign(m, proto);\n if (proto.mutations) {\n m.mutations = proto.mutations.map(UpdateScopeRequestMutation.fromProto);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.scopeId !== 'undefined') {\n toReturn['scopeId'] = this.scopeId;\n }\n if (typeof this.mutations !== 'undefined' && this.mutations !== null) {\n toReturn['mutations'] = 'toApiJson' in this.mutations ? this.mutations.toApiJson() : this.mutations;\n }\n return toReturn;\n }\n}\nclass UpdateServiceProviderRequest {\n static fromProto(proto) {\n let m = new UpdateServiceProviderRequest();\n m = Object.assign(m, proto);\n if (proto.serviceProvider) {\n m.serviceProvider = ServiceProviderConfig.fromProto(proto.serviceProvider);\n }\n if (proto.mutations) {\n m.mutations = proto.mutations.map(UpdateServiceProviderRequestMutation.fromProto);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.serviceProvider !== 'undefined' && this.serviceProvider !== null) {\n toReturn['serviceProvider'] = 'toApiJson' in this.serviceProvider ? this.serviceProvider.toApiJson() : this.serviceProvider;\n }\n if (typeof this.serviceProviderId !== 'undefined') {\n toReturn['serviceProviderId'] = this.serviceProviderId;\n }\n if (typeof this.mutations !== 'undefined' && this.mutations !== null) {\n toReturn['mutations'] = 'toApiJson' in this.mutations ? this.mutations.toApiJson() : this.mutations;\n }\n return toReturn;\n }\n}\nclass ConsumeSingleUseTokenRequest {\n static fromProto(proto) {\n let m = new ConsumeSingleUseTokenRequest();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.userID !== 'undefined') {\n toReturn['userID'] = this.userID;\n }\n if (typeof this.otp !== 'undefined') {\n toReturn['otp'] = this.otp;\n }\n if (typeof this.nextUrl !== 'undefined') {\n toReturn['nextUrl'] = this.nextUrl;\n }\n return toReturn;\n }\n}\nfunction enumStringToValue(enumRef, value) {\n if (typeof value === 'number') {\n return value;\n }\n return enumRef[value];\n}\nclass FieldMask {\n static fromProto(proto) {\n let m = new FieldMask();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.paths !== 'undefined') {\n toReturn['paths'] = this.paths;\n }\n return toReturn;\n }\n}\n\n// *********************************\n// Code generated by sdkgen\n// DO NOT EDIT!.\n//\n// Objects Index.\n// *********************************\n\nconst environment = (window ? window['environment'] : 'prod') ?? 'prod';\nconst hostMap = {\n 'local': '',\n 'test': '',\n 'demo': 'sso-api-demo.apigateway.co',\n 'prod': 'sso-api-prod.apigateway.co',\n 'production': 'sso-api-prod.apigateway.co'\n};\nlet HostService = /*#__PURE__*/(() => {\n class HostService {\n get host() {\n return hostMap[environment.toLowerCase()];\n }\n get hostWithScheme() {\n return 'https://' + this.host;\n }\n }\n HostService.ɵfac = function HostService_Factory(t) {\n return new (t || HostService)();\n };\n HostService.ɵprov = /* @__PURE__ */i0.ɵɵdefineInjectable({\n token: HostService,\n factory: HostService.ɵfac,\n providedIn: 'root'\n });\n return HostService;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n\n// *********************************\n// Code generated by sdkgen\n// DO NOT EDIT!.\n//\n// API Service.\n// *********************************\nlet ConsentApiService = /*#__PURE__*/(() => {\n class ConsentApiService {\n constructor(http, hostService) {\n this.http = http;\n this.hostService = hostService;\n this._host = this.hostService.hostWithScheme;\n }\n apiOptions() {\n return {\n headers: new HttpHeaders({\n 'Content-Type': 'application/json'\n }),\n withCredentials: true\n };\n }\n revokeGrant(r) {\n const request = r.toApiJson ? r : new RevokeGrantRequest(r);\n return this.http.post(this._host + \"/sso.v1.Consent/RevokeGrant\", request.toApiJson(), {\n ...this.apiOptions(),\n observe: 'response'\n });\n }\n }\n ConsentApiService.ɵfac = function ConsentApiService_Factory(t) {\n return new (t || ConsentApiService)(i0.ɵɵinject(i1.HttpClient), i0.ɵɵinject(HostService));\n };\n ConsentApiService.ɵprov = /* @__PURE__ */i0.ɵɵdefineInjectable({\n token: ConsentApiService,\n factory: ConsentApiService.ɵfac,\n providedIn: 'root'\n });\n return ConsentApiService;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n\n// *********************************\n// Code generated by sdkgen\n// DO NOT EDIT!.\n//\n// API Service.\n// *********************************\nlet ConsentAdminApiService = /*#__PURE__*/(() => {\n class ConsentAdminApiService {\n constructor(http, hostService) {\n this.http = http;\n this.hostService = hostService;\n this._host = this.hostService.hostWithScheme;\n }\n apiOptions() {\n return {\n headers: new HttpHeaders({\n 'Content-Type': 'application/json'\n }),\n withCredentials: true\n };\n }\n createScope(r) {\n const request = r.toApiJson ? r : new CreateScopeRequest(r);\n return this.http.post(this._host + \"/sso.v1.ConsentAdmin/CreateScope\", request.toApiJson(), {\n ...this.apiOptions(),\n observe: 'response'\n });\n }\n updateScope(r) {\n const request = r.toApiJson ? r : new UpdateScopeRequest(r);\n return this.http.post(this._host + \"/sso.v1.ConsentAdmin/UpdateScope\", request.toApiJson(), {\n ...this.apiOptions(),\n observe: 'response'\n });\n }\n getMultiScope(r) {\n const request = r.toApiJson ? r : new GetMultiScopeRequest(r);\n return this.http.post(this._host + \"/sso.v1.ConsentAdmin/GetMultiScope\", request.toApiJson(), this.apiOptions()).pipe(map(resp => GetMultiScopeResponse.fromProto(resp)));\n }\n listScopes(r) {\n const request = r.toApiJson ? r : new ListScopesRequest(r);\n return this.http.post(this._host + \"/sso.v1.ConsentAdmin/ListScopes\", request.toApiJson(), this.apiOptions()).pipe(map(resp => ListScopesResponse.fromProto(resp)));\n }\n deleteScope(r) {\n const request = r.toApiJson ? r : new DeleteScopeRequest(r);\n return this.http.post(this._host + \"/sso.v1.ConsentAdmin/DeleteScope\", request.toApiJson(), {\n ...this.apiOptions(),\n observe: 'response'\n });\n }\n }\n ConsentAdminApiService.ɵfac = function ConsentAdminApiService_Factory(t) {\n return new (t || ConsentAdminApiService)(i0.ɵɵinject(i1.HttpClient), i0.ɵɵinject(HostService));\n };\n ConsentAdminApiService.ɵprov = /* @__PURE__ */i0.ɵɵdefineInjectable({\n token: ConsentAdminApiService,\n factory: ConsentAdminApiService.ɵfac,\n providedIn: 'root'\n });\n return ConsentAdminApiService;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n\n// *********************************\n// Code generated by sdkgen\n// DO NOT EDIT!.\n//\n// API Service.\n// *********************************\nlet IdentityProviderApiService = /*#__PURE__*/(() => {\n class IdentityProviderApiService {\n constructor(http, hostService) {\n this.http = http;\n this.hostService = hostService;\n this._host = this.hostService.hostWithScheme;\n }\n apiOptions() {\n return {\n headers: new HttpHeaders({\n 'Content-Type': 'application/json'\n }),\n withCredentials: true\n };\n }\n getEntryUrl(r) {\n const request = r.toApiJson ? r : new GetEntryURLRequest(r);\n return this.http.post(this._host + \"/sso.v1.IdentityProvider/GetEntryURL\", request.toApiJson(), this.apiOptions()).pipe(map(resp => GetEntryURLResponse.fromProto(resp)));\n }\n getMultiEntryUrl(r) {\n const request = r.toApiJson ? r : new GetMultiEntryURLRequest(r);\n return this.http.post(this._host + \"/sso.v1.IdentityProvider/GetMultiEntryURL\", request.toApiJson(), this.apiOptions()).pipe(map(resp => GetMultiEntryURLResponse.fromProto(resp)));\n }\n getEntryUrlWithCode(r) {\n const request = r.toApiJson ? r : new GetEntryURLWithCodeRequest(r);\n return this.http.post(this._host + \"/sso.v1.IdentityProvider/GetEntryURLWithCode\", request.toApiJson(), this.apiOptions()).pipe(map(resp => GetEntryURLWithCodeResponse.fromProto(resp)));\n }\n logout(r) {\n const request = r.toApiJson ? r : new LogoutRequest(r);\n return this.http.post(this._host + \"/sso.v1.IdentityProvider/Logout\", request.toApiJson(), {\n ...this.apiOptions(),\n observe: 'response'\n });\n }\n consumeSingleUseToken(r) {\n const toApiJson = r.toApiJson;\n const request = typeof toApiJson !== 'undefined' ? r : new ConsumeSingleUseTokenRequest(r);\n const params = new URLSearchParams();\n const apiJson = request.toApiJson();\n for (const key in apiJson) {\n if (!apiJson.hasOwnProperty(key)) {\n continue;\n }\n const value = apiJson[key];\n if (value === null) {\n continue;\n }\n params.append(key, value);\n }\n window.location.href = `${this._host}/single-use-token?${params.toString()}`;\n }\n }\n IdentityProviderApiService.ɵfac = function IdentityProviderApiService_Factory(t) {\n return new (t || IdentityProviderApiService)(i0.ɵɵinject(i1.HttpClient), i0.ɵɵinject(HostService));\n };\n IdentityProviderApiService.ɵprov = /* @__PURE__ */i0.ɵɵdefineInjectable({\n token: IdentityProviderApiService,\n factory: IdentityProviderApiService.ɵfac,\n providedIn: 'root'\n });\n return IdentityProviderApiService;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n\n// *********************************\n// Code generated by sdkgen\n// DO NOT EDIT!.\n//\n// API Service.\n// *********************************\nlet IdentityProviderAdminApiService = /*#__PURE__*/(() => {\n class IdentityProviderAdminApiService {\n constructor(http, hostService) {\n this.http = http;\n this.hostService = hostService;\n this._host = this.hostService.hostWithScheme;\n }\n apiOptions() {\n return {\n headers: new HttpHeaders({\n 'Content-Type': 'application/json'\n }),\n withCredentials: true\n };\n }\n createIdentityProvider(r) {\n const request = r.toApiJson ? r : new CreateIdentityProviderConfigurationRequest(r);\n return this.http.post(this._host + \"/sso.v1.IdentityProviderAdmin/CreateIdentityProvider\", request.toApiJson(), {\n ...this.apiOptions(),\n observe: 'response'\n });\n }\n updateIdentityProvider(r) {\n const request = r.toApiJson ? r : new UpdateIdentityProviderConfigurationRequest(r);\n return this.http.post(this._host + \"/sso.v1.IdentityProviderAdmin/UpdateIdentityProvider\", request.toApiJson(), {\n ...this.apiOptions(),\n observe: 'response'\n });\n }\n getIdentityProvider(r) {\n const request = r.toApiJson ? r : new GetIdentityProviderConfigurationRequest(r);\n return this.http.post(this._host + \"/sso.v1.IdentityProviderAdmin/GetIdentityProvider\", request.toApiJson(), this.apiOptions()).pipe(map(resp => GetIdentityProviderConfigurationResponse.fromProto(resp)));\n }\n deleteIdentityProvider(r) {\n const request = r.toApiJson ? r : new DeleteIdentityProviderConfigurationRequest(r);\n return this.http.post(this._host + \"/sso.v1.IdentityProviderAdmin/DeleteIdentityProvider\", request.toApiJson(), {\n ...this.apiOptions(),\n observe: 'response'\n });\n }\n hasCustomIdentityProvider(r) {\n const request = r.toApiJson ? r : new HasCustomIdentityProviderRequest(r);\n return this.http.post(this._host + \"/sso.v1.IdentityProviderAdmin/HasCustomIdentityProvider\", request.toApiJson(), this.apiOptions()).pipe(map(resp => HasCustomIdentityProviderResponse.fromProto(resp)));\n }\n }\n IdentityProviderAdminApiService.ɵfac = function IdentityProviderAdminApiService_Factory(t) {\n return new (t || IdentityProviderAdminApiService)(i0.ɵɵinject(i1.HttpClient), i0.ɵɵinject(HostService));\n };\n IdentityProviderAdminApiService.ɵprov = /* @__PURE__ */i0.ɵɵdefineInjectable({\n token: IdentityProviderAdminApiService,\n factory: IdentityProviderAdminApiService.ɵfac,\n providedIn: 'root'\n });\n return IdentityProviderAdminApiService;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n\n// *********************************\n// Code generated by sdkgen\n// DO NOT EDIT!.\n//\n// API Service.\n// *********************************\nlet ServiceProviderApiService = /*#__PURE__*/(() => {\n class ServiceProviderApiService {\n constructor(http, hostService) {\n this.http = http;\n this.hostService = hostService;\n this._host = this.hostService.hostWithScheme;\n }\n apiOptions() {\n return {\n headers: new HttpHeaders({\n 'Content-Type': 'application/json'\n }),\n withCredentials: true\n };\n }\n getSessionTransferUrl(r) {\n const request = r.toApiJson ? r : new GetSessionTransferURLRequest(r);\n return this.http.post(this._host + \"/sso.v1.ServiceProvider/GetSessionTransferURL\", request.toApiJson(), this.apiOptions()).pipe(map(resp => GetSessionTransferURLResponse.fromProto(resp)));\n }\n getLogoutUrl(r) {\n const request = r.toApiJson ? r : new GetLogoutURLRequest(r);\n return this.http.post(this._host + \"/sso.v1.ServiceProvider/GetLogoutURL\", request.toApiJson(), this.apiOptions()).pipe(map(resp => GetLogoutURLResponse.fromProto(resp)));\n }\n }\n ServiceProviderApiService.ɵfac = function ServiceProviderApiService_Factory(t) {\n return new (t || ServiceProviderApiService)(i0.ɵɵinject(i1.HttpClient), i0.ɵɵinject(HostService));\n };\n ServiceProviderApiService.ɵprov = /* @__PURE__ */i0.ɵɵdefineInjectable({\n token: ServiceProviderApiService,\n factory: ServiceProviderApiService.ɵfac,\n providedIn: 'root'\n });\n return ServiceProviderApiService;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n\n// *********************************\n// Code generated by sdkgen\n// DO NOT EDIT!.\n//\n// API Service.\n// *********************************\nlet ServiceProviderAdminApiService = /*#__PURE__*/(() => {\n class ServiceProviderAdminApiService {\n constructor(http, hostService) {\n this.http = http;\n this.hostService = hostService;\n this._host = this.hostService.hostWithScheme;\n }\n apiOptions() {\n return {\n headers: new HttpHeaders({\n 'Content-Type': 'application/json'\n }),\n withCredentials: true\n };\n }\n createServiceProvider(r) {\n const request = r.toApiJson ? r : new CreateServiceProviderRequest(r);\n return this.http.post(this._host + \"/sso.v1.ServiceProviderAdmin/CreateServiceProvider\", request.toApiJson(), {\n ...this.apiOptions(),\n observe: 'response'\n });\n }\n getServiceProvider(r) {\n const request = r.toApiJson ? r : new GetServiceProviderRequest(r);\n return this.http.post(this._host + \"/sso.v1.ServiceProviderAdmin/GetServiceProvider\", request.toApiJson(), this.apiOptions()).pipe(map(resp => GetServiceProviderResponse.fromProto(resp)));\n }\n updateServiceProvider(r) {\n const request = r.toApiJson ? r : new UpdateServiceProviderRequest(r);\n return this.http.post(this._host + \"/sso.v1.ServiceProviderAdmin/UpdateServiceProvider\", request.toApiJson(), {\n ...this.apiOptions(),\n observe: 'response'\n });\n }\n deleteServiceProvider(r) {\n const request = r.toApiJson ? r : new DeleteServiceProviderRequest(r);\n return this.http.post(this._host + \"/sso.v1.ServiceProviderAdmin/DeleteServiceProvider\", request.toApiJson(), {\n ...this.apiOptions(),\n observe: 'response'\n });\n }\n listServiceProviders(r) {\n const request = r.toApiJson ? r : new ListServiceProvidersRequest(r);\n return this.http.post(this._host + \"/sso.v1.ServiceProviderAdmin/ListServiceProviders\", request.toApiJson(), this.apiOptions()).pipe(map(resp => ListServiceProvidersResponse.fromProto(resp)));\n }\n createConfig(r) {\n const request = r.toApiJson ? r : new CreateConfigRequest(r);\n return this.http.post(this._host + \"/sso.v1.ServiceProviderAdmin/CreateConfig\", request.toApiJson(), this.apiOptions()).pipe(map(resp => CreateConfigResponse.fromProto(resp)));\n }\n getMultiConfig(r) {\n const request = r.toApiJson ? r : new GetMultiConfigRequest(r);\n return this.http.post(this._host + \"/sso.v1.ServiceProviderAdmin/GetMultiConfig\", request.toApiJson(), this.apiOptions()).pipe(map(resp => GetMultiConfigResponse.fromProto(resp)));\n }\n updateConfig(r) {\n const request = r.toApiJson ? r : new UpdateConfigRequest(r);\n return this.http.post(this._host + \"/sso.v1.ServiceProviderAdmin/UpdateConfig\", request.toApiJson(), {\n ...this.apiOptions(),\n observe: 'response'\n });\n }\n deleteConfig(r) {\n const request = r.toApiJson ? r : new DeleteConfigRequest(r);\n return this.http.post(this._host + \"/sso.v1.ServiceProviderAdmin/DeleteConfig\", request.toApiJson(), {\n ...this.apiOptions(),\n observe: 'response'\n });\n }\n listConfigs(r) {\n const request = r.toApiJson ? r : new ListConfigsRequest(r);\n return this.http.post(this._host + \"/sso.v1.ServiceProviderAdmin/ListConfigs\", request.toApiJson(), this.apiOptions()).pipe(map(resp => ListConfigsResponse.fromProto(resp)));\n }\n createSamlServiceProviderConfig(r) {\n const request = r.toApiJson ? r : new CreateSamlServiceProviderConfigRequest(r);\n return this.http.post(this._host + \"/sso.v1.ServiceProviderAdmin/CreateSamlServiceProviderConfig\", request.toApiJson(), this.apiOptions()).pipe(map(resp => CreateSamlServiceProviderConfigResponse.fromProto(resp)));\n }\n getSamlIdentityProviderMetadata(r) {\n const request = r.toApiJson ? r : new GetSAMLIdentityProviderMetadataRequest(r);\n return this.http.post(this._host + \"/sso.v1.ServiceProviderAdmin/GetSAMLIdentityProviderMetadata\", request.toApiJson(), this.apiOptions()).pipe(map(resp => GetSAMLIdentityProviderMetadataResponse.fromProto(resp)));\n }\n updateSamlServiceProviderConfig(r) {\n const request = r.toApiJson ? r : new UpdateSAMLServiceProviderConfigRequest(r);\n return this.http.post(this._host + \"/sso.v1.ServiceProviderAdmin/UpdateSAMLServiceProviderConfig\", request.toApiJson(), {\n ...this.apiOptions(),\n observe: 'response'\n });\n }\n listSamlServiceProviderConfigs(r) {\n const request = r.toApiJson ? r : new ListSAMLServiceProviderConfigsRequest(r);\n return this.http.post(this._host + \"/sso.v1.ServiceProviderAdmin/ListSAMLServiceProviderConfigs\", request.toApiJson(), this.apiOptions()).pipe(map(resp => ListSAMLServiceProviderConfigsResponse.fromProto(resp)));\n }\n regenerateSamlServiceProviderConfigCertificate(r) {\n const request = r.toApiJson ? r : new RegenerateSAMLServiceProviderConfigCertificateRequest(r);\n return this.http.post(this._host + \"/sso.v1.ServiceProviderAdmin/RegenerateSAMLServiceProviderConfigCertificate\", request.toApiJson(), this.apiOptions()).pipe(map(resp => RegenerateSAMLServiceProviderConfigCertificateResponse.fromProto(resp)));\n }\n deleteSamlServiceProviderConfig(r) {\n const request = r.toApiJson ? r : new DeleteSAMLServiceProviderConfigRequest(r);\n return this.http.post(this._host + \"/sso.v1.ServiceProviderAdmin/DeleteSAMLServiceProviderConfig\", request.toApiJson(), {\n ...this.apiOptions(),\n observe: 'response'\n });\n }\n }\n ServiceProviderAdminApiService.ɵfac = function ServiceProviderAdminApiService_Factory(t) {\n return new (t || ServiceProviderAdminApiService)(i0.ɵɵinject(i1.HttpClient), i0.ɵɵinject(HostService));\n };\n ServiceProviderAdminApiService.ɵprov = /* @__PURE__ */i0.ɵɵdefineInjectable({\n token: ServiceProviderAdminApiService,\n factory: ServiceProviderAdminApiService.ɵfac,\n providedIn: 'root'\n });\n return ServiceProviderAdminApiService;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n\n// *********************************\n// Code generated by sdkgen\n// DO NOT EDIT!.\n//\n// Index.\n// *********************************\n\nconst ImpersonationTypeNone = 'none';\nconst ImpersonationTypeAuto = 'auto';\nconst serviceGatewayPath = \"/service-gateway\";\nlet SSOService = /*#__PURE__*/(() => {\n class SSOService {\n constructor(identityProviderApiService, consentAdminApiService, serviceProviderApiService, hostService) {\n this.identityProviderApiService = identityProviderApiService;\n this.consentAdminApiService = consentAdminApiService;\n this.serviceProviderApiService = serviceProviderApiService;\n this.hostService = hostService;\n }\n getEntryUrl(serviceProviderId, context, options = {}) {\n const request = new GetEntryURLRequest({\n serviceProviderId: serviceProviderId,\n context: context,\n skipGatewayAuthentication: options.skipGatewayAuthentication,\n path: options.path\n });\n switch (options.impersonation) {\n case 'none':\n request.noImpersonation = new NoImpersonation();\n break;\n case 'auto':\n request.autoImpersonation = new AutoImpersonation();\n break;\n // Use the proto/server default.\n case undefined:\n break;\n case null:\n break;\n default:\n request.explicitImpersonateeUserId = options.impersonation;\n break;\n }\n return this.identityProviderApiService.getEntryUrl(request).pipe(map(resp => resp.entryUrl), share());\n }\n getMultiEntryUrl(serviceProviderIds, context, options = {}) {\n const request = new GetMultiEntryURLRequest({\n serviceProviderIds: serviceProviderIds,\n context: context\n });\n switch (options.impersonation) {\n case 'none':\n request.noImpersonation = new NoImpersonation();\n break;\n case 'auto':\n request.autoImpersonation = new AutoImpersonation();\n break;\n // Use the proto/server default.\n case undefined:\n break;\n case null:\n break;\n default:\n request.explicitImpersonateeUserId = options.impersonation;\n break;\n }\n return this.identityProviderApiService.getMultiEntryUrl(request).pipe(map(resp => resp.entryUrls || []), share());\n }\n getMultiScope(scopeIds) {\n const request = new GetMultiScopeRequest({\n scopeIds: scopeIds\n });\n return this.consentAdminApiService.getMultiScope(request).pipe(map(resp => resp.scopes));\n }\n getSessionTransferURL(serviceProviderId, context) {\n const request = new GetSessionTransferURLRequest({\n serviceProviderId: serviceProviderId,\n context: context\n });\n return this.serviceProviderApiService.getSessionTransferUrl(request);\n }\n consumeSingleUseToken(userID, otp, nextUrl) {\n const request = new ConsumeSingleUseTokenRequest({\n userID: userID,\n otp: otp,\n nextUrl: nextUrl\n });\n this.identityProviderApiService.consumeSingleUseToken(request);\n }\n getServiceGatewayURLForAccount(serviceProviderID, accountID, nextPath) {\n const host = this.hostService.hostWithScheme;\n const query = new URLSearchParams({\n serviceProviderId: serviceProviderID,\n account_id: accountID\n });\n if (nextPath) {\n query.set(\"path\", nextPath);\n }\n return host + serviceGatewayPath + \"?\" + query.toString();\n }\n getServiceGatewayURLForGroupPath(serviceProviderID, groupPath, nextPath) {\n const host = this.hostService.hostWithScheme;\n const query = new URLSearchParams({\n serviceProviderId: serviceProviderID,\n group_path: groupPath\n });\n if (nextPath) {\n query.set(\"path\", nextPath);\n }\n return host + serviceGatewayPath + \"?\" + query.toString();\n }\n }\n SSOService.ɵfac = function SSOService_Factory(t) {\n return new (t || SSOService)(i0.ɵɵinject(IdentityProviderApiService), i0.ɵɵinject(ConsentAdminApiService), i0.ɵɵinject(ServiceProviderApiService), i0.ɵɵinject(HostService));\n };\n SSOService.ɵprov = /* @__PURE__ */i0.ɵɵdefineInjectable({\n token: SSOService,\n factory: SSOService.ɵfac,\n providedIn: 'root'\n });\n return SSOService;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\nfunction newAccountServiceContext(accountId) {\n return new ServiceContext({\n account: new ServiceContextAccount({\n accountId: accountId\n })\n });\n}\nfunction newPartnerServiceContext(partnerId) {\n return new ServiceContext({\n partner: new ServiceContextPartner({\n partnerId: partnerId\n })\n });\n}\nfunction newSuperAdminServiceContext() {\n return new ServiceContext({\n superAdmin: new ServiceContextSuperAdmin()\n });\n}\n\n// DEPRECATED, use ServiceContextPartner\nconst Partner = ServiceContextPartner;\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { Access, AcsUrl, AutoImpersonation, ConsentAdminApiService, ConsentApiService, ConsumeSingleUseTokenRequest, CreateConfigRequest, CreateConfigResponse, CreateIdentityProviderConfigurationRequest, CreateSamlServiceProviderConfigRequest, CreateSamlServiceProviderConfigResponse, CreateScopeRequest, CreateServiceProviderRequest, DeleteConfigRequest, DeleteIdentityProviderConfigurationRequest, DeleteSAMLServiceProviderConfigRequest, DeleteScopeRequest, DeleteServiceProviderRequest, FieldMask, GetEntryURLRequest, GetEntryURLResponse, GetEntryURLWithCodeRequest, GetEntryURLWithCodeResponse, GetIdentityProviderConfigurationRequest, GetIdentityProviderConfigurationResponse, GetLogoutURLRequest, GetLogoutURLResponse, GetMultiConfigRequest, GetMultiConfigResponse, GetMultiConfigResponseConfigContainer, GetMultiEntryURLRequest, GetMultiEntryURLResponse, GetMultiScopeRequest, GetMultiScopeResponse, GetMultiScopeResponseScopeContainer, GetSAMLIdentityProviderMetadataRequest, GetSAMLIdentityProviderMetadataResponse, GetServiceProviderRequest, GetServiceProviderResponse, GetSessionTransferURLRequest, GetSessionTransferURLResponse, HasCustomIdentityProviderRequest, HasCustomIdentityProviderResponse, HostService, IdentityProviderAdminApiService, IdentityProviderApiService, IdentityProviderConfiguration, ListConfigsRequest, ListConfigsResponse, ListSAMLServiceProviderConfigsRequest, ListSAMLServiceProviderConfigsResponse, ListScopesRequest, ListScopesResponse, ListServiceProvidersRequest, ListServiceProvidersResponse, LogoutRequest, NoImpersonation, OAuth2Configuration, Oauth2Config, OpenIDConnectConfiguration, Partner, RegenerateSAMLServiceProviderConfigCertificateRequest, RegenerateSAMLServiceProviderConfigCertificateResponse, RevokeGrantRequest, SSOService, SamlServiceProviderConfig, Scope, ServiceContext, ServiceContextAccount, ServiceContextBrand, ServiceContextPartner, ServiceContextSuperAdmin, ServiceProviderAdminApiService, ServiceProviderApiService, ServiceProviderConfig, ServiceProviderType, UpdateConfigRequest, UpdateConfigRequestMutation, UpdateConfigRequestMutationRepeatedStringMutation, UpdateIdentityProviderConfigurationRequest, UpdateIdentityProviderConfigurationRequestMutation, UpdateIdentityProviderConfigurationRequestMutationOAuth2ConfigurationMutation, UpdateIdentityProviderConfigurationRequestMutationOpenIDConnectConfigurationMutation, UpdateSAMLServiceProviderConfigRequest, UpdateScopeRequest, UpdateScopeRequestMutation, UpdateServiceProviderRequest, UpdateServiceProviderRequestMutation, UpdateServiceProviderRequestMutationRepeatedStringMutation, newAccountServiceContext, newPartnerServiceContext, newSuperAdminServiceContext };\n","import * as i0 from '@angular/core';\nimport { Injectable } from '@angular/core';\nimport { map } from 'rxjs/operators';\nimport * as i1 from '@angular/common/http';\nimport { HttpHeaders } from '@angular/common/http';\n\n// *********************************\n// Code generated by sdkgen\n// DO NOT EDIT!.\n//\n// Enums.\n// *********************************\nvar Owner = /*#__PURE__*/function (Owner) {\n Owner[Owner[\"OWNER_NOT_SPECIFIED\"] = 0] = \"OWNER_NOT_SPECIFIED\";\n Owner[Owner[\"OWNER_SOCIAL_MARKETING\"] = 1] = \"OWNER_SOCIAL_MARKETING\";\n Owner[Owner[\"OWNER_CUSTOMER_VOICE\"] = 2] = \"OWNER_CUSTOMER_VOICE\";\n Owner[Owner[\"OWNER_CORE_SERVICES\"] = 3] = \"OWNER_CORE_SERVICES\";\n Owner[Owner[\"OWNER_EMAIL_VERIFICATION\"] = 4] = \"OWNER_EMAIL_VERIFICATION\";\n Owner[Owner[\"OWNER_SMB_REFERRAL\"] = 5] = \"OWNER_SMB_REFERRAL\";\n Owner[Owner[\"OWNER_UNTRACKED\"] = 6] = \"OWNER_UNTRACKED\";\n Owner[Owner[\"OWNER_INBOX_BUSINESS\"] = 7] = \"OWNER_INBOX_BUSINESS\";\n Owner[Owner[\"OWNER_REPUTATION_MANAGEMENT\"] = 8] = \"OWNER_REPUTATION_MANAGEMENT\";\n return Owner;\n}(Owner || {});\n// *********************************\n// Code generated by sdkgen\n// DO NOT EDIT!.\n//\n// Enums.\n// *********************************\nvar SortDirection = /*#__PURE__*/function (SortDirection) {\n SortDirection[SortDirection[\"SORT_DIRECTION_DESCENDING\"] = 0] = \"SORT_DIRECTION_DESCENDING\";\n SortDirection[SortDirection[\"SORT_DIRECTION_ASCENDING\"] = 1] = \"SORT_DIRECTION_ASCENDING\";\n return SortDirection;\n}(SortDirection || {});\nvar SortField = /*#__PURE__*/function (SortField) {\n SortField[SortField[\"SORT_FIELD_CREATED\"] = 0] = \"SORT_FIELD_CREATED\";\n SortField[SortField[\"SORT_FIELD_LONGURL\"] = 1] = \"SORT_FIELD_LONGURL\";\n SortField[SortField[\"SORT_FIELD_FACEBOOK\"] = 2] = \"SORT_FIELD_FACEBOOK\";\n SortField[SortField[\"SORT_FIELD_TWITTER\"] = 3] = \"SORT_FIELD_TWITTER\";\n SortField[SortField[\"SORT_FIELD_LINKEDIN\"] = 4] = \"SORT_FIELD_LINKEDIN\";\n SortField[SortField[\"SORT_FIELD_GOOGLE\"] = 5] = \"SORT_FIELD_GOOGLE\";\n SortField[SortField[\"SORT_FIELD_OTHER\"] = 6] = \"SORT_FIELD_OTHER\";\n SortField[SortField[\"SORT_FIELD_TOTAL\"] = 7] = \"SORT_FIELD_TOTAL\";\n return SortField;\n}(SortField || {});\n// *********************************\n// Code generated by sdkgen\n// DO NOT EDIT!.\n//\n// Enums Index.\n// *********************************\n\nfunction enumStringToValue$2(enumRef, value) {\n if (typeof value === 'number') {\n return value;\n }\n return enumRef[value];\n}\nclass Link {\n static fromProto(proto) {\n let m = new Link();\n m = Object.assign(m, proto);\n if (proto.created) {\n m.created = new Date(proto.created);\n }\n if (proto.owner) {\n m.owner = enumStringToValue$2(Owner, proto.owner);\n }\n if (proto.hidden) {\n m.hidden = new Date(proto.hidden);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.shortCode !== 'undefined') {\n toReturn['shortCode'] = this.shortCode;\n }\n if (typeof this.longUrl !== 'undefined') {\n toReturn['longUrl'] = this.longUrl;\n }\n if (typeof this.businessId !== 'undefined') {\n toReturn['businessId'] = this.businessId;\n }\n if (typeof this.created !== 'undefined' && this.created !== null) {\n toReturn['created'] = 'toApiJson' in this.created ? this.created.toApiJson() : this.created;\n }\n if (typeof this.owner !== 'undefined') {\n toReturn['owner'] = this.owner;\n }\n if (typeof this.description !== 'undefined') {\n toReturn['description'] = this.description;\n }\n if (typeof this.hidden !== 'undefined' && this.hidden !== null) {\n toReturn['hidden'] = 'toApiJson' in this.hidden ? this.hidden.toApiJson() : this.hidden;\n }\n return toReturn;\n }\n}\nfunction enumStringToValue$1(enumRef, value) {\n if (typeof value === 'number') {\n return value;\n }\n return enumRef[value];\n}\nclass CreateLinkRequest {\n static fromProto(proto) {\n let m = new CreateLinkRequest();\n m = Object.assign(m, proto);\n if (proto.owner) {\n m.owner = enumStringToValue$1(Owner, proto.owner);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.businessId !== 'undefined') {\n toReturn['businessId'] = this.businessId;\n }\n if (typeof this.linkUrl !== 'undefined') {\n toReturn['linkUrl'] = this.linkUrl;\n }\n if (typeof this.owner !== 'undefined') {\n toReturn['owner'] = this.owner;\n }\n if (typeof this.description !== 'undefined') {\n toReturn['description'] = this.description;\n }\n if (typeof this.hidden !== 'undefined') {\n toReturn['hidden'] = this.hidden;\n }\n if (typeof this.sensitiveUrl !== 'undefined') {\n toReturn['sensitiveUrl'] = this.sensitiveUrl;\n }\n return toReturn;\n }\n}\nclass CreateLinkResponse {\n static fromProto(proto) {\n let m = new CreateLinkResponse();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.shortCode !== 'undefined') {\n toReturn['shortCode'] = this.shortCode;\n }\n if (typeof this.domain !== 'undefined') {\n toReturn['domain'] = this.domain;\n }\n return toReturn;\n }\n}\nclass GetLinkRequest {\n static fromProto(proto) {\n let m = new GetLinkRequest();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.shortCode !== 'undefined') {\n toReturn['shortCode'] = this.shortCode;\n }\n return toReturn;\n }\n}\nclass GetLinkResponse {\n static fromProto(proto) {\n let m = new GetLinkResponse();\n m = Object.assign(m, proto);\n if (proto.link) {\n m.link = Link.fromProto(proto.link);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.link !== 'undefined' && this.link !== null) {\n toReturn['link'] = 'toApiJson' in this.link ? this.link.toApiJson() : this.link;\n }\n return toReturn;\n }\n}\nclass GetMultiLinkMetricsRequest {\n static fromProto(proto) {\n let m = new GetMultiLinkMetricsRequest();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.shortCode !== 'undefined') {\n toReturn['shortCode'] = this.shortCode;\n }\n return toReturn;\n }\n}\nclass GetMultiLinkMetricsResponse {\n static fromProto(proto) {\n let m = new GetMultiLinkMetricsResponse();\n m = Object.assign(m, proto);\n if (proto.linkMetrics) {\n m.linkMetrics = proto.linkMetrics.map(LinkMetrics.fromProto);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.linkMetrics !== 'undefined' && this.linkMetrics !== null) {\n toReturn['linkMetrics'] = 'toApiJson' in this.linkMetrics ? this.linkMetrics.toApiJson() : this.linkMetrics;\n }\n return toReturn;\n }\n}\nclass LinkMetrics {\n static fromProto(proto) {\n let m = new LinkMetrics();\n m = Object.assign(m, proto);\n if (proto.totalHits) {\n m.totalHits = parseInt(proto.totalHits, 10);\n }\n if (proto.referers) {\n m.referers = Object.keys(proto.referers).reduce((obj, k) => {\n obj[k] = parseInt(proto.referers[k], 10);\n return obj;\n }, {});\n }\n if (proto.created) {\n m.created = new Date(proto.created);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.totalHits !== 'undefined') {\n toReturn['totalHits'] = this.totalHits;\n }\n if (typeof this.referers !== 'undefined' && this.referers !== null) {\n toReturn['referers'] = 'toApiJson' in this.referers ? this.referers.toApiJson() : this.referers;\n }\n if (typeof this.shortCode !== 'undefined') {\n toReturn['shortCode'] = this.shortCode;\n }\n if (typeof this.longUrl !== 'undefined') {\n toReturn['longUrl'] = this.longUrl;\n }\n if (typeof this.created !== 'undefined' && this.created !== null) {\n toReturn['created'] = 'toApiJson' in this.created ? this.created.toApiJson() : this.created;\n }\n if (typeof this.description !== 'undefined') {\n toReturn['description'] = this.description;\n }\n return toReturn;\n }\n}\nclass ListAllLinkMetricsRequest {\n static fromProto(proto) {\n let m = new ListAllLinkMetricsRequest();\n m = Object.assign(m, proto);\n if (proto.sortField) {\n m.sortField = enumStringToValue$1(SortField, proto.sortField);\n }\n if (proto.sortDirection) {\n m.sortDirection = enumStringToValue$1(SortDirection, proto.sortDirection);\n }\n if (proto.owner) {\n m.owner = enumStringToValue$1(Owner, proto.owner);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.businessId !== 'undefined') {\n toReturn['businessId'] = this.businessId;\n }\n if (typeof this.sortField !== 'undefined') {\n toReturn['sortField'] = this.sortField;\n }\n if (typeof this.filterTerm !== 'undefined') {\n toReturn['filterTerm'] = this.filterTerm;\n }\n if (typeof this.sortDirection !== 'undefined') {\n toReturn['sortDirection'] = this.sortDirection;\n }\n if (typeof this.owner !== 'undefined') {\n toReturn['owner'] = this.owner;\n }\n return toReturn;\n }\n}\nclass ListAllLinkMetricsResponse {\n static fromProto(proto) {\n let m = new ListAllLinkMetricsResponse();\n m = Object.assign(m, proto);\n if (proto.linkMetrics) {\n m.linkMetrics = proto.linkMetrics.map(LinkMetrics.fromProto);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.linkMetrics !== 'undefined' && this.linkMetrics !== null) {\n toReturn['linkMetrics'] = 'toApiJson' in this.linkMetrics ? this.linkMetrics.toApiJson() : this.linkMetrics;\n }\n return toReturn;\n }\n}\nclass ListLinksRequest {\n static fromProto(proto) {\n let m = new ListLinksRequest();\n m = Object.assign(m, proto);\n if (proto.options) {\n m.options = PagedRequestOptions.fromProto(proto.options);\n }\n if (proto.owner) {\n m.owner = enumStringToValue$1(Owner, proto.owner);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.businessId !== 'undefined') {\n toReturn['businessId'] = this.businessId;\n }\n if (typeof this.options !== 'undefined' && this.options !== null) {\n toReturn['options'] = 'toApiJson' in this.options ? this.options.toApiJson() : this.options;\n }\n if (typeof this.owner !== 'undefined') {\n toReturn['owner'] = this.owner;\n }\n return toReturn;\n }\n}\nclass ListLinksResponse {\n static fromProto(proto) {\n let m = new ListLinksResponse();\n m = Object.assign(m, proto);\n if (proto.link) {\n m.link = proto.link.map(Link.fromProto);\n }\n if (proto.pagingMetadata) {\n m.pagingMetadata = PagedResponseMetadata.fromProto(proto.pagingMetadata);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.link !== 'undefined' && this.link !== null) {\n toReturn['link'] = 'toApiJson' in this.link ? this.link.toApiJson() : this.link;\n }\n if (typeof this.pagingMetadata !== 'undefined' && this.pagingMetadata !== null) {\n toReturn['pagingMetadata'] = 'toApiJson' in this.pagingMetadata ? this.pagingMetadata.toApiJson() : this.pagingMetadata;\n }\n return toReturn;\n }\n}\nclass PagedRequestOptions {\n static fromProto(proto) {\n let m = new PagedRequestOptions();\n m = Object.assign(m, proto);\n if (proto.pageSize) {\n m.pageSize = parseInt(proto.pageSize, 10);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.cursor !== 'undefined') {\n toReturn['cursor'] = this.cursor;\n }\n if (typeof this.pageSize !== 'undefined') {\n toReturn['pageSize'] = this.pageSize;\n }\n return toReturn;\n }\n}\nclass PagedResponseMetadata {\n static fromProto(proto) {\n let m = new PagedResponseMetadata();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.nextCursor !== 'undefined') {\n toReturn['nextCursor'] = this.nextCursor;\n }\n if (typeof this.hasMore !== 'undefined') {\n toReturn['hasMore'] = this.hasMore;\n }\n return toReturn;\n }\n}\nclass LinkMetricsReferersEntry {\n static fromProto(proto) {\n let m = new LinkMetricsReferersEntry();\n m = Object.assign(m, proto);\n if (proto.value) {\n m.value = parseInt(proto.value, 10);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.key !== 'undefined') {\n toReturn['key'] = this.key;\n }\n if (typeof this.value !== 'undefined') {\n toReturn['value'] = this.value;\n }\n return toReturn;\n }\n}\nclass SetLinkHideStatusesRequest {\n static fromProto(proto) {\n let m = new SetLinkHideStatusesRequest();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.businessId !== 'undefined') {\n toReturn['businessId'] = this.businessId;\n }\n if (typeof this.shortCodes !== 'undefined') {\n toReturn['shortCodes'] = this.shortCodes;\n }\n if (typeof this.hidden !== 'undefined') {\n toReturn['hidden'] = this.hidden;\n }\n return toReturn;\n }\n}\nfunction enumStringToValue(enumRef, value) {\n if (typeof value === 'number') {\n return value;\n }\n return enumRef[value];\n}\nclass HeaderValues {\n static fromProto(proto) {\n let m = new HeaderValues();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.values !== 'undefined') {\n toReturn['values'] = this.values;\n }\n return toReturn;\n }\n}\nclass VisitHeadersEntry {\n static fromProto(proto) {\n let m = new VisitHeadersEntry();\n m = Object.assign(m, proto);\n if (proto.value) {\n m.value = HeaderValues.fromProto(proto.value);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.key !== 'undefined') {\n toReturn['key'] = this.key;\n }\n if (typeof this.value !== 'undefined' && this.value !== null) {\n toReturn['value'] = 'toApiJson' in this.value ? this.value.toApiJson() : this.value;\n }\n return toReturn;\n }\n}\nclass Visit {\n static fromProto(proto) {\n let m = new Visit();\n m = Object.assign(m, proto);\n if (proto.headers) {\n m.headers = Object.keys(proto.headers).reduce((obj, k) => {\n obj[k] = HeaderValues.fromProto(proto.headers[k]);\n return obj;\n }, {});\n }\n if (proto.created) {\n m.created = new Date(proto.created);\n }\n if (proto.updated) {\n m.updated = new Date(proto.updated);\n }\n if (proto.deleted) {\n m.deleted = new Date(proto.deleted);\n }\n if (proto.link) {\n m.link = Link.fromProto(proto.link);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.id !== 'undefined') {\n toReturn['id'] = this.id;\n }\n if (typeof this.headers !== 'undefined' && this.headers !== null) {\n toReturn['headers'] = 'toApiJson' in this.headers ? this.headers.toApiJson() : this.headers;\n }\n if (typeof this.created !== 'undefined' && this.created !== null) {\n toReturn['created'] = 'toApiJson' in this.created ? this.created.toApiJson() : this.created;\n }\n if (typeof this.updated !== 'undefined' && this.updated !== null) {\n toReturn['updated'] = 'toApiJson' in this.updated ? this.updated.toApiJson() : this.updated;\n }\n if (typeof this.deleted !== 'undefined' && this.deleted !== null) {\n toReturn['deleted'] = 'toApiJson' in this.deleted ? this.deleted.toApiJson() : this.deleted;\n }\n if (typeof this.domain !== 'undefined') {\n toReturn['domain'] = this.domain;\n }\n if (typeof this.sessionId !== 'undefined') {\n toReturn['sessionId'] = this.sessionId;\n }\n if (typeof this.link !== 'undefined' && this.link !== null) {\n toReturn['link'] = 'toApiJson' in this.link ? this.link.toApiJson() : this.link;\n }\n return toReturn;\n }\n}\n\n// *********************************\n// Code generated by sdkgen\n// DO NOT EDIT!.\n//\n// Objects Index.\n// *********************************\n\nconst environment = (window ? window['environment'] : 'prod') ?? 'prod';\nconst hostMap = {\n 'local': 'url-shortener-api.vendasta-local.com',\n 'test': '',\n 'demo': 'url-shortener-api-demo.apigateway.co',\n 'prod': 'url-shortener-api-prod.apigateway.co',\n 'production': 'url-shortener-api-prod.apigateway.co'\n};\nlet HostService = /*#__PURE__*/(() => {\n class HostService {\n get host() {\n return hostMap[environment.toLowerCase()];\n }\n get hostWithScheme() {\n return 'https://' + this.host;\n }\n }\n HostService.ɵfac = function HostService_Factory(t) {\n return new (t || HostService)();\n };\n HostService.ɵprov = /* @__PURE__ */i0.ɵɵdefineInjectable({\n token: HostService,\n factory: HostService.ɵfac,\n providedIn: 'root'\n });\n return HostService;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n\n// *********************************\n// Code generated by sdkgen\n// DO NOT EDIT!.\n//\n// API Service.\n// *********************************\nlet UrlShortenerApiService = /*#__PURE__*/(() => {\n class UrlShortenerApiService {\n constructor(http, hostService) {\n this.http = http;\n this.hostService = hostService;\n this._host = this.hostService.hostWithScheme;\n }\n apiOptions() {\n return {\n headers: new HttpHeaders({\n 'Content-Type': 'application/json'\n }),\n withCredentials: true\n };\n }\n createLink(r) {\n const request = r.toApiJson ? r : new CreateLinkRequest(r);\n return this.http.post(this._host + \"/url_shortener.v1.UrlShortener/CreateLink\", request.toApiJson(), this.apiOptions()).pipe(map(resp => CreateLinkResponse.fromProto(resp)));\n }\n getLink(r) {\n const request = r.toApiJson ? r : new GetLinkRequest(r);\n return this.http.post(this._host + \"/url_shortener.v1.UrlShortener/GetLink\", request.toApiJson(), this.apiOptions()).pipe(map(resp => GetLinkResponse.fromProto(resp)));\n }\n listLinks(r) {\n const request = r.toApiJson ? r : new ListLinksRequest(r);\n return this.http.post(this._host + \"/url_shortener.v1.UrlShortener/ListLinks\", request.toApiJson(), this.apiOptions()).pipe(map(resp => ListLinksResponse.fromProto(resp)));\n }\n getMultiLinkMetrics(r) {\n const request = r.toApiJson ? r : new GetMultiLinkMetricsRequest(r);\n return this.http.post(this._host + \"/url_shortener.v1.UrlShortener/GetMultiLinkMetrics\", request.toApiJson(), this.apiOptions()).pipe(map(resp => GetMultiLinkMetricsResponse.fromProto(resp)));\n }\n listAllLinkMetrics(r) {\n const request = r.toApiJson ? r : new ListAllLinkMetricsRequest(r);\n return this.http.post(this._host + \"/url_shortener.v1.UrlShortener/ListAllLinkMetrics\", request.toApiJson(), this.apiOptions()).pipe(map(resp => ListAllLinkMetricsResponse.fromProto(resp)));\n }\n setLinkHideStatuses(r) {\n const request = r.toApiJson ? r : new SetLinkHideStatusesRequest(r);\n return this.http.post(this._host + \"/url_shortener.v1.UrlShortener/SetLinkHideStatuses\", request.toApiJson(), {\n ...this.apiOptions(),\n observe: 'response'\n });\n }\n }\n UrlShortenerApiService.ɵfac = function UrlShortenerApiService_Factory(t) {\n return new (t || UrlShortenerApiService)(i0.ɵɵinject(i1.HttpClient), i0.ɵɵinject(HostService));\n };\n UrlShortenerApiService.ɵprov = /* @__PURE__ */i0.ɵɵdefineInjectable({\n token: UrlShortenerApiService,\n factory: UrlShortenerApiService.ɵfac,\n providedIn: 'root'\n });\n return UrlShortenerApiService;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\nlet UrlShortenerService = /*#__PURE__*/(() => {\n class UrlShortenerService {\n constructor(api) {\n this.api = api;\n }\n getLink(shortCode) {\n const req = new GetLinkRequest({\n shortCode: shortCode\n });\n return this.api.getLink(req).pipe(map(resp => resp.link));\n }\n createLink(businessId, linkUrl, owner, description, hidden) {\n const req = new CreateLinkRequest({\n businessId: businessId,\n linkUrl: linkUrl,\n owner: owner,\n description: description,\n hidden: hidden\n });\n return this.api.createLink(req);\n }\n listLinks(businessId, cursor, pageSize, owner) {\n const req = new ListLinksRequest({\n businessId: businessId,\n owner: owner,\n options: new PagedRequestOptions({\n cursor: cursor,\n pageSize: pageSize\n })\n });\n return this.api.listLinks(req).pipe(map(resp => new PagedResponse(resp.link, resp.pagingMetadata.nextCursor, resp.pagingMetadata.hasMore)));\n }\n listLinkMetrics(businessId, sortField, filterTerm, sortDirection, owner) {\n const body = {\n businessId: businessId,\n sortField: sortField,\n filterTerm: filterTerm,\n sortDirection: sortDirection,\n owner: owner\n };\n const req = new ListAllLinkMetricsRequest(body);\n return this.api.listAllLinkMetrics(req).pipe(map(resp => resp.linkMetrics));\n }\n setLinkHideStatuses(businessId, shortCodes, hidden) {\n const req = new SetLinkHideStatusesRequest({\n businessId: businessId,\n shortCodes: shortCodes,\n hidden: hidden\n });\n return this.api.setLinkHideStatuses(req).pipe(map(res => res.status === 200));\n }\n }\n UrlShortenerService.ɵfac = function UrlShortenerService_Factory(t) {\n return new (t || UrlShortenerService)(i0.ɵɵinject(UrlShortenerApiService));\n };\n UrlShortenerService.ɵprov = /* @__PURE__ */i0.ɵɵdefineInjectable({\n token: UrlShortenerService,\n factory: UrlShortenerService.ɵfac,\n providedIn: 'root'\n });\n return UrlShortenerService;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\nclass PagedResponse {\n constructor(results, nextCursor, hasMore) {\n this.results = results;\n this.nextCursor = nextCursor;\n this.hasMore = hasMore;\n }\n}\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { CreateLinkResponse, Link, LinkMetrics, Owner, PagedResponse, SortDirection, SortField, UrlShortenerService };\n","import { HttpClient, HttpResponse } from '@angular/common/http';\nimport { Injectable } from '@angular/core';\nimport {\n AddBundleRequest,\n AddBundleResponse,\n AddLineItemRequest,\n AddLineItemResponse,\n Invoice as ApiInvoice,\n ChargeInvoiceRequest,\n CreateInvoiceRequest,\n CreateInvoiceResponse,\n CreatePaymentLinkRequest,\n CreatePaymentLinkResponse,\n DeleteInvoiceRequest,\n DeleteLineItemRequest,\n DeleteLineItemResponse,\n DuplicateInvoiceRequest,\n DuplicateInvoiceResponse,\n FieldMask,\n GetInvoiceRequest,\n GetInvoiceResponse,\n GetUpcomingInvoicePreviewRequest,\n GetUpcomingInvoicePreviewResponse,\n HostService,\n InvoiceApiService,\n ListInvoicesRequest,\n PagedRequestOptions,\n PayInvoiceRequest,\n PaymentLinkItem,\n RemoveBundleRequest,\n RemoveBundleResponse,\n SendInvoiceRequest,\n UpdateBundleRequest,\n UpdateBundleResponse,\n UpdateDefaultTaxRatesRequest,\n UpdateDefaultTaxRatesResponse,\n UpdateInvoiceRequest,\n UpdateInvoiceResponse,\n UpdateLineItemRequest,\n UpdateLineItemResponse,\n VoidInvoiceRequest,\n} from '@vendasta/billing';\nimport { SSOService, newPartnerServiceContext } from '@vendasta/sso';\nimport { Owner, UrlShortenerService } from '@vendasta/url-shortener';\nimport { Observable, of } from 'rxjs';\nimport { catchError, map, share, switchMap, take } from 'rxjs/operators';\nimport { PagedResponse } from '../core';\nimport { CollectionMethod, collectionMethodToApi } from '../retail-customer-configuration';\nimport { Invoice, InvoicePDFType, convertApiInvoice, isInvoice, listInvoiceFiltersToApi } from './invoice';\nimport { ListInvoicesFilter } from './list-invoice';\nimport { AppliedDiscount } from '../applied_discount';\nimport { appliedDiscountToApi } from '../applied_discount/applied_discount';\n\n@Injectable({ providedIn: 'root' })\nexport class InvoiceService {\n constructor(\n private hostService: HostService,\n private http: HttpClient,\n private invoiceApiService: InvoiceApiService,\n private ssoService: SSOService,\n private urlShortenerService: UrlShortenerService,\n ) {}\n\n addBundle(merchantId: string, invoiceId: string, bundleId: string): Observable {\n return this.invoiceApiService\n .addBundle(\n new AddBundleRequest({\n merchantId,\n invoiceId,\n bundleId,\n }),\n )\n .pipe(map((res: AddBundleResponse) => convertApiInvoice(res.invoice)));\n }\n\n addLineItem(\n merchantId: string,\n invoiceId: string,\n sku: string,\n amount: number,\n quantity: number,\n description: string,\n taxRates: string[],\n appliedDiscounts?: AppliedDiscount[],\n ): Observable {\n return this.invoiceApiService\n .addLineItem(\n new AddLineItemRequest({\n merchantId,\n invoiceId,\n sku,\n amount,\n quantity,\n description,\n taxRates,\n discounts: (appliedDiscounts || []).map((d) => appliedDiscountToApi(d)),\n }),\n )\n .pipe(map((res: AddLineItemResponse) => convertApiInvoice(res.invoice)));\n }\n\n charge(\n merchantId: string,\n customerId: string,\n invoiceId: string,\n paymentMethodId: string,\n ): Observable> {\n return this.invoiceApiService.charge(\n new ChargeInvoiceRequest({\n merchantId,\n customerId,\n invoiceId,\n paymentMethodId,\n }),\n );\n }\n\n create(merchantId: string, customerId: string, orderId?: string, currencyCode?: string): Observable {\n return this.invoiceApiService\n .create(\n new CreateInvoiceRequest({\n merchantId: merchantId,\n customerId: customerId,\n orderId: orderId,\n currencyCode: currencyCode,\n }),\n )\n .pipe(map((res: CreateInvoiceResponse) => (res ? res.invoiceId : '')));\n }\n\n createPaymentLink(\n merchantId: string,\n customerId: string,\n lineItems: PaymentLinkItem[],\n currencyCode = '',\n ): Observable {\n return this.invoiceApiService\n .createPaymentLink(\n new CreatePaymentLinkRequest({\n merchantId: merchantId,\n customerId: customerId,\n lineItems: lineItems,\n currencyCode: currencyCode,\n }),\n )\n .pipe(map((res: CreatePaymentLinkResponse) => (res ? res.invoiceId : '')));\n }\n\n delete(merchantId: string, invoiceId: string): Observable> {\n return this.invoiceApiService.delete(\n new DeleteInvoiceRequest({\n merchantId,\n invoiceId,\n }),\n );\n }\n\n deleteLineItem(merchantId: string, invoiceId: string, id: string): Observable {\n return this.invoiceApiService\n .deleteLineItem(\n new DeleteLineItemRequest({\n merchantId,\n invoiceId,\n id,\n }),\n )\n .pipe(map((res: DeleteLineItemResponse) => convertApiInvoice(res.invoice)));\n }\n\n exportCSV(merchantId: string, filters?: ListInvoicesFilter): Observable {\n const url = `${this.hostService.hostWithScheme}/invoice/export`;\n return this.http\n .post(\n url,\n {\n merchant_id: merchantId,\n filters: filters,\n },\n {\n observe: 'body',\n responseType: 'blob',\n withCredentials: true,\n },\n )\n .pipe(share());\n }\n\n generatePDF(merchantId: string, invoiceId: string, documentType: InvoicePDFType): Observable {\n const url = `${this.hostService.hostWithScheme}/invoice/generate-pdf`;\n return this.http\n .post(\n url,\n {\n merchant_id: merchantId,\n invoice_id: invoiceId,\n document_type: documentType,\n },\n {\n observe: 'body',\n responseType: 'blob',\n },\n )\n .pipe(share());\n }\n\n get(merchantId: string, invoiceId: string): Observable {\n return this.invoiceApiService\n .get(\n new GetInvoiceRequest({\n merchantId,\n invoiceId,\n }),\n )\n .pipe(map((res: GetInvoiceResponse) => convertApiInvoice(res.invoice)));\n }\n\n list(filters: ListInvoicesFilter, cursor: string, pageSize: number): Observable> {\n const req = new ListInvoicesRequest({\n filters: listInvoiceFiltersToApi(filters),\n pagingOptions: new PagedRequestOptions({ cursor, pageSize }),\n });\n return this.invoiceApiService.list(req).pipe(\n map((response) => {\n const invoices = (response.invoices || []).map((item) => convertApiInvoice(item)).filter(isInvoice);\n return new PagedResponse(invoices, response.pagingMetadata.nextCursor, response.pagingMetadata.hasMore);\n }),\n );\n }\n\n pay(merchantId: string, invoiceId: string, reason: string): Observable> {\n return this.invoiceApiService.pay(\n new PayInvoiceRequest({\n merchantId,\n invoiceId,\n reason,\n }),\n );\n }\n\n preview(merchantId: string, invoiceId: string): Observable {\n const url = `${this.hostService.hostWithScheme}/retail-invoice/preview`;\n return this.http.post(\n url,\n {\n merchant_id: merchantId,\n invoice_id: invoiceId,\n },\n {\n responseType: 'text',\n withCredentials: true,\n },\n );\n }\n\n getUpcomingPreview(merchantId: string, customerId: string, invoiceDate?: Date): Observable {\n return this.invoiceApiService\n .getUpcomingInvoicePreview(\n new GetUpcomingInvoicePreviewRequest({\n merchantId,\n customerId,\n invoiceDate,\n }),\n )\n .pipe(map((res: GetUpcomingInvoicePreviewResponse) => convertApiInvoice(res.invoice)));\n }\n\n removeBundle(\n merchantId: string,\n invoiceId: string,\n bundleId: string,\n bundleInstanceId?: string,\n ): Observable {\n return this.invoiceApiService\n .removeBundle(\n new RemoveBundleRequest({\n merchantId,\n invoiceId,\n bundleId,\n bundleInstanceId,\n }),\n )\n .pipe(map((res: RemoveBundleResponse) => convertApiInvoice(res.invoice)));\n }\n\n send(merchantId: string, invoiceId: string, emailAddresses: string[]): Observable> {\n return this.invoiceApiService.send(\n new SendInvoiceRequest({\n merchantId,\n invoiceId,\n emailAddresses,\n }),\n );\n }\n\n updateBundle(\n merchantId: string,\n invoiceId: string,\n bundleId: string,\n hideBundleItems: boolean,\n bundleInstanceId?: string,\n ): Observable {\n return this.invoiceApiService\n .updateBundle(\n new UpdateBundleRequest({\n merchantId,\n invoiceId,\n bundleId,\n hideBundleItems,\n bundleInstanceId,\n }),\n )\n .pipe(map((res: UpdateBundleResponse) => convertApiInvoice(res.invoice)));\n }\n\n updateDueDate(merchantId: string, id: string, due: Date): Observable {\n const pbInvoice = new ApiInvoice({\n merchantId,\n id,\n due,\n });\n\n const fm = new FieldMask({\n paths: ['due'],\n });\n\n return this.update(pbInvoice, fm);\n }\n\n updateIssuedDate(merchantId: string, id: string, issued: Date): Observable {\n const pbInvoice = new ApiInvoice({\n merchantId,\n id,\n issued,\n });\n\n const fm = new FieldMask({\n paths: ['issued'],\n });\n return this.update(pbInvoice, fm);\n }\n\n updateContact(merchantId: string, id: string, contactId: string): Observable {\n const pbInvoice = new ApiInvoice({\n merchantId,\n id,\n contactId,\n });\n\n const fm = new FieldMask({\n paths: ['contactId'],\n });\n\n return this.update(pbInvoice, fm);\n }\n\n updateAdditionalContacts(merchantId: string, id: string, additionalContactIds: string[]): Observable {\n const pbInvoice = new ApiInvoice({\n merchantId,\n id,\n additionalContactIds,\n });\n\n const fm = new FieldMask({\n paths: ['additionalContactIds'],\n });\n\n return this.update(pbInvoice, fm);\n }\n\n updateCollectionMethod(merchantId: string, id: string, collectionMethod: CollectionMethod): Observable {\n const apiCollectionMethod = collectionMethodToApi(collectionMethod);\n const pbInvoice = new ApiInvoice({\n merchantId,\n id,\n collectionMethod: apiCollectionMethod,\n });\n\n const fm = new FieldMask({\n paths: ['collectionMethod'],\n });\n\n return this.update(pbInvoice, fm);\n }\n\n updateMemo(merchantId: string, id: string, memo: string): Observable {\n const pbInvoice = new ApiInvoice({\n merchantId,\n id,\n memo,\n });\n\n const fm = new FieldMask({\n paths: ['memo'],\n });\n\n return this.update(pbInvoice, fm);\n }\n\n updateDefaultPaymentMethod(merchantId: string, id: string, defaultPaymentMethod: string): Observable {\n const pbInvoice = new ApiInvoice({\n merchantId,\n id,\n defaultPaymentMethod,\n });\n\n const fm = new FieldMask({\n paths: ['defaultPaymentMethod'],\n });\n\n return this.update(pbInvoice, fm);\n }\n\n updateDefaultTaxes(merchantId: string, invoiceId: string, taxRateIds: string[]): Observable {\n return this.invoiceApiService\n .updateDefaultTaxRates(\n new UpdateDefaultTaxRatesRequest({\n merchantId,\n invoiceId,\n taxRateIds,\n }),\n )\n .pipe(map((res: UpdateDefaultTaxRatesResponse) => convertApiInvoice(res.invoice)));\n }\n\n updateLineItem(\n merchantId: string,\n invoiceId: string,\n id: string,\n sku: string,\n amount: number,\n quantity: number,\n description: string,\n taxRates: string[],\n appliedDiscounts?: AppliedDiscount[],\n ): Observable {\n return this.invoiceApiService\n .updateLineItem(\n new UpdateLineItemRequest({\n merchantId,\n invoiceId,\n id,\n sku,\n amount,\n quantity,\n description,\n taxRates,\n discounts: (appliedDiscounts || []).map((d) => appliedDiscountToApi(d)),\n }),\n )\n .pipe(map((res: UpdateLineItemResponse) => convertApiInvoice(res.invoice)));\n }\n\n private update(invoice: ApiInvoice, mask: FieldMask): Observable {\n return this.invoiceApiService\n .update(\n new UpdateInvoiceRequest({\n invoice: invoice,\n fieldMask: mask,\n }),\n )\n .pipe(map((res: UpdateInvoiceResponse) => convertApiInvoice(res.invoice)));\n }\n\n void(merchantId: string, invoiceId: string, reason: string): Observable> {\n return this.invoiceApiService.void(\n new VoidInvoiceRequest({\n merchantId,\n invoiceId,\n reason,\n }),\n );\n }\n\n duplicate(merchantId: string, invoiceId: string): Observable {\n return this.invoiceApiService\n .duplicate(\n new DuplicateInvoiceRequest({\n merchantId,\n invoiceId,\n }),\n )\n .pipe(map((res: DuplicateInvoiceResponse) => (res ? res.invoiceId : '')));\n }\n\n generateShortLink(merchantId: string, invoiceId: string): Observable {\n return this.ssoService\n .getEntryUrl('VBC', newPartnerServiceContext(merchantId), {\n path: `/invoice/${merchantId}/${invoiceId}`,\n skipGatewayAuthentication: true,\n })\n .pipe(\n switchMap((url) => {\n return this.urlShortenerService.createLink('', url, Owner.OWNER_UNTRACKED, '', false).pipe(\n catchError(() => of(null)),\n map((result) => {\n if (!result) {\n return url;\n }\n return `https://${result.domain}${result.shortCode}`;\n }),\n );\n }),\n catchError(() => {\n throw new Error('failed to generate short link');\n }),\n take(1),\n );\n }\n}\n","export {\n ListRecurringInvoicesByMerchantID,\n ListRecurringInvoicesByCustomerID,\n RecurringInvoice,\n CreateRecurringInvoiceRequest,\n RecurringInvoiceLineItem,\n RecurringInvoiceBundle,\n ListRecurringInvoicesFilters,\n ListRecurringInvoicesDetailedInterval,\n} from './recurring-invoice';\nexport { RecurringInvoiceStatus } from './status';\nexport { Interval } from './interval';\nexport { PaymentProcessor } from './payment-processor';\nexport { RecurringInvoiceService } from './recurring-invoice.service';\n","export { InvoiceService } from './invoice.service';\nexport {\n InvoiceStatus,\n Invoice,\n InvoiceItem,\n InvoiceOrigin,\n InvoiceOriginAPI,\n AppliedTaxRate,\n InvoiceDateField,\n isInvoice,\n InvoicePDFType,\n} from './invoice';\nexport { ListInvoicesFilter } from './list-invoice';\nexport { invoiceFromRecurringInvoice } from './adapters';\n","export { BankAccountService } from './bank-account.service';\nexport { BankAccount } from './bank_account';\nexport {\n DeleteBankAccountRequest,\n ListBankAccountsRequest,\n ListBankAccountsResponse,\n SetDefaultBankAccountRequest,\n} from '@vendasta/billing';\n","export { PayoutTypeLabel, PayoutStatusType, Payout, PayoutStatusLabel, PayoutTypeType } from './payout';\nexport { BankReconciliationService } from './bank-reconciliation.service';\nexport { Subsidiary } from './subsidiary';\n","import {\n BillableItem as BillableItemApi,\n BillableItemCustomerAddressInterface,\n Frequency as FrequencyApi,\n SubscriptionStatus as SubscriptionStatusApi,\n RenewalState as RenewalStateApi,\n} from '@vendasta/billing';\nimport {\n Frequency,\n frequencyFromApi,\n ProductPricing,\n productPricingFromApi,\n SubscriptionStatus,\n subscriptionStatusFromApi,\n} from '../pricing';\nimport { SubscriptionSource, subscriptionSourceFromApi } from '../pricing/source';\n\nexport interface ListBillableItemsFilter {\n skus?: string[];\n merchantId?: string;\n customerId?: string;\n}\n\nexport interface ListSubscriptionsFilter {\n skus?: string[];\n merchantId?: string;\n customerId?: string;\n searchTerm?: string;\n status?: SubscriptionStatusApi;\n expiredDateGte?: Date;\n expiredDateLte?: Date;\n frequencies?: FrequencyApi[];\n}\n\nexport interface SubscriptionsProjectionFilter {\n price?: boolean;\n}\n\nexport interface ListSubscriptionsFilterHttp {\n skus?: string[];\n merchantId?: string;\n customerId?: string;\n}\n\nexport interface CustomerAddress {\n address?: string;\n city?: string;\n state?: string;\n zip?: string;\n country?: string;\n}\n\nexport interface BillableItem {\n subscriptionId: string;\n merchantId: string;\n sku: string;\n productName: string;\n customerId: string;\n customerName: string;\n orderId: string;\n expiry?: Date;\n billingStart?: Date;\n created?: Date;\n updated?: Date;\n frequency: Frequency;\n retailFrequency: Frequency;\n nextRenewal?: Date;\n nextRetailRenewal?: Date;\n customerAddress: CustomerAddress;\n customUnitPrice: number;\n retailUnitPrice: number;\n status?: SubscriptionStatus;\n price?: ProductPricing;\n source?: SubscriptionSource;\n autoBillable: boolean;\n description?: string;\n}\n\nexport enum RenewalState {\n Immediate = 'IMMEDIATE',\n Delayed = 'DELAYED',\n}\n\nfunction customerAddressFromApi(apiAddress: BillableItemCustomerAddressInterface | undefined): CustomerAddress {\n return {\n address: apiAddress?.address || '',\n city: apiAddress?.city || '',\n state: apiAddress?.state || '',\n zip: apiAddress?.zip || '',\n country: apiAddress?.country || '',\n };\n}\n\nexport function billableItemFromApi(apiItem: BillableItemApi): BillableItem {\n const zeroDate = new Date('0001-01-01T00:00:00Z').valueOf();\n\n return {\n subscriptionId: apiItem.subscriptionId || '',\n merchantId: apiItem.merchantId || '',\n sku: apiItem.sku || '',\n productName: apiItem.productName || '',\n customerId: apiItem.customerId || '',\n customerName: apiItem.customerName || '',\n orderId: apiItem.orderId || '',\n expiry: apiItem.expiry.valueOf() !== zeroDate ? new Date(apiItem.expiry) : undefined,\n billingStart: apiItem.billingStart.valueOf() !== zeroDate ? new Date(apiItem.billingStart) : undefined,\n created: apiItem.created.valueOf() !== zeroDate ? new Date(apiItem.created) : undefined,\n updated: apiItem.updated.valueOf() !== zeroDate ? new Date(apiItem.updated) : undefined,\n frequency: frequencyFromApi(apiItem.frequency),\n retailFrequency: frequencyFromApi(apiItem.retailFrequency),\n nextRenewal: apiItem.nextRenewal.valueOf() !== zeroDate ? new Date(apiItem.nextRenewal) : undefined,\n nextRetailRenewal:\n apiItem.nextRetailRenewal.valueOf() !== zeroDate ? new Date(apiItem.nextRetailRenewal) : undefined,\n customerAddress: customerAddressFromApi(apiItem.customerAddress),\n customUnitPrice: apiItem.customUnitPrice || 0,\n retailUnitPrice: apiItem.retailUnitPrice || 0,\n status: subscriptionStatusFromApi(apiItem.status),\n price: apiItem.price ? productPricingFromApi(apiItem.price) : undefined,\n source: subscriptionSourceFromApi(apiItem.source),\n autoBillable: apiItem.autoBillable,\n description: apiItem.description || '',\n };\n}\n\nexport function listSubscriptionsFiltersToHTTPJson(filters: ListBillableItemsFilter): ListSubscriptionsFilterHttp {\n return {\n merchantId: filters.merchantId,\n customerId: filters.customerId,\n skus: filters.skus,\n };\n}\n\nexport function renewalStateToApi(state: RenewalState): RenewalStateApi {\n if (state === RenewalState.Delayed) {\n return RenewalStateApi.RENEWAL_STATE_DELAYED;\n }\n return RenewalStateApi.RENEWAL_STATE_IMMEDIATE;\n}\n","export { SubscriptionService } from './billable-item.service';\nexport {\n BillableItem,\n ListBillableItemsFilter,\n ListSubscriptionsFilter,\n SubscriptionsProjectionFilter,\n RenewalState,\n renewalStateToApi,\n} from './billable-item';\n","import { throwError as observableThrowError, Observable } from 'rxjs';\nimport { HttpErrorResponse } from '@angular/common/http';\n\nexport function handleCsvError(error: HttpErrorResponse): Observable {\n if (error.error instanceof ErrorEvent) {\n console.error(`An error occurred:`, error.error.message);\n } else {\n console.error(`Server returned ${error.message}`);\n }\n\n return observableThrowError(`Unable to download csv`);\n}\n\nexport function handleFileUploadError(error: HttpErrorResponse): Observable {\n if (error.error instanceof ErrorEvent) {\n console.error(`An error occurred:`, error.error.message);\n } else {\n console.error(`Server returned ${error.message}`);\n }\n\n return observableThrowError(`Unable to upload file`);\n}\n","/* Api service for billing's http endpoints */\n\nimport { Injectable } from '@angular/core';\nimport { HttpClient } from '@angular/common/http';\nimport { Observable } from 'rxjs';\nimport { share, catchError } from 'rxjs/operators';\nimport { DownloadCsvRequestInterface } from './revenue.interfaces';\nimport { handleCsvError } from '../http-shared/error-handlers';\nimport { HostService } from '@vendasta/billing';\n\n@Injectable({ providedIn: 'root' })\nexport class RevenueApiService {\n constructor(private hostService: HostService, private http: HttpClient) {}\n\n downloadCsv(r: DownloadCsvRequestInterface): Observable {\n const queryParams = `?filename=${r.filename}`;\n return this.http\n .get(this.hostService.hostWithScheme + '/revenue-csv' + queryParams, this.apiOptions())\n .pipe(share(), catchError(handleCsvError));\n }\n\n private apiOptions(): { responseType: 'blob'; withCredentials: boolean } {\n return {\n responseType: 'blob',\n withCredentials: true,\n };\n }\n}\n","/* Api service for billing's http endpoints */\n\nimport { HttpClient } from '@angular/common/http';\nimport { Injectable } from '@angular/core';\nimport { HostService } from '@vendasta/billing';\nimport { Observable } from 'rxjs';\nimport { catchError, share } from 'rxjs/operators';\nimport { handleCsvError } from '../http-shared/error-handlers';\nimport { DownloadMerchantReportCsvRequest } from './merchant-report.interfaces';\n\n@Injectable({ providedIn: 'root' })\nexport class MerchantReportApiService {\n constructor(private hostService: HostService, private http: HttpClient) {}\n\n downloadCsv(r: DownloadMerchantReportCsvRequest): Observable {\n const queryParams = `?merchantID=${r.merchantId}&year=${r.year}&month=${r.month}`;\n return this.http\n .get(this.hostService.hostWithScheme + '/billing-report/get' + queryParams, this.apiOptions())\n .pipe(share(), catchError(handleCsvError));\n }\n\n generateCsv(r: DownloadMerchantReportCsvRequest): Observable {\n const queryParams = `?merchantID=${r.merchantId}&year=${r.year}&month=${r.month}`;\n return this.http\n .get(this.hostService.hostWithScheme + '/billing-report/generate' + queryParams, this.apiOptions())\n .pipe(share(), catchError(handleCsvError));\n }\n\n private apiOptions(): { responseType: 'blob'; withCredentials: boolean } {\n return {\n responseType: 'blob',\n withCredentials: true,\n };\n }\n}\n","import { PurchaseStatus as PurchaseStatusApi } from '@vendasta/billing';\n\nexport enum PurchaseStatus {\n Unset = 'UNSET',\n Pending = 'PENDING',\n Due = 'DUE',\n Success = 'SUCCESS',\n Dunning = 'DUNNING',\n Failed = 'FAILED',\n}\n\nexport function purchaseStatusFromApi(psApi: PurchaseStatusApi | undefined): PurchaseStatus {\n switch (psApi) {\n case PurchaseStatusApi.PURCHASE_STATUS_PENDING:\n return PurchaseStatus.Pending;\n case PurchaseStatusApi.PURCHASE_STATUS_DUE:\n return PurchaseStatus.Due;\n case PurchaseStatusApi.PURCHASE_STATUS_SUCCESS:\n return PurchaseStatus.Success;\n case PurchaseStatusApi.PURCHASE_STATUS_DUNNING:\n return PurchaseStatus.Dunning;\n case PurchaseStatusApi.PURCHASE_STATUS_FAILED:\n return PurchaseStatus.Failed;\n }\n return PurchaseStatus.Unset;\n}\n","import { AppliedDiscount, appliedDiscountFromApi } from '../applied_discount';\nimport { AppliedTaxRate } from '../invoice/invoice';\nimport { BillingStrategy, billingStrategyFromAPI, Currency, currencyFromApi } from '../pricing';\nimport {\n AppliedCreditInterface,\n AppliedTaxRateInterface,\n CreditType,\n Currency as CurrencyApi,\n PurchaseInterface,\n PurchaseItemInterface,\n} from '@vendasta/billing';\nimport { PurchaseStatus, purchaseStatusFromApi } from './purchase_status';\n\nexport interface Purchase {\n merchantId: string;\n timestamp?: Date;\n purchaseId: string;\n total: number;\n currency: Currency;\n renewal: boolean;\n items: PurchaseItem[];\n billingStrategy: BillingStrategy;\n isDunning: boolean;\n dunningAttempt: number;\n pauseDunningUntil?: Date;\n voided?: Date;\n paid: boolean;\n status: PurchaseStatus;\n creditAmount: number;\n appliedCredits: AppliedCredit[];\n taxAmount: number;\n appliedTaxRates: AppliedTaxRate[];\n}\n\nexport enum AppliedCreditType {\n CREDIT_TYPE_CREDIT_NOTE = 'Credit note',\n CREDIT_TYPE_PROMOTIONAL = 'Promotional',\n CREDIT_TYPE_UNSET = '',\n}\n\nexport interface AppliedCredit {\n appliedAmount: number;\n referenceId: string;\n referenceType: AppliedCreditType;\n}\n\nexport interface PurchaseItem {\n sku: string;\n description: string;\n amount: number;\n orderId: string;\n customerId: string;\n discountAmount: number;\n total: number;\n currency?: Currency;\n appliedDiscounts: AppliedDiscount[];\n taxAmount: number;\n appliedTaxRates: AppliedTaxRate[];\n setupFee?: number;\n feeAmount?: number;\n\n merchantId: string;\n purchaseDay: string;\n purchaseId: string;\n}\n\nexport function purchaseFromApi(pApi: PurchaseInterface): Purchase {\n return {\n merchantId: pApi.merchantId || '',\n timestamp: pApi.timestamp ? new Date(pApi.timestamp) : undefined,\n purchaseId: pApi.purchaseId || '',\n total: pApi.total || 0,\n currency: pApi.currency ? currencyFromApi(pApi.currency) : Currency.USD,\n renewal: pApi.renewal || false,\n items: pApi.items ? pApi.items.map((p) => purchaseItemFromApi(p)) : [],\n billingStrategy: billingStrategyFromAPI(pApi.billingStrategy),\n isDunning: pApi.isDunning || false,\n dunningAttempt: pApi.dunningAttempt || 0,\n pauseDunningUntil: pApi.pauseDunningUntil ? new Date(pApi.pauseDunningUntil) : undefined,\n voided: pApi.voided ? new Date(pApi.voided) : undefined,\n paid: pApi.paid || false,\n status: purchaseStatusFromApi(pApi.status),\n creditAmount: pApi.creditAmount || 0,\n appliedCredits: pApi.appliedCredits ? pApi.appliedCredits.map((ac) => appliedCreditFromAPI(ac)) : [],\n taxAmount: pApi.taxAmount || 0,\n appliedTaxRates: (pApi.appliedTaxRates || []).map((at) => appliedTaxRateFromAPI(at)),\n };\n}\n\nexport function purchaseItemFromApi(pApi: PurchaseItemInterface, currencyApi?: CurrencyApi): PurchaseItem {\n let currency;\n if (currencyApi !== undefined) {\n currency = currencyFromApi(currencyApi);\n }\n return {\n sku: pApi.sku || '',\n description: pApi.description || '',\n amount: pApi.amount || 0,\n orderId: pApi.orderId || '',\n customerId: pApi.customerId || '',\n discountAmount: pApi.discountAmount || 0,\n total: pApi.total || 0,\n currency: currency || Currency.USD,\n appliedDiscounts: pApi.appliedDiscounts ? pApi.appliedDiscounts.map((p) => appliedDiscountFromApi(p)) : [],\n merchantId: pApi.merchantId || '',\n purchaseDay: pApi.day || '',\n purchaseId: pApi.purchaseId || '',\n taxAmount: pApi.taxAmount || 0,\n appliedTaxRates: (pApi.appliedTaxRates || []).map((at) => appliedTaxRateFromAPI(at)),\n setupFee: pApi.setupFee || 0,\n feeAmount: pApi.feeAmount || 0,\n };\n}\n\nexport function appliedCreditFromAPI(ac: AppliedCreditInterface): AppliedCredit {\n return {\n appliedAmount: ac.appliedAmount || 0,\n referenceId: ac.referenceId || '',\n referenceType: appliedCreditTypeFromAPI(ac.referenceType),\n };\n}\n\nexport function appliedCreditTypeFromAPI(adt: CreditType | undefined): AppliedCreditType {\n switch (adt) {\n case CreditType.CREDIT_TYPE_CREDIT_NOTE:\n return AppliedCreditType.CREDIT_TYPE_CREDIT_NOTE;\n case CreditType.CREDIT_TYPE_PROMOTIONAL:\n return AppliedCreditType.CREDIT_TYPE_PROMOTIONAL;\n }\n return AppliedCreditType.CREDIT_TYPE_UNSET;\n}\n\nexport function appliedTaxRateFromAPI(at: AppliedTaxRateInterface): AppliedTaxRate {\n return {\n amount: at.amount || 0,\n name: at.name || '',\n percentage: at.percentage || 0,\n taxRateId: at.taxRateId || '',\n };\n}\n","import { CustomerSummaryInterface } from '@vendasta/billing';\nimport { Currency, currencyFromApi } from '../pricing';\n\nexport interface CustomerSummary {\n customerId: string;\n purchaseItemQuantity: number;\n purchaseItemTotal: number;\n currency: Currency;\n}\n\nexport function customerSummaryFromApi(csApi: CustomerSummaryInterface): CustomerSummary {\n let currency;\n if (csApi.currency !== undefined) {\n currency = currencyFromApi(csApi.currency);\n }\n return {\n customerId: csApi.customerId || '',\n purchaseItemQuantity: csApi.purchaseItemQuantity || 0,\n purchaseItemTotal: csApi.purchaseItemTotal || 0,\n currency: currency || Currency.USD,\n };\n}\n","export class Dimension {\n dimensionId: string;\n name: string;\n\n constructor(id: string) {\n this.dimensionId = id;\n this.name = id;\n }\n}\n\nexport const ChannelPartnersDiamond = new Dimension('Diamond');\nexport const ChannelPartnersPlatinum = new Dimension('Platinum');\nexport const ChannelPartnersGold = new Dimension('Gold');\nexport const ChannelPartnersSilver = new Dimension('Silver');\nexport const ChannelPartnersUnassisted = new Dimension('Unassisted');\nexport const ChannelPartnersChurned = new Dimension('Churned Partners');\nexport const ChannelPartnersPreSales = new Dimension('Pre-Sales');\nexport const ChannelPartnersUnassigned = new Dimension('Unassigned');\nexport const ChannelPartnersMedia = new Dimension('Media');\nexport const ChannelPartnersBroadcast = new Dimension('Broadcast');\nexport const ChannelPartnersISV = new Dimension('ISV');\nexport const ChannelPartnersICT = new Dimension('ICT');\nexport const ChannelPartnersFranchise = new Dimension('Franchise');\nexport const ChannelPartnersBroadly = new Dimension('Broadly');\nexport const ChannelPartnersEMEA = new Dimension('EMEA');\nexport const ChannelPartnersAgency = new Dimension('Agency');\nexport const ChannelPartnersHighVelocityExpansion = new Dimension('High Velocity Expansion');\nexport const ChannelPartnersHighVelocityAcquisition = new Dimension('High Velocity Acquisition');\n\nexport const LEGACY_DIMENSIONS = [\n ChannelPartnersDiamond,\n ChannelPartnersPlatinum,\n ChannelPartnersGold,\n ChannelPartnersSilver,\n ChannelPartnersUnassisted,\n ChannelPartnersChurned,\n ChannelPartnersPreSales,\n ChannelPartnersUnassigned,\n];\n\nexport const SERVICE_TIERS = [\n ChannelPartnersMedia,\n ChannelPartnersBroadcast,\n ChannelPartnersISV,\n ChannelPartnersICT,\n ChannelPartnersFranchise,\n ChannelPartnersBroadly,\n ChannelPartnersEMEA,\n ChannelPartnersAgency,\n ChannelPartnersHighVelocityExpansion,\n ChannelPartnersHighVelocityAcquisition,\n];\n","import { ContractInterface } from '@vendasta/billing';\nimport { Currency, currencyFromApi } from '../pricing';\nimport { Dimension } from './dimension';\n\nexport interface Contract {\n merchantId: string;\n netD: number;\n created?: Date;\n subscriptionId: string;\n dimension: Dimension;\n currency: Currency;\n signed?: Date;\n end?: Date;\n activated?: Date;\n modified?: Date;\n verified?: Date;\n status: string;\n creditLimit: number;\n pricingPlanId: string;\n}\n\nexport function contractFromApi(cApi: ContractInterface): Contract {\n return {\n merchantId: cApi.merchantId || '',\n netD: cApi.netD || 0,\n created: cApi.created || undefined,\n subscriptionId: cApi.subscriptionId || '',\n dimension: new Dimension(cApi.dimension || ''),\n currency: currencyFromApi(cApi.currency),\n signed: cApi.signed || undefined,\n end: cApi.end || undefined,\n activated: cApi.activated || undefined,\n modified: cApi.modified || undefined,\n verified: cApi.verified || undefined,\n status: cApi.status || '',\n creditLimit: cApi.creditLimit || 0,\n pricingPlanId: cApi.pricingPlanId || '',\n };\n}\n","import { Injectable } from '@angular/core';\nimport { Observable } from 'rxjs';\nimport { map } from 'rxjs/operators';\nimport { ContractApiService, UpdateContractRequestMutationInterface } from '@vendasta/billing';\nimport { Contract, contractFromApi } from './contract';\n\n@Injectable({ providedIn: 'root' })\nexport class ContractService {\n constructor(private api: ContractApiService) {}\n\n /**\n * Get a contract by its identifier.\n *\n * @param merchantId is the unique identifier of the merchant.\n * @return An contract observable.\n */\n public get(merchantId: string): Observable {\n return this.api.get({ merchantId }).pipe(map((c) => contractFromApi(c.contract)));\n }\n\n /**\n * Update a contract with a new value.\n *\n * @param merchantId is a string that identifies the contract to update.\n * @param mutations is a list of mutations to apply to the contract.\n * Each mutation object should only contain one value.\n * @return An observable of the update contract.\n */\n public update(merchantId: string, mutations: UpdateContractRequestMutationInterface[]): Observable {\n return this.api.update({ merchantId, mutations }).pipe(map((c) => contractFromApi(c.contract)));\n }\n}\n","import { UpdateContractRequestMutationInterface } from '@vendasta/billing';\n\nexport const setNetD = (netD: number): UpdateContractRequestMutationInterface => ({ netD });\nexport const setCurrencyCode = (currencyCode: string): UpdateContractRequestMutationInterface => ({ currencyCode });\nexport const setStatus = (status: string): UpdateContractRequestMutationInterface => ({ status });\nexport const setDimension = (dimension: string): UpdateContractRequestMutationInterface => ({ dimension });\nexport const setSigned = (signed: Date): UpdateContractRequestMutationInterface => ({ signed });\nexport const setActivated = (activated: Date): UpdateContractRequestMutationInterface => ({ activated });\nexport const setEnd = (end: Date): UpdateContractRequestMutationInterface => ({ end });\nexport const setModified = (modified: Date): UpdateContractRequestMutationInterface => ({ modified });\nexport const setCreditLimit = (creditLimit: number): UpdateContractRequestMutationInterface => ({ creditLimit });\nexport const setSubscriptionId = (subscriptionId: string): UpdateContractRequestMutationInterface => ({\n subscriptionId,\n});\n","export * from './contract.service';\nexport * from './contract';\nexport * from './dimension';\nexport * from './mutations';\nexport { UpdateContractRequestMutationInterface } from '@vendasta/billing';\n","import { ProductInterface } from '@vendasta/billing';\n\nexport interface Product {\n name: string;\n sku: string;\n iconUrl: string;\n hasPricingOverride: boolean;\n hasDiscount: boolean;\n}\n\nexport function productFromApi(apiProduct: ProductInterface): Product {\n return {\n name: apiProduct.name || '',\n sku: apiProduct.sku || '',\n iconUrl: apiProduct.iconUrl || '',\n hasPricingOverride: apiProduct.hasPricingOverride || false,\n hasDiscount: apiProduct.hasDiscount || false,\n };\n}\n","import { ListProductsRequestListProductsFiltersInterface, ProductType as ApiProductType } from '@vendasta/billing';\n\nexport interface ListProductsFilter {\n hasDiscount?: boolean;\n hasPricingOverride?: boolean;\n skus?: string[];\n productType?: ProductType[];\n}\n\nexport enum ProductType {\n Invalid,\n Standard,\n Vendasta,\n Subscription,\n Fee,\n PartnerSupportSales,\n}\n\nexport function listProductsFilterToApi(filter: ListProductsFilter): ListProductsRequestListProductsFiltersInterface {\n return {\n ...filter,\n productType: (filter.productType || []).map((pt) => productTypeToApi(pt)),\n };\n}\n\nfunction productTypeToApi(productType: ProductType): ApiProductType {\n switch (productType) {\n case ProductType.Standard:\n return ApiProductType.PRODUCT_TYPE_STANDARD_PRODUCT;\n case ProductType.Vendasta:\n return ApiProductType.PRODUCT_TYPE_VENDASTA_PRODUCT;\n case ProductType.Subscription:\n return ApiProductType.PRODUCT_TYPE_SUBSCRIPTION;\n case ProductType.Fee:\n return ApiProductType.PRODUCT_TYPE_FEE;\n case ProductType.PartnerSupportSales:\n return ApiProductType.PRODUCT_TYPE_PARTNER_SUPPORT_SALES;\n }\n return ApiProductType.PRODUCT_TYPE_INVALID;\n}\n","import { Injectable } from '@angular/core';\nimport {\n BillingApiService,\n CanCreateSubscriptionsRequest,\n CanCreateSubscriptionsRequestSubscriptionItemInterface,\n CanCreateSubscriptionsResponse,\n ChangeCustomUnitPriceRequest,\n ChangeFrequencyRequest,\n ChangeRenewalDateRequest,\n Commitment as CommitmentApi,\n CreatePricingPlanProductRequest,\n Currency,\n DeletePricingPlanProductRequest,\n FieldMask,\n GenerateVendorReportRequest,\n GetBillableItemRequest,\n GetMultiCustomerSummariesRequest,\n GetMultiProductRequest,\n GetMultiProductResponse,\n GetPricingPlanProductRequest,\n GetPurchaseCostRequest,\n GetPurchaseCostResponse,\n GetRevenueStatsRequest,\n ListBillableItemsRequest,\n ListContractsRequest,\n ListMerchantBillingReportsRequest,\n ListPricingPlanProductsRequest,\n ListProductsRequest,\n ListPurchaseItemsRequestListPurchaseItemsFilters,\n ListPurchaseRequest,\n ListSubscriptionsRequest,\n MerchantReportStatus,\n PagedRequestOptions,\n PauseDunningRequest,\n PricingApiService,\n PurchaseApiService,\n ResumeDunningRequest,\n RetryPurchaseRequest,\n UpdatePricingPlanProductRequest,\n VendorApiService,\n VoidPurchaseRequest,\n ExpireBillableItemRequest,\n CreateSubscriptionRequest,\n SetAutoBillableRequest,\n UpdateSubscriptionRequest,\n UpdateSubscriptionResponse,\n CreateSubscriptionResponse,\n} from '@vendasta/billing';\nimport {\n BillingStrategy,\n billingStrategyFromAPI,\n billingStrategyToAPI,\n ListPricingPlanProductFilter,\n PricingPlanProduct,\n pricingPlanProductFromApi,\n} from './pricing';\n\nimport { Observable } from 'rxjs';\nimport { map, mapTo } from 'rxjs/operators';\nimport { RevenueApiService } from './revenue/revenue.service';\nimport { MerchantReportApiService } from './merchant-report/merchant-report.service';\nimport { MerchantReport } from './merchant-report/merchant-report';\nimport { HttpResponse } from '@angular/common/http';\nimport { ProductPricing, productPricingFromApi } from './pricing/product-pricing';\nimport { PagedResponse } from './core/paged-response';\nimport { Frequency, frequencyToApi } from './pricing/frequency';\nimport { Commitment } from './pricing/commitment';\nimport { CurrencyPricingMap, currencyPricingMapToApi } from './pricing/pricing-plan-product';\nimport { Purchase, purchaseFromApi, PurchaseItem, purchaseItemFromApi } from './purchase/purchase';\nimport { ListPurchaseFilter } from './purchase/list-purchases';\nimport { CustomerSummary, customerSummaryFromApi } from './customer_summary/customer-summary';\nimport { Contract, contractFromApi } from './contract';\nimport { Product, productFromApi } from './product/product';\nimport { ListProductsFilter, listProductsFilterToApi } from './product/list-products';\nimport {\n BillableItem,\n billableItemFromApi,\n ListBillableItemsFilter,\n ListSubscriptionsFilter,\n SubscriptionsProjectionFilter,\n} from './billable-item/billable-item';\nimport { CanCreateSubscriptionsItem } from './subscription';\n\nconst isCanCreateSubscriptionsRequestSubscriptionItem = (\n li: CanCreateSubscriptionsRequestSubscriptionItemInterface | undefined,\n): li is CanCreateSubscriptionsRequestSubscriptionItemInterface => {\n return !!li;\n};\n@Injectable({ providedIn: 'root' })\nexport class BillingService {\n constructor(\n private billingApi: BillingApiService,\n private revenueApi: RevenueApiService,\n private merchantReportApi: MerchantReportApiService,\n private pricingApi: PricingApiService,\n private purchaseApi: PurchaseApiService,\n private vendorApi: VendorApiService,\n ) {}\n\n /** deprecated */\n getPurchaseCost(merchantId: string, sku: string, quantity: number): Observable {\n const req = new GetPurchaseCostRequest({\n merchantId: merchantId,\n sku: sku,\n quantity: quantity,\n });\n return this.billingApi.getPurchaseCost(req).pipe(\n map((response) => {\n if (!response.currency) {\n response.currency = Currency.USD;\n }\n return response;\n }),\n );\n }\n\n /** deprecated: Use canCreateSubscriptionsWithFrequencies instead. */\n canCreateSubscriptions(\n merchantId: string,\n skus: { [sku: string]: number },\n ): Observable {\n const req = new CanCreateSubscriptionsRequest({\n merchantId: merchantId,\n skus: skus,\n });\n return this.billingApi.canCreateSubscriptions(req);\n }\n\n canCreateSubscriptionsWithFrequencies(\n merchantId: string,\n items: CanCreateSubscriptionsItem[],\n ): Observable {\n const req = new CanCreateSubscriptionsRequest({\n merchantId: merchantId,\n items: (items || [])\n .map((item) => {\n if (!item) {\n return undefined;\n }\n return {\n sku: item.sku,\n frequency: frequencyToApi(item.frequency),\n quantity: item.quantity || 0,\n } as CanCreateSubscriptionsRequestSubscriptionItemInterface;\n })\n .filter(isCanCreateSubscriptionsRequestSubscriptionItem),\n });\n return this.billingApi.canCreateSubscriptions(req);\n }\n\n downloadRevenueCsv(filename: string): Observable {\n return this.revenueApi.downloadCsv({ filename });\n }\n\n downloadBillingReportCsv(merchantId: string, year: number, month: number): Observable {\n return this.merchantReportApi.downloadCsv({ merchantId, year, month });\n }\n\n generateBillingReportCsv(merchantId: string, year: number, month: number): Observable {\n return this.merchantReportApi.generateCsv({ merchantId, year, month });\n }\n\n listMerchantBillingReports(\n merchantId: string,\n cursor: string,\n pageSize: number,\n ): Observable> {\n const req = new ListMerchantBillingReportsRequest({\n merchantId: merchantId,\n pagingOptions: new PagedRequestOptions({ cursor, pageSize }),\n });\n return this.billingApi.listMerchantBillingReports(req).pipe(\n map((resp) => {\n const reports = (resp.reports || []).map((r) => {\n return {\n merchantId: r.merchantId,\n year: r.year,\n month: r.month,\n created: r.created,\n status: MerchantReportStatus[r.status || 0],\n } as MerchantReport;\n });\n return new PagedResponse(reports, resp.pagingMetadata.nextCursor, resp.pagingMetadata.hasMore);\n }),\n );\n }\n\n canBillCreateSnapshot(merchantId: string): Observable> {\n return this.billingApi.canBillItem({ merchantId: merchantId, sku: 'ST' });\n }\n\n canBillRefreshSnapshot(merchantId: string): Observable> {\n return this.billingApi.canBillItem({ merchantId: merchantId, sku: 'snapshotreportrefresh' });\n }\n\n canBillItem(merchantId: string, sku: string): Observable {\n return this.billingApi.canBillItem({ merchantId: merchantId, sku: sku }).pipe(map((response) => response.ok));\n }\n\n createPricingPlanProduct(\n pricingPlanId: string,\n sku: string,\n frequency: Frequency,\n pricing: CurrencyPricingMap,\n commitment: Commitment,\n strategy: BillingStrategy,\n volumeCommitment: number,\n volumeCommitmentStartsAt?: Date,\n volumeCommitmentEndsAt?: Date,\n ): Observable {\n const request = new CreatePricingPlanProductRequest({\n pricingPlanId,\n sku,\n volumeCommitment,\n volumeCommitmentStartsAt,\n volumeCommitmentEndsAt,\n });\n request.frequency = frequencyToApi(frequency);\n request.pricing = currencyPricingMapToApi(pricing);\n request.commitment = new CommitmentApi(commitment);\n request.strategy = billingStrategyToAPI(strategy);\n return this.billingApi.createPricingPlanProduct(request).pipe(mapTo(true));\n }\n\n updatePricingPlanProduct(\n pricingPlanId: string,\n sku: string,\n {\n frequency,\n pricing,\n commitment,\n strategy,\n volumeCommitment,\n volumeCommitmentStartsAt,\n volumeCommitmentEndsAt,\n }: {\n frequency?: Frequency;\n pricing?: CurrencyPricingMap;\n commitment?: Commitment;\n strategy?: BillingStrategy;\n volumeCommitment?: number;\n volumeCommitmentStartsAt?: Date;\n volumeCommitmentEndsAt?: Date;\n },\n ): Observable {\n const fieldMask = new FieldMask({ paths: [] });\n const request = new UpdatePricingPlanProductRequest({ pricingPlanId, sku });\n\n if (frequency !== null) {\n request.frequency = frequencyToApi(frequency);\n fieldMask.paths.push('frequency');\n }\n if (pricing !== null) {\n request.pricing = currencyPricingMapToApi(pricing);\n fieldMask.paths.push('pricing');\n }\n if (commitment !== null) {\n request.commitment = new CommitmentApi(commitment);\n fieldMask.paths.push('commitment');\n }\n if (strategy !== null) {\n request.strategy = billingStrategyToAPI(strategy);\n fieldMask.paths.push('strategy');\n }\n if (volumeCommitment !== null) {\n request.volumeCommitment = volumeCommitment || 0;\n fieldMask.paths.push('volumeCommitment');\n }\n if (volumeCommitmentStartsAt) {\n request.volumeCommitmentStartsAt = volumeCommitmentStartsAt;\n fieldMask.paths.push('volumeCommitmentStartsAt');\n }\n if (volumeCommitmentEndsAt) {\n request.volumeCommitmentEndsAt = volumeCommitmentEndsAt;\n fieldMask.paths.push('volumeCommitmentEndsAt');\n }\n return this.billingApi.updatePricingPlanProduct(request).pipe(mapTo(true));\n }\n\n deletePricingPlanProduct(pricingPlanId: string, sku: string): Observable {\n const request = new DeletePricingPlanProductRequest({ pricingPlanId, sku });\n return this.billingApi.deletePricingPlanProduct(request).pipe(mapTo(true));\n }\n\n /** deprecated - Use getMultiWholesalePrices from the WholesalePricingService */\n getMultiProductPricing(\n merchantId: string,\n skus: string[],\n pricingPlanId?: string,\n ): Observable<{ [sku: string]: ProductPricing }> {\n return this.billingApi.getMultiProductPricing({ merchantId, skus, pricingPlanId }).pipe(\n map((r) => {\n const productPricesApi = r.productPrices || {};\n const productPricings: { [key: string]: ProductPricing } = {};\n for (const k of Object.keys(productPricesApi)) {\n const productPricingResponse = productPricesApi[k];\n productPricings[k] = productPricingFromApi(productPricingResponse);\n }\n return productPricings;\n }),\n );\n }\n\n /** deprecated - Use getMultiRetailPrices from the RetailPricingService */\n getMultiRetailPricing(\n merchantId: string,\n currency: Currency,\n skus: string[],\n groupId?: string,\n ): Observable<{ [sku: string]: ProductPricing }> {\n const requestGroupId: string = groupId === undefined ? '' : groupId;\n return this.pricingApi.getMultiRetail({ merchantId, currency, skus, groupId: requestGroupId }).pipe(\n map((r) => {\n const retailPricesApi = r.productPrices || {};\n const retailPricings: { [key: string]: ProductPricing } = {};\n for (const k of Object.keys(retailPricesApi)) {\n const retailPricingResponse = retailPricesApi[k];\n retailPricings[k] = productPricingFromApi(retailPricingResponse);\n }\n return retailPricings;\n }),\n );\n }\n\n listPricingPlanProducts(\n filters: ListPricingPlanProductFilter,\n cursor: string,\n pageSize: number,\n ): Observable> {\n const req = new ListPricingPlanProductsRequest({\n filters: filters,\n pagingOptions: new PagedRequestOptions({ cursor, pageSize }),\n });\n return this.billingApi.listPricingPlanProducts(req).pipe(\n map((response) => {\n const products = (response.products || []).map((p) => pricingPlanProductFromApi(p));\n return new PagedResponse(products, response.pagingMetadata.nextCursor, response.pagingMetadata.hasMore);\n }),\n );\n }\n\n getPricingPlanProduct(pricingPlanId: string, sku: string): Observable {\n const req = new GetPricingPlanProductRequest({ pricingPlanId, sku });\n return this.billingApi.getPricingPlanProduct(req).pipe(\n map((resp) => {\n const ppp: PricingPlanProduct = pricingPlanProductFromApi(resp.pricingPlanProduct);\n ppp.defaultStrategy = billingStrategyFromAPI(resp.pricingPlanDefaultStrategy);\n return ppp;\n }),\n );\n }\n\n listPurchases(filters: ListPurchaseFilter, cursor: string, pageSize: number): Observable> {\n const req = new ListPurchaseRequest({\n filters: filters,\n pagingOptions: new PagedRequestOptions({ cursor, pageSize }),\n });\n return this.purchaseApi.list(req).pipe(\n map((response) => {\n const purchases = (response.purchases || []).map((purchase) => purchaseFromApi(purchase));\n return new PagedResponse(purchases, response.pagingMetadata.nextCursor, response.pagingMetadata.hasMore);\n }),\n );\n }\n\n voidPurchase(merchantId: string, purchaseId: string, day: string): Observable {\n const req = new VoidPurchaseRequest({ purchaseId, merchantId, day });\n return this.purchaseApi.void(req).pipe(mapTo(true));\n }\n\n listPurchaseItems(\n filters: ListPurchaseItemsRequestListPurchaseItemsFilters,\n cursor: string,\n pageSize: number,\n ): Observable> {\n const req = new ListPurchaseRequest({\n filters: filters,\n pagingOptions: new PagedRequestOptions({ cursor, pageSize }),\n });\n return this.purchaseApi.listPurchaseItems(req).pipe(\n map((response) => {\n const purchaseItems = (response.purchaseItems || []).map((purchaseItem) =>\n purchaseItemFromApi(purchaseItem, response.currency),\n );\n return new PagedResponse(purchaseItems, response.pagingMetadata.nextCursor, response.pagingMetadata.hasMore);\n }),\n );\n }\n\n retryPurchase(merchantId: string, day: string, purchaseId: string): Observable {\n const req = new RetryPurchaseRequest({\n merchantId: merchantId,\n day: day,\n purchaseId: purchaseId,\n });\n return this.purchaseApi.retry(req).pipe(map(() => true));\n }\n\n getMultiCustomerSummaries(\n merchantId: string,\n customerIds: string[],\n periodStart: Date,\n periodEnd: Date,\n ): Observable {\n const req = new GetMultiCustomerSummariesRequest({\n customerIds: customerIds,\n merchantId: merchantId,\n periodStart: periodStart,\n periodEnd: periodEnd,\n });\n return this.purchaseApi.getMultiCustomerSummaries(req).pipe(\n map((response) => {\n return (response.customerSummaries || []).map((customerSummary) => customerSummaryFromApi(customerSummary));\n }),\n );\n }\n\n getMultiContract(merchantIds: string[]): Observable<{ [sku: string]: Contract }> {\n return this.billingApi.getMultiContract({ merchantIds: merchantIds }).pipe(\n map((resp) => {\n const contractsAPI = resp.contracts || {};\n const contracts: { [key: string]: Contract } = {};\n for (const k of Object.keys(contractsAPI)) {\n const contractResponse = contractsAPI[k];\n contracts[k] = contractFromApi(contractResponse);\n }\n return contracts;\n }),\n );\n }\n\n getMerchantWholesaleCurrency(merchantId: string): Observable {\n return this.billingApi.getMerchantWholesaleCurrency({ merchantId: merchantId }).pipe(\n map((resp) => {\n return Currency[resp.currency] || 'USD';\n }),\n );\n }\n\n generateVendorReport(\n skus: string[],\n periodStart: Date,\n periodEnd: Date,\n vendorName: string,\n markAsApproved: boolean,\n ): Observable {\n const req = new GenerateVendorReportRequest({\n skus: skus,\n periodStart: periodStart,\n periodEnd: periodEnd,\n vendorName: vendorName,\n markAsApproved: markAsApproved,\n });\n return this.vendorApi.generateReport(req).pipe(map((response) => response.url));\n }\n\n getVendorStats(skus: string[], periodStart: Date, periodEnd: Date): Observable {\n const req = new GetRevenueStatsRequest({\n skus: skus,\n periodStart: periodStart,\n periodEnd: periodEnd,\n });\n return this.vendorApi.getRevenueStats(req).pipe(map((response) => response.totalRevenue || 0));\n }\n\n listContracts(cursor: string, pageSize: number): Observable> {\n const req = new ListContractsRequest({\n pagingOptions: new PagedRequestOptions({ cursor, pageSize }),\n });\n return this.billingApi.listContracts(req).pipe(\n map((response) => {\n const contracts = (response.contracts || []).map((c) => contractFromApi(c));\n return new PagedResponse(contracts, response.pagingMetadata.nextCursor, response.pagingMetadata.hasMore);\n }),\n );\n }\n\n listProducts(\n merchantId: string,\n searchTerm: string,\n filters: ListProductsFilter,\n cursor: string,\n pageSize: number,\n ): Observable> {\n const apiFilters = listProductsFilterToApi(filters);\n const req = new ListProductsRequest({\n merchantId,\n searchTerm,\n filters: apiFilters,\n pagingOptions: new PagedRequestOptions({ cursor, pageSize }),\n });\n return this.billingApi.listProducts(req).pipe(\n map((response) => {\n const products = (response.products || []).map((p) => productFromApi(p));\n return new PagedResponse(products, response.pagingMetadata.nextCursor, response.pagingMetadata.hasMore);\n }),\n );\n }\n\n getMultiProduct(skus: string[]): Observable> {\n const req = new GetMultiProductRequest({\n skus: skus,\n });\n return this.billingApi.getMultiProduct(req).pipe(\n map((response: GetMultiProductResponse) => {\n const productsMap = new Map();\n skus.forEach((sku) => {\n productsMap.set(sku, productFromApi(response.products[sku]));\n });\n return productsMap;\n }),\n );\n }\n\n getBillableItem(\n merchantId: string,\n sku: string,\n customerId: string,\n orderId: string,\n projectionFilter?: SubscriptionsProjectionFilter,\n ): Observable {\n const req = new GetBillableItemRequest({\n merchantId,\n sku,\n customerId,\n orderId,\n projectionFilter,\n });\n\n return this.billingApi.getBillableItem(req).pipe(map((response) => billableItemFromApi(response.item)));\n }\n\n expireSubscription(\n merchantId: string,\n sku: string,\n customerId: string,\n orderId: string,\n expiry: Date,\n ): Observable> {\n const req = new ExpireBillableItemRequest({\n merchantId,\n sku,\n customerId,\n orderId,\n expiry,\n });\n return this.billingApi.expireBillableItem(req);\n }\n\n unexpireSubscription(\n merchantId: string,\n sku: string,\n customerId: string,\n orderId: string,\n ): Observable> {\n const req = new ExpireBillableItemRequest({\n merchantId,\n sku,\n customerId,\n orderId,\n });\n return this.billingApi.unexpireBillableItem(req);\n }\n\n changeBillableItemFrequency(\n merchantId: string,\n sku: string,\n customerId: string,\n orderId: string,\n freq: Frequency,\n ): Observable> {\n const req = new ChangeFrequencyRequest({\n merchantId: merchantId,\n sku: sku,\n customerId: customerId,\n orderId: orderId,\n frequency: frequencyToApi(freq),\n });\n\n return this.billingApi.changeFrequency(req);\n }\n\n changeBillableItemNextRenewalDate(\n merchantId: string,\n sku: string,\n customerId: string,\n orderId: string,\n next: Date,\n ): Observable> {\n const req = new ChangeRenewalDateRequest({\n merchantId: merchantId,\n sku: sku,\n customerId: customerId,\n orderId: orderId,\n nextRenewalDate: next,\n });\n\n return this.billingApi.changeRenewalDate(req);\n }\n\n changeBillableItemCustomUnitPrice(\n merchantId: string,\n sku: string,\n customerId: string,\n orderId: string,\n amount: number,\n ): Observable> {\n const req = new ChangeCustomUnitPriceRequest({\n merchantId: merchantId,\n sku: sku,\n customerId: customerId,\n orderId: orderId,\n customUnitPrice: amount,\n });\n\n return this.billingApi.changeCustomUnitPrice(req);\n }\n\n //deprecated: use listSubscriptions\n listBillableItems(\n searchTerm: string,\n filters: ListBillableItemsFilter,\n cursor: string,\n pageSize: number,\n ): Observable> {\n const req = new ListBillableItemsRequest({\n searchTerm: searchTerm,\n filters: filters,\n pagingOptions: new PagedRequestOptions({ cursor, pageSize }),\n });\n return this.billingApi.listBillableItems(req).pipe(\n map((response) => {\n const items = (response.items || []).map((item) => billableItemFromApi(item));\n return new PagedResponse(items, response.pagingMetadata.nextCursor, response.pagingMetadata.hasMore);\n }),\n );\n }\n\n listSubscriptions(\n filters: ListSubscriptionsFilter,\n cursor: string,\n pageSize: number,\n projectionFilter?: SubscriptionsProjectionFilter,\n ): Observable> {\n const req = new ListSubscriptionsRequest({\n filters: filters,\n pagingOptions: new PagedRequestOptions({ cursor, pageSize }),\n projectionFilter: projectionFilter,\n });\n return this.billingApi.listSubscriptions(req).pipe(\n map((response) => {\n const items = (response.subscriptions || []).map((item) => billableItemFromApi(item));\n return new PagedResponse(items, response.pagingMetadata.nextCursor, response.pagingMetadata.hasMore);\n }),\n );\n }\n\n listRetailSubscriptions(\n filters: ListSubscriptionsFilter,\n cursor: string,\n pageSize: number,\n projectionFilter?: SubscriptionsProjectionFilter,\n ): Observable> {\n const req = new ListSubscriptionsRequest({\n filters: filters,\n pagingOptions: new PagedRequestOptions({ cursor, pageSize }),\n projectionFilter: projectionFilter,\n });\n return this.billingApi.listRetailSubscriptions(req).pipe(\n map((response) => {\n const items = (response.subscriptions || []).map((item) => billableItemFromApi(item));\n return new PagedResponse(items, response.pagingMetadata.nextCursor, response.pagingMetadata.hasMore);\n }),\n );\n }\n\n startRevRecBackfillWorkflow(): Observable> {\n return this.billingApi.startRevRecTemplateBackfill({});\n }\n\n pauseDunning(merchantId: string, purchaseId: string, day: string, pauseDunningUntil: Date): Observable {\n const req = new PauseDunningRequest({ merchantId, purchaseId, day, pauseDunningUntil });\n return this.purchaseApi.pauseDunning(req).pipe(map((response) => response.ok));\n }\n\n resumeDunning(merchantId: string, purchaseId: string, day: string): Observable {\n const req = new ResumeDunningRequest({ merchantId, purchaseId, day });\n return this.purchaseApi.resumeDunning(req).pipe(map((response) => response.ok));\n }\n\n exportSubscriptions(filters: ListSubscriptionsFilter): Observable {\n const req = new ListSubscriptionsRequest({\n filters: filters,\n });\n return this.billingApi.exportSubscriptions(req).pipe(map(() => null));\n }\n\n createSubscription(req: CreateSubscriptionRequest): Observable {\n return this.billingApi.createSubscription(req);\n }\n\n setAutoBillable(subscriptionId: string, autoBillable: boolean): Observable> {\n const req = new SetAutoBillableRequest({\n subscriptionId: subscriptionId,\n autoBillable: autoBillable,\n });\n return this.billingApi.setAutoBillable(req);\n }\n\n updateSubscription(subscription: BillableItem, fieldMask: FieldMask): Observable {\n const req = new UpdateSubscriptionRequest({\n subscription: {\n subscriptionId: subscription.subscriptionId,\n description: subscription.description,\n },\n fieldMask: fieldMask,\n });\n return this.billingApi.updateSubscription(req);\n }\n}\n","export { BundleItem, Bundle, Price } from './bundle';\nexport { BundleService, ListBundleFilter } from './bundle.service';\n","export { ContractDocument } from './contract-document';\nexport { ContractDocumentService } from './contract-document.service';\nexport { ListContractDocumentsFilter } from './list-contract-document';\n","export { CreditBalance } from './credit';\nexport { CreditService } from './credit.service';\n","import { Merchant as ApiMerchant } from '@vendasta/billing';\n\nexport interface Merchant {\n merchantId: string;\n address: string;\n city: string;\n state: string;\n country: string;\n zipCode: string;\n emailAddress: string;\n phoneNumber: string;\n contactName: string;\n companyName: string;\n autoPostInvoices: boolean;\n autoChargeInvoices: boolean;\n includeInFinancialRecords: boolean;\n additionalEmailAddresses: string[];\n stripeConnectId: string;\n}\n\nexport function MerchantFromAPI(proto: ApiMerchant): Merchant {\n return {\n merchantId: proto.merchantId,\n address: proto.address,\n city: proto.city,\n state: proto.state,\n country: proto.country,\n zipCode: proto.zipCode,\n emailAddress: proto.emailAddress,\n phoneNumber: proto.phoneNumber,\n contactName: proto.contactName,\n companyName: proto.companyName,\n autoPostInvoices: proto.autoPostInvoices,\n autoChargeInvoices: proto.autoChargeInvoices,\n includeInFinancialRecords: proto.includeInFinancialRecords,\n additionalEmailAddresses: proto.additionalEmailAddresses || [],\n stripeConnectId: proto.stripeAccountId,\n };\n}\n","import { GetPayoutSummaryResponse } from '@vendasta/billing';\n\nexport enum PayoutInterval {\n Daily = 'daily',\n Weekly = 'weekly',\n Monthly = 'monthly',\n Unknown = 'unknown',\n}\n\nexport interface PayoutSummary {\n nextInTransitPayout?: Date;\n balances: PayoutBalance[];\n payoutInterval?: PayoutInterval;\n payoutDelayDays: number;\n}\n\nexport interface PayoutBalance {\n currencyCode: string;\n futurePayouts: number;\n inTransit: number;\n}\n\nexport function payoutSummaryFromAPI(proto: GetPayoutSummaryResponse): PayoutSummary {\n const zeroDate = new Date('0001-01-01T00:00:00Z').valueOf();\n return {\n nextInTransitPayout:\n proto.nextInTransitPayoutExpectedDate.valueOf() !== zeroDate ? proto.nextInTransitPayoutExpectedDate : undefined,\n payoutInterval: payoutIntervalFromAPI(proto.payoutInterval),\n payoutDelayDays: proto.payoutDelayDays,\n balances: (proto.balances || []).map((balance) => ({\n currencyCode: balance.currencyCode,\n amount: balance.amount || 0,\n futurePayouts: balance.futurePayouts || 0,\n inTransit: balance.inTransit || 0,\n })),\n };\n}\n\nexport function payoutIntervalFromAPI(proto: string): PayoutInterval | undefined {\n switch (proto) {\n case 'daily':\n return PayoutInterval.Daily;\n case 'weekly':\n return PayoutInterval.Weekly;\n case 'monthly':\n return PayoutInterval.Monthly;\n default:\n return undefined;\n }\n}\n","import {\n DefaultCustomerConfiguration as ApiDefaultCustomerConfiguration,\n DefaultCustomerConfigurationInterface,\n RetailConfiguration as ApiRetailConfiguration,\n} from '@vendasta/billing';\nimport { CollectionMethod, collectionMethodFromApi, collectionMethodToApi } from '../retail-customer-configuration';\n\nexport interface RetailConfiguration {\n merchantId: string;\n retailGroupId: string;\n currencyCode: string;\n currencyConversionRate: number;\n defaultCustomerConfiguration?: DefaultCustomerConfiguration;\n}\n\nexport interface DefaultCustomerConfiguration {\n generateMethod: GenerateMethod;\n collectionMethod: CollectionMethod;\n invoiceDay: number;\n netD: number;\n memo: string;\n autoGenerateRetailSubscriptions: boolean;\n}\n\nexport enum GenerateMethod {\n UNSET = 'Unset',\n SUBSCRIPTION = 'Subscription',\n TEMPLATE = 'Template',\n}\n\nexport function generateMethodToApi(m: GenerateMethod | undefined): string {\n switch (m) {\n case GenerateMethod.SUBSCRIPTION:\n return 'subscription';\n case GenerateMethod.TEMPLATE:\n return 'template';\n default:\n return '';\n }\n}\n\nexport function generateMethodFromApi(m: string): GenerateMethod {\n switch (m) {\n case 'subscription':\n return GenerateMethod.SUBSCRIPTION;\n case 'template':\n return GenerateMethod.TEMPLATE;\n default:\n return GenerateMethod.UNSET;\n }\n}\n\nexport function retailConfigurationFromApi(proto: ApiRetailConfiguration): RetailConfiguration {\n return {\n merchantId: proto.merchantId,\n retailGroupId: proto.retailGroupId,\n currencyCode: proto.currencyCode,\n currencyConversionRate: proto.currencyConversionRate || 0,\n defaultCustomerConfiguration: defaultCustomerConfigurationFromApi(proto.defaultCustomerConfiguration),\n };\n}\n\nexport function defaultCustomerConfigurationFromApi(\n proto: ApiDefaultCustomerConfiguration,\n): DefaultCustomerConfiguration | undefined {\n if (!proto) {\n return undefined;\n }\n const collectionMethod = collectionMethodFromApi(proto.collectionMethod);\n return {\n generateMethod: generateMethodFromApi(proto.generateMethod),\n collectionMethod: collectionMethod,\n invoiceDay: proto.invoiceDay,\n netD: proto.netD,\n memo: proto.memo,\n autoGenerateRetailSubscriptions: proto.autoGenerateRetailSubscriptions ?? false,\n };\n}\n\nexport function defaultCustomerConfigurationToApi(\n c: DefaultCustomerConfiguration | undefined,\n): DefaultCustomerConfigurationInterface | undefined {\n if (!c) {\n return undefined;\n }\n return {\n generateMethod: generateMethodToApi(c.generateMethod),\n collectionMethod: collectionMethodToApi(c.collectionMethod),\n invoiceDay: c.invoiceDay,\n netD: c.netD,\n memo: c.memo,\n autoGenerateRetailSubscriptions: c.autoGenerateRetailSubscriptions ?? false,\n } as ApiDefaultCustomerConfiguration;\n}\n","import { HttpClient, HttpResponse } from '@angular/common/http';\nimport { Injectable } from '@angular/core';\nimport { Observable } from 'rxjs';\nimport { catchError, map, share } from 'rxjs/operators';\nimport { PagedResponse, SortDirection } from '../core';\nimport { handleCsvError } from '../http-shared/error-handlers';\nimport { currencyFromApi } from '../pricing';\nimport {\n CreateStripeExternalAccountRequest,\n GetMerchantRequest,\n GetMultiRetailConfigurationsRequest,\n GetMultiRetailConfigurationsResponse,\n GetOutstandingBalanceRequest,\n GetPayoutSummaryRequest,\n GetRetailPayoutRequest,\n GetStatisticsRequest,\n GetStatisticsResponse,\n HostService,\n ListRetailPayoutsRequest,\n ListRetailPayoutsResponse,\n MerchantApiService,\n PagedRequestOptions,\n PagedRequestOptionsInterface,\n SearchMerchantsRequestSortBy,\n SortDirection as SortDirectionApi,\n UpsertDefaultRetailCustomerConfigurationRequest,\n UpsertRetailConfigurationRequest,\n MerchantServicesReportRun,\n MerchantServicesReportRunType,\n AccountBalance,\n} from '@vendasta/billing';\nimport { Balance } from './balance';\nimport { Merchant, MerchantFromAPI } from './merchant';\nimport { DownloadMerchantsCsvRequest } from './merchant.interface';\nimport { PayoutSummary, payoutSummaryFromAPI } from './payout-summary';\nimport {\n DefaultCustomerConfiguration,\n defaultCustomerConfigurationToApi,\n RetailConfiguration,\n retailConfigurationFromApi,\n} from './retail-configuration';\nimport { RetailPayout, retailPayoutFromApi } from '../payment';\n\n/**\n * @enum SortMerchantsBy\n * Names should match corresponding field in Merchant interface.\n * Values should match ../_internal/enums/SortBy\n */\nexport enum SortMerchantsBy {\n merchantId = 0,\n companyName,\n contactName,\n emailAddress,\n country,\n state,\n created,\n updated,\n}\n\n@Injectable({ providedIn: 'root' })\nexport class MerchantService {\n constructor(private merchantApi: MerchantApiService, private hostService: HostService, private http: HttpClient) {}\n\n get(merchantId: string): Observable {\n const req = new GetMerchantRequest({ merchantId });\n return this.merchantApi.get(req).pipe(map((resp) => MerchantFromAPI(resp.merchant)));\n }\n\n create(\n merchantId: string,\n address: string,\n city: string,\n state: string,\n country: string,\n zipCode: string,\n emailAddress: string,\n phoneNumber: string,\n contactName: string,\n companyName: string,\n additionalEmailAddresses?: string[],\n ): Observable {\n return this.merchantApi\n .create({\n merchantId,\n address,\n city,\n state,\n country,\n zipCode,\n emailAddress,\n phoneNumber,\n contactName,\n companyName,\n additionalEmailAddresses,\n })\n .pipe(map(() => true));\n }\n\n update(\n merchantId: string,\n address: string,\n city: string,\n state: string,\n country: string,\n zipCode: string,\n emailAddress: string,\n phoneNumber: string,\n contactName: string,\n companyName: string,\n additionalEmailAddresses?: string[],\n ): Observable {\n return this.merchantApi\n .update({\n merchantId,\n address,\n city,\n state,\n country,\n zipCode,\n emailAddress,\n phoneNumber,\n contactName,\n companyName,\n additionalEmailAddresses,\n })\n .pipe(map(() => true));\n }\n\n getOutstandingBalance(merchantId: string): Observable {\n const req = new GetOutstandingBalanceRequest({ merchantId });\n return this.merchantApi.getOutstandingBalance(req).pipe(\n map((r) => ({\n outstanding: r.outstandingBalance || 0,\n currency: currencyFromApi(r.currency),\n })),\n );\n }\n\n getStatistics(merchantId: string): Observable {\n const req = new GetStatisticsRequest({ merchantId });\n return this.merchantApi.getStatistics(req);\n }\n\n private sortMerchantByToApi(sortBy: SortMerchantsBy): SearchMerchantsRequestSortBy {\n switch (sortBy) {\n case SortMerchantsBy.merchantId:\n return SearchMerchantsRequestSortBy.SEARCH_MERCHANTS_REQUEST_SORT_BY_MERCHANT_ID;\n case SortMerchantsBy.companyName:\n return SearchMerchantsRequestSortBy.SEARCH_MERCHANTS_REQUEST_SORT_BY_COMPANY_NAME;\n case SortMerchantsBy.contactName:\n return SearchMerchantsRequestSortBy.SEARCH_MERCHANTS_REQUEST_SORT_BY_CONTACT_NAME;\n case SortMerchantsBy.emailAddress:\n return SearchMerchantsRequestSortBy.SEARCH_MERCHANTS_REQUEST_SORT_BY_EMAIL_ADDRESS;\n case SortMerchantsBy.country:\n return SearchMerchantsRequestSortBy.SEARCH_MERCHANTS_REQUEST_SORT_BY_COUNTRY;\n case SortMerchantsBy.state:\n return SearchMerchantsRequestSortBy.SEARCH_MERCHANTS_REQUEST_SORT_BY_STATE;\n case SortMerchantsBy.updated:\n return SearchMerchantsRequestSortBy.SEARCH_MERCHANTS_REQUEST_SORT_BY_UPDATED;\n case SortMerchantsBy.created:\n return SearchMerchantsRequestSortBy.SEARCH_MERCHANTS_REQUEST_SORT_BY_CREATED;\n default:\n return SearchMerchantsRequestSortBy.SEARCH_MERCHANTS_REQUEST_SORT_BY_MERCHANT_ID;\n }\n }\n\n private sortDirectionToApi(sortDirection: SortDirection): SortDirectionApi {\n switch (sortDirection) {\n case SortDirection.Ascending:\n return SortDirectionApi.SORT_DIRECTION_ASCENDING;\n case SortDirection.Descending:\n return SortDirectionApi.SORT_DIRECTION_DESCENDING;\n default:\n return SortDirectionApi.SORT_DIRECTION_ASCENDING;\n }\n }\n\n search(\n searchTerm: string,\n sortBy: SortMerchantsBy,\n sortDirection: SortDirection,\n pagingOptions: PagedRequestOptionsInterface,\n ): Observable> {\n return this.merchantApi\n .search({\n searchTerm: searchTerm,\n sortBy: this.sortMerchantByToApi(sortBy),\n sortDirection: this.sortDirectionToApi(sortDirection),\n pagingOptions: new PagedRequestOptions(pagingOptions),\n })\n .pipe(\n map(\n (r) =>\n new PagedResponse(\n r.merchants.map((m) => MerchantFromAPI(m)),\n r.pagingMetadata.nextCursor,\n r.pagingMetadata.hasMore,\n ),\n ),\n );\n }\n\n setAutoPostInvoices(merchantId: string, autoPostInvoices: boolean): Observable {\n return this.merchantApi\n .setAutoPostInvoices({\n merchantId: merchantId,\n shouldAutoPostInvoices: autoPostInvoices,\n })\n .pipe(map(() => true));\n }\n\n setAutoChargeInvoices(merchantId: string, autoChargeInvoices: boolean): Observable {\n return this.merchantApi\n .setAutoChargeInvoices({\n merchantId,\n autoChargeInvoices,\n })\n .pipe(map(() => true));\n }\n\n downloadCsv(r: DownloadMerchantsCsvRequest): Observable {\n const queryParams = `?filename=${r.filename}`;\n return this.http\n .get(this.hostService.hostWithScheme + '/merchants-csv' + queryParams, this.apiOptions())\n .pipe(catchError(handleCsvError));\n }\n\n setIncludeInFinancialRecords(merchantId: string, includeInFinancialRecords: boolean): Observable {\n return this.merchantApi\n .setIncludeInFinancialRecords({\n merchantId: merchantId,\n includeInFinancialRecords: includeInFinancialRecords,\n })\n .pipe(map((response) => response.ok));\n }\n\n sendSalesInvoiceEmail(merchantId: string, invoiceId: string): Observable {\n return this.merchantApi\n .sendSalesInvoiceEmail({\n merchantId: merchantId,\n invoiceId: invoiceId,\n })\n .pipe(map(() => true));\n }\n\n chargeSalesInvoice(merchantId: string, invoiceId: string, amount: number): Observable {\n return this.merchantApi\n .chargeSalesInvoice({\n merchantId,\n invoiceId,\n amount,\n })\n .pipe(map(() => true));\n }\n\n sendSalesInvoiceReceiptEmail(merchantId: string, invoiceId: string): Observable {\n return this.merchantApi\n .sendSalesInvoiceReceiptEmail({\n merchantId: merchantId,\n invoiceId: invoiceId,\n })\n .pipe(map(() => true));\n }\n\n private apiOptions(): { responseType: 'blob'; withCredentials: boolean } {\n return {\n responseType: 'blob',\n withCredentials: true,\n };\n }\n\n createExternalAccount(merchantId: string, stripeToken: string): Observable {\n return this.merchantApi\n .createStripeExternalAccount(\n new CreateStripeExternalAccountRequest({\n merchantId,\n stripeToken,\n }),\n )\n .pipe(map(() => true));\n }\n\n generateAccountBalanceReport(merchantId: string): Observable {\n const queryParams = `?merchantID=${merchantId}`;\n return this.http\n .get(this.hostService.hostWithScheme + '/merchant-balance-details-report' + queryParams, this.apiOptions())\n .pipe(share(), catchError(handleCsvError));\n }\n\n getMultiRetailConfigurations(\n merchantId: string,\n retailGroupIds: string[],\n ): Observable> {\n const request = new GetMultiRetailConfigurationsRequest({\n merchantId,\n retailGroupIds,\n });\n return this.merchantApi.getMultiRetailConfigurations(request).pipe(\n map((resp: GetMultiRetailConfigurationsResponse) => {\n const configMap = new Map();\n retailGroupIds.forEach((groupId) => {\n configMap.set(groupId, retailConfigurationFromApi(resp.retailConfigurations[groupId]));\n });\n return configMap;\n }),\n );\n }\n\n upsertRetailConfiguration(\n merchantId: string,\n retailGroupId: string,\n currencyCode: string,\n currencyConversionRate?: number,\n ): Observable {\n const request = new UpsertRetailConfigurationRequest({\n merchantId,\n retailGroupId,\n currencyCode,\n currencyConversionRate,\n });\n return this.merchantApi.upsertRetailConfiguration(request).pipe(map(() => null));\n }\n\n getPayoutSummary(merchantId: string): Observable {\n return this.merchantApi\n .getPayoutSummary(\n new GetPayoutSummaryRequest({\n merchantId,\n }),\n )\n .pipe(map((resp) => payoutSummaryFromAPI(resp)));\n }\n\n getRetailPayout(merchantId: string, payoutId: string): Observable {\n return this.merchantApi\n .getRetailPayout(\n new GetRetailPayoutRequest({\n merchantId,\n payoutId,\n }),\n )\n .pipe(map((resp) => retailPayoutFromApi(resp.payout)));\n }\n\n listRetailPayouts(merchantId: string, cursor = '', pageSize = 10): Observable> {\n return this.merchantApi\n .listRetailPayouts(\n new ListRetailPayoutsRequest({\n merchantId: merchantId,\n pagingOptions: new PagedRequestOptions({ cursor, pageSize }),\n }),\n )\n .pipe(\n map((resp: ListRetailPayoutsResponse) => {\n const retailPayouts = (resp.payouts || []).map((payout) => retailPayoutFromApi(payout));\n return new PagedResponse(retailPayouts, resp.pagingMetadata.nextCursor, resp.pagingMetadata.hasMore);\n }),\n );\n }\n\n /**\n * Updates the default retail customer configuration for a given merchant and group ID\n * @param merchantId - the merchant to update for\n * @param retailGroupId - the group ID to update for\n * @param defaultCustomerConfiguration - the default customer configuration to apply. If `null`, the merchant/group will have no defaults\n */\n upsertDefaultRetailCustomerConfiguration(\n merchantId: string,\n retailGroupId: string,\n defaultCustomerConfiguration?: DefaultCustomerConfiguration,\n ): Observable> {\n return this.merchantApi.upsertDefaultRetailCustomerConfiguration(\n new UpsertDefaultRetailCustomerConfigurationRequest({\n merchantId,\n retailGroupId,\n defaultCustomerConfiguration: defaultCustomerConfigurationToApi(defaultCustomerConfiguration),\n }),\n );\n }\n\n /**\n * Creates a new report run for a merchant.\n *\n * @param merchantId is the id of the merchant to create the report for.\n * @param reportType is the type of report to generate\n * @param intervalStart is the starting time for entities in the report.\n * @param intervalEnd is the end range for entities in the report.\n * @param currencyCode fill filter results down to a specific currency. This is optional.\n */\n createReportRun(\n merchantId: string,\n reportType: MerchantServicesReportRunType,\n intervalStart: Date,\n intervalEnd: Date,\n currencyCode?: string,\n ): Observable {\n return this.merchantApi.createReportRun({\n merchantId,\n reportType,\n intervalStart,\n intervalEnd,\n currencyCode,\n });\n }\n\n /**\n * Get a report run by its identifier.\n *\n * @param id is the id of the report run.\n */\n getReportRun(id: string): Observable {\n return this.merchantApi.getReportRun({ id });\n }\n\n /**\n * Gets the data from a report run\n *\n * @param id is the id of the report run.\n */\n getReport(id: string): Observable {\n return this.http\n .get(this.hostService.hostWithScheme + `/merchant-services/reports/${id}`, this.apiOptions())\n .pipe(catchError(handleCsvError));\n }\n\n getRetailAccountBalance(merchantId: string): Observable {\n return this.merchantApi.getRetailAccountBalance({ merchantId }).pipe(map((resp) => resp.balance));\n }\n}\n","export {\n PayoutStatus,\n MerchantServicesReportRun,\n MerchantServicesReportRunType,\n MerchantServicesReportRunStatus,\n} from '@vendasta/billing';\nexport { Balance } from './balance';\nexport { Merchant } from './merchant';\nexport { DownloadMerchantsCsvRequest } from './merchant.interface';\nexport { MerchantService, SortMerchantsBy } from './merchant.service';\nexport { PayoutBalance, PayoutInterval, PayoutSummary } from './payout-summary';\nexport { RetailConfiguration, DefaultCustomerConfiguration, GenerateMethod } from './retail-configuration';\n","export { MerchantReport } from './merchant-report';\nexport { MerchantReportStatus } from './merchant-report-status';\nexport { MerchantReportApiService } from './merchant-report.service';\nexport { DownloadMerchantReportCsvRequest } from './merchant-report.interfaces';\n","import { Injectable } from '@angular/core';\nimport { Observable } from 'rxjs';\nimport { map, mapTo } from 'rxjs/operators';\nimport { convertApiPaymentCardDetails, PaymentCard } from '../payment-card/payment-card';\nimport {\n DeletePaymentCardRequest,\n ListPaymentCardsRequest,\n ListPaymentCardsResponse,\n PaymentMethodApiService,\n SetDefaultPaymentMethodRequest,\n} from '@vendasta/billing';\n\n@Injectable({ providedIn: 'root' })\nexport class PaymentMethodService {\n constructor(private apiService: PaymentMethodApiService) {}\n\n listPaymentCards(merchantId: string, customerId: string): Observable {\n const req = new ListPaymentCardsRequest({\n merchantId,\n customerId,\n });\n return this.apiService.listPaymentCards(req).pipe(\n map((resp: ListPaymentCardsResponse) => {\n return (resp && resp.paymentCard ? resp.paymentCard : []).map((c) => convertApiPaymentCardDetails(c));\n }),\n );\n }\n\n deletePaymentCard(merchantId: string, cardId: string): Observable {\n const req = new DeletePaymentCardRequest({\n merchantId,\n cardId,\n });\n return this.apiService.deletePaymentCard(req).pipe(mapTo(true));\n }\n\n setDefaultPaymentCard(merchantId: string, customerId: string, paymentMethodId: string): Observable {\n const req = new SetDefaultPaymentMethodRequest({\n merchantId,\n customerId,\n paymentMethodId,\n });\n return this.apiService.setDefaultPaymentMethod(req).pipe(mapTo(true));\n }\n}\n","export { PaymentMethodService } from './payment-method.service';\n","export * from './list-products';\nexport * from './product';\n","import {\n RetentionMetrics as RetentionMetricsApi,\n ListSubscriptionRetentionByGroupResponseSubscriptionRetentionByGroup as RetentionMetricsByGroupApi,\n} from '@vendasta/billing';\n\nexport interface RetentionMetrics {\n sku: string;\n productName: string;\n startingCount: number;\n activations: number;\n deactivations: number;\n churn: number;\n retention: number;\n}\n\nexport interface RetentionMetricsByGroup {\n groupID: string;\n metrics: RetentionMetrics[];\n}\n\nexport interface ListSubscriptionRetentionFilters {\n start?: Date;\n end?: Date;\n}\n\nexport function subscriptionMetricFromAPI(mApi: RetentionMetricsApi): RetentionMetrics {\n return {\n sku: mApi.sku || '',\n productName: mApi.productName || '',\n startingCount: mApi.startingCount || 0,\n activations: mApi.activations || 0,\n deactivations: mApi.deactivations || 0,\n churn: mApi.churn || 0.0,\n retention: mApi.retention || 0.0,\n };\n}\n\nexport function subscriptionMetricByGroupFromAPI(mApi: RetentionMetricsByGroupApi): RetentionMetricsByGroup {\n const metrics = (mApi.subscriptionMetrics || []).map((metric) => subscriptionMetricFromAPI(metric));\n return {\n groupID: mApi.groupId || '',\n metrics: metrics || [],\n };\n}\n","export * from './subscription-retention';\nexport { ProductSummaryService } from './product-summary.service';\n","export { ListPurchaseFilter } from './list-purchases';\nexport * from './purchase';\nexport { PurchaseService } from './purchase.service';\nexport * from './purchase_status';\n","import {\n ReferenceType as ApiReferenceType,\n RefundInterface,\n RefundReason as ApiReason,\n RefundStatus as ApiStatus,\n} from '@vendasta/billing';\n\nexport interface Refund {\n merchantId: string;\n chargeId: string;\n refundId: string;\n amount: number;\n reason: RefundReason;\n status: RefundStatus;\n created?: Date;\n updated?: Date;\n referenceType: ReferenceType;\n referenceId: string;\n description: string;\n}\n\nexport enum RefundReason {\n REQUESTED_BY_CUSTOMER = 'Requested by Customer',\n DUPLICATE = 'Duplicate',\n FRAUDULENT = 'Fraudulent',\n UNKNOWN = 'Unknown',\n}\n\nexport enum RefundStatus {\n SUCCEEDED = 'Succeeded',\n FAILED = 'Failed',\n PENDING = 'Pending',\n UNKNOWN = 'Unknown',\n}\n\nexport enum ReferenceType {\n PURCHASE = 'Purchase',\n PURCHASE_ITEM = 'Purchase Item',\n INVOICE = 'Invoice',\n UNKNOWN = 'Unknown',\n}\n\nexport function reasonToApi(r: RefundReason): ApiReason {\n switch (r) {\n case RefundReason.REQUESTED_BY_CUSTOMER:\n return ApiReason.REQUESTED_BY_CUSTOMER;\n case RefundReason.FRAUDULENT:\n return ApiReason.FRAUDULENT;\n case RefundReason.DUPLICATE:\n return ApiReason.DUPLICATE;\n default:\n return ApiReason.DUPLICATE;\n }\n}\n\nexport function reasonFromApi(r: ApiReason | undefined): RefundReason {\n switch (r) {\n case ApiReason.DUPLICATE:\n return RefundReason.DUPLICATE;\n case ApiReason.REQUESTED_BY_CUSTOMER:\n return RefundReason.REQUESTED_BY_CUSTOMER;\n case ApiReason.FRAUDULENT:\n return RefundReason.FRAUDULENT;\n default:\n return RefundReason.REQUESTED_BY_CUSTOMER;\n }\n}\n\nexport function statusFromApi(r: ApiStatus | undefined): RefundStatus {\n switch (r) {\n case ApiStatus.SUCCEEDED:\n return RefundStatus.SUCCEEDED;\n case ApiStatus.FAILED:\n return RefundStatus.FAILED;\n case ApiStatus.PENDING:\n return RefundStatus.PENDING;\n default:\n return RefundStatus.SUCCEEDED;\n }\n}\n\nexport function referenceFromApi(r: ApiReferenceType | undefined): ReferenceType {\n switch (r) {\n case ApiReferenceType.PURCHASE:\n return ReferenceType.PURCHASE;\n case ApiReferenceType.PURCHASE_ITEM:\n return ReferenceType.PURCHASE_ITEM;\n case ApiReferenceType.INVOICE:\n return ReferenceType.INVOICE;\n default:\n return ReferenceType.PURCHASE;\n }\n}\n\nexport function refundFromApi(refund: RefundInterface): Refund {\n return {\n merchantId: refund.merchantId || '',\n chargeId: refund.chargeId || '',\n refundId: refund.refundId || '',\n amount: refund.amount || 0,\n reason: reasonFromApi(refund.reason || undefined),\n status: statusFromApi(refund.status),\n created: refund.created ? new Date(refund.created) : undefined,\n updated: refund.updated ? new Date(refund.updated) : undefined,\n referenceType: referenceFromApi(refund.referenceType),\n referenceId: refund.referenceId || '',\n description: refund.description || '',\n };\n}\n","import { HttpErrorResponse } from '@angular/common/http';\nimport { Injectable } from '@angular/core';\nimport { Observable, throwError as observableThrowError } from 'rxjs';\nimport { catchError, map, mapTo } from 'rxjs/operators';\nimport { PagedResponse } from '../core';\nimport { CreateRefundRequest, ListRefundsRequest, RefundApiService } from '@vendasta/billing';\nimport { reasonToApi, Refund, refundFromApi, RefundReason } from './refund';\n\n@Injectable({ providedIn: 'root' })\nexport class RefundService {\n constructor(private refundApiService: RefundApiService) {}\n\n create(\n merchantId: string,\n chargeId: string,\n amount: number,\n reason: RefundReason,\n description: string,\n ): Observable {\n const request = new CreateRefundRequest({\n merchantId: merchantId,\n paymentId: chargeId,\n amount: amount,\n reason: reasonToApi(reason),\n description: description,\n });\n return this.refundApiService.create(request).pipe(catchError(this.handleError), mapTo(null));\n }\n\n list(merchantId: string, paymentIds: string[], cursor: string, pageSize: number): Observable> {\n const req = new ListRefundsRequest({\n paymentIds: paymentIds,\n cursor: cursor,\n pageSize: pageSize,\n merchantId: merchantId,\n });\n return this.refundApiService.list(req).pipe(\n map((response) => {\n const refunds = (response.refunds || []).map((item) => refundFromApi(item));\n return new PagedResponse(refunds, response.nextCursor, response.hasMore);\n }),\n );\n }\n\n private handleError(error: HttpErrorResponse): Observable {\n if (error.error instanceof ErrorEvent) {\n console.error(`An error occurred:`, error.error.message);\n } else {\n console.error(`Server returned ${error.message}`);\n }\n\n return observableThrowError(`Unable to issue a refund`);\n }\n}\n","export * from './refund.service';\nexport * from './refund';\n","export { RevenueApiService } from './revenue.service';\nexport { DownloadCsvRequestInterface } from './revenue.interfaces';\n","export { SalesCreditNote, ListFilters, SalesCreditNoteStatus } from './sales-credit-note';\nexport { SalesCreditNoteService } from './sales-credit-note.service';\n","export {\n SalesInvoice,\n ListSalesInvoicesFilters,\n SalesInvoiceStatus,\n SalesInvoiceType,\n PaymentStatusType,\n} from './sales-invoice';\nexport { SalesInvoiceService } from './sales-invoice.service';\n","export const SNAPSHOT_REPORT_SKU = 'ST';\nexport const SNAPSHOT_REPORT_REFRESH_SKU = 'snapshotreportrefresh';\nexport const REPUTATION_MANGEMENT_SKU = 'RM';\n","export { StripeFileService } from './stripe-file.service';\nexport { FileData } from './file';\nexport { FilePurpose } from './purpose';\n","export {};\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6W10sInNvdXJjZXMiOlsiaW5kZXgudHMiXSwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IHsgQ2FuQ3JlYXRlU3Vic2NyaXB0aW9uc0l0ZW0gfSBmcm9tICcuL2Nhbi1jcmVhdGUtc3Vic2NyaXB0aW9ucy1pdGVtJztcbiJdLCJtYXBwaW5ncyI6IiIsImlnbm9yZUxpc3QiOltdfQ==","import { Injectable } from '@angular/core';\nimport { TranslateService } from '@ngx-translate/core';\nimport { Interval } from './recurring_invoice/';\n\n@Injectable()\nexport class IntervalMappingService {\n private translatedIntervalMap: { [k: string]: string | any } = {\n [Interval.DAY]: {\n '=1': this.translateService.instant('BILLING.INVOICES_PAGE.RECURRING.INTERVAL.DAY'),\n other: this.translateService.instant('BILLING.INVOICES_PAGE.RECURRING.INTERVAL.DAYS'),\n },\n [Interval.WEEK]: {\n '=1': this.translateService.instant('BILLING.INVOICES_PAGE.RECURRING.INTERVAL.WEEK'),\n other: this.translateService.instant('BILLING.INVOICES_PAGE.RECURRING.INTERVAL.WEEKS'),\n },\n [Interval.MONTH]: {\n '=1': this.translateService.instant('BILLING.INVOICES_PAGE.RECURRING.INTERVAL.MONTH'),\n other: this.translateService.instant('BILLING.INVOICES_PAGE.RECURRING.INTERVAL.MONTHS'),\n },\n [Interval.YEAR]: {\n '=1': this.translateService.instant('BILLING.INVOICES_PAGE.RECURRING.INTERVAL.YEAR'),\n other: this.translateService.instant('BILLING.INVOICES_PAGE.RECURRING.INTERVAL.YEARS'),\n },\n };\n\n constructor(private translateService: TranslateService) {}\n\n public get intervalMapping(): { [k: string]: string } {\n return this.translatedIntervalMap;\n }\n}\n","export {\n BillingStrategy as PricingPlanBillingStrategy,\n Frequency as GeneratedFrequency,\n ListPurchaseItemsRequestListPurchaseItemsFilters as ListPurchaseItemsFilters,\n ListPurchaseRequestState as State,\n PaymentCardCARD_TYPE as CARD_TYPE,\n ProductSummaryBillingStrategy as ProductSummaryBillingStrategy,\n ProductSummaryProductType as ProductType,\n PurchaseStatus as PurchaseStatusEnum,\n ReferenceType as ReferenceTypeEnum,\n RefundReason as RefundReasonEnum,\n RefundStatus as RefundStatusEnum,\n RetailPaymentReferenceType as RetailPaymentReferenceTypeEnum,\n RetailStatusResponseInterface as RetailStatus,\n BillingApiService,\n CanCreateSubscriptionsResponse,\n ListBillableItemsRequestFilters,\n MerchantApiService,\n ProductSummary,\n RefundApiService,\n SubscribeValidationStatus,\n ValidateResponse,\n CreateMerchantRequest,\n CreatePaymentCardRequest,\n GetMerchantRequest,\n ListPaymentCardsRequest,\n ListPaymentCardsResponse,\n UpdateMerchantRequest,\n UpdatePaymentCardRequest,\n ListContractDocumentsRequest,\n ListContractDocumentsResponse,\n DeleteContractDocumentRequest,\n GetMultiContractsRequest,\n GetMultiContractsResponse,\n ListContractsRequest,\n ListContractsResponse,\n ResetContractPricingRequest,\n GetBalanceRequest,\n GetBalanceResponse,\n CreateDiscountRequest,\n ExpireDiscountRequest,\n ListDiscountsRequest,\n ListDiscountsResponse,\n AddLineItemRequest,\n AddLineItemResponse,\n CreateInvoiceRequest,\n CreateInvoiceResponse,\n DeleteInvoiceRequest,\n DeleteLineItemRequest,\n DeleteLineItemResponse,\n GetInvoiceRequest,\n GetInvoiceResponse,\n ListInvoicesRequest,\n ListInvoicesResponse,\n SendInvoiceRequest,\n UpdateInvoiceRequest,\n UpdateInvoiceResponse,\n UpdateLineItemRequest,\n UpdateLineItemResponse,\n PayInvoiceRequest,\n VoidInvoiceRequest,\n ListMerchantBillingReportsRequest,\n ListMerchantBillingReportsResponse,\n ConnectStripeAccountRequest,\n ConnectStripeAccountResponse,\n GetMerchantResponse,\n GetOutstandingBalanceRequest,\n GetOutstandingBalanceResponse,\n SearchMerchantsRequest,\n SearchMerchantsResponse,\n SetAutoChargeInvoicesRequest,\n SetAutoPostInvoicesRequest,\n SetDefaultPaymentCardRequest,\n SetHasAlternativePaymentMethodRequest,\n SetIncludeInFinancialRecordsRequest,\n CreateProductRequest,\n DeleteProductRequest,\n GetMultiProductRequest,\n GetMultiProductResponse,\n ListProductsRequest,\n ListProductsResponse,\n UpdateProductRequest,\n ListPurchaseRequest,\n ListPurchaseResponse,\n ListPurchaseItemsRequest,\n ListPurchaseItemsResponse,\n RetryPurchaseRequest,\n VoidPurchaseRequest,\n CreateRefundRequest,\n ListRefundsRequest,\n ListRefundsResponse,\n ListSalesCreditNoteRequest,\n ListSalesCreditNoteResponse,\n CreateTaxRequest,\n GetMultiTaxRequest,\n GetMultiTaxResponse,\n ListTaxRequest,\n ListTaxResponse,\n UpdateTaxRequest,\n ListDiscountsRequestFiltersInterface,\n UpdateMerchantRequestInterface,\n ListPaymentCardsRequestInterface,\n CreateMerchantRequestInterface,\n ProductSummaryInterface,\n GetProductSummariesTotalRequestInterface,\n GetPurchaseCostResponse,\n ValidateResponseInterface,\n ListProductSummariesRequestInterface,\n CanCreateSubscriptionsRequestInterface,\n GetMerchantResponseInterface,\n MerchantInterface,\n CreatePaymentCardRequestInterface,\n UpdatePaymentCardRequestInterface,\n TaxRateInterface,\n ListProductSummariesResponse,\n CanCreateSubscriptionsRequest,\n CreateSubscriptionRequest,\n CreateSubscriptionResponse,\n ListProductSummariesRequest,\n PaymentCardInterface,\n Commitment,\n AccountBalance,\n BalanceAmount,\n usdConversionRate,\n SubscriptionStatus as SubscriptionStatusEnum,\n Source as SubscriptionSourceEnum,\n Consumer,\n FieldMask,\n} from '@vendasta/billing';\nexport * from './applied_bundle';\nexport { AppliedDiscount, appliedDiscountFromApi, Discount as LegacyDiscount } from './applied_discount';\nexport * from './bank_account';\nexport * from './bank_reconciliation';\nexport * from './billable-item';\nexport { BillingHostService } from './billing-host.service';\nexport { BillingService } from './billing.service';\nexport { StripeService } from './stripe.service';\nexport * from './bundle';\nexport * from './contract';\nexport * from './contract-document';\nexport * from './core';\nexport * from './credit';\nexport * from './discount';\nexport * from './invoice';\nexport * from './merchant';\nexport * from './merchant-report';\nexport * from './payment';\nexport * from './payment-card';\nexport * from './payment-method';\nexport * from './pricing';\nexport * from './product';\nexport * from './product-summary';\nexport * from './purchase';\nexport * from './refund';\nexport * from './retail-customer-configuration';\nexport * from './recurring_invoice';\nexport * from './revenue';\nexport * from './sales-credit-note';\nexport * from './sales-invoice';\nexport * from './sku';\nexport * from './stripe-file';\nexport * from './subscription';\nexport * from './tax-rate';\nexport * from './interval-mapping.service';\n","export * from './lib';\n","import { CurrencyPipe, DecimalPipe } from '@angular/common';\nimport { Injectable } from '@angular/core';\nimport { TranslateService } from '@ngx-translate/core';\nimport { Observable, of } from 'rxjs';\nimport { map, switchMap } from 'rxjs/operators';\n\nimport { BillingFrequency, Currency, MarketplaceBillingFrequency } from './display.price';\n\n@Injectable()\nexport class DisplayPriceService {\n constructor(private translateService: TranslateService) {}\n\n public formatDisplayPrice(\n value: any,\n currency: Currency | string,\n billingFrequency?: BillingFrequency | MarketplaceBillingFrequency,\n isCents = true,\n translateZero = true,\n displaySymbol = true,\n isStartingPrice = false,\n ): Observable {\n let display: 'code' | 'symbol' | 'symbol-narrow' | boolean = displaySymbol === true ? 'symbol' : 'code';\n let priceFormatFunc: (value: number, currency: string, display: string) => Observable =\n this.defaultFormatFunc.bind(this);\n\n switch (currency) {\n case 'CZK':\n display = displaySymbol ? 'symbol-narrow' : 'code';\n priceFormatFunc = this.CZKFormatFunc.bind(this);\n break;\n }\n if (value && value > 0) {\n let price = Number(value);\n if (isCents) {\n price = this.convertCentsToDollars(price);\n }\n return priceFormatFunc(price, currency, display).pipe(\n switchMap((formattedPrice: string) => {\n if (billingFrequency) {\n return this.formatBillingFrequency(billingFrequency, formattedPrice);\n }\n return of(formattedPrice);\n }),\n switchMap((formattedPrice: string) => {\n if (isStartingPrice) {\n return this.translateService.stream('FRONTEND.CORE.SHARED.DISPLAY_PRICE.STARTING_AT_PRICE', {\n price: formattedPrice,\n });\n }\n return of(formattedPrice);\n }),\n );\n }\n if (translateZero) {\n if (value < 0) {\n return this.translateService.stream('FRONTEND.CORE.SHARED.DISPLAY_PRICE.CONTACT_SALES');\n }\n if (value === 0) {\n return this.translateService.stream('FRONTEND.CORE.SHARED.DISPLAY_PRICE.FREE');\n }\n }\n if (value === 0) {\n return priceFormatFunc(value, currency, display);\n }\n return this.translateService.stream('FRONTEND.CORE.SHARED.DISPLAY_PRICE.CONTACT_SALES');\n }\n\n private convertCentsToDollars(centValue: number): number {\n if (!centValue) {\n return centValue;\n }\n\n if (!Number.isInteger(centValue)) {\n centValue = Number(centValue);\n centValue = Math.round(centValue);\n }\n return centValue / 100;\n }\n\n public formatBillingFrequency(frequency: string, price?: string): Observable {\n let returnValue!: Observable;\n if (frequency) {\n switch (frequency.toLowerCase()) {\n case 'once':\n case 'one time':\n returnValue = this.translateService.stream('FRONTEND.CORE.SHARED.DISPLAY_PRICE.PRICING_FREQUENCIES.ONE_TIME');\n break;\n case 'daily':\n returnValue = this.translateService.stream('FRONTEND.CORE.SHARED.DISPLAY_PRICE.PRICING_FREQUENCIES.DAILY');\n break;\n case 'weekly':\n returnValue = this.translateService.stream('FRONTEND.CORE.SHARED.DISPLAY_PRICE.PRICING_FREQUENCIES.WEEKLY');\n break;\n case 'monthly':\n returnValue = this.translateService.stream('FRONTEND.CORE.SHARED.DISPLAY_PRICE.PRICING_FREQUENCIES.MONTHLY');\n break;\n case 'yearly':\n returnValue = this.translateService.stream('FRONTEND.CORE.SHARED.DISPLAY_PRICE.PRICING_FREQUENCIES.YEARLY');\n break;\n case 'other':\n returnValue = this.translateService.stream('FRONTEND.CORE.SHARED.DISPLAY_PRICE.PRICING_FREQUENCIES.OTHER');\n break;\n default:\n returnValue = of(frequency);\n }\n }\n if (price) {\n return returnValue.pipe(map((v) => `${price} ${v}`)) ?? of('');\n }\n return returnValue;\n }\n\n private defaultFormatFunc(value: number, currency: string, display: string): Observable {\n if (!currency) {\n return of(new DecimalPipe('en-US').transform(value, '1.2-2') ?? '');\n } else {\n return of(new CurrencyPipe('en-US').transform(value, currency, display, '1.2-2') ?? '');\n }\n }\n\n private CZKFormatFunc(value: number, currency: string, display: string): Observable {\n const price = (new DecimalPipe('en-US').transform(value, '1.0-2') ?? '').replace('.', ',');\n const currencySymbol = (new CurrencyPipe('en-US').transform(1, currency, display, '0.0') ?? '').split('1')[0];\n return this.translateService.stream('FRONTEND.CORE.SHARED.DISPLAY_PRICE.PRICE_CURRENCY_EXC_VAT', {\n price: price,\n currencySymbol: currencySymbol,\n });\n }\n\n public getSetupFeeString(): Observable {\n return this.translateService.stream('FRONTEND.CORE.SHARED.DISPLAY_PRICE.SETUP_FEE');\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { Observable } from 'rxjs';\n\nimport { BillingFrequency, Currency } from './display.price';\nimport { DisplayPriceService } from './display-price.service';\n\n@Pipe({ name: 'price$' })\nexport class DisplayPricePipe implements PipeTransform {\n constructor(private displayPriceService: DisplayPriceService) {}\n transform(\n value: any,\n currency: Currency | string,\n billingFrequency?: BillingFrequency,\n isCents = true,\n translateZero = true,\n displaySymbol = true,\n isStartingPrice = false,\n ): Observable {\n return this.displayPriceService.formatDisplayPrice(\n value,\n currency,\n billingFrequency,\n isCents,\n translateZero,\n displaySymbol,\n isStartingPrice,\n );\n }\n}\n\n@Pipe({ name: 'billingFrequency$' })\nexport class BillingFrequencyPipe implements PipeTransform {\n constructor(private displayPriceService: DisplayPriceService) {}\n transform(frequency: string, price?: string): Observable {\n return this.displayPriceService.formatBillingFrequency(frequency, price);\n }\n}\n","import { CurrencyPipe, DecimalPipe, TitleCasePipe } from '@angular/common';\n\nexport type Currency =\n | 'AUD'\n | 'BRL'\n | 'CHF'\n | 'CNY'\n | 'CAD'\n | 'CZK'\n | 'EUR'\n | 'GBP'\n | 'HKD'\n | 'INR'\n | 'JPY'\n | 'KHR'\n | 'KRW'\n | 'MXN'\n | 'NOK'\n | 'NZD'\n | 'RUB'\n | 'SEK'\n | 'SGD'\n | 'TRY'\n | 'USD'\n | 'ZAR';\n\nexport type BillingFrequency = 'daily' | 'weekly' | 'monthly' | 'yearly' | 'once' | 'other';\n\nexport enum MarketplaceBillingFrequency {\n OneTime = 'One Time',\n Yearly = 'Yearly',\n Monthly = 'Monthly',\n}\n\nexport function formatDisplayPrice(\n value: any,\n currency: Currency | string,\n billingFrequency?: BillingFrequency | MarketplaceBillingFrequency,\n isCents = true,\n translateZero = true,\n displaySymbol: 'code' | 'symbol' | 'symbol-narrow' | string | boolean = true,\n isStartingPrice = false,\n): string {\n let price = 'Contact Sales';\n let display: string;\n let priceFormatFunc = defaultFormatFunc;\n\n if (typeof displaySymbol === 'string') {\n display = displaySymbol;\n } else {\n display = displaySymbol === true ? 'symbol' : 'code';\n }\n\n switch (currency) {\n case 'CZK':\n display = displaySymbol ? 'symbol-narrow' : 'code';\n priceFormatFunc = CZKFormatFunc;\n break;\n }\n\n if (value) {\n if (isCents) {\n value = convertCentsToDollars(Number(value));\n }\n price = priceFormatFunc(value, currency, display);\n if (billingFrequency) {\n price = `${price} ${formatBillingFrequency(billingFrequency)}`;\n }\n if (isStartingPrice) {\n price = `Starting at ${price}`;\n }\n }\n\n if (translateZero) {\n if (value < 0) {\n return 'Contact Sales';\n }\n if (value === 0) {\n return 'Free';\n }\n }\n if (value === 0) {\n return priceFormatFunc(value, currency, display);\n }\n\n return price;\n}\n\nexport function convertCentsToDollars(centValue: number): number {\n if (!centValue) {\n return centValue;\n }\n\n if (!Number.isInteger(centValue)) {\n centValue = Number(centValue);\n centValue = Math.round(centValue);\n }\n return centValue / 100;\n}\n\nexport function convertDollarsToCents(dollarValue: number): string {\n return ((dollarValue || 0) / 100).toFixed(2);\n}\n\nexport function formatBillingFrequency(value?: string): string {\n let returnValue = '';\n if (value) {\n switch (value.toLowerCase()) {\n case 'once':\n case 'one time':\n returnValue = 'One Time';\n break;\n default:\n returnValue = new TitleCasePipe().transform(value);\n }\n }\n return returnValue;\n}\n\nfunction defaultFormatFunc(value: string, currency: string, display: string): string {\n if (!currency) {\n return new DecimalPipe('en-US').transform(value, '1.2-2') ?? '';\n } else {\n return new CurrencyPipe('en-US').transform(value, currency, display, '1.2-2') ?? '';\n }\n}\n\nfunction CZKFormatFunc(value: string, currency: string, display: string): string {\n const price = (new DecimalPipe('en-US').transform(value, '1.0-2') ?? '').replace('.', ',');\n const currencySymbol = (new CurrencyPipe('en-US').transform(1, currency, display, '0.0') ?? '').split('1')[0];\n return `${price} ${currencySymbol} bez DPH`;\n}\n","{\n \"FRONTEND\": {\n \"CORE\": {\n \"SHARED\": {\n \"DISPLAY_PRICE\": {\n \"CONTACT_SALES\": \"Contact Sales\",\n \"PRICE_CURRENCY_EXC_VAT\": \"{{price}} {{currencySymbol}} exc. VAT\",\n \"FREE\": \"Free\",\n \"STARTING_AT_PRICE\": \"Starting at {{price}}\",\n \"SETUP_FEE\": \"Setup fee\",\n \"PRICING_FREQUENCIES\": {\n \"OTHER\": \"Other\",\n \"ONE_TIME\": \"One Time\",\n \"DAILY\": \"Daily\",\n \"WEEKLY\": \"Weekly\",\n \"MONTH\": \"month\",\n \"MONTHLY\": \"Monthly\",\n \"YEAR\": \"year\",\n \"YEARLY\": \"Yearly\"\n }\n }\n }\n }\n }\n}\n","export const removeGoogleTranslatedContent = (content: string) => {\n if (content && content.includes('(Translated by Google)')) {\n const translatedRegex = /(\\n*)\\(Translated by Google\\)[\\s\\S]*?(?:\\(Original\\)\\n?|$)/gi;\n content = content.replace(translatedRegex, '');\n }\n return content;\n};\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { removeGoogleTranslatedContent } from './remove-google-translated-content';\n\n@Pipe({ name: 'removeGoogleTranslatedContent' })\nexport class RemoveGoogleTranslatedContentPipe implements PipeTransform {\n transform(content: string, options?: { hideEnglishTranslations?: boolean }): string {\n if (options && options.hideEnglishTranslations) {\n return removeGoogleTranslatedContent(content);\n }\n\n return content;\n }\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { DisplayPriceService } from './display-price.service';\nimport { BillingFrequencyPipe, DisplayPricePipe } from './display-price.pipe';\nimport { LexiconModule } from '@galaxy/lexicon';\nimport baseTranslation from './assets/i18n/en.json';\nimport { RemoveGoogleTranslatedContentPipe } from './remove-google-translated-content.pipe';\n\n@NgModule({\n imports: [\n CommonModule,\n TranslateModule,\n LexiconModule.forChild({\n componentName: 'frontend/core-shared',\n baseTranslation: baseTranslation,\n }),\n ],\n exports: [DisplayPricePipe, BillingFrequencyPipe, RemoveGoogleTranslatedContentPipe],\n declarations: [DisplayPricePipe, BillingFrequencyPipe, RemoveGoogleTranslatedContentPipe],\n providers: [DisplayPriceService],\n})\nexport class CoreSharedModule {}\n","import { Directive } from '@angular/core';\nimport {\n AbstractControl,\n FormControl,\n NG_VALIDATORS,\n UntypedFormControl,\n ValidationErrors,\n ValidatorFn,\n Validator as ValidatorType,\n} from '@angular/forms';\n\nconst PRICE_REGEX = /^\\d{0,8}(\\.\\d{1,2})?$/;\nconst URL_REGEX = /^((https?:\\/\\/)?([\\w-]+(\\.[\\w-]+)+|localhost)\\.?(:\\d+)?((\\/)?\\S*)?)$/i;\nconst SUBDOMAIN_REGEX = /(^[a-z0-9][a-z0-9-]{0,62}[a-z0-9]$)/;\nconst MARKET_ID_REGEX = /(^[a-z0-9-]*$)/;\nconst EMAIL_REGEX =\n /^(([^<>()[\\]\\\\.,;:\\s@\"]+(\\.[^<>()[\\]\\\\.,;:\\s@\"]+)*)|(\".+\"))@((\\[[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}])|(([a-zA-Z\\-0-9]+\\.)+[a-zA-Z]{2,}))$/;\n// Following regex matches North American, South African, UK, and Australian phone numbers, with some support for extensions\nconst PHONE_NUMBER_REGEX =\n /(^(?:(?:\\+?1\\s*(?:[.-]\\s*)?)?(?:\\(\\s*([2-9]1[02-9]|[2-9][02-8]1|[2-9][02-8][02-9])\\s*\\)|([2-9]1[02-9]|[2-9][02-8]1|[2-9][02-8][02-9]))\\s*(?:[.-]\\s*)?)?([2-9]1[02-9]|[2-9][02-9]1|[2-9][02-9]{2})\\s*(?:[.-]\\s*)?([0-9]{4})(?:\\s*(?:#|x\\.?|ext\\.?|extension)\\s*(\\d+))?$)|(^(((\\+44\\s?\\d{4}|\\(?0\\d{4}\\)?)\\s?\\d{3}\\s?\\d{3})|((\\+44\\s?\\d{3}|\\(?0\\d{3}\\)?)\\s?\\d{3}\\s?\\d{4})|((\\+44\\s?\\d{2}|\\(?0\\d{2}\\)?)\\s?\\d{4}\\s?\\d{4}))(\\s?#(\\d{4}|\\d{3}))?$)|(^(\\+\\d{2}[ -]{0,1}){0,1}(((\\({0,1}[ -]{0,1})0{0,1}\\){0,1}[2|3|7|8]{1}\\){0,1}[ -]*(\\d{4}[ -]{0,1}\\d{4}))|(1[ -]{0,1}(300|800|900|902)[ -]{0,1}((\\d{6})|(\\d{3}[ -]{0,1}\\d{3})))|(13[ -]{0,1}([\\d -]{5})|((\\({0,1}[ -]{0,1})0{0,1}\\){0,1}4{1}[\\d -]{8,10})))$)|((\\(0\\d\\d\\)\\s\\d{3}[\\s-]+\\d{4})|(0\\d\\d[\\s-]+\\d{3}[\\s-]+\\d{4})|(0\\d{9})|(\\+\\d\\d\\s?[(\\s]\\d\\d[)\\s]\\s?\\d{3}[\\s-]?\\d{4}))/;\n\ninterface PostalCodeRegexMap {\n [key: string]: RegExp;\n}\n\nconst POSTAL_CODE_REGEXES: PostalCodeRegexMap = {\n CA: /^[ABCEGHJKLMNPRSTVXY]\\d[ABCEGHJ-NPRSTV-Z][\\s-]?\\d[ABCEGHJ-NPRSTV-Z]\\d$/,\n US: /^[0-9]{5}(?:-[0-9]{4})?$/,\n};\n\n/**\n * import from https://github.com/ReactiveX/rxjs/blob/5.5.8/src/util/isNumeric.ts\n */\nconst isArray = Array.isArray || ((x: any): x is T[] => x && typeof x.length === 'number');\n\nfunction isNumeric(val: any): val is number {\n return !isArray(val) && val - parseFloat(val) + 1 >= 0;\n}\n\nexport class Validator {\n static URL_MAILTO_OR_DYNAMIC_CONTENT_REGEX = /(\\{\\{.*?\\}\\})|(\\b((?:https?:\\/\\/|mailto:)[^\\s]+)\\b)/i;\n static DYNAMIC_CONTENT_REGEX = /\\{\\{\\s*([a-zA-Z]+)(?:\\s*\\['*([^']+)'*])?\\s*}}/i;\n static HEX_COLOR_REGEX = /^#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3})$/;\n\n static isPrice(control: UntypedFormControl): any {\n if (control.value && typeof control.value === 'string' && control.value.match(PRICE_REGEX)) {\n return null;\n } else if (\n control.value &&\n typeof control.value === 'number' &&\n parseFloat((control.value * 100).toFixed(2)) % 1 === 0\n ) {\n // modulus with floating point bases is broken\n return null;\n } else if (!control.value) {\n return null;\n } else {\n return { invalidPrice: true };\n }\n }\n\n static isUrl(control: UntypedFormControl): any {\n if (control.value && control.value.match(URL_REGEX)) {\n return null;\n } else if (control.value) {\n return { invalidUrl: true };\n }\n }\n\n static isEmailList(control: FormControl): any {\n if (control.value) {\n const emails = control.value\n .toString()\n .split(/[,;]+/)\n .map((email) => email.trim());\n const invalidEmails = emails.filter((email) => !email.match(EMAIL_REGEX));\n if (invalidEmails.length) {\n return { invalidEmail: true };\n }\n }\n }\n\n static isEmail(control: AbstractControl): ValidationErrors | null {\n if (control.value && typeof control.value == 'string' && control.value.match(EMAIL_REGEX)) {\n return null;\n } else if (control.value) {\n return { invalidEmail: true };\n }\n return null;\n }\n\n static isPhoneNumber(control: UntypedFormControl): any {\n if (control.value && control.value.match(PHONE_NUMBER_REGEX)) {\n return null;\n } else if (control.value) {\n return { invalidPhoneNumber: true };\n }\n }\n\n // Validation is currently limited to US and Canada. Add more countries to regex map as needed.\n static isValidPostalCode(countryCode: string): ValidatorFn {\n return (control: AbstractControl): ValidationErrors | null => {\n const value = control.value;\n const countryRegex = POSTAL_CODE_REGEXES[countryCode.toUpperCase()];\n // If the country code is not in our regex map, return valid\n if (!countryRegex) {\n return null;\n }\n // Validate the postal code against the regex for the given country\n if (!countryRegex.test(value)) {\n return { invalidPostalCode: true };\n }\n return null;\n };\n }\n\n static isInRange(lower: number, upper: number): ValidatorFn {\n return (control: AbstractControl): ValidationErrors | null => {\n const value = control.value;\n if (!isNumeric(value) || (lower !== null && Number(value) < lower) || (upper !== null && Number(value) > upper)) {\n return { outOfRange: true };\n }\n return null;\n };\n }\n\n static isValidMarketId(control: UntypedFormControl): ValidationErrors | null {\n if (control.value && control.value.match(MARKET_ID_REGEX)) {\n return null;\n } else if (control.value) {\n return { invalidMarketId: true };\n }\n return null;\n }\n\n static isMinimumLength(minimumLength: number): ValidatorFn {\n return (control: AbstractControl): ValidationErrors | null => {\n if (control.value && control.value.length >= minimumLength) {\n return null;\n } else if (control.value) {\n return { minlength: true };\n }\n return null;\n };\n }\n\n static isValidSubdomain(control: UntypedFormControl): any {\n if (control.value && control.value.match(SUBDOMAIN_REGEX)) {\n return null;\n } else if (control.value) {\n return { invalidSubdomain: true };\n }\n }\n\n static containsValidDynamicContent(control: FormControl): ValidationErrors | null {\n if (control.value) {\n if (!control.value.includes('{{')) {\n return null;\n }\n const parts = control.value.split('{{');\n const valid = parts.every((part) => {\n if (part.includes('}}')) {\n part = ('{{' + part) as string;\n const result = part.search(Validator.DYNAMIC_CONTENT_REGEX);\n if (result === -1) {\n return false;\n }\n }\n return true;\n });\n if (valid) {\n return null;\n }\n return { invalidDynamicComponent: true };\n }\n return null;\n }\n\n static errorMessage(validatorName: string, validatorValue?: any): string {\n const config: Record = {\n required: 'Required',\n minlength: `Minimum length ${validatorValue.requiredLength}`,\n invalidPrice: `Invalid price`,\n outOfRange: `Out of range`,\n invalidEmail: 'Invalid Email',\n invalidPhoneNumber: 'Invalid Phone Number',\n invalidZipCode: 'Invalid Zip/Postal Code',\n invalidSubdomain: 'Invalid Subdomain',\n };\n\n return config[validatorName];\n }\n\n static isGreaterThanZero = () => {\n return (control: UntypedFormControl) => {\n if (control.value <= 0) {\n return { isLessThanOrEqualToZero: true };\n }\n return null;\n };\n };\n}\n\n@Directive({\n selector: '[sharedContainsValidDynamicContent]',\n providers: [{ provide: NG_VALIDATORS, useExisting: ContainsValidDynamicContentDirective, multi: true }],\n})\nexport class ContainsValidDynamicContentDirective implements ValidatorType {\n validate(control: AbstractControl): ValidationErrors | null {\n return Validator.containsValidDynamicContent(control as UntypedFormControl);\n }\n}\n","import { HttpErrorResponse } from '@angular/common/http';\n\nconst googleErrorDetailsBadRequestType = 'type.googleapis.com/google.rpc.BadRequest';\n\nexport interface FieldViolation {\n field: string;\n description: string;\n}\nexport function getFieldViolationsFromError(err: HttpErrorResponse): FieldViolation[] {\n if (!err?.error?.details || !Array.isArray(err.error.details)) {\n return [];\n }\n return err.error.details\n .filter((detail: Record) => detail['@type'] === googleErrorDetailsBadRequestType)\n .reduce((acc: FieldViolation[], curr: { fieldViolations: FieldViolation[] }) => {\n const fieldViolations = curr?.fieldViolations.map((fv: FieldViolation) => ({\n field: fv.field,\n description: fv.description,\n }));\n acc.push(...fieldViolations);\n return acc;\n }, []);\n}\n","/**\n * @deprecated: Use ProductPricingType instead\n **/\nexport enum BillingModel {\n Standard = 'Standard',\n Stairstep = 'Stairstep',\n Tiered = 'Tiered',\n}\n","import {\n Currency,\n Discount,\n Frequency,\n ProductPricing,\n ProductPricingRules,\n ProductPricingType,\n} from '@galaxy/billing';\nimport { MarketplaceBillingFrequency } from '../display.price';\nimport { BillingModel } from './billing-model';\nimport { ProductCategory } from './product-category';\n\n/**\n * @deprecated: Combine Product and ProductPricing from billing instead.\n **/\nexport interface BilledProduct {\n productName: string;\n productId: string;\n billingModel: BillingModel;\n price: number;\n notes: (Discount | BundledProduct)[];\n iconURL: string;\n currency: Currency;\n billingFrequency: MarketplaceBillingFrequency;\n pricingTiers: PricingTier[];\n productCategory: ProductCategory;\n count?: number;\n commitment?: Commitment;\n setupFee: number;\n}\n\n/**\n * @deprecated: Use PricingRule instead\n **/\nexport interface PricingTier {\n rangeMin: number;\n rangeMax: number;\n price: number;\n isStartingPrice?: boolean;\n}\n\n/**\n * @deprecated: Use pricing's Commitment instead\n **/\nexport interface Commitment {\n initial: number;\n recurring: number;\n}\n\nexport interface BundledProduct {\n productName: string;\n}\n\nexport function pricingTypeToBillingModel(pricingType: ProductPricingType): BillingModel {\n switch (pricingType) {\n case ProductPricingType.Stairstep:\n return BillingModel.Stairstep;\n case ProductPricingType.Tiered:\n return BillingModel.Tiered;\n case ProductPricingType.Standard:\n return BillingModel.Standard;\n }\n return BillingModel.Standard;\n}\n\nexport function pricingRulesToTiers(rules: ProductPricingRules[]): PricingTier[] {\n return rules.map((r) => {\n return {\n rangeMin: r.minUnits,\n rangeMax: r.maxUnits,\n price: r.price || 0,\n };\n });\n}\n\nexport function mapFrequency(frequency: Frequency): MarketplaceBillingFrequency {\n switch (frequency) {\n case Frequency.OneTime:\n return MarketplaceBillingFrequency.OneTime;\n case Frequency.Monthly:\n return MarketplaceBillingFrequency.Monthly;\n case Frequency.Yearly:\n return MarketplaceBillingFrequency.Yearly;\n }\n return undefined as unknown as MarketplaceBillingFrequency;\n}\n\nexport function buildBilledProductFromProductPricingAndAddon(\n addon: { productName: string; addonId: string; productIcon: string },\n productPricing: ProductPricing,\n): BilledProduct {\n return {\n productName: addon.productName,\n productId: addon.addonId,\n billingModel: pricingTypeToBillingModel(productPricing.pricingType),\n price: undefined as unknown as number,\n notes: [],\n iconURL: addon.productIcon,\n currency: productPricing.currency,\n billingFrequency: mapFrequency(productPricing.frequency),\n pricingTiers: pricingRulesToTiers(productPricing.pricingRules),\n productCategory: undefined as unknown as ProductCategory,\n commitment: productPricing.commitment,\n setupFee: productPricing.setupFee,\n };\n}\n","export * from './billed-product';\nexport { ProductCategory } from './product-category';\nexport * from './billing-model';\n","export const removeRouterOutletsFromUrl = (url: string): string => {\n return url.replace(/\\(.*?\\)/g, '');\n};\n","export { DisplayPricePipe, BillingFrequencyPipe } from './display-price.pipe';\nexport {\n formatDisplayPrice,\n Currency,\n BillingFrequency,\n MarketplaceBillingFrequency,\n formatBillingFrequency,\n convertCentsToDollars,\n} from './display.price';\nexport { USD, CAD, Currency as CurrencyEnum } from './currency';\nexport { MONTHLY, ONE_TIME, YEARLY, Frequency as FrequencyEnum } from './frequency';\nexport { CoreSharedModule } from './shared.module';\nexport { DisplayPriceService } from './display-price.service';\nexport { Validator } from './validator';\nexport { FieldViolation, getFieldViolationsFromError } from './verrors';\nexport * from './contract-pricing';\nexport * from './url-helper';\nexport { ContainsValidDynamicContentDirective } from './validator';\nexport { removeGoogleTranslatedContent } from './remove-google-translated-content';\n","export * from './lib';\n","import { InjectionToken } from '@angular/core';\n\nexport interface GalaxyPageOptions {\n showToggle: boolean;\n toggleNav: () => unknown;\n}\nexport const GALAXY_PAGE_OPTIONS = new InjectionToken(\n '[Galaxy Page]: Configuration for component options',\n);\n","import { Inject, Injectable, Optional } from '@angular/core';\nimport { NavigationEnd, Router } from '@angular/router';\nimport { removeRouterOutletsFromUrl } from '@vendasta/shared';\nimport { GALAXY_PAGE_OPTIONS, GalaxyPageOptions } from './tokens';\n\n@Injectable({ providedIn: 'root' })\nexport class PageService {\n private readonly history: (string | null)[];\n\n showNavToggle = false;\n\n constructor(\n private router: Router,\n @Optional() @Inject(GALAXY_PAGE_OPTIONS) private pageOptions: GalaxyPageOptions | undefined,\n ) {\n this.history = [router.url];\n this.router.events.subscribe((event) => {\n if (event instanceof NavigationEnd) {\n while (this.history.length > 0 && this.history[this.history.length - 1] === null) {\n this.history.pop();\n }\n if (this.router.getCurrentNavigation()?.extras?.skipLocationChange) {\n this.history.push(null);\n } else if (this.history.length === 0 || event.url !== this.history[this.history.length - 1]) {\n const previousUrl = this.history[this.history.length - 1];\n const previousUrlPath = previousUrl?.substring(\n 0,\n previousUrl?.indexOf('?') > 0 ? previousUrl?.indexOf('?') : undefined,\n );\n const activeUrl = event.urlAfterRedirects;\n const activeUrlPath = activeUrl?.substring(\n 0,\n activeUrl?.indexOf('?') > 0 ? activeUrl?.indexOf('?') : undefined,\n );\n\n if (previousUrl && previousUrlPath === activeUrlPath) {\n this.history.pop(); // remove the previous url if it is the same as the current url's path without query params\n }\n this.history.push(activeUrl);\n }\n }\n });\n\n this.showNavToggle = this.pageOptions?.showToggle || false;\n }\n\n getPreviousPageUrl(defaultUrl: string): string {\n if (this.history.length > 1) {\n const previousUrl = this.history[this.history.length - 2];\n // This is to remove any router outlets from the previous url\n return previousUrl ? removeRouterOutletsFromUrl(previousUrl) : '';\n }\n\n return defaultUrl;\n }\n\n pop(deleteCount = 2): void {\n this.history.splice(-deleteCount, deleteCount);\n }\n}\n","import { Component, HostBinding, Inject, Input, Optional, ViewEncapsulation } from '@angular/core';\nimport { PageService } from '../page.service';\nimport { GALAXY_PAGE_OPTIONS, GalaxyPageOptions } from '../tokens';\n\n@Component({\n selector: 'glxy-page-toolbar',\n templateUrl: './page-toolbar.component.html',\n styleUrls: ['./page-toolbar.component.scss'],\n encapsulation: ViewEncapsulation.None,\n})\nexport class PageToolbarComponent {\n @HostBinding('class') class = 'glxy-page-toolbar';\n @Input() showExtendedToolbar = false;\n\n @HostBinding('class.extended-toolbar-has-padding')\n @Input()\n extendedToolbarPadding = true;\n\n @Input() showNavToggle: GalaxyPageOptions['showToggle'] = this.pageService.showNavToggle ?? false;\n\n constructor(\n private readonly pageService: PageService,\n @Optional() @Inject(GALAXY_PAGE_OPTIONS) private readonly pageOptions: GalaxyPageOptions | undefined,\n ) {}\n\n toggleNav(): void {\n this.pageOptions?.toggleNav();\n }\n}\n","
\n
\n \n \n \n menu\n \n \n\n \n \n\n \n \n
\n\n
\n \n
\n \n
\n\n \n
\n \n
\n\n
\n \n \n
\n
\n
\n\n\n
\n \n
\n
\n","import { Directive, HostBinding, Input, OnInit, ViewContainerRef, booleanAttribute } from '@angular/core';\nimport { Title } from '@angular/platform-browser';\n\nconst MAX_TITLE_CHECK_COUNT = 5;\n\n@Directive({\n selector: 'glxy-page-title, [glxyPageTitle]',\n})\nexport class PageTitleDirective implements OnInit {\n @HostBinding('class') class = 'glxy-page-title';\n\n /**\n * Updates the title of the tab based on the text contained within the title\n */\n @Input({ transform: booleanAttribute }) updateTabTitle = false;\n\n private checkCount = 0;\n\n constructor(\n private readonly title: Title,\n private readonly _viewContainerRef: ViewContainerRef,\n ) {}\n\n ngOnInit(): void {\n if (this.updateTabTitle) {\n this.updateTitle();\n }\n }\n\n /**\n * Updates the title based on the content of the title container. If the content is empty\n * it will retry every 500ms for a limited amount of times.\n *\n * This would happen in the case of the translate pipe taking some time to translate text or\n * waiting for an observable, etc.\n */\n private updateTitle(): void {\n const titleText = this.getComponent().innerText || '';\n if (titleText.trim() !== '') {\n this.title.setTitle(titleText);\n } else {\n this.checkCount += 1;\n if (this.checkCount < MAX_TITLE_CHECK_COUNT) {\n window.setTimeout(() => this.updateTitle(), 500);\n }\n }\n }\n\n /**\n * Gets the reference the field itself\n */\n private getComponent(): HTMLElement {\n const container = (this._viewContainerRef as any)['_lContainer'][0];\n if (container instanceof HTMLElement) {\n return container;\n }\n\n const containerName = container.constructor.name;\n const componentName = containerName.split('_')[1];\n return container.filter((x: any) => x && x.constructor.name === componentName)[0];\n }\n}\n","import { Directive, HostBinding } from '@angular/core';\n\n@Directive({\n selector: 'glxy-page-actions, [glxyPageActions]',\n})\nexport class PageActionsDirective {\n @HostBinding('class') class = 'glxy-page-actions';\n}\n","import { Directive, HostBinding, Input } from '@angular/core';\n\nexport enum WidthPreset {\n Narrow = 'narrow',\n Default = 'default',\n Wide = 'wide',\n Full = 'full',\n}\n\ntype WidthPresets = `${WidthPreset.Narrow}` | `${WidthPreset.Default}` | `${WidthPreset.Wide}` | `${WidthPreset.Full}`;\n\n@Directive({\n selector: 'glxy-page-wrapper, [glxyPageWrapper]',\n})\nexport class PageWrapperDirective {\n @HostBinding('class') class = 'glxy-page-wrapper';\n\n @HostBinding('style.display') display = 'block';\n\n @HostBinding('style.margin') margin = '0 auto';\n\n @Input() widthPreset: WidthPreset | WidthPresets = WidthPreset.Default;\n\n @Input() maxWidth?: number;\n\n @HostBinding('style.max-width')\n get setMaxWidth(): string {\n if (this.maxWidth) {\n return this.maxWidth + 'px';\n } else {\n switch (this.widthPreset) {\n case 'narrow':\n case WidthPreset.Narrow:\n return '600px';\n case 'wide':\n case WidthPreset.Wide:\n return '1160px';\n case 'full':\n case WidthPreset.Full:\n return '';\n case 'default':\n case WidthPreset.Default:\n default:\n return '900px';\n }\n }\n }\n}\n","import { Component, Input, OnInit } from '@angular/core';\nimport { Router } from '@angular/router';\nimport { PageService } from '../page.service';\n\n@Component({\n selector: 'glxy-page-nav-button',\n templateUrl: './page-nav-button.component.html',\n styleUrls: ['./page-nav-button.component.scss'],\n})\nexport class PageNavButtonComponent implements OnInit {\n @Input() previousPageUrl?: string;\n @Input() previousPageTitle?: string;\n @Input() useHistory = false;\n @Input() historyBackButtonTitle = 'Back';\n\n defaultPageUrl = '';\n\n constructor(private readonly pageService: PageService, private readonly router: Router) {}\n\n ngOnInit(): void {\n if (this.previousPageUrl) {\n this.defaultPageUrl = this.previousPageUrl;\n }\n }\n\n navigateToPreviousUrl(): void {\n if (this.useHistory) {\n this.previousPageUrl = this.pageService.getPreviousPageUrl(this.defaultPageUrl);\n // if the previous page url is different than what was initially provided\n // then use the back button title text if provided\n if (this.previousPageUrl !== this.defaultPageUrl && this.historyBackButtonTitle) {\n this.previousPageTitle = this.historyBackButtonTitle;\n }\n }\n\n // pop will remove the last two items from the navigation history.\n // the page that was just visited and the page we are about to navigate back to\n // this prevents history looping\n this.pageService.pop();\n // Redirect with explicit query param and fragment assignment. If there are query params, remove it from the path\n const urlTree = this.router.parseUrl(this.previousPageUrl ?? '');\n const queryParamIndex = this.previousPageUrl?.indexOf('?');\n const path =\n (queryParamIndex ?? 0) > 0 ? this.previousPageUrl?.substring(0, queryParamIndex) : this.previousPageUrl;\n if (path) {\n this.router.navigate([path], { queryParams: urlTree.queryParams, fragment: urlTree.fragment ?? undefined });\n }\n }\n}\n","
\n \n arrow_back\n \n
\n","import { Directive, HostBinding } from '@angular/core';\n\n@Directive({\n selector: 'glxy-page-nav, [glxyPageNav]',\n})\nexport class PageNavDirective {\n @HostBinding('class') class = 'glxy-page-nav';\n}\n","import { Directive, HostBinding } from '@angular/core';\n\n@Directive({\n selector: 'glxy-page-title-actions, [glxyPageTitleActions]',\n})\nexport class PageTitleActionsDirective {\n @HostBinding('class') class = 'glxy-page-title-actions';\n}\n","import { Directive, HostBinding } from '@angular/core';\n\n@Directive({\n selector: 'glxy-page-extended-toolbar, [glxyPageExtendedToolbar]',\n})\nexport class PageExtendedToolbarDirective {\n @HostBinding('class') class = 'glxy-page-extended-toolbar';\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { RouterModule } from '@angular/router';\n\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatTooltipModule } from '@angular/material/tooltip';\nimport { MatMenuModule } from '@angular/material/menu';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatProgressBarModule } from '@angular/material/progress-bar';\n\nimport { PageComponent } from './page.component';\nexport { PageComponent } from './page.component';\n\nimport { PageToolbarComponent } from './page-toolbar/page-toolbar.component';\nexport { PageToolbarComponent } from './page-toolbar/page-toolbar.component';\n\nimport { PageNavButtonComponent } from './page-nav-button/page-nav-button.component';\nexport { PageNavButtonComponent } from './page-nav-button/page-nav-button.component';\n\nimport { PageTitleDirective } from './directives/page-title.directive';\nexport { PageTitleDirective } from './directives/page-title.directive';\n\nimport { PageNavDirective } from './directives/page-nav.directive';\nexport { PageNavDirective } from './directives/page-nav.directive';\n\nimport { PageActionsDirective } from './directives/page-actions.directive';\nexport { PageActionsDirective } from './directives/page-actions.directive';\n\nimport { PageTitleActionsDirective } from './directives/page-title-actions.directive';\nexport { PageTitleActionsDirective } from './directives/page-title-actions.directive';\n\nimport { PageWrapperDirective } from './directives/page-wrapper.directive';\nexport { PageWrapperDirective } from './directives/page-wrapper.directive';\n\nimport { PageExtendedToolbarDirective } from './directives/page-extended-toolbar.directive';\nexport { PageExtendedToolbarDirective } from './directives/page-extended-toolbar.directive';\n\nimport { TranslateModule } from '@ngx-translate/core';\n\nexport const MODULE_IMPORTS = [\n CommonModule,\n RouterModule,\n MatIconModule,\n MatTooltipModule,\n MatMenuModule,\n MatButtonModule,\n MatProgressBarModule,\n TranslateModule,\n];\n\nexport const MODULE_DECLARATIONS = [\n PageComponent,\n PageToolbarComponent,\n PageTitleDirective,\n PageNavDirective,\n PageNavButtonComponent,\n PageActionsDirective,\n PageTitleActionsDirective,\n PageWrapperDirective,\n PageExtendedToolbarDirective,\n];\n\n@NgModule({\n declarations: MODULE_DECLARATIONS,\n exports: [\n PageComponent,\n PageToolbarComponent,\n PageTitleDirective,\n PageNavDirective,\n PageNavButtonComponent,\n PageActionsDirective,\n PageTitleActionsDirective,\n PageWrapperDirective,\n PageExtendedToolbarDirective,\n ],\n imports: MODULE_IMPORTS,\n})\nexport class GalaxyPageModule {}\n","export * from './src/page.module';\n","export * from './public_api';\nexport * from './src/tokens';\nexport { WidthPreset } from './src/directives/page-wrapper.directive';\n"],"mappings":"stDA8LA,SAASA,GAAMC,EAAGC,EAAM,EAAGC,EAAM,IAAK,CACpC,OAAO,KAAK,IAAID,EAAK,KAAK,IAAIC,EAAKF,CAAC,CAAC,CACvC,CAhMA,IAMMG,GAoBFC,GAuKAC,GAjMJC,GAAAC,EAAA,KAAAC,IACAA,IAEAA,KAGML,GAAgD,IAAIM,GAAe,kCAAkC,EAoBvGL,IAA+B,IAAM,CACvC,IAAMM,EAAN,MAAMA,CAAe,CACnB,YAAYC,EAAaC,EAASC,EAAoBC,EAAgBC,EAAU,CAC9E,KAAK,YAAcJ,EACnB,KAAK,QAAUC,EACf,KAAK,mBAAqBC,EAC1B,KAAK,eAAiBC,EAEtB,KAAK,iBAAmB,GACxB,KAAK,cAAgB,UACrB,KAAK,OAAS,EACd,KAAK,aAAe,EAMpB,KAAK,aAAe,IAAIE,GACxB,KAAK,MAAQ,cAEb,KAAK,sBAAwBC,GAAS,CAChC,KAAK,aAAa,UAAU,SAAW,GAAK,CAACA,EAAM,QAAU,CAACA,EAAM,OAAO,UAAU,SAAS,kCAAkC,IAGhI,KAAK,OAAS,eAAiB,KAAK,OAAS,WAC/C,KAAK,QAAQ,IAAI,IAAM,KAAK,aAAa,KAAK,CAC5C,MAAO,KAAK,KACd,CAAC,CAAC,CAEN,EACA,KAAK,iBAAmBH,IAAmB,iBACvCC,IACEA,EAAS,QACX,KAAK,MAAQ,KAAK,cAAgBA,EAAS,OAE7C,KAAK,KAAOA,EAAS,MAAQ,KAAK,KAEtC,CAGA,IAAI,OAAQ,CACV,OAAO,KAAK,QAAU,KAAK,aAC7B,CACA,IAAI,MAAMG,EAAO,CACf,KAAK,OAASA,CAChB,CAEA,IAAI,OAAQ,CACV,OAAO,KAAK,MACd,CACA,IAAI,MAAMlB,EAAG,CACX,KAAK,OAASD,GAAMC,GAAK,CAAC,EAC1B,KAAK,mBAAmB,aAAa,CACvC,CAEA,IAAI,aAAc,CAChB,OAAO,KAAK,cAAgB,CAC9B,CACA,IAAI,YAAYA,EAAG,CACjB,KAAK,aAAeD,GAAMC,GAAK,CAAC,EAChC,KAAK,mBAAmB,aAAa,CACvC,CAQA,IAAI,MAAO,CACT,OAAO,KAAK,KACd,CACA,IAAI,KAAKkB,EAAO,CAGd,KAAK,MAAQA,EACb,KAAK,mBAAmB,aAAa,CACvC,CACA,iBAAkB,CAGhB,KAAK,QAAQ,kBAAkB,IAAM,CACnC,KAAK,YAAY,cAAc,iBAAiB,gBAAiB,KAAK,qBAAqB,CAC7F,CAAC,CACH,CACA,aAAc,CACZ,KAAK,YAAY,cAAc,oBAAoB,gBAAiB,KAAK,qBAAqB,CAChG,CAEA,yBAA0B,CACxB,MAAO,UAAU,KAAK,iBAAiB,EAAI,EAAI,KAAK,MAAQ,GAAG,GACjE,CAEA,wBAAyB,CACvB,MAAO,GAAG,KAAK,OAAS,SAAW,KAAK,YAAc,GAAG,GAC3D,CAEA,kBAAmB,CACjB,OAAO,KAAK,OAAS,iBAAmB,KAAK,OAAS,OACxD,CA0DF,EAxDIR,EAAK,UAAO,SAAgCS,EAAG,CAC7C,OAAO,IAAKA,GAAKT,GAAmBU,EAAqBC,EAAU,EAAMD,EAAqBE,EAAM,EAAMF,EAAqBG,EAAiB,EAAMH,EAAkBI,GAAuB,CAAC,EAAMJ,EAAkBjB,GAAkC,CAAC,CAAC,CAC9P,EAGAO,EAAK,UAAyBe,GAAkB,CAC9C,KAAMf,EACN,UAAW,CAAC,CAAC,kBAAkB,CAAC,EAChC,UAAW,CAAC,OAAQ,cAAe,gBAAiB,IAAK,gBAAiB,MAAO,WAAY,KAAM,EAAG,uBAAwB,qBAAqB,EACnJ,SAAU,GACV,aAAc,SAAqCgB,EAAIC,EAAK,CACtDD,EAAK,IACJE,GAAY,gBAAiBD,EAAI,iBAAiB,EAAI,KAAOA,EAAI,KAAK,EAAE,OAAQA,EAAI,IAAI,EACxFE,EAAW,OAASF,EAAI,KAAK,EAC7BG,GAAY,0BAA2BH,EAAI,gBAAgB,EAAE,uCAAwC,CAACA,EAAI,gBAAgB,EAAE,qCAAsCA,EAAI,iBAAiB,CAAC,EAE/L,EACA,OAAQ,CACN,MAAO,QACP,MAAO,CAAII,EAAa,2BAA4B,QAAS,QAASC,EAAe,EACrF,YAAa,CAAID,EAAa,2BAA4B,cAAe,cAAeC,EAAe,EACvG,KAAM,MACR,EACA,QAAS,CACP,aAAc,cAChB,EACA,SAAU,CAAC,gBAAgB,EAC3B,WAAY,GACZ,SAAU,CAAIC,GAA6BC,EAAmB,EAC9D,MAAO,EACP,KAAM,EACN,OAAQ,CAAC,CAAC,cAAe,OAAQ,EAAG,6BAA6B,EAAG,CAAC,EAAG,iCAAiC,EAAG,CAAC,EAAG,kCAAkC,EAAG,CAAC,cAAe,OAAQ,EAAG,2BAA4B,kCAAkC,EAAG,CAAC,EAAG,gCAAgC,EAAG,CAAC,cAAe,OAAQ,EAAG,2BAA4B,oCAAoC,CAAC,EACpX,SAAU,SAAiCR,EAAIC,EAAK,CAC9CD,EAAK,IACJS,EAAe,EAAG,MAAO,CAAC,EAC1BC,GAAU,EAAG,MAAO,CAAC,EAAE,EAAG,MAAO,CAAC,EAClCC,EAAa,EACbF,EAAe,EAAG,MAAO,CAAC,EAC1BC,GAAU,EAAG,OAAQ,CAAC,EACtBC,EAAa,EACbF,EAAe,EAAG,MAAO,CAAC,EAC1BC,GAAU,EAAG,OAAQ,CAAC,EACtBC,EAAa,GAEdX,EAAK,IACJY,EAAU,EACVC,GAAY,aAAcZ,EAAI,uBAAuB,CAAC,EACtDW,EAAU,CAAC,EACXC,GAAY,YAAaZ,EAAI,wBAAwB,CAAC,EAE7D,EACA,OAAQ,CAAC,8kUAAolU,EAC7lU,cAAe,EACf,gBAAiB,CACnB,CAAC,EA1JL,IAAMvB,EAANM,EA6JA,OAAON,CACT,GAAG,EAQCC,IAAqC,IAAM,CAC7C,IAAMmC,EAAN,MAAMA,CAAqB,CAgB3B,EAdIA,EAAK,UAAO,SAAsCrB,EAAG,CACnD,OAAO,IAAKA,GAAKqB,EACnB,EAGAA,EAAK,UAAyBC,GAAiB,CAC7C,KAAMD,CACR,CAAC,EAGDA,EAAK,UAAyBE,GAAiB,CAC7C,QAAS,CAACC,EAAe,CAC3B,CAAC,EAdL,IAAMtC,EAANmC,EAiBA,OAAOnC,CACT,GAAG,IC5LH,SAASuC,GAAmCC,EAAIC,EAAK,CAC/CD,EAAK,IACJE,GAAe,EACfC,EAAe,EAAG,MAAO,CAAC,EAC1BC,GAAU,EAAG,UAAW,CAAC,EACzBC,EAAa,EAEpB,CAEA,SAASC,GAA+BN,EAAIC,EAAK,CAC/C,GAAID,EAAK,EAAG,CACV,IAAMO,EAASC,GAAiB,EAC7BL,EAAe,EAAG,MAAO,CAAC,EAC1BM,GAAW,UAAW,SAA+DC,EAAQ,CAC3FC,GAAcJ,CAAG,EACpB,IAAMK,EAAYC,GAAc,EAChC,OAAUC,GAAYF,EAAO,eAAeF,CAAM,CAAC,CACrD,CAAC,EAAE,QAAS,UAA+D,CACtEC,GAAcJ,CAAG,EACpB,IAAMK,EAAYC,GAAc,EAChC,OAAUC,GAAYF,EAAO,OAAO,KAAK,OAAO,CAAC,CACnD,CAAC,EAAE,uBAAwB,SAAqFF,EAAQ,CACnHC,GAAcJ,CAAG,EACpB,IAAMK,EAAYC,GAAc,EAChC,OAAUC,GAAYF,EAAO,kBAAkBF,CAAM,CAAC,CACxD,CAAC,EAAE,sBAAuB,SAAoFA,EAAQ,CACjHC,GAAcJ,CAAG,EACpB,IAAMK,EAAYC,GAAc,EAChC,OAAUC,GAAYF,EAAO,iBAAiBF,CAAM,CAAC,CACvD,CAAC,EACEP,EAAe,EAAG,MAAO,CAAC,EAC1BY,EAAa,CAAC,EACdV,EAAa,EAAE,CACpB,CACA,GAAIL,EAAK,EAAG,CACV,IAAMY,EAAYC,GAAc,EAC7BG,GAAW,KAAMJ,EAAO,OAAO,EAAE,UAAWA,EAAO,UAAU,EAAE,iBAAkBA,EAAO,oBAAoB,EAC5GK,GAAY,aAAcL,EAAO,WAAa,IAAI,EAAE,kBAAmBA,EAAO,gBAAkB,IAAI,EAAE,mBAAoBA,EAAO,iBAAmB,IAAI,CAC7J,CACF,CAgVA,SAASM,IAAmC,CAC1C,MAAO,CACL,eAAgB,GAChB,UAAW,QACX,UAAW,QACX,cAAe,kCACjB,CACF,CA6XA,SAASC,GAAiCC,EAAS,CACjD,MAAO,IAAMA,EAAQ,iBAAiB,WAAW,CACnD,CArxBA,IAqBMC,GACAC,GACAC,GASAC,GAgCAC,GAKFC,GAkMEC,GAEFC,GAmFEC,GAqCAC,GAMAC,GACFC,GAEEC,GAaFC,GAoXEC,GAYAC,GAMAC,GAUFC,GAmdAC,GA1vCJC,GAAAC,EAAA,KAAAC,IACAA,IACAC,KACAA,KACAC,KACAC,KACAC,IACAC,KACAL,KACAM,KACAC,KACAC,KACAC,KACAA,KACAC,KACAC,KAMMhC,GAAM,CAAC,gBAAiB,EAAE,EAC1BC,GAAM,CAAC,CAAC,CAAC,UAAU,EAAG,CAAC,GAAI,kBAAmB,EAAE,CAAC,EAAG,GAAG,EACvDC,GAAM,CAAC,8BAA+B,GAAG,EASzCC,GAAM,CAAC,GAAG,EAgCVC,GAA8B,IAAI6B,GAAe,gBAAgB,EAKnE5B,IAA4B,IAAM,CACpC,IAAM6B,EAAN,MAAMA,CAAY,CAChB,YAAYC,EAAaC,EAAWC,EAAeC,EAAaC,EAAoB,CAClF,KAAK,YAAcJ,EACnB,KAAK,UAAYC,EACjB,KAAK,cAAgBC,EACrB,KAAK,YAAcC,EACnB,KAAK,mBAAqBC,EAE1B,KAAK,KAAO,WAEZ,KAAK,SAAW,GAEhB,KAAK,cAAgB,GAErB,KAAK,SAAW,IAAIC,GAEpB,KAAK,SAAW,IAAIA,GAEpB,KAAK,aAAe,GAEpB,KAAK,iBAAmB,GACxBF,GAAa,UAAU,IAAI,CAC7B,CAEA,MAAMG,EAAQC,EAAS,CACjB,KAAK,eAAiBD,EACxB,KAAK,cAAc,SAAS,KAAK,gBAAgB,EAAGA,EAAQC,CAAO,EAEnE,KAAK,gBAAgB,EAAE,MAAMA,CAAO,EAEtC,KAAK,SAAS,KAAK,IAAI,CACzB,CACA,iBAAkB,CACZ,KAAK,eAIP,KAAK,cAAc,QAAQ,KAAK,YAAa,EAAK,CAEtD,CACA,aAAc,CACR,KAAK,eACP,KAAK,cAAc,eAAe,KAAK,WAAW,EAEhD,KAAK,aAAe,KAAK,YAAY,YACvC,KAAK,YAAY,WAAW,IAAI,EAElC,KAAK,SAAS,SAAS,EACvB,KAAK,SAAS,SAAS,CACzB,CAEA,cAAe,CACb,OAAO,KAAK,SAAW,KAAO,GAChC,CAEA,iBAAkB,CAChB,OAAO,KAAK,YAAY,aAC1B,CAEA,eAAeC,EAAO,CAChB,KAAK,WACPA,EAAM,eAAe,EACrBA,EAAM,gBAAgB,EAE1B,CAEA,mBAAoB,CAClB,KAAK,SAAS,KAAK,IAAI,CACzB,CAEA,UAAW,CACT,IAAMC,EAAQ,KAAK,YAAY,cAAc,UAAU,EAAI,EACrDC,EAAQD,EAAM,iBAAiB,2BAA2B,EAEhE,QAASE,EAAI,EAAGA,EAAID,EAAM,OAAQC,IAChCD,EAAMC,CAAC,EAAE,OAAO,EAElB,OAAOF,EAAM,aAAa,KAAK,GAAK,EACtC,CACA,gBAAgBG,EAAe,CAK7B,KAAK,aAAeA,EACpB,KAAK,oBAAoB,aAAa,CACxC,CACA,oBAAoBC,EAAiB,CAEnC,KAAK,iBAAmBA,EACxB,KAAK,oBAAoB,aAAa,CACxC,CACA,WAAY,CACV,OAAO,KAAK,WAAa,KAAK,UAAU,gBAAkB,KAAK,gBAAgB,CACjF,CA4DF,EA1DId,EAAK,UAAO,SAA6Be,EAAG,CAC1C,OAAO,IAAKA,GAAKf,GAAgBgB,EAAqBC,EAAU,EAAMD,EAAkBE,EAAQ,EAAMF,EAAqBG,EAAY,EAAMH,EAAkB9C,GAAgB,CAAC,EAAM8C,EAAqBI,EAAiB,CAAC,CAC/N,EAGApB,EAAK,UAAyBqB,GAAkB,CAC9C,KAAMrB,EACN,UAAW,CAAC,CAAC,GAAI,gBAAiB,EAAE,CAAC,EACrC,UAAW,CAAC,EAAG,oBAAqB,yBAAyB,EAC7D,SAAU,EACV,aAAc,SAAkCvD,EAAIC,EAAK,CACnDD,EAAK,GACJS,GAAW,QAAS,SAA8CC,EAAQ,CAC3E,OAAOT,EAAI,eAAeS,CAAM,CAClC,CAAC,EAAE,aAAc,UAAqD,CACpE,OAAOT,EAAI,kBAAkB,CAC/B,CAAC,EAECD,EAAK,IACJiB,GAAY,OAAQhB,EAAI,IAAI,EAAE,WAAYA,EAAI,aAAa,CAAC,EAAE,gBAAiBA,EAAI,QAAQ,EAAE,WAAYA,EAAI,UAAY,IAAI,EAC7H4E,GAAY,gCAAiC5E,EAAI,YAAY,EAAE,oCAAqCA,EAAI,gBAAgB,EAE/H,EACA,OAAQ,CACN,KAAM,OACN,SAAU,CAAI6E,EAAa,2BAA4B,WAAY,WAAYC,EAAgB,EAC/F,cAAe,CAAID,EAAa,2BAA4B,gBAAiB,gBAAiBC,EAAgB,CAChH,EACA,SAAU,CAAC,aAAa,EACxB,WAAY,GACZ,SAAU,CAAIC,GAA6BC,EAAmB,EAC9D,MAAO5D,GACP,mBAAoBE,GACpB,MAAO,EACP,KAAM,EACN,OAAQ,CAAC,CAAC,EAAG,wBAAwB,EAAG,CAAC,YAAa,GAAI,EAAG,sBAAuB,EAAG,oBAAqB,kBAAkB,EAAG,CAAC,UAAW,WAAY,YAAa,QAAS,cAAe,OAAQ,EAAG,2BAA2B,EAAG,CAAC,SAAU,cAAc,CAAC,EACjQ,SAAU,SAA8BvB,EAAIC,EAAK,CAC3CD,EAAK,IACJkF,GAAgB5D,EAAG,EACnBP,EAAa,CAAC,EACdZ,EAAe,EAAG,OAAQ,CAAC,EAC3BY,EAAa,EAAG,CAAC,EACjBV,EAAa,EACbD,GAAU,EAAG,MAAO,CAAC,EACrB+E,GAAW,EAAGpF,GAAoC,EAAG,EAAG,WAAY,CAAC,GAEtEC,EAAK,IACJoF,EAAU,CAAC,EACXpE,GAAW,oBAAqBf,EAAI,eAAiBA,EAAI,QAAQ,EAAE,mBAAoBA,EAAI,gBAAgB,CAAC,EAC5GmF,EAAU,EACVC,GAAc,EAAGpF,EAAI,iBAAmB,EAAI,EAAE,EAErD,EACA,aAAc,CAACqF,EAAS,EACxB,cAAe,EACf,gBAAiB,CACnB,CAAC,EAxJL,IAAM5D,EAAN6B,EA2JA,OAAO7B,CACT,GAAG,EAqCGC,GAAgC,IAAI2B,GAAe,gBAAgB,EAErE1B,IAA+B,IAAM,CACvC,IAAM2D,EAAN,MAAMA,CAAe,CACnB,YAAYC,EAAWC,EAA2BC,EAASC,EAAWC,EAAmBnC,EAAWG,EAAoB,CACtH,KAAK,UAAY4B,EACjB,KAAK,0BAA4BC,EACjC,KAAK,QAAUC,EACf,KAAK,UAAYC,EACjB,KAAK,kBAAoBC,EACzB,KAAK,UAAYnC,EACjB,KAAK,mBAAqBG,EAE1B,KAAK,UAAY,IAAIC,EACvB,CAKA,OAAOgC,EAAU,CAAC,EAAG,CACd,KAAK,UACR,KAAK,QAAU,IAAIC,GAAe,KAAK,UAAW,KAAK,iBAAiB,GAE1E,KAAK,OAAO,EACP,KAAK,UACR,KAAK,QAAU,IAAIC,GAAgB,KAAK,UAAU,cAAc,KAAK,EAAG,KAAK,0BAA2B,KAAK,QAAS,KAAK,SAAS,GAEtI,IAAMC,EAAU,KAAK,UAAU,WAAW,cAI1CA,EAAQ,WAAW,aAAa,KAAK,QAAQ,cAAeA,CAAO,EAOnE,KAAK,oBAAoB,aAAa,EACtC,KAAK,QAAQ,OAAO,KAAK,QAASH,CAAO,EACzC,KAAK,UAAU,KAAK,CACtB,CAKA,QAAS,CACH,KAAK,QAAQ,YACf,KAAK,QAAQ,OAAO,CAExB,CACA,aAAc,CACR,KAAK,SACP,KAAK,QAAQ,QAAQ,CAEzB,CAiBF,EAfIN,EAAK,UAAO,SAAgCjB,EAAG,CAC7C,OAAO,IAAKA,GAAKiB,GAAmBhB,EAAqB0B,EAAW,EAAM1B,EAAqB2B,EAAwB,EAAM3B,EAAqB4B,EAAc,EAAM5B,EAAqB6B,EAAQ,EAAM7B,EAAqB8B,EAAgB,EAAM9B,EAAkBE,EAAQ,EAAMF,EAAqBI,EAAiB,CAAC,CAC7T,EAGAY,EAAK,UAAyBe,EAAkB,CAC9C,KAAMf,EACN,UAAW,CAAC,CAAC,cAAe,iBAAkB,EAAE,CAAC,EACjD,WAAY,GACZ,SAAU,CAAIgB,GAAmB,CAAC,CAChC,QAAS5E,GACT,YAAa4D,CACf,CAAC,CAAC,CAAC,CACL,CAAC,EAnEL,IAAM3D,EAAN2D,EAsEA,OAAO3D,CACT,GAAG,EAWGC,GAAoB,CASxB,cAA4B2E,GAAQ,gBAAiB,CAAcC,GAAM,OAAqBC,GAAM,CAClG,QAAS,EACT,UAAW,YACb,CAAC,CAAC,EAAgBC,GAAW,gBAA8BC,GAAQ,mCAAiDF,GAAM,CACxH,QAAS,EACT,UAAW,UACb,CAAC,CAAC,CAAC,EAAgBC,GAAW,YAA0BC,GAAQ,oBAAkCF,GAAM,CACtG,QAAS,CACX,CAAC,CAAC,CAAC,CAAC,CAAC,EAKL,YAA0BF,GAAQ,cAAe,CAIjDC,GAAM,UAAwBC,GAAM,CAClC,QAAS,CACX,CAAC,CAAC,EAAgBC,GAAW,YAAa,CAAcD,GAAM,CAC5D,QAAS,CACX,CAAC,EAAgBE,GAAQ,8CAA8C,CAAC,CAAC,CAAC,CAAC,CAC7E,EAMM9E,GAAcD,GAAkB,YAMhCE,GAAgBF,GAAkB,cACpCG,GAAe,EAEbC,GAAwC,IAAIqB,GAAe,2BAA4B,CAC3F,WAAY,OACZ,QAASpC,EACX,CAAC,EAUGgB,IAAwB,IAAM,CAChC,IAAM2E,EAAN,MAAMA,CAAQ,CAEZ,IAAI,WAAY,CACd,OAAO,KAAK,UACd,CACA,IAAI,UAAUC,EAAO,CAInB,KAAK,WAAaA,EAClB,KAAK,mBAAmB,CAC1B,CAEA,IAAI,WAAY,CACd,OAAO,KAAK,UACd,CACA,IAAI,UAAUA,EAAO,CAInB,KAAK,WAAaA,EAClB,KAAK,mBAAmB,CAC1B,CAOA,IAAI,WAAWC,EAAS,CACtB,IAAMC,EAAqB,KAAK,oBAC5BA,GAAsBA,EAAmB,QAC3CA,EAAmB,MAAM,GAAG,EAAE,QAAQC,GAAa,CACjD,KAAK,WAAWA,CAAS,EAAI,EAC/B,CAAC,EAEH,KAAK,oBAAsBF,EACvBA,GAAWA,EAAQ,SACrBA,EAAQ,MAAM,GAAG,EAAE,QAAQE,GAAa,CACtC,KAAK,WAAWA,CAAS,EAAI,EAC/B,CAAC,EACD,KAAK,YAAY,cAAc,UAAY,GAE/C,CAQA,IAAI,WAAY,CACd,OAAO,KAAK,UACd,CACA,IAAI,UAAUF,EAAS,CACrB,KAAK,WAAaA,CACpB,CACA,YAAYvD,EAAa0D,EAASC,EAElCvD,EAAoB,CAClB,KAAK,YAAcJ,EACnB,KAAK,QAAU0D,EACf,KAAK,mBAAqBtD,EAC1B,KAAK,iBAAmB,kBACxB,KAAK,eAAiB,EAEtB,KAAK,uBAAyB,IAAIwD,GAElC,KAAK,WAAa,CAAC,EAEnB,KAAK,qBAAuB,OAE5B,KAAK,eAAiB,IAAIvD,GAE1B,KAAK,OAAS,IAAIwD,GAMlB,KAAK,MAAQ,KAAK,OAClB,KAAK,QAAU,kBAAkBrF,IAAc,GAC/C,KAAK,kBAAoBmF,EAAe,mBAAqB,GAC7D,KAAK,WAAaA,EAAe,UACjC,KAAK,WAAaA,EAAe,UACjC,KAAK,cAAgBA,EAAe,cACpC,KAAK,eAAiBA,EAAe,eACrC,KAAK,YAAcA,EAAe,WACpC,CACA,UAAW,CACT,KAAK,mBAAmB,CAC1B,CACA,oBAAqB,CACnB,KAAK,yBAAyB,EAC9B,KAAK,YAAc,IAAIG,GAAgB,KAAK,sBAAsB,EAAE,SAAS,EAAE,cAAc,EAAE,eAAe,EAC9G,KAAK,YAAY,OAAO,UAAU,IAAM,KAAK,OAAO,KAAK,KAAK,CAAC,EAI/D,KAAK,uBAAuB,QAAQ,KAAKC,GAAU,KAAK,sBAAsB,EAAGC,GAAUC,GAASC,GAAM,GAAGD,EAAM,IAAIE,GAAQA,EAAK,QAAQ,CAAC,CAAC,CAAC,EAAE,UAAUC,GAAe,KAAK,YAAY,iBAAiBA,CAAW,CAAC,EACxN,KAAK,uBAAuB,QAAQ,UAAUC,GAAa,CAIzD,IAAMC,EAAU,KAAK,YACrB,GAAI,KAAK,uBAAyB,SAAWA,EAAQ,YAAY,UAAU,EAAG,CAC5E,IAAML,EAAQI,EAAU,QAAQ,EAC1BE,EAAQ,KAAK,IAAI,EAAG,KAAK,IAAIN,EAAM,OAAS,EAAGK,EAAQ,iBAAmB,CAAC,CAAC,EAC9EL,EAAMM,CAAK,GAAK,CAACN,EAAMM,CAAK,EAAE,SAChCD,EAAQ,cAAcC,CAAK,EAE3BD,EAAQ,kBAAkB,CAE9B,CACF,CAAC,CACH,CACA,aAAc,CACZ,KAAK,aAAa,QAAQ,EAC1B,KAAK,uBAAuB,QAAQ,EACpC,KAAK,OAAO,SAAS,EACrB,KAAK,6BAA6B,YAAY,CAChD,CAEA,UAAW,CAGT,OADoB,KAAK,uBAAuB,QAC7B,KAAKP,GAAU,KAAK,sBAAsB,EAAGC,GAAUC,GAASC,GAAM,GAAGD,EAAM,IAAIE,GAAQA,EAAK,QAAQ,CAAC,CAAC,CAAC,CAChI,CAOA,QAAQK,EAAO,CAAC,CAOhB,WAAWA,EAAO,CAAC,CAEnB,eAAehE,EAAO,CACpB,IAAMiE,EAAUjE,EAAM,QAChB8D,EAAU,KAAK,YACrB,OAAQG,EAAS,CACf,IAAK,IACEC,GAAelE,CAAK,IACvBA,EAAM,eAAe,EACrB,KAAK,OAAO,KAAK,SAAS,GAE5B,MACF,IAAK,IACC,KAAK,YAAc,KAAK,YAAc,OACxC,KAAK,OAAO,KAAK,SAAS,EAE5B,MACF,IAAK,IACC,KAAK,YAAc,KAAK,YAAc,OACxC,KAAK,OAAO,KAAK,SAAS,EAE5B,MACF,SACMiE,IAAY,IAAYA,IAAY,KACtCH,EAAQ,eAAe,UAAU,EAEnCA,EAAQ,UAAU9D,CAAK,EACvB,MACJ,CAGAA,EAAM,gBAAgB,CACxB,CAKA,eAAeF,EAAS,UAAW,CAEjC,KAAK,6BAA6B,YAAY,EAC9C,KAAK,4BAA8B,KAAK,QAAQ,SAAS,KAAKqE,GAAK,CAAC,CAAC,EAAE,UAAU,IAAM,CACrF,IAAIC,EAAY,KAShB,GARI,KAAK,uBAAuB,SAK9BA,EAAY,KAAK,uBAAuB,MAAM,gBAAgB,EAAE,QAAQ,eAAe,GAGrF,CAACA,GAAa,CAACA,EAAU,SAAS,SAAS,aAAa,EAAG,CAC7D,IAAMN,EAAU,KAAK,YACrBA,EAAQ,eAAehE,CAAM,EAAE,mBAAmB,EAI9C,CAACgE,EAAQ,YAAcM,GACzBA,EAAU,MAAM,CAEpB,CACF,CAAC,CACH,CAKA,iBAAkB,CAChB,KAAK,YAAY,cAAc,EAAE,CACnC,CAKA,aAAaC,EAAO,CAGlB,IAAMC,EAAY,KAAK,IAAI,KAAK,eAAiBD,EAAO,EAAE,EACpDE,EAAe,GAAG,KAAK,gBAAgB,GAAGD,CAAS,GACnDE,EAAkB,OAAO,KAAK,KAAK,UAAU,EAAE,KAAKvB,GACjDA,EAAU,WAAW,KAAK,gBAAgB,CAClD,GACG,CAACuB,GAAmBA,IAAoB,KAAK,sBAC3C,KAAK,qBACP,KAAK,WAAW,KAAK,kBAAkB,EAAI,IAE7C,KAAK,WAAWD,CAAY,EAAI,GAChC,KAAK,mBAAqBA,EAE9B,CAQA,mBAAmBE,EAAO,KAAK,UAAWC,EAAO,KAAK,UAAW,CAC/D,IAAM3B,EAAU,KAAK,WACrBA,EAAQ,iBAAiB,EAAI0B,IAAS,SACtC1B,EAAQ,gBAAgB,EAAI0B,IAAS,QACrC1B,EAAQ,gBAAgB,EAAI2B,IAAS,QACrC3B,EAAQ,gBAAgB,EAAI2B,IAAS,QAErC,KAAK,oBAAoB,aAAa,CACxC,CAEA,iBAAkB,CAEhB,KAAK,qBAAuB,OAC9B,CAEA,iBAAkB,CAEhB,KAAK,qBAAuB,MAC9B,CAEA,iBAAiB1E,EAAO,CACtB,KAAK,eAAe,KAAKA,CAAK,EAC9B,KAAK,aAAe,EACtB,CACA,kBAAkBA,EAAO,CACvB,KAAK,aAAe,GAOhBA,EAAM,UAAY,SAAW,KAAK,YAAY,kBAAoB,IACpEA,EAAM,QAAQ,UAAY,EAE9B,CAOA,0BAA2B,CACzB,KAAK,UAAU,QAAQ,KAAKuD,GAAU,KAAK,SAAS,CAAC,EAAE,UAAUE,GAAS,CACxE,KAAK,uBAAuB,MAAMA,EAAM,OAAOE,GAAQA,EAAK,cAAgB,IAAI,CAAC,EACjF,KAAK,uBAAuB,gBAAgB,CAC9C,CAAC,CACH,CA+EF,EA7EId,EAAK,UAAO,SAAyBvC,EAAG,CACtC,OAAO,IAAKA,GAAKuC,GAAYtC,EAAqBC,EAAU,EAAMD,EAAqBoE,EAAM,EAAMpE,EAAkBtC,EAAwB,EAAMsC,EAAqBI,EAAiB,CAAC,CAC5L,EAGAkC,EAAK,UAAyBjC,GAAkB,CAC9C,KAAMiC,EACN,UAAW,CAAC,CAAC,UAAU,CAAC,EACxB,eAAgB,SAAgC7G,EAAIC,EAAK2I,EAAU,CAMjE,GALI5I,EAAK,IACJ6I,GAAeD,EAAUjH,GAAkB,CAAC,EAC5CkH,GAAeD,EAAUlH,GAAa,CAAC,EACvCmH,GAAeD,EAAUlH,GAAa,CAAC,GAExC1B,EAAK,EAAG,CACV,IAAI8I,EACDC,GAAeD,EAAQE,GAAY,CAAC,IAAM/I,EAAI,YAAc6I,EAAG,OAC/DC,GAAeD,EAAQE,GAAY,CAAC,IAAM/I,EAAI,UAAY6I,GAC1DC,GAAeD,EAAQE,GAAY,CAAC,IAAM/I,EAAI,MAAQ6I,EAC3D,CACF,EACA,UAAW,SAAuB9I,EAAIC,EAAK,CAIzC,GAHID,EAAK,GACJiJ,GAAYhD,GAAa,CAAC,EAE3BjG,EAAK,EAAG,CACV,IAAI8I,EACDC,GAAeD,EAAQE,GAAY,CAAC,IAAM/I,EAAI,YAAc6I,EAAG,MACpE,CACF,EACA,SAAU,EACV,aAAc,SAA8B9I,EAAIC,EAAK,CAC/CD,EAAK,GACJiB,GAAY,aAAc,IAAI,EAAE,kBAAmB,IAAI,EAAE,mBAAoB,IAAI,CAExF,EACA,OAAQ,CACN,cAAe,gBACf,UAAW,CAAI6D,EAAa,KAAM,aAAc,WAAW,EAC3D,eAAgB,CAAIA,EAAa,KAAM,kBAAmB,gBAAgB,EAC1E,gBAAiB,CAAIA,EAAa,KAAM,mBAAoB,iBAAiB,EAC7E,UAAW,YACX,UAAW,YACX,eAAgB,CAAIA,EAAa,2BAA4B,iBAAkB,iBAAkBC,EAAgB,EACjH,YAAa,CAAID,EAAa,2BAA4B,cAAe,cAAegC,GAASA,GAAS,KAAO,KAAO/B,GAAiB+B,CAAK,CAAC,EAC/I,WAAY,CAAIhC,EAAa,KAAM,QAAS,YAAY,EACxD,UAAW,WACb,EACA,QAAS,CACP,OAAQ,SACR,MAAO,OACT,EACA,SAAU,CAAC,SAAS,EACpB,WAAY,GACZ,SAAU,CAAIyB,GAAmB,CAAC,CAChC,QAAS9E,GACT,YAAaoF,CACf,CAAC,CAAC,EAAM7B,GAA6BC,EAAmB,EACxD,mBAAoBzD,GACpB,MAAO,EACP,KAAM,EACN,OAAQ,CAAC,CAAC,WAAY,KAAM,OAAQ,OAAQ,EAAG,qBAAsB,6BAA8B,EAAG,UAAW,QAAS,KAAM,SAAS,EAAG,CAAC,EAAG,sBAAsB,CAAC,EACvK,SAAU,SAA0BxB,EAAIC,EAAK,CACvCD,EAAK,IACJkF,GAAgB,EAChBC,GAAW,EAAG7E,GAAgC,EAAG,EAAG,aAAa,EAExE,EACA,aAAc,CAAC4I,EAAO,EACtB,OAAQ,CAAC,kwHAAowH,EAC7wH,cAAe,EACf,KAAM,CACJ,UAAW,CAACrH,GAAkB,cAAeA,GAAkB,WAAW,CAC5E,EACA,gBAAiB,CACnB,CAAC,EAzWL,IAAMK,EAAN2E,EA4WA,OAAO3E,CACT,GAAG,EAMGC,GAAwC,IAAImB,GAAe,2BAA4B,CAC3F,WAAY,OACZ,QAAS,IAAM,CACb,IAAMlC,EAAU+H,GAAOC,EAAO,EAC9B,MAAO,IAAMhI,EAAQ,iBAAiB,WAAW,CACnD,CACF,CAAC,EAMKgB,GAA4C,CAChD,QAASD,GACT,KAAM,CAACiH,EAAO,EACd,WAAYjI,EACd,EAEMkB,GAA2CgH,GAAgC,CAC/E,QAAS,EACX,CAAC,EAQG/G,IAA+B,IAAM,CACvC,IAAMgH,EAAN,MAAMA,CAAe,CAKnB,IAAI,8BAA+B,CACjC,OAAO,KAAK,IACd,CACA,IAAI,6BAA6BC,EAAG,CAClC,KAAK,KAAOA,CACd,CAEA,IAAI,MAAO,CACT,OAAO,KAAK,KACd,CACA,IAAI,KAAKC,EAAM,CACTA,IAAS,KAAK,QAGlB,KAAK,MAAQA,EACb,KAAK,uBAAuB,YAAY,EACpCA,IACW,KAAK,oBAGlB,KAAK,uBAAyBA,EAAK,MAAM,UAAUC,GAAU,CAC3D,KAAK,aAAaA,CAAM,GAEnBA,IAAW,SAAWA,IAAW,QAAU,KAAK,qBACnD,KAAK,oBAAoB,OAAO,KAAKA,CAAM,CAE/C,CAAC,GAEH,KAAK,mBAAmB,oBAAoB,KAAK,gBAAgB,CAAC,EACpE,CACA,YAAYC,EAAUC,EAAU/D,EAAmBgE,EAAgBC,EAGnEC,EAAmBC,EAAMrG,EAAewD,EAAS,CAC/C,KAAK,SAAWwC,EAChB,KAAK,SAAWC,EAChB,KAAK,kBAAoB/D,EACzB,KAAK,kBAAoBkE,EACzB,KAAK,KAAOC,EACZ,KAAK,cAAgBrG,EACrB,KAAK,QAAUwD,EACf,KAAK,YAAc,KACnB,KAAK,UAAY,GACjB,KAAK,4BAA8B8C,GAAa,MAChD,KAAK,mBAAqBA,GAAa,MACvC,KAAK,uBAAyBA,GAAa,MAC3C,KAAK,mBAAqBb,GAAOxE,EAAiB,EAKlD,KAAK,kBAAoBX,GAAS,CAC3BiG,GAAiCjG,CAAK,IACzC,KAAK,UAAY,QAErB,EAGA,KAAK,UAAY,OAMjB,KAAK,aAAe,GAEpB,KAAK,WAAa,IAAIqD,GAOtB,KAAK,WAAa,KAAK,WAEvB,KAAK,WAAa,IAAIA,GAOtB,KAAK,YAAc,KAAK,WACxB,KAAK,gBAAkBuC,EACvB,KAAK,oBAAsBC,aAAsB3H,GAAU2H,EAAa,OACxEF,EAAS,cAAc,iBAAiB,aAAc,KAAK,kBAAmBtH,EAA2B,CAC3G,CACA,oBAAqB,CACnB,KAAK,aAAa,CACpB,CACA,aAAc,CACR,KAAK,cACP,KAAK,YAAY,QAAQ,EACzB,KAAK,YAAc,MAErB,KAAK,SAAS,cAAc,oBAAoB,aAAc,KAAK,kBAAmBA,EAA2B,EACjH,KAAK,uBAAuB,YAAY,EACxC,KAAK,4BAA4B,YAAY,EAC7C,KAAK,mBAAmB,YAAY,CACtC,CAEA,IAAI,UAAW,CACb,OAAO,KAAK,SACd,CAEA,IAAI,KAAM,CACR,OAAO,KAAK,MAAQ,KAAK,KAAK,QAAU,MAAQ,MAAQ,KAC1D,CAEA,iBAAkB,CAChB,MAAO,CAAC,EAAE,KAAK,mBAAqB,KAAK,qBAAuB,KAAK,KACvE,CAEA,YAAa,CACX,OAAO,KAAK,UAAY,KAAK,UAAU,EAAI,KAAK,SAAS,CAC3D,CAEA,UAAW,CACT,IAAMmH,EAAO,KAAK,KAClB,GAAI,KAAK,WAAa,CAACA,EACrB,OAEF,IAAMU,EAAa,KAAK,eAAeV,CAAI,EACrCW,EAAgBD,EAAW,UAAU,EACrCE,EAAmBD,EAAc,iBACvC,KAAK,aAAaX,EAAMY,CAAgB,EACxCD,EAAc,YAAcX,EAAK,aAAe,KAAO,CAAC,KAAK,gBAAgB,EAAIA,EAAK,YACtFU,EAAW,OAAO,KAAK,WAAWV,CAAI,CAAC,EACnCA,EAAK,aACPA,EAAK,YAAY,OAAO,KAAK,QAAQ,EAEvC,KAAK,4BAA8B,KAAK,oBAAoB,EAAE,UAAU,IAAM,KAAK,UAAU,CAAC,EAC9F,KAAK,UAAUA,CAAI,EACfA,aAAgBtH,KAClBsH,EAAK,gBAAgB,EACrBA,EAAK,uBAAuB,QAAQ,KAAKa,GAAUb,EAAK,KAAK,CAAC,EAAE,UAAU,IAAM,CAG9EY,EAAiB,mBAAmB,EAAK,EAAE,oBAAoB,EAC/DA,EAAiB,mBAAmB,EAAI,CAC1C,CAAC,EAEL,CAEA,WAAY,CACV,KAAK,MAAM,MAAM,KAAK,CACxB,CAKA,MAAMtG,EAAQC,EAAS,CACjB,KAAK,eAAiBD,EACxB,KAAK,cAAc,SAAS,KAAK,SAAUA,EAAQC,CAAO,EAE1D,KAAK,SAAS,cAAc,MAAMA,CAAO,CAE7C,CAIA,gBAAiB,CACf,KAAK,aAAa,eAAe,CACnC,CAEA,aAAa0F,EAAQ,CACnB,GAAI,CAAC,KAAK,aAAe,CAAC,KAAK,SAC7B,OAEF,IAAMD,EAAO,KAAK,KAClB,KAAK,4BAA4B,YAAY,EAC7C,KAAK,YAAY,OAAO,EAKpB,KAAK,eAAiBC,IAAW,WAAa,CAAC,KAAK,WAAa,CAAC,KAAK,gBAAgB,IACzF,KAAK,MAAM,KAAK,SAAS,EAE3B,KAAK,UAAY,OACbD,aAAgBtH,IAClBsH,EAAK,gBAAgB,EACjBA,EAAK,YAEPA,EAAK,eAAe,KAAKc,GAAOtG,GAASA,EAAM,UAAY,MAAM,EAAGmE,GAAK,CAAC,EAE1EkC,GAAUb,EAAK,YAAY,SAAS,CAAC,EAAE,UAAU,CAC/C,KAAM,IAAMA,EAAK,YAAY,OAAO,EAEpC,SAAU,IAAM,KAAK,eAAe,EAAK,CAC3C,CAAC,EAED,KAAK,eAAe,EAAK,IAG3B,KAAK,eAAe,EAAK,EACzBA,GAAM,aAAa,OAAO,EAE9B,CAKA,UAAUA,EAAM,CACdA,EAAK,WAAa,KAAK,gBAAgB,EAAI,KAAK,oBAAsB,OACtEA,EAAK,UAAY,KAAK,IACtB,KAAK,kBAAkBA,CAAI,EAC3BA,EAAK,eAAe,KAAK,WAAa,SAAS,EAC/C,KAAK,eAAe,EAAI,CAC1B,CAEA,kBAAkBA,EAAM,CACtB,GAAIA,EAAK,aAAc,CACrB,IAAInB,EAAQ,EACRwB,EAAaL,EAAK,WACtB,KAAOK,GACLxB,IACAwB,EAAaA,EAAW,WAE1BL,EAAK,aAAanB,CAAK,CACzB,CACF,CAEA,eAAekC,EAAQ,CACjBA,IAAW,KAAK,YAClB,KAAK,UAAYA,EACjB,KAAK,UAAY,KAAK,WAAW,KAAK,EAAI,KAAK,WAAW,KAAK,EAC3D,KAAK,gBAAgB,GACvB,KAAK,kBAAkB,gBAAgBA,CAAM,EAE/C,KAAK,mBAAmB,aAAa,EAEzC,CAKA,eAAef,EAAM,CACnB,GAAI,CAAC,KAAK,YAAa,CACrB,IAAMgB,EAAS,KAAK,kBAAkBhB,CAAI,EAC1C,KAAK,sBAAsBA,EAAMgB,EAAO,gBAAgB,EACxD,KAAK,YAAc,KAAK,SAAS,OAAOA,CAAM,EAI9C,KAAK,YAAY,cAAc,EAAE,UAAU,CAC7C,CACA,OAAO,KAAK,WACd,CAKA,kBAAkBhB,EAAM,CACtB,OAAO,IAAIiB,GAAc,CACvB,iBAAkB,KAAK,SAAS,SAAS,EAAE,oBAAoB,KAAK,QAAQ,EAAE,mBAAmB,EAAE,kBAAkB,EAAE,sBAAsB,sCAAsC,EACnL,cAAejB,EAAK,eAAiB,mCACrC,WAAYA,EAAK,kBACjB,eAAgB,KAAK,gBAAgB,EACrC,UAAW,KAAK,IAClB,CAAC,CACH,CAMA,sBAAsBA,EAAMkB,EAAU,CAChClB,EAAK,oBACPkB,EAAS,gBAAgB,UAAUC,GAAU,CAC3C,IAAMlC,EAAOkC,EAAO,eAAe,WAAa,QAAU,QAAU,SAC9DjC,EAAOiC,EAAO,eAAe,WAAa,MAAQ,QAAU,QAI9D,KAAK,QACP,KAAK,QAAQ,IAAI,IAAMnB,EAAK,mBAAmBf,EAAMC,CAAI,CAAC,EAE1Dc,EAAK,mBAAmBf,EAAMC,CAAI,CAEtC,CAAC,CAEL,CAMA,aAAac,EAAMY,EAAkB,CACnC,GAAI,CAACQ,EAASC,CAAe,EAAIrB,EAAK,YAAc,SAAW,CAAC,MAAO,OAAO,EAAI,CAAC,QAAS,KAAK,EAC7F,CAACsB,EAAUC,CAAgB,EAAIvB,EAAK,YAAc,QAAU,CAAC,SAAU,KAAK,EAAI,CAAC,MAAO,QAAQ,EAChG,CAACwB,EAASC,CAAe,EAAI,CAACH,EAAUC,CAAgB,EACxD,CAACG,EAAUC,CAAgB,EAAI,CAACP,EAASC,CAAe,EACxDO,EAAU,EACd,GAAI,KAAK,gBAAgB,GAKvB,GAFAD,EAAmBP,EAAUpB,EAAK,YAAc,SAAW,QAAU,MACrEqB,EAAkBK,EAAWN,IAAY,MAAQ,QAAU,MACvD,KAAK,oBAAqB,CAC5B,GAAI,KAAK,qBAAuB,KAAM,CACpC,IAAMS,GAAY,KAAK,oBAAoB,MAAM,MACjD,KAAK,oBAAsBA,GAAYA,GAAU,gBAAgB,EAAE,UAAY,CACjF,CACAD,EAAUN,IAAa,SAAW,KAAK,oBAAsB,CAAC,KAAK,mBACrE,OACUtB,EAAK,iBACfwB,EAAUF,IAAa,MAAQ,SAAW,MAC1CG,EAAkBF,IAAqB,MAAQ,SAAW,OAE5DX,EAAiB,cAAc,CAAC,CAC9B,QAAAQ,EACA,QAAAI,EACA,SAAAE,EACA,SAAAJ,EACA,QAAAM,CACF,EAAG,CACD,QAASP,EACT,QAAAG,EACA,SAAUG,EACV,SAAAL,EACA,QAAAM,CACF,EAAG,CACD,QAAAR,EACA,QAASK,EACT,SAAAC,EACA,SAAUH,EACV,QAAS,CAACK,CACZ,EAAG,CACD,QAASP,EACT,QAASI,EACT,SAAUE,EACV,SAAUJ,EACV,QAAS,CAACK,CACZ,CAAC,CAAC,CACJ,CAEA,qBAAsB,CACpB,IAAME,EAAW,KAAK,YAAY,cAAc,EAC1CC,EAAc,KAAK,YAAY,YAAY,EAC3CC,EAAc,KAAK,oBAAsB,KAAK,oBAAoB,OAASC,EAAG,EAC9EC,EAAQ,KAAK,oBAAsB,KAAK,oBAAoB,SAAS,EAAE,KAAKpB,GAAOqB,GAAUA,IAAW,KAAK,iBAAiB,EAAGrB,GAAO,IAAM,KAAK,SAAS,CAAC,EAAImB,EAAG,EAC1K,OAAO/D,GAAM4D,EAAUE,EAAaE,EAAOH,CAAW,CACxD,CAEA,iBAAiBvH,EAAO,CACjB4H,GAAgC5H,CAAK,IAGxC,KAAK,UAAYA,EAAM,SAAW,EAAI,QAAU,OAI5C,KAAK,gBAAgB,GACvBA,EAAM,eAAe,EAG3B,CAEA,eAAeA,EAAO,CACpB,IAAMiE,EAAUjE,EAAM,SAElBiE,IAAY,IAASA,IAAY,MACnC,KAAK,UAAY,YAEf,KAAK,gBAAgB,IAAMA,IAAY,IAAe,KAAK,MAAQ,OAASA,IAAY,IAAc,KAAK,MAAQ,SACrH,KAAK,UAAY,WACjB,KAAK,SAAS,EAElB,CAEA,aAAajE,EAAO,CACd,KAAK,gBAAgB,GAEvBA,EAAM,gBAAgB,EACtB,KAAK,SAAS,GAEd,KAAK,WAAW,CAEpB,CAEA,cAAe,CAET,CAAC,KAAK,gBAAgB,GAAK,CAAC,KAAK,sBAGrC,KAAK,mBAAqB,KAAK,oBAAoB,SAAS,EAI3D,KAAKsG,GAAOqB,GAAUA,IAAW,KAAK,mBAAqB,CAACA,EAAO,QAAQ,EAAGE,GAAM,EAAGC,EAAa,CAAC,EAAE,UAAU,IAAM,CACtH,KAAK,UAAY,QAIb,KAAK,gBAAgB5J,IAAW,KAAK,KAAK,aAG5C,KAAK,KAAK,eAAe,KAAKiG,GAAK,CAAC,EAAG0D,GAAM,EAAGC,EAAa,EAAGzB,GAAU,KAAK,oBAAoB,SAAS,CAAC,CAAC,EAAE,UAAU,IAAM,KAAK,SAAS,CAAC,EAE/I,KAAK,SAAS,CAElB,CAAC,EACH,CAEA,WAAWb,EAAM,CAIf,OAAI,CAAC,KAAK,SAAW,KAAK,QAAQ,cAAgBA,EAAK,eACrD,KAAK,QAAU,IAAI1D,GAAe0D,EAAK,YAAa,KAAK,iBAAiB,GAErE,KAAK,OACd,CA0CF,EAxCIF,EAAK,UAAO,SAAgChF,EAAG,CAC7C,OAAO,IAAKA,GAAKgF,GAAmB/E,EAAuB6E,EAAO,EAAM7E,EAAqBC,EAAU,EAAMD,EAAqB8B,EAAgB,EAAM9B,EAAkBpC,EAAwB,EAAMoC,EAAkB9C,GAAgB,CAAC,EAAM8C,EAAkB7C,GAAa,EAAE,EAAM6C,EAAqBwH,GAAgB,CAAC,EAAMxH,EAAqBG,EAAY,EAAMH,EAAqBoE,EAAM,CAAC,CACzY,EAGAW,EAAK,UAAyBhD,EAAkB,CAC9C,KAAMgD,EACN,UAAW,CAAC,CAAC,GAAI,uBAAwB,EAAE,EAAG,CAAC,GAAI,oBAAqB,EAAE,CAAC,EAC3E,UAAW,CAAC,EAAG,sBAAsB,EACrC,SAAU,EACV,aAAc,SAAqCtJ,EAAIC,EAAK,CACtDD,EAAK,GACJS,GAAW,QAAS,SAAiDC,EAAQ,CAC9E,OAAOT,EAAI,aAAaS,CAAM,CAChC,CAAC,EAAE,YAAa,SAAqDA,EAAQ,CAC3E,OAAOT,EAAI,iBAAiBS,CAAM,CACpC,CAAC,EAAE,UAAW,SAAmDA,EAAQ,CACvE,OAAOT,EAAI,eAAeS,CAAM,CAClC,CAAC,EAECV,EAAK,GACJiB,GAAY,gBAAiBhB,EAAI,KAAO,OAAS,IAAI,EAAE,gBAAiBA,EAAI,QAAQ,EAAE,gBAAiBA,EAAI,SAAWA,EAAI,KAAK,QAAU,IAAI,CAEpJ,EACA,OAAQ,CACN,6BAA8B,CAAI6E,EAAa,KAAM,uBAAwB,8BAA8B,EAC3G,KAAM,CAAIA,EAAa,KAAM,oBAAqB,MAAM,EACxD,SAAU,CAAIA,EAAa,KAAM,qBAAsB,UAAU,EACjE,aAAc,CAAIA,EAAa,KAAM,6BAA8B,cAAc,CACnF,EACA,QAAS,CACP,WAAY,aACZ,WAAY,aACZ,WAAY,aACZ,YAAa,aACf,EACA,SAAU,CAAC,gBAAgB,EAC3B,WAAY,EACd,CAAC,EA1cL,IAAMxC,EAANgH,EA6cA,OAAOhH,CACT,GAAG,EAICC,IAA8B,IAAM,CACtC,IAAMyJ,EAAN,MAAMA,CAAc,CAiBpB,EAfIA,EAAK,UAAO,SAA+B1H,EAAG,CAC5C,OAAO,IAAKA,GAAK0H,EACnB,EAGAA,EAAK,UAAyBC,GAAiB,CAC7C,KAAMD,CACR,CAAC,EAGDA,EAAK,UAAyBE,GAAiB,CAC7C,UAAW,CAAC9J,EAAyC,EACrD,QAAS,CAAC+J,GAAcC,GAAiBC,GAAiBC,GAAeC,GAAqBF,EAAe,CAC/G,CAAC,EAfL,IAAM9J,EAANyJ,EAkBA,OAAOzJ,CACT,GAAG,IC9wCH,IAIIiK,GAyDAC,GA7DJC,GAAAC,EAAA,KAAAC,IAEAC,KACAD,KACIJ,IAA2B,IAAM,CACnC,IAAMM,EAAN,MAAMA,CAAW,CACf,aAAc,CACZ,KAAK,UAAY,GACjB,KAAK,OAAS,EAChB,CAEA,IAAI,UAAW,CACb,OAAO,KAAK,SACd,CACA,IAAI,SAASC,EAAO,CAClB,KAAK,UAAYC,GAAsBD,CAAK,CAC9C,CAEA,IAAI,OAAQ,CACV,OAAO,KAAK,MACd,CACA,IAAI,MAAMA,EAAO,CACf,KAAK,OAASC,GAAsBD,CAAK,CAC3C,CAgCF,EA9BID,EAAK,UAAO,SAA4BG,EAAG,CACzC,OAAO,IAAKA,GAAKH,EACnB,EAGAA,EAAK,UAAyBI,GAAkB,CAC9C,KAAMJ,EACN,UAAW,CAAC,CAAC,aAAa,CAAC,EAC3B,UAAW,CAAC,OAAQ,YAAa,EAAG,aAAa,EACjD,SAAU,EACV,aAAc,SAAiCK,EAAIC,EAAK,CAClDD,EAAK,IACJE,GAAY,mBAAoBD,EAAI,SAAW,WAAa,YAAY,EACxEE,GAAY,uBAAwBF,EAAI,QAAQ,EAAE,yBAA0B,CAACA,EAAI,QAAQ,EAAE,oBAAqBA,EAAI,KAAK,EAEhI,EACA,OAAQ,CACN,SAAU,WACV,MAAO,OACT,EACA,WAAY,GACZ,SAAU,CAAIG,EAAmB,EACjC,MAAO,EACP,KAAM,EACN,SAAU,SAA6BJ,EAAIC,EAAK,CAAC,EACjD,OAAQ,CAAC,6aAA6a,EACtb,cAAe,EACf,gBAAiB,CACnB,CAAC,EAhDL,IAAMZ,EAANM,EAmDA,OAAON,CACT,GAAG,EAICC,IAAiC,IAAM,CACzC,IAAMe,EAAN,MAAMA,CAAiB,CAgBvB,EAdIA,EAAK,UAAO,SAAkCP,EAAG,CAC/C,OAAO,IAAKA,GAAKO,EACnB,EAGAA,EAAK,UAAyBC,GAAiB,CAC7C,KAAMD,CACR,CAAC,EAGDA,EAAK,UAAyBE,GAAiB,CAC7C,QAAS,CAACC,GAAiBA,EAAe,CAC5C,CAAC,EAdL,IAAMlB,EAANe,EAiBA,OAAOf,CACT,GAAG,2BE7EHmB,GAAA,CAAA,EACEC,EAAA,EAAA,MAAA,CAAA,EACEC,GAAA,EAAA,mBAAA,CAAA,EACFC,EAAA,QDNF,UA0BaC,GA1BbC,GAAAC,EAAA,KACAC,IAaAC,KACAC,0FAWaL,IAAa,IAAA,CAApB,IAAOA,EAAP,MAAOA,CAAa,CACxB,IACIM,uBAAqB,CACvB,OAAO,KAAKC,cAAgB,UAC9B,CAEAC,YAA6BC,EAAsC,CAAtC,KAAAA,mBAAAA,EAEP,KAAAC,MAAQ,YAErB,KAAAH,YAA+B,QAEA,KAAAI,UAAY,GAE3C,KAAAC,eAAiB,IAEjB,KAAAC,uBAAyB,EAIlC,KAAAC,YAAc,GAGd,KAAAC,aAAe,GAGf,KAAAC,WAAa,GAEH,KAAAC,WAAkC,IAAIC,GAEtC,KAAAC,qBAA2C,IAAID,GAEzD,KAAAE,SAA0B,IAAIC,EA1BwC,CA6BtEC,kBAAkBC,EAAa,CAC7B,KAAKC,eAAeD,CAAM,CAC5B,CAEAE,UAAQ,CACN,KAAKhB,mBACFiB,QAAQ,eAAiB,KAAKd,eAAiB,KAAK,EACpDe,KAAKC,GAAU,KAAKR,QAAQ,CAAC,EAC7BS,UAAU,CACTC,KAAOC,GAAQ,CACb,KAAKf,WAAae,EAAKC,OACzB,EACD,CACL,CAEAC,aAAW,CACT,KAAKb,SAASU,KAAI,EAClB,KAAKV,SAASc,SAAQ,CACxB,CAEAC,aAAaC,EAAY,CAEvB,GAAI,KAAKpB,aAAe,GAAO,CAC7B,KAAKC,WAAWoB,KAAKD,CAAK,EAE1B,IAAME,EAASF,EAAME,OACrB,GAAI,CAACA,EAAQ,OAEb,GAAM,CAAEC,UAAAA,EAAWC,aAAAA,EAAcC,aAAAA,CAAY,EAAKH,EAG9CC,EAAY,EACd,KAAKxB,aAAe,GAEpB,KAAKA,aAAe,GAItB,IAAM2B,EAAiBD,EAAeF,EAChCI,EAAuBH,EAAe,KAAK3B,uBAE7C6B,GAAkBC,GACpB,KAAKxB,qBAAqBkB,KAAI,CAElC,CACF,CAEAb,eAAeY,EAAY,CAErB,KAAKpB,aACP,KAAKC,WAAWoB,KAAKD,CAAK,EAGtBQ,OAAOC,YAAcD,OAAOE,SAAWC,SAASC,KAAKP,aAAe,KAAK5B,wBAC3E,KAAKM,qBAAqBkB,KAAI,EAGpC,yCA5FWrC,GAAaiD,EAAAC,EAAA,CAAA,CAAA,uBAAblD,EAAamD,UAAA,CAAA,CAAA,WAAA,CAAA,EAAAC,SAAA,GAAAC,aAAA,SAAAC,EAAAC,EAAA,CAAAD,EAAA,GAAbE,GAAA,SAAA,SAAAjC,EAAA,CAAA,OAAAgC,EAAAjC,kBAAAC,CAAA,CAAyB,EAAA,GAAAkC,EAAA,QAAzBC,EAAAH,EAAA7C,KAAA,EAAAiD,GAAA,wBAAAJ,EAAAjD,qBAAA,EAAa,cAAAiD,EAAAzC,WAAA,EAAA,gBAAAyC,EAAAxC,YAAA,EAAA,iBAAAwC,EAAAvC,UAAA,sGAYJ4C,EAAgB,EAAAhD,eAAA,iBAAAC,uBAAA,yBAAAC,YAAA,aAAA,EAAA+C,QAAA,CAAA5C,WAAA,aAAAE,qBAAA,sBAAA,EAAA2C,SAAA,CAAAC,EAAA,EAAAC,mBAAAC,GAAAC,MAAA,EAAAC,KAAA,EAAAC,OAAA,CAAA,CAAA,EAAA,MAAA,EAAA,CAAA,gBAAA,GAAA,EAAA,yBAAA,EAAA,QAAA,EAAA,CAAA,EAAA,aAAA,EAAA,CAAA,OAAA,eAAA,CAAA,EAAAC,SAAA,SAAAf,EAAAC,EAAA,CAAAD,EAAA,WCrCtCgB,EAAA,CAAA,EAEAC,GAAA,EAAAC,GAAA,EAAA,EAAA,eAAA,CAAA,EAMA3E,EAAA,EAAA,MAAA,CAAA,EAAkD2D,GAAA,SAAA,SAAAjC,EAAA,CAAA,OAAUgC,EAAApB,aAAAZ,CAAA,CAAoB,CAAA,EAC9E+C,EAAA,EAAA,CAAA,EACFvE,EAAA,SARe0E,EAAA,EAAAC,GAAA,OAAAnB,EAAA5C,SAAA;;uCDuBT,IAAOX,EAAP2E,SAAO3E,CAAa,GAAA,IE1B1B,IAAY4E,GAAZC,GAAAC,EAAA,KAAYF,GAAZ,SAAYA,EAAa,CACvBA,OAAAA,EAAAA,EAAA,UAAA,CAAA,EAAA,YACAA,EAAAA,EAAA,WAAA,CAAA,EAAA,aAFUA,CAGZ,EAHYA,IAAa,CAAA,CAAA,ICAzB,IAAaG,EAAbC,GAAAC,EAAA,KAAaF,EAAP,KAAoB,CAKxBG,YAAYC,EAAcC,EAAoBC,EAAgB,CAC5D,KAAKF,QAAUA,EACf,KAAKC,WAAaA,EAClB,KAAKC,QAAUA,CACjB,KCTF,IAAAC,GAAAC,EAAA,KAAAC,KACAC,OCouBA,SAASC,GAAoBC,EAASC,EAAO,CAC3C,OAAI,OAAOA,GAAU,SACZA,EAEFD,EAAQC,CAAK,CACtB,CA8DA,SAASC,GAAoBF,EAASC,EAAO,CAC3C,OAAI,OAAOA,GAAU,SACZA,EAEFD,EAAQC,CAAK,CACtB,CAgSA,SAASE,GAAoBH,EAASC,EAAO,CAC3C,OAAI,OAAOA,GAAU,SACZA,EAEFD,EAAQC,CAAK,CACtB,CAwIA,SAASG,GAAoBJ,EAASC,EAAO,CAC3C,OAAI,OAAOA,GAAU,SACZA,EAEFD,EAAQC,CAAK,CACtB,CAq4BA,SAASI,GAAoBL,EAASC,EAAO,CAC3C,OAAI,OAAOA,GAAU,SACZA,EAEFD,EAAQC,CAAK,CACtB,CA0CA,SAASK,GAAoBN,EAASC,EAAO,CAC3C,OAAI,OAAOA,GAAU,SACZA,EAEFD,EAAQC,CAAK,CACtB,CAiYA,SAASM,GAAoBP,EAASC,EAAO,CAC3C,OAAI,OAAOA,GAAU,SACZA,EAEFD,EAAQC,CAAK,CACtB,CAmgBA,SAASO,GAAoBR,EAASC,EAAO,CAC3C,OAAI,OAAOA,GAAU,SACZA,EAEFD,EAAQC,CAAK,CACtB,CAgQA,SAASQ,GAAoBT,EAASC,EAAO,CAC3C,OAAI,OAAOA,GAAU,SACZA,EAEFD,EAAQC,CAAK,CACtB,CAkhBA,SAASS,GAAoBV,EAASC,EAAO,CAC3C,OAAI,OAAOA,GAAU,SACZA,EAEFD,EAAQC,CAAK,CACtB,CAwBA,SAASU,GAAoBX,EAASC,EAAO,CAC3C,OAAI,OAAOA,GAAU,SACZA,EAEFD,EAAQC,CAAK,CACtB,CAioBA,SAASW,GAAoBZ,EAASC,EAAO,CAC3C,OAAI,OAAOA,GAAU,SACZA,EAEFD,EAAQC,CAAK,CACtB,CAo6BA,SAASY,GAAoBb,EAASC,EAAO,CAC3C,OAAI,OAAOA,GAAU,SACZA,EAEFD,EAAQC,CAAK,CACtB,CAg5CA,SAASa,GAAoBd,EAASC,EAAO,CAC3C,OAAI,OAAOA,GAAU,SACZA,EAEFD,EAAQC,CAAK,CACtB,CA+PA,SAASc,GAAoBf,EAASC,EAAO,CAC3C,OAAI,OAAOA,GAAU,SACZA,EAEFD,EAAQC,CAAK,CACtB,CAqjCA,SAASe,GAAoBhB,EAASC,EAAO,CAC3C,OAAI,OAAOA,GAAU,SACZA,EAEFD,EAAQC,CAAK,CACtB,CAoMA,SAASgB,GAAoBjB,EAASC,EAAO,CAC3C,OAAI,OAAOA,GAAU,SACZA,EAEFD,EAAQC,CAAK,CACtB,CA6jDA,SAASiB,GAAoBlB,EAASC,EAAO,CAC3C,OAAI,OAAOA,GAAU,SACZA,EAEFD,EAAQC,CAAK,CACtB,CA4MA,SAASkB,GAAoBnB,EAASC,EAAO,CAC3C,OAAI,OAAOA,GAAU,SACZA,EAEFD,EAAQC,CAAK,CACtB,CAmmBA,SAASmB,GAAoBpB,EAASC,EAAO,CAC3C,OAAI,OAAOA,GAAU,SACZA,EAEFD,EAAQC,CAAK,CACtB,CAkTA,SAASoB,GAAoBrB,EAASC,EAAO,CAC3C,OAAI,OAAOA,GAAU,SACZA,EAEFD,EAAQC,CAAK,CACtB,CA6rEA,SAASqB,GAAoBtB,EAASC,EAAO,CAC3C,OAAI,OAAOA,GAAU,SACZA,EAEFD,EAAQC,CAAK,CACtB,CAieA,SAASsB,GAAkBvB,EAASC,EAAO,CACzC,OAAI,OAAOA,GAAU,SACZA,EAEFD,EAAQC,CAAK,CACtB,CApobA,IAYIuB,EAaAC,EAkCAC,GAMAC,GAWAC,EAQAC,GAaAC,GAMAC,GAYAC,EAaAC,GAaAC,GAOAC,GAOAC,GAQAC,GAaAC,GAcAC,GAKAC,GAWAC,GAIAC,GAaAC,GASAC,GAYAC,GAWAC,GAMAC,GAiBAC,GAsBAC,GAYAC,GAgBAC,GAYAC,GAMAC,GAMAC,GAQAC,GAMAC,GAOAC,GAOAC,GASAC,GAcAC,GAUAC,GAaAC,GAiBAC,GAMAC,GASAC,GAmHAC,GAOAC,GAkCEC,GAiBAC,EA0BAC,EA6BAC,EA0BAC,GAmCAC,GA6BAC,GAsCAC,GA0BAC,GA0BAC,GAoBAC,GAoBAC,GAuBAC,GA6BAC,GAkDAC,GAyCAC,GAmCAC,GAuBAC,GA0BAC,GA6EAC,GAsCAC,GAyCAC,GA0BAC,GAoBAC,GAsIAC,GAuBAC,GAyCAC,GAgCAC,GA6BAC,GAmCAC,GAuBAC,GAqDAC,GA0BAC,GAmCAC,GAuBAC,GA6BAC,GAuBAC,GAgCAC,GA6BAC,GAgCAC,GA6BAC,GAmCAC,GA6BAC,GAuBAC,GAuBAC,GA6BAC,GA6BAC,GAuBAC,GA6IAC,GAsNAC,GAkFAC,GA+MAC,GAoBAC,GAuBAC,GAoBAC,GA0BAC,GAuBAC,GA8FAC,GA2GAC,GAsCAC,GAmCAC,GA6BAC,GAyCAC,GAuBAC,GAuBAC,GAoBAC,GAuBAC,GA6BAC,GAsEAC,GAgCAC,GAuBAC,GA4CAC,GA6HAC,GA6BAC,GAqIAC,GA+EAC,GA6BAC,GA0BAC,GAmCAC,GAuBAC,GAmCAC,GAmCAC,GAmCAC,GA2GAC,GAoBAC,GA0BAC,GAoBAC,GA6BAC,GAuBAC,GA6DAC,GA2GAC,GAgCAC,GAgCAC,GAiEAC,GAoBAC,GAsFAC,GAuBAC,GA4CAC,GA6BAC,GA6BAC,GAiEAC,GAyCAC,GAuBAC,GA6BAC,GAyCAC,GA6BAC,GA6BAC,GAsCAC,GAuBAC,GAuBAC,GAuBAC,GA0BAC,GAuBAC,GA6BAC,GA6BAC,GA+CAC,GA+CAC,GAmCAC,GAyCAC,GA0BAC,GAuBAC,GA+CAC,GAuBAC,GA6BAC,GA6BAC,GAoBAC,GAgCAC,GAoBAC,GAmCAC,GAmCAC,GAuBAC,GA0BAC,GAuBAC,GAuBAC,GAoBAC,GA+CAC,GAuBAC,GAuBAC,GA6BAC,GAuBAC,EAgLAC,GAuEAC,GA6BAC,GA6BAC,GAoBAC,GA0BAC,GA6BAC,GA6BAC,GAuBAC,GA6BAC,GAgCAC,GAuBAC,GA0BAC,GAuBAC,GA6BAC,GAuBAC,GAkDAC,GAuBAC,GAgCAC,GAuBAC,GAsCAC,GAmQAC,GAoEAC,GAoBAC,GAiFAC,GAiEAC,GAyCAC,GAoBAC,GAuBAC,GAuBAC,GA0BAC,GAoBAC,GA6BAC,GAoBAC,GAsCAC,GAoBAC,GAuBAC,GAoBAC,GAuBAC,GAuBAC,GAuBAC,GAoBAC,GAoBAC,GA0BAC,GA6BAC,GAuEAC,GAgEAC,GAsCAC,GA6BAC,GAuBAC,GAuBAC,GAuBAC,GAuBAC,GAuBAC,GAiEAC,GA6BAC,GAsCAC,GA0BAC,GA6BAC,GAkDAC,GA0BAC,GAuBAC,GA+CAC,GA8DAC,GA0BAC,GAuBAC,GA0BAC,GAuBAC,GAuBAC,GAuEAC,GA2DAC,GA4CAC,GAmCAC,GAgCAC,GAuBAC,GAuBAC,GAoBAC,GAuBAC,GAuBAC,GAuBAC,GAuBAC,GAoBAC,GAmCAC,GA6BAC,GA6BAC,GA0BAC,GA6BAC,GAmCAC,GAgCAC,GA6BAC,GAyCAC,GAgCAC,GA6BAC,GAgCAC,GA8DAC,GAgCAC,GAgCAC,GAuBAC,GAmCAC,GAuBAC,GA4FAC,GAoBAC,GAoBAC,GA2DAC,GAoBAC,GAsCAC,GAyCAC,GAmCAC,GAuBAC,GA0BAC,GAyCAC,GAuBAC,GAuBAC,GAuBAC,GAuBAC,GA8DAC,GA0BAC,GA6BAC,GAoEAC,GAuBAC,GAuBAC,GAuBAC,GAuBAC,GAuBAC,GA6BAC,GAuBAC,GAgCAC,GA2GAC,GAsFAC,GA0EAC,GAiBAC,GA8HAC,GAoBAC,GA0BAC,GAgCAC,GAmCAC,GA6BAC,GA4GAC,GAgCAC,GAuBAC,GA0EAC,GAmCAC,GA6BAC,GAmCAC,GA6BAC,GA6BAC,GAgCAC,GA8GAC,GA4FAC,GA0BAC,GA6BAC,GA0BAC,GAoqBAC,GAuBAC,GA86BAC,GAyCAC,GAoBAC,GAwVAC,GAuBAC,GAoBAC,GAsCAC,GAgCAC,GAgCAC,GAoBAC,GAsCAC,GA0BAC,GA0BAC,GA0BAC,GA0BAC,GAgCAC,GAmCAC,GAgCAC,GA0BAC,GAuBAC,GAmCAC,GAiEAC,GAgCAC,GAuBAC,GAoBAC,GA6BAC,GAuBAC,GA0BAC,GAuBAC,GAqIAC,GA6BAC,GAyCAC,GAiBAC,GAuDAC,GACAC,GAOFC,EAiFAC,GAmfAC,GA8DAC,GAmIAC,GA8NAC,GA0DAC,GAwHAC,GA4MAC,GA0ZAC,GA6EAC,GAl3gBJC,EAAAC,EAAA,KAAAC,IAEAC,KACAA,KACAC,IAQIpY,EAAyB,SAAUA,EAAW,CAChD,OAAAA,EAAUA,EAAU,QAAa,CAAC,EAAI,UACtCA,EAAUA,EAAU,QAAa,CAAC,EAAI,UACtCA,EAAUA,EAAU,OAAY,CAAC,EAAI,SACrCA,EAAUA,EAAU,SAAc,CAAC,EAAI,WAChCA,CACT,EAAEA,GAAa,CAAC,CAAC,EAObC,EAAwB,SAAUA,EAAU,CAC9C,OAAAA,EAASA,EAAS,IAAS,CAAC,EAAI,MAChCA,EAASA,EAAS,IAAS,CAAC,EAAI,MAChCA,EAASA,EAAS,IAAS,CAAC,EAAI,MAChCA,EAASA,EAAS,IAAS,CAAC,EAAI,MAChCA,EAASA,EAAS,IAAS,CAAC,EAAI,MAChCA,EAASA,EAAS,IAAS,CAAC,EAAI,MAChCA,EAASA,EAAS,IAAS,CAAC,EAAI,MAChCA,EAASA,EAAS,IAAS,CAAC,EAAI,MAChCA,EAASA,EAAS,IAAS,CAAC,EAAI,MAChCA,EAASA,EAAS,IAAS,CAAC,EAAI,MAChCA,EAASA,EAAS,IAAS,EAAE,EAAI,MACjCA,EAASA,EAAS,IAAS,EAAE,EAAI,MACjCA,EAASA,EAAS,IAAS,EAAE,EAAI,MACjCA,EAASA,EAAS,IAAS,EAAE,EAAI,MACjCA,EAASA,EAAS,IAAS,EAAE,EAAI,MACjCA,EAASA,EAAS,IAAS,EAAE,EAAI,MACjCA,EAASA,EAAS,IAAS,EAAE,EAAI,MACjCA,EAASA,EAAS,IAAS,EAAE,EAAI,MACjCA,EAASA,EAAS,IAAS,EAAE,EAAI,MACjCA,EAASA,EAAS,IAAS,EAAE,EAAI,MACjCA,EAASA,EAAS,IAAS,EAAE,EAAI,MACjCA,EAASA,EAAS,IAAS,EAAE,EAAI,MACjCA,EAASA,EAAS,IAAS,EAAE,EAAI,MACjCA,EAASA,EAAS,IAAS,EAAE,EAAI,MACjCA,EAASA,EAAS,IAAS,EAAE,EAAI,MAC1BA,CACT,EAAEA,GAAY,CAAC,CAAC,EAOZC,GAA6B,SAAUA,EAAe,CACxD,OAAAA,EAAcA,EAAc,wBAA6B,CAAC,EAAI,0BAC9DA,EAAcA,EAAc,sBAA2B,CAAC,EAAI,wBAC5DA,EAAcA,EAAc,2BAAgC,CAAC,EAAI,6BAC1DA,CACT,EAAEA,IAAiB,CAAC,CAAC,EACjBC,GAAuB,SAAUA,EAAS,CAC5C,OAAAA,EAAQA,EAAQ,iBAAsB,CAAC,EAAI,mBAC3CA,EAAQA,EAAQ,oBAAyB,CAAC,EAAI,sBACvCA,CACT,EAAEA,IAAW,CAAC,CAAC,EAOXC,EAA+B,SAAUA,EAAiB,CAC5D,OAAAA,EAAgBA,EAAgB,sBAA2B,CAAC,EAAI,wBAChEA,EAAgBA,EAAgB,+BAAoC,CAAC,EAAI,iCACzEA,EAAgBA,EAAgB,iCAAsC,CAAC,EAAI,mCAC3EA,EAAgBA,EAAgB,2BAAgC,CAAC,EAAI,6BACrEA,EAAgBA,EAAgB,4BAAiC,CAAC,EAAI,8BAC/DA,CACT,EAAEA,GAAmB,CAAC,CAAC,EACnBC,GAAkC,SAAUA,EAAoB,CAClE,OAAAA,EAAmBA,EAAmB,6BAAkC,CAAC,EAAI,+BAC7EA,EAAmBA,EAAmB,8BAAmC,CAAC,EAAI,gCAC9EA,EAAmBA,EAAmB,+BAAoC,CAAC,EAAI,iCAC/EA,EAAmBA,EAAmB,4BAAiC,CAAC,EAAI,8BACrEA,CACT,EAAEA,IAAsB,CAAC,CAAC,EAOtBC,GAAsB,SAAUA,EAAQ,CAC1C,OAAAA,EAAOA,EAAO,aAAkB,CAAC,EAAI,eACrCA,EAAOA,EAAO,cAAmB,CAAC,EAAI,gBACtCA,EAAOA,EAAO,YAAiB,CAAC,EAAI,cAC7BA,CACT,EAAEA,IAAU,CAAC,CAAC,EACVC,GAAkC,SAAUA,EAAoB,CAClE,OAAAA,EAAmBA,EAAmB,0BAA+B,CAAC,EAAI,4BAC1EA,EAAmBA,EAAmB,2BAAgC,CAAC,EAAI,6BAC3EA,EAAmBA,EAAmB,4BAAiC,CAAC,EAAI,8BACrEA,CACT,EAAEA,IAAsB,CAAC,CAAC,EAOtBC,EAA4B,SAAUA,EAAc,CACtD,OAAAA,EAAaA,EAAa,2BAAgC,CAAC,EAAI,6BAC/DA,EAAaA,EAAa,6BAAkC,CAAC,EAAI,+BACjEA,EAAaA,EAAa,oCAAyC,CAAC,EAAI,sCACxEA,EAAaA,EAAa,oCAAyC,CAAC,EAAI,sCACjEA,CACT,EAAEA,GAAgB,CAAC,CAAC,EAOhBC,GAA0C,SAAUA,EAA4B,CAClF,OAAAA,EAA2BA,EAA2B,mCAAwC,CAAC,EAAI,qCACnGA,EAA2BA,EAA2B,qCAA0C,CAAC,EAAI,uCACrGA,EAA2BA,EAA2B,uCAA4C,CAAC,EAAI,yCACvGA,EAA2BA,EAA2B,oCAAyC,CAAC,EAAI,sCAC7FA,CACT,EAAEA,IAA8B,CAAC,CAAC,EAO9BC,GAA6C,SAAUA,EAA+B,CACxF,OAAAA,EAA8BA,EAA8B,gCAAqC,CAAC,EAAI,kCACtGA,EAA8BA,EAA8B,kCAAuC,CAAC,EAAI,oCACxGA,EAA8BA,EAA8B,iBAAsB,CAAC,EAAI,mBACvFA,EAA8BA,EAA8B,qBAA0B,CAAC,EAAI,uBACpFA,CACT,EAAEA,IAAiC,CAAC,CAAC,EACjCC,GAAkD,SAAUA,EAAoC,CAClG,OAAAA,EAAmCA,EAAmC,aAAkB,CAAC,EAAI,eAC7FA,EAAmCA,EAAmC,eAAoB,CAAC,EAAI,iBAC/FA,EAAmCA,EAAmC,sBAA2B,CAAC,EAAI,wBACtGA,EAAmCA,EAAmC,sBAA2B,CAAC,EAAI,wBAC/FA,CACT,EAAEA,IAAsC,CAAC,CAAC,EACtCC,GAAyC,SAAUA,EAA2B,CAChF,OAAAA,EAA0BA,EAA0B,OAAY,CAAC,EAAI,SACrEA,EAA0BA,EAA0B,IAAS,CAAC,EAAI,MAClEA,EAA0BA,EAA0B,QAAa,CAAC,EAAI,UACtEA,EAA0BA,EAA0B,aAAkB,CAAC,EAAI,eAC3EA,EAA0BA,EAA0B,iBAAsB,CAAC,EAAI,mBACxEA,CACT,EAAEA,IAA6B,CAAC,CAAC,EAC7BC,GAA+B,SAAUA,EAAiB,CAC5D,OAAAA,EAAgBA,EAAgB,SAAc,CAAC,EAAI,WACnDA,EAAgBA,EAAgB,UAAe,CAAC,EAAI,YACpDA,EAAgBA,EAAgB,OAAY,CAAC,EAAI,SACjDA,EAAgBA,EAAgB,OAAY,CAAC,EAAI,SAC1CA,CACT,EAAEA,IAAmB,CAAC,CAAC,EAOnBC,GAAyC,SAAUA,EAA2B,CAChF,OAAAA,EAA0BA,EAA0B,kCAAuC,CAAC,EAAI,oCAChGA,EAA0BA,EAA0B,gDAAqD,CAAC,EAAI,kDAC9GA,EAA0BA,EAA0B,kDAAuD,CAAC,EAAI,oDAChHA,EAA0BA,EAA0B,iDAAsD,CAAC,EAAI,mDAC/GA,EAA0BA,EAA0B,sDAA2D,CAAC,EAAI,wDAC7GA,CACT,EAAEA,IAA6B,CAAC,CAAC,EAO7BC,GAAwB,SAAUA,EAAU,CAC9C,OAAAA,EAASA,EAAS,mBAAwB,CAAC,EAAI,qBAC/CA,EAASA,EAAS,gBAAqB,CAAC,EAAI,kBACrCA,CACT,EAAEA,IAAY,CAAC,CAAC,EACZC,GAA4B,SAAUA,EAAc,CACtD,OAAAA,EAAaA,EAAa,wBAA6B,CAAC,EAAI,0BAC5DA,EAAaA,EAAa,sBAA2B,CAAC,EAAI,wBACnDA,CACT,EAAEA,IAAgB,CAAC,CAAC,EAOhBC,GAA6D,SAAUA,EAA+C,CACxH,OAAAA,EAA8CA,EAA8C,QAAa,CAAC,EAAI,UACvGA,CACT,EAAEA,IAAiD,CAAC,CAAC,EACjDC,GAA6B,SAAUA,EAAe,CACxD,OAAAA,EAAcA,EAAc,MAAW,CAAC,EAAI,QAC5CA,EAAcA,EAAc,IAAS,CAAC,EAAI,MAC1CA,EAAcA,EAAc,KAAU,CAAC,EAAI,OAC3CA,EAAcA,EAAc,KAAU,CAAC,EAAI,OACpCA,CACT,EAAEA,IAAiB,CAAC,CAAC,EAOjBC,GAA4B,SAAUA,EAAc,CACtD,OAAAA,EAAaA,EAAa,sBAA2B,CAAC,EAAI,wBAC1DA,EAAaA,EAAa,mBAAwB,CAAC,EAAI,qBACvDA,EAAaA,EAAa,sBAA2B,CAAC,EAAI,wBAC1DA,EAAaA,EAAa,yBAA8B,CAAC,EAAI,2BAC7DA,EAAaA,EAAa,uBAA4B,CAAC,EAAI,yBAC3DA,EAAaA,EAAa,qBAA0B,CAAC,EAAI,uBAClDA,CACT,EAAEA,IAAgB,CAAC,CAAC,EAChBC,GAA0B,SAAUA,EAAY,CAClD,OAAAA,EAAWA,EAAW,oBAAyB,CAAC,EAAI,sBACpDA,EAAWA,EAAW,yBAA8B,CAAC,EAAI,2BACzDA,EAAWA,EAAW,iBAAsB,CAAC,EAAI,mBAC1CA,CACT,EAAEA,IAAc,CAAC,CAAC,EAOdC,GAA6B,SAAUA,EAAe,CACxD,OAAAA,EAAcA,EAAc,yBAA8B,CAAC,EAAI,2BAC/DA,EAAcA,EAAc,0BAA+B,CAAC,EAAI,4BACzDA,CACT,EAAEA,IAAiB,CAAC,CAAC,EAOjBC,GAA4B,SAAUA,EAAc,CACtD,OAAAA,EAAaA,EAAa,sBAA2B,CAAC,EAAI,wBAC1DA,EAAaA,EAAa,wBAA6B,CAAC,EAAI,0BAC5DA,EAAaA,EAAa,qBAA0B,CAAC,EAAI,uBAClDA,CACT,EAAEA,IAAgB,CAAC,CAAC,EAChBC,GAA4C,SAAUA,EAA8B,CACtF,OAAAA,EAA6BA,EAA6B,6CAAkD,CAAC,EAAI,+CACjHA,EAA6BA,EAA6B,8CAAmD,CAAC,EAAI,gDAClHA,EAA6BA,EAA6B,8CAAmD,CAAC,EAAI,gDAClHA,EAA6BA,EAA6B,+CAAoD,CAAC,EAAI,iDACnHA,EAA6BA,EAA6B,yCAA8C,CAAC,EAAI,2CAC7GA,EAA6BA,EAA6B,uCAA4C,CAAC,EAAI,yCAC3GA,EAA6BA,EAA6B,yCAA8C,CAAC,EAAI,2CAC7GA,EAA6BA,EAA6B,yCAA8C,CAAC,EAAI,2CACtGA,CACT,EAAEA,IAAgC,CAAC,CAAC,EAOhCC,GAAqB,SAAUA,EAAO,CACxC,OAAAA,EAAMA,EAAM,cAAmB,CAAC,EAAI,gBACpCA,EAAMA,EAAM,QAAa,CAAC,EAAI,UAC9BA,EAAMA,EAAM,SAAc,CAAC,EAAI,WAC/BA,EAAMA,EAAM,MAAW,CAAC,EAAI,QAC5BA,EAAMA,EAAM,MAAW,CAAC,EAAI,QAC5BA,EAAMA,EAAM,IAAS,CAAC,EAAI,MAC1BA,EAAMA,EAAM,KAAU,CAAC,EAAI,OAC3BA,EAAMA,EAAM,KAAU,CAAC,EAAI,OAC3BA,EAAMA,EAAM,OAAY,CAAC,EAAI,SAC7BA,EAAMA,EAAM,UAAe,CAAC,EAAI,YAChCA,EAAMA,EAAM,QAAa,EAAE,EAAI,UAC/BA,EAAMA,EAAM,SAAc,EAAE,EAAI,WAChCA,EAAMA,EAAM,SAAc,EAAE,EAAI,WACzBA,CACT,EAAEA,IAAS,CAAC,CAAC,EAOTC,GAAoC,SAAUA,EAAsB,CACtE,OAAAA,EAAqBA,EAAqB,OAAY,CAAC,EAAI,SAC3DA,EAAqBA,EAAqB,QAAa,CAAC,EAAI,UAC5DA,EAAqBA,EAAqB,UAAe,CAAC,EAAI,YACvDA,CACT,EAAEA,IAAwB,CAAC,CAAC,EAOxBC,GAAwB,SAAUA,EAAU,CAC9C,OAAAA,EAASA,EAAS,kBAAuB,CAAC,EAAI,oBAC9CA,EAASA,EAAS,eAAoB,CAAC,EAAI,iBAC3CA,EAASA,EAAS,qBAA0B,CAAC,EAAI,uBACjDA,EAASA,EAAS,eAAoB,CAAC,EAAI,iBAC3CA,EAASA,EAAS,mBAAwB,CAAC,EAAI,qBAC/CA,EAASA,EAAS,cAAmB,CAAC,EAAI,gBAC1CA,EAASA,EAAS,sBAA2B,CAAC,EAAI,wBAC3CA,CACT,EAAEA,IAAY,CAAC,CAAC,EAOZC,GAA6B,SAAUA,EAAe,CACxD,OAAAA,EAAcA,EAAc,qBAA0B,CAAC,EAAI,uBAC3DA,EAAcA,EAAc,sCAA2C,CAAC,EAAI,wCAC5EA,EAAcA,EAAc,oCAAyC,CAAC,EAAI,sCAC1EA,EAAcA,EAAc,8BAAmC,CAAC,EAAI,gCACpEA,EAAcA,EAAc,8BAAmC,CAAC,EAAI,gCACpEA,EAAcA,EAAc,4BAAiC,CAAC,EAAI,8BAClEA,EAAcA,EAAc,+BAAoC,CAAC,EAAI,iCACrEA,EAAcA,EAAc,mBAAwB,CAAC,EAAI,qBACzDA,EAAcA,EAAc,oBAAyB,CAAC,EAAI,sBACnDA,CACT,EAAEA,IAAiB,CAAC,CAAC,EACjBC,GAAqC,SAAUA,EAAuB,CACxE,OAAAA,EAAsBA,EAAsB,8BAAmC,CAAC,EAAI,gCACpFA,EAAsBA,EAAsB,iCAAsC,CAAC,EAAI,mCACvFA,EAAsBA,EAAsB,gCAAqC,CAAC,EAAI,kCAC/EA,CACT,EAAEA,IAAyB,CAAC,CAAC,EACzBC,GAA6B,SAAUA,EAAe,CACxD,OAAAA,EAAcA,EAAc,oBAAyB,CAAC,EAAI,sBAC1DA,EAAcA,EAAc,sBAA2B,CAAC,EAAI,wBAC5DA,EAAcA,EAAc,qBAA0B,CAAC,EAAI,uBACpDA,CACT,EAAEA,IAAiB,CAAC,CAAC,EACjBC,GAA6B,SAAUA,EAAe,CACxD,OAAAA,EAAcA,EAAc,qBAA0B,CAAC,EAAI,uBAC3DA,EAAcA,EAAc,yBAA8B,CAAC,EAAI,2BAC/DA,EAAcA,EAAc,sBAA2B,CAAC,EAAI,wBAC5DA,EAAcA,EAAc,wBAA6B,CAAC,EAAI,0BAC9DA,EAAcA,EAAc,kCAAuC,CAAC,EAAI,oCACjEA,CACT,EAAEA,IAAiB,CAAC,CAAC,EACjBC,GAA0C,SAAUA,EAA4B,CAClF,OAAAA,EAA2BA,EAA2B,oCAAyC,CAAC,EAAI,sCACpGA,EAA2BA,EAA2B,sCAA2C,CAAC,EAAI,wCACtGA,EAA2BA,EAA2B,0CAA+C,CAAC,EAAI,4CACnGA,CACT,EAAEA,IAA8B,CAAC,CAAC,EAC9BC,GAAyC,SAAUA,EAA2B,CAChF,OAAAA,EAA0BA,EAA0B,mCAAwC,CAAC,EAAI,qCACjGA,EAA0BA,EAA0B,iDAAsD,CAAC,EAAI,mDAC/GA,EAA0BA,EAA0B,sDAA2D,CAAC,EAAI,wDACpHA,EAA0BA,EAA0B,qCAA0C,CAAC,EAAI,uCAC5FA,CACT,EAAEA,IAA6B,CAAC,CAAC,EAC7BC,GAAkC,SAAUA,EAAoB,CAClE,OAAAA,EAAmBA,EAAmB,2BAAgC,CAAC,EAAI,6BAC3EA,EAAmBA,EAAmB,+BAAoC,CAAC,EAAI,iCAC/EA,EAAmBA,EAAmB,gCAAqC,CAAC,EAAI,kCAChFA,EAAmBA,EAAmB,2CAAgD,CAAC,EAAI,6CACpFA,CACT,EAAEA,IAAsB,CAAC,CAAC,EACtBC,GAAkC,SAAUA,EAAoB,CAClE,OAAAA,EAAmBA,EAAmB,2BAAgC,CAAC,EAAI,6BAC3EA,EAAmBA,EAAmB,6BAAkC,CAAC,EAAI,+BAC7EA,EAAmBA,EAAmB,+BAAoC,CAAC,EAAI,iCAC/EA,EAAmBA,EAAmB,4BAAiC,CAAC,EAAI,8BAC5EA,EAAmBA,EAAmB,qCAA0C,CAAC,EAAI,uCACrFA,EAAmBA,EAAmB,8BAAmC,CAAC,EAAI,gCACvEA,CACT,EAAEA,IAAsB,CAAC,CAAC,EACtBC,GAAqC,SAAUA,EAAuB,CACxE,OAAAA,EAAsBA,EAAsB,8BAAmC,CAAC,EAAI,gCACpFA,EAAsBA,EAAsB,gCAAqC,CAAC,EAAI,kCACtFA,EAAsBA,EAAsB,+BAAoC,CAAC,EAAI,iCACrFA,EAAsBA,EAAsB,uCAA4C,CAAC,EAAI,yCAC7FA,EAAsBA,EAAsB,mCAAwC,CAAC,EAAI,qCAClFA,CACT,EAAEA,IAAyB,CAAC,CAAC,EAOzBC,GAAoC,SAAUA,EAAsB,CACtE,OAAAA,EAAqBA,EAAqB,QAAa,CAAC,EAAI,UAC5DA,EAAqBA,EAAqB,KAAU,CAAC,EAAI,OACzDA,EAAqBA,EAAqB,WAAgB,CAAC,EAAI,aAC/DA,EAAqBA,EAAqB,KAAU,CAAC,EAAI,OACzDA,EAAqBA,EAAqB,SAAc,CAAC,EAAI,WAC7DA,EAAqBA,EAAqB,IAAS,CAAC,EAAI,MACxDA,EAAqBA,EAAqB,YAAiB,CAAC,EAAI,cACzDA,CACT,EAAEA,IAAwB,CAAC,CAAC,EACxBC,GAAuC,SAAUA,EAAyB,CAC5E,OAAAA,EAAwBA,EAAwB,qBAA0B,CAAC,EAAI,uBAC/EA,EAAwBA,EAAwB,oBAAyB,CAAC,EAAI,sBAC9EA,EAAwBA,EAAwB,mBAAwB,CAAC,EAAI,qBAC7EA,EAAwBA,EAAwB,qBAA0B,CAAC,EAAI,uBACxEA,CACT,EAAEA,IAA2B,CAAC,CAAC,EAO3BC,GAA2B,SAAUA,EAAa,CACpD,OAAAA,EAAYA,EAAY,qBAA0B,CAAC,EAAI,uBACvDA,EAAYA,EAAY,8BAAmC,CAAC,EAAI,gCAChEA,EAAYA,EAAY,8BAAmC,CAAC,EAAI,gCAChEA,EAAYA,EAAY,0BAA+B,CAAC,EAAI,4BAC5DA,EAAYA,EAAY,iBAAsB,CAAC,EAAI,mBACnDA,EAAYA,EAAY,6BAAkC,CAAC,EAAI,+BAC/DA,EAAYA,EAAY,mCAAwC,CAAC,EAAI,qCACrEA,EAAYA,EAAY,qBAA0B,CAAC,EAAI,uBAChDA,CACT,EAAEA,IAAe,CAAC,CAAC,EAOfC,GAA0B,SAAUA,EAAY,CAClD,OAAAA,EAAWA,EAAW,kBAAuB,CAAC,EAAI,oBAClDA,EAAWA,EAAW,wBAA6B,CAAC,EAAI,0BACxDA,EAAWA,EAAW,wBAA6B,CAAC,EAAI,0BACjDA,CACT,EAAEA,IAAc,CAAC,CAAC,EACdC,GAA8B,SAAUA,EAAgB,CAC1D,OAAAA,EAAeA,EAAe,sBAA2B,CAAC,EAAI,wBAC9DA,EAAeA,EAAe,wBAA6B,CAAC,EAAI,0BAChEA,EAAeA,EAAe,oBAAyB,CAAC,EAAI,sBAC5DA,EAAeA,EAAe,wBAA6B,CAAC,EAAI,0BAChEA,EAAeA,EAAe,wBAA6B,CAAC,EAAI,0BAChEA,EAAeA,EAAe,uBAA4B,CAAC,EAAI,yBACxDA,CACT,EAAEA,IAAkB,CAAC,CAAC,EAClBC,GAAwC,SAAUA,EAA0B,CAC9E,OAAAA,EAAyBA,EAAyB,gCAAqC,CAAC,EAAI,kCAC5FA,EAAyBA,EAAyB,oCAAyC,CAAC,EAAI,sCACzFA,CACT,EAAEA,IAA4B,CAAC,CAAC,EA+G5BC,GAA+C,SAAUA,EAAiC,CAC5F,OAAAA,EAAgCA,EAAgC,gDAAqD,CAAC,EAAI,kDAC1HA,EAAgCA,EAAgC,4CAAiD,CAAC,EAAI,8CACtHA,EAAgCA,EAAgC,8CAAmD,CAAC,EAAI,gDACxHA,EAAgCA,EAAgC,2CAAgD,CAAC,EAAI,6CAC9GA,CACT,EAAEA,IAAmC,CAAC,CAAC,EACnCC,GAA6C,SAAUA,EAA+B,CACxF,OAAAA,EAA8BA,EAA8B,8CAAmD,CAAC,EAAI,gDACpHA,EAA8BA,EAA8B,mDAAwD,CAAC,EAAI,qDAClHA,CACT,EAAEA,IAAiC,CAAC,CAAC,EA8B/BC,GAAN,MAAMyV,CAAe,CACnB,OAAO,UAAUC,EAAO,CACtB,IAAIC,EAAI,IAAIF,EACZ,OAAAE,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACnBC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CAEV,MADiB,CAAC,CAEpB,CACF,EACM3V,EAAN,MAAM4V,CAAoB,CACxB,OAAO,UAAUH,EAAO,CACtB,IAAIC,EAAI,IAAIE,EACZ,OAAAF,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACtBA,EAAM,WACRC,EAAE,SAAW,SAASD,EAAM,SAAU,EAAE,GAEnCC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAME,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,OAAW,MACzBA,EAAS,OAAY,KAAK,QAExB,OAAO,KAAK,SAAa,MAC3BA,EAAS,SAAc,KAAK,UAEvBA,CACT,CACF,EACM5V,EAAN,MAAM6V,CAAsB,CAC1B,OAAO,UAAUL,EAAO,CACtB,IAAIC,EAAI,IAAII,EACZ,OAAAJ,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACnBC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAME,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,WAAe,MAC7BA,EAAS,WAAgB,KAAK,YAE5B,OAAO,KAAK,QAAY,MAC1BA,EAAS,QAAa,KAAK,SAEtBA,CACT,CACF,EAOM3V,EAAN,MAAM6V,CAAU,CACd,OAAO,UAAUN,EAAO,CACtB,IAAIC,EAAI,IAAIK,EACZ,OAAAL,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACnBC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAME,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,MAAU,MACxBA,EAAS,MAAW,KAAK,OAEpBA,CACT,CACF,EAOM1V,GAAN,MAAM6V,CAAW,CACf,OAAO,UAAUP,EAAO,CACtB,IAAIC,EAAI,IAAIM,EACZ,OAAAN,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACtBA,EAAM,UACRC,EAAE,QAAU,SAASD,EAAM,QAAS,EAAE,GAEpCA,EAAM,YACRC,EAAE,UAAY,SAASD,EAAM,UAAW,EAAE,GAErCC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAME,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,QAAY,MAC1BA,EAAS,QAAa,KAAK,SAEzB,OAAO,KAAK,UAAc,MAC5BA,EAAS,UAAe,KAAK,WAExBA,CACT,CACF,EAOMzV,GAAN,MAAM6V,CAAW,CACf,OAAO,UAAUR,EAAO,CACtB,IAAIC,EAAI,IAAIO,EACZ,OAAAP,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACtBA,EAAM,gBACRC,EAAE,cAAgB,SAASD,EAAM,cAAe,EAAE,GAEhDA,EAAM,MACRC,EAAE,IAAMrV,GAAI,UAAUoV,EAAM,GAAG,GAE1BC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAME,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,cAAkB,MAChCA,EAAS,cAAmB,KAAK,eAE/B,OAAO,KAAK,IAAQ,KAAe,KAAK,MAAQ,OAClDA,EAAS,IAAS,cAAe,KAAK,IAAM,KAAK,IAAI,UAAU,EAAI,KAAK,KAEnEA,CACT,CACF,EACMxV,GAAN,MAAM6V,CAAI,CACR,OAAO,UAAUT,EAAO,CACtB,IAAIC,EAAI,IAAIQ,EACZ,OAAAR,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACtBA,EAAM,aACRC,EAAE,WAAaha,GAAoB2B,GAAeoY,EAAM,UAAU,GAEhEA,EAAM,UACRC,EAAE,QAAUha,GAAoB4B,GAASmY,EAAM,OAAO,GAEjDC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAME,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,OAAW,MACzBA,EAAS,OAAY,KAAK,QAExB,OAAO,KAAK,WAAe,MAC7BA,EAAS,WAAgB,KAAK,YAE5B,OAAO,KAAK,QAAY,MAC1BA,EAAS,QAAa,KAAK,SAEtBA,CACT,CACF,EAOMvV,GAAN,MAAM6V,CAAiB,CACrB,OAAO,UAAUV,EAAO,CACtB,IAAIC,EAAI,IAAIS,EACZ,OAAAT,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACtBA,EAAM,YACRC,EAAE,UAAY,SAASD,EAAM,UAAW,EAAE,GAErCC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAME,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,YAAgB,MAC9BA,EAAS,YAAiB,KAAK,aAE7B,OAAO,KAAK,UAAc,MAC5BA,EAAS,UAAe,KAAK,WAExBA,CACT,CACF,EACMtV,GAAN,MAAM6V,CAAyB,CAC7B,OAAO,UAAUX,EAAO,CACtB,IAAIC,EAAI,IAAIU,EACZ,OAAAV,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACtBA,EAAM,yBACRC,EAAE,uBAAyB7Z,GAAoB0B,EAAiBkY,EAAM,sBAAsB,GAEvFC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAME,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,KAAS,MACvBA,EAAS,KAAU,KAAK,MAEtB,OAAO,KAAK,uBAA2B,MACzCA,EAAS,uBAA4B,KAAK,wBAErCA,CACT,CACF,EACMrV,GAAN,MAAM6V,CAA0B,CAC9B,OAAO,UAAUZ,EAAO,CACtB,IAAIC,EAAI,IAAIW,EACZ,OAAAX,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACnBC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAME,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,GAAO,MACrBA,EAAS,GAAQ,KAAK,IAEjBA,CACT,CACF,EACMpV,GAAN,MAAM6V,CAA2B,CAC/B,OAAO,UAAUb,EAAO,CACtB,IAAIC,EAAI,IAAIY,EACZ,OAAAZ,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACnBC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAME,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,eAAmB,MACjCA,EAAS,eAAoB,KAAK,gBAE7BA,CACT,CACF,EACMnV,GAAN,MAAM6V,CAA4B,CAChC,OAAO,UAAUd,EAAO,CACtB,IAAIC,EAAI,IAAIa,EACZ,OAAAb,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACtBA,EAAM,QACRC,EAAE,MAAQD,EAAM,MAAM,IAAI9U,GAAY,SAAS,GAE1C+U,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAME,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,MAAU,KAAe,KAAK,QAAU,OACtDA,EAAS,MAAW,cAAe,KAAK,MAAQ,KAAK,MAAM,UAAU,EAAI,KAAK,OAEzEA,CACT,CACF,EACMlV,GAAN,MAAM6V,CAAY,CAChB,OAAO,UAAUf,EAAO,CACtB,IAAIC,EAAI,IAAIc,EACZ,OAAAd,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACtBA,EAAM,yBACRC,EAAE,uBAAyB7Z,GAAoB0B,EAAiBkY,EAAM,sBAAsB,GAEvFC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAME,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,GAAO,MACrBA,EAAS,GAAQ,KAAK,IAEpB,OAAO,KAAK,KAAS,MACvBA,EAAS,KAAU,KAAK,MAEtB,OAAO,KAAK,uBAA2B,MACzCA,EAAS,uBAA4B,KAAK,wBAErCA,CACT,CACF,EACMjV,GAAN,MAAM6V,CAA0B,CAC9B,OAAO,UAAUhB,EAAO,CACtB,IAAIC,EAAI,IAAIe,EACZ,OAAAf,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACtBA,EAAM,OACRC,EAAE,KAAO7Z,GAAoB2B,GAAoBiY,EAAM,IAAI,GAEzDA,EAAM,QACRC,EAAE,MAAQD,EAAM,MAAM,IAAI5U,GAAmB,SAAS,GAEpD4U,EAAM,WACRC,EAAE,SAAW,SAASD,EAAM,SAAU,EAAE,GAEtCA,EAAM,YACRC,EAAE,UAAY7Z,GAAoBsB,EAAWsY,EAAM,SAAS,GAE1DA,EAAM,OACRC,EAAE,KAAOD,EAAM,KAAK,IAAIpV,GAAI,SAAS,GAEhCqV,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAME,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,KAAS,MACvBA,EAAS,KAAU,KAAK,MAEtB,OAAO,KAAK,MAAU,KAAe,KAAK,QAAU,OACtDA,EAAS,MAAW,cAAe,KAAK,MAAQ,KAAK,MAAM,UAAU,EAAI,KAAK,OAE5E,OAAO,KAAK,SAAa,MAC3BA,EAAS,SAAc,KAAK,UAE1B,OAAO,KAAK,UAAc,MAC5BA,EAAS,UAAe,KAAK,WAE3B,OAAO,KAAK,aAAiB,MAC/BA,EAAS,aAAkB,KAAK,cAE9B,OAAO,KAAK,KAAS,KAAe,KAAK,OAAS,OACpDA,EAAS,KAAU,cAAe,KAAK,KAAO,KAAK,KAAK,UAAU,EAAI,KAAK,MAEtEA,CACT,CACF,EACMhV,GAAN,MAAM6V,CAAmB,CACvB,OAAO,UAAUjB,EAAO,CACtB,IAAIC,EAAI,IAAIgB,EACZ,OAAAhB,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACtBA,EAAM,QACRC,EAAE,MAAQ,SAASD,EAAM,MAAO,EAAE,GAEhCA,EAAM,WACRC,EAAE,SAAW,SAASD,EAAM,SAAU,EAAE,GAEtCA,EAAM,WACRC,EAAE,SAAW,SAASD,EAAM,SAAU,EAAE,GAEtCA,EAAM,mBACRC,EAAE,iBAAmBD,EAAM,iBAAiB,IAAInV,GAAiB,SAAS,GAErEoV,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAME,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,MAAU,MACxBA,EAAS,MAAW,KAAK,OAEvB,OAAO,KAAK,SAAa,MAC3BA,EAAS,SAAc,KAAK,UAE1B,OAAO,KAAK,SAAa,MAC3BA,EAAS,SAAc,KAAK,UAE1B,OAAO,KAAK,iBAAqB,KAAe,KAAK,mBAAqB,OAC5EA,EAAS,iBAAsB,cAAe,KAAK,iBAAmB,KAAK,iBAAiB,UAAU,EAAI,KAAK,kBAE1GA,CACT,CACF,EACM/U,GAAN,MAAM6V,CAAyB,CAC7B,OAAO,UAAUlB,EAAO,CACtB,IAAIC,EAAI,IAAIiB,EACZ,OAAAjB,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACtBA,EAAM,YACRC,EAAE,UAAYxV,EAAU,UAAUuV,EAAM,SAAS,GAE/CA,EAAM,yBACRC,EAAE,uBAAyB7Z,GAAoB0B,EAAiBkY,EAAM,sBAAsB,GAEvFC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAME,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,GAAO,MACrBA,EAAS,GAAQ,KAAK,IAEpB,OAAO,KAAK,UAAc,KAAe,KAAK,YAAc,OAC9DA,EAAS,UAAe,cAAe,KAAK,UAAY,KAAK,UAAU,UAAU,EAAI,KAAK,WAExF,OAAO,KAAK,KAAS,MACvBA,EAAS,KAAU,KAAK,MAEtB,OAAO,KAAK,uBAA2B,MACzCA,EAAS,uBAA4B,KAAK,wBAErCA,CACT,CACF,EACM9U,GAAN,MAAM6V,CAA0B,CAC9B,OAAO,UAAUnB,EAAO,CACtB,IAAIC,EAAI,IAAIkB,EACZ,OAAAlB,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACnBC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CAEV,MADiB,CAAC,CAEpB,CACF,EAOM3U,GAAN,MAAM6V,CAAc,CAClB,OAAO,UAAUpB,EAAO,CACtB,IAAIC,EAAI,IAAImB,EACZ,OAAAnB,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACtBA,EAAM,SACRC,EAAE,OAASD,EAAM,OAAO,IAAIxU,GAAe,SAAS,GAE/CyU,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAME,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,IAAQ,MACtBA,EAAS,IAAS,KAAK,KAErB,OAAO,KAAK,OAAW,KAAe,KAAK,SAAW,OACxDA,EAAS,OAAY,cAAe,KAAK,OAAS,KAAK,OAAO,UAAU,EAAI,KAAK,QAE5EA,CACT,CACF,EACM5U,GAAN,MAAM6V,CAAe,CACnB,OAAO,UAAUrB,EAAO,CACtB,IAAIC,EAAI,IAAIoB,EACZ,OAAApB,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACtBA,EAAM,WACRC,EAAE,SAAW5Z,GAAoByB,EAAiBkY,EAAM,QAAQ,GAE9DA,EAAM,cACRC,EAAE,YAAc5Z,GAAoB0B,GAAoBiY,EAAM,WAAW,GAEvEA,EAAM,WACRC,EAAE,SAAW5Z,GAAoBsB,EAAUqY,EAAM,QAAQ,GAEvDA,EAAM,YACRC,EAAE,UAAY5Z,GAAoBqB,EAAWsY,EAAM,SAAS,GAE1DA,EAAM,eACRC,EAAE,aAAeD,EAAM,aAAa,IAAI5U,GAAmB,SAAS,GAElE4U,EAAM,aACRC,EAAE,WAAavV,GAAW,UAAUsV,EAAM,UAAU,GAElDA,EAAM,mBACRC,EAAE,iBAAmB,SAASD,EAAM,iBAAkB,EAAE,GAEtDA,EAAM,WACRC,EAAE,SAAW,SAASD,EAAM,SAAU,EAAE,GAEtCA,EAAM,OACRC,EAAE,KAAOD,EAAM,KAAK,IAAIpV,GAAI,SAAS,GAEhCqV,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAME,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,SAAa,MAC3BA,EAAS,SAAc,KAAK,UAE1B,OAAO,KAAK,YAAgB,MAC9BA,EAAS,YAAiB,KAAK,aAE7B,OAAO,KAAK,SAAa,MAC3BA,EAAS,SAAc,KAAK,UAE1B,OAAO,KAAK,UAAc,MAC5BA,EAAS,UAAe,KAAK,WAE3B,OAAO,KAAK,aAAiB,KAAe,KAAK,eAAiB,OACpEA,EAAS,aAAkB,cAAe,KAAK,aAAe,KAAK,aAAa,UAAU,EAAI,KAAK,cAEjG,OAAO,KAAK,WAAe,KAAe,KAAK,aAAe,OAChEA,EAAS,WAAgB,cAAe,KAAK,WAAa,KAAK,WAAW,UAAU,EAAI,KAAK,YAE3F,OAAO,KAAK,gBAAoB,MAClCA,EAAS,gBAAqB,KAAK,iBAEjC,OAAO,KAAK,aAAiB,MAC/BA,EAAS,aAAkB,KAAK,cAE9B,OAAO,KAAK,iBAAqB,MACnCA,EAAS,iBAAsB,KAAK,kBAElC,OAAO,KAAK,SAAa,MAC3BA,EAAS,SAAc,KAAK,UAE1B,OAAO,KAAK,KAAS,KAAe,KAAK,OAAS,OACpDA,EAAS,KAAU,cAAe,KAAK,KAAO,KAAK,KAAK,UAAU,EAAI,KAAK,MAEtEA,CACT,CACF,EACM3U,GAAN,MAAM6V,CAAyB,CAC7B,OAAO,UAAUtB,EAAO,CACtB,IAAIC,EAAI,IAAIqB,EACZ,OAAArB,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACtBA,EAAM,WACRC,EAAE,SAAW,SAASD,EAAM,SAAU,EAAE,GAEtCA,EAAM,YACRC,EAAE,UAAY5Z,GAAoBqB,EAAWsY,EAAM,SAAS,GAEvDC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAME,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,IAAQ,MACtBA,EAAS,IAAS,KAAK,KAErB,OAAO,KAAK,SAAa,MAC3BA,EAAS,SAAc,KAAK,UAE1B,OAAO,KAAK,UAAc,MAC5BA,EAAS,UAAe,KAAK,WAExBA,CACT,CACF,EAOM1U,GAAN,MAAM6V,CAAgB,CACpB,OAAO,UAAUvB,EAAO,CACtB,IAAIC,EAAI,IAAIsB,EACZ,OAAAtB,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACtBA,EAAM,eACRC,EAAE,aAAe,IAAI,KAAKD,EAAM,YAAY,GAE1CA,EAAM,aACRC,EAAE,WAAa,IAAI,KAAKD,EAAM,UAAU,GAEnCC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAME,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,WAAe,MAC7BA,EAAS,WAAgB,KAAK,YAE5B,OAAO,KAAK,IAAQ,MACtBA,EAAS,IAAS,KAAK,KAErB,OAAO,KAAK,WAAe,MAC7BA,EAAS,WAAgB,KAAK,YAE5B,OAAO,KAAK,QAAY,MAC1BA,EAAS,QAAa,KAAK,SAEzB,OAAO,KAAK,aAAiB,KAAe,KAAK,eAAiB,OACpEA,EAAS,aAAkB,cAAe,KAAK,aAAe,KAAK,aAAa,UAAU,EAAI,KAAK,cAEjG,OAAO,KAAK,WAAe,KAAe,KAAK,aAAe,OAChEA,EAAS,WAAgB,cAAe,KAAK,WAAa,KAAK,WAAW,UAAU,EAAI,KAAK,YAExFA,CACT,CACF,EACMzU,GAAN,MAAM6V,CAAyB,CAC7B,OAAO,UAAUxB,EAAO,CACtB,IAAIC,EAAI,IAAIuB,EACZ,OAAAvB,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACtBA,EAAM,QACRC,EAAE,MAAQD,EAAM,MAAM,IAAItT,GAAK,SAAS,GAEnCuT,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAME,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,WAAe,MAC7BA,EAAS,WAAgB,KAAK,YAE5B,OAAO,KAAK,MAAU,KAAe,KAAK,QAAU,OACtDA,EAAS,MAAW,cAAe,KAAK,MAAQ,KAAK,MAAM,UAAU,EAAI,KAAK,OAEzEA,CACT,CACF,EACMxU,GAAN,MAAM6V,CAA0B,CAC9B,OAAO,UAAUzB,EAAO,CACtB,IAAIC,EAAI,IAAIwB,EACZ,OAAAxB,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACnBC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAME,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,GAAO,MACrBA,EAAS,GAAQ,KAAK,IAEjBA,CACT,CACF,EACMvU,GAAN,MAAM6V,CAAa,CACjB,OAAO,UAAU1B,EAAO,CACtB,IAAIC,EAAI,IAAIyB,EACZ,OAAAzB,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACtBA,EAAM,SACRC,EAAE,OAAS,IAAI,KAAKD,EAAM,MAAM,GAE9BA,EAAM,eACRC,EAAE,aAAe,IAAI,KAAKD,EAAM,YAAY,GAE1CA,EAAM,UACRC,EAAE,QAAU,IAAI,KAAKD,EAAM,OAAO,GAEhCA,EAAM,UACRC,EAAE,QAAU,IAAI,KAAKD,EAAM,OAAO,GAEhCA,EAAM,YACRC,EAAE,UAAY3Z,GAAoBoB,EAAWsY,EAAM,SAAS,GAE1DA,EAAM,cACRC,EAAE,YAAc,IAAI,KAAKD,EAAM,WAAW,GAExCA,EAAM,kBACRC,EAAE,gBAAkBjU,GAA4B,UAAUgU,EAAM,eAAe,GAE7EA,EAAM,kBACRC,EAAE,gBAAkB,SAASD,EAAM,gBAAiB,EAAE,GAEpDA,EAAM,kBACRC,EAAE,gBAAkB3Z,GAAoBoB,EAAWsY,EAAM,eAAe,GAEtEA,EAAM,oBACRC,EAAE,kBAAoB,IAAI,KAAKD,EAAM,iBAAiB,GAEpDA,EAAM,kBACRC,EAAE,gBAAkB,SAASD,EAAM,gBAAiB,EAAE,GAEpDA,EAAM,SACRC,EAAE,OAAS3Z,GAAoB2B,GAAoB+X,EAAM,MAAM,GAE7DA,EAAM,QACRC,EAAE,MAAQzU,GAAe,UAAUwU,EAAM,KAAK,GAE5CA,EAAM,UACRC,EAAE,QAAU,IAAI,KAAKD,EAAM,OAAO,GAEhCA,EAAM,SACRC,EAAE,OAAS3Z,GAAoB0B,GAAQgY,EAAM,MAAM,GAE9CC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAME,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,WAAe,MAC7BA,EAAS,WAAgB,KAAK,YAE5B,OAAO,KAAK,IAAQ,MACtBA,EAAS,IAAS,KAAK,KAErB,OAAO,KAAK,WAAe,MAC7BA,EAAS,WAAgB,KAAK,YAE5B,OAAO,KAAK,QAAY,MAC1BA,EAAS,QAAa,KAAK,SAEzB,OAAO,KAAK,OAAW,KAAe,KAAK,SAAW,OACxDA,EAAS,OAAY,cAAe,KAAK,OAAS,KAAK,OAAO,UAAU,EAAI,KAAK,QAE/E,OAAO,KAAK,aAAiB,KAAe,KAAK,eAAiB,OACpEA,EAAS,aAAkB,cAAe,KAAK,aAAe,KAAK,aAAa,UAAU,EAAI,KAAK,cAEjG,OAAO,KAAK,QAAY,KAAe,KAAK,UAAY,OAC1DA,EAAS,QAAa,cAAe,KAAK,QAAU,KAAK,QAAQ,UAAU,EAAI,KAAK,SAElF,OAAO,KAAK,QAAY,KAAe,KAAK,UAAY,OAC1DA,EAAS,QAAa,cAAe,KAAK,QAAU,KAAK,QAAQ,UAAU,EAAI,KAAK,SAElF,OAAO,KAAK,UAAc,MAC5BA,EAAS,UAAe,KAAK,WAE3B,OAAO,KAAK,YAAgB,KAAe,KAAK,cAAgB,OAClEA,EAAS,YAAiB,cAAe,KAAK,YAAc,KAAK,YAAY,UAAU,EAAI,KAAK,aAE9F,OAAO,KAAK,aAAiB,MAC/BA,EAAS,aAAkB,KAAK,cAE9B,OAAO,KAAK,YAAgB,MAC9BA,EAAS,YAAiB,KAAK,aAE7B,OAAO,KAAK,gBAAoB,KAAe,KAAK,kBAAoB,OAC1EA,EAAS,gBAAqB,cAAe,KAAK,gBAAkB,KAAK,gBAAgB,UAAU,EAAI,KAAK,iBAE1G,OAAO,KAAK,gBAAoB,MAClCA,EAAS,gBAAqB,KAAK,iBAEjC,OAAO,KAAK,gBAAoB,MAClCA,EAAS,gBAAqB,KAAK,iBAEjC,OAAO,KAAK,kBAAsB,KAAe,KAAK,oBAAsB,OAC9EA,EAAS,kBAAuB,cAAe,KAAK,kBAAoB,KAAK,kBAAkB,UAAU,EAAI,KAAK,mBAEhH,OAAO,KAAK,gBAAoB,MAClCA,EAAS,gBAAqB,KAAK,iBAEjC,OAAO,KAAK,OAAW,MACzBA,EAAS,OAAY,KAAK,QAExB,OAAO,KAAK,MAAU,KAAe,KAAK,QAAU,OACtDA,EAAS,MAAW,cAAe,KAAK,MAAQ,KAAK,MAAM,UAAU,EAAI,KAAK,OAE5E,OAAO,KAAK,eAAmB,MACjCA,EAAS,eAAoB,KAAK,gBAEhC,OAAO,KAAK,QAAY,KAAe,KAAK,UAAY,OAC1DA,EAAS,QAAa,cAAe,KAAK,QAAU,KAAK,QAAQ,UAAU,EAAI,KAAK,SAElF,OAAO,KAAK,OAAW,MACzBA,EAAS,OAAY,KAAK,QAExB,OAAO,KAAK,aAAiB,MAC/BA,EAAS,aAAkB,KAAK,cAE9B,OAAO,KAAK,YAAgB,MAC9BA,EAAS,YAAiB,KAAK,aAE1BA,CACT,CACF,EACMtU,GAAN,MAAM6V,CAAmB,CACvB,OAAO,UAAU3B,EAAO,CACtB,IAAIC,EAAI,IAAI0B,EACZ,OAAA1B,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACnBC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAME,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,WAAe,MAC7BA,EAAS,WAAgB,KAAK,YAE5B,OAAO,KAAK,IAAQ,MACtBA,EAAS,IAAS,KAAK,KAElBA,CACT,CACF,EACMrU,GAAN,MAAM6V,CAAmB,CACvB,OAAO,UAAU5B,EAAO,CACtB,IAAIC,EAAI,IAAI2B,EACZ,OAAA3B,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACtBA,EAAM,WACRC,EAAE,SAAW,SAASD,EAAM,SAAU,EAAE,GAEtCA,EAAM,YACRC,EAAE,UAAY,IAAI,KAAKD,EAAM,SAAS,GAEjCC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAME,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,WAAe,MAC7BA,EAAS,WAAgB,KAAK,YAE5B,OAAO,KAAK,WAAe,MAC7BA,EAAS,WAAgB,KAAK,YAE5B,OAAO,KAAK,QAAY,MAC1BA,EAAS,QAAa,KAAK,SAEzB,OAAO,KAAK,IAAQ,MACtBA,EAAS,IAAS,KAAK,KAErB,OAAO,KAAK,SAAa,MAC3BA,EAAS,SAAc,KAAK,UAE1B,OAAO,KAAK,UAAc,KAAe,KAAK,YAAc,OAC9DA,EAAS,UAAe,cAAe,KAAK,UAAY,KAAK,UAAU,UAAU,EAAI,KAAK,WAErFA,CACT,CACF,EACMpU,GAAN,MAAM6V,CAA4B,CAChC,OAAO,UAAU7B,EAAO,CACtB,IAAIC,EAAI,IAAI4B,EACZ,OAAA5B,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACnBC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAME,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,QAAY,MAC1BA,EAAS,QAAa,KAAK,SAEzB,OAAO,KAAK,KAAS,MACvBA,EAAS,KAAU,KAAK,MAEtB,OAAO,KAAK,MAAU,MACxBA,EAAS,MAAW,KAAK,OAEvB,OAAO,KAAK,IAAQ,MACtBA,EAAS,IAAS,KAAK,KAErB,OAAO,KAAK,QAAY,MAC1BA,EAAS,QAAa,KAAK,SAEtBA,CACT,CACF,EACMnU,GAAN,MAAM6V,CAA0B,CAC9B,OAAO,UAAU9B,EAAO,CACtB,IAAIC,EAAI,IAAI6B,EACZ,OAAA7B,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACnBC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAME,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,WAAe,MAC7BA,EAAS,WAAgB,KAAK,YAE5B,OAAO,KAAK,IAAQ,MACtBA,EAAS,IAAS,KAAK,KAErB,OAAO,KAAK,WAAe,MAC7BA,EAAS,WAAgB,KAAK,YAE5B,OAAO,KAAK,QAAY,MAC1BA,EAAS,QAAa,KAAK,SAEtBA,CACT,CACF,EACMlU,GAAN,MAAM6V,CAA0B,CAC9B,OAAO,UAAU/B,EAAO,CACtB,IAAIC,EAAI,IAAI8B,EACZ,OAAA9B,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACtBA,EAAM,SACRC,EAAE,OAAS,IAAI,KAAKD,EAAM,MAAM,GAE3BC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAME,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,WAAe,MAC7BA,EAAS,WAAgB,KAAK,YAE5B,OAAO,KAAK,IAAQ,MACtBA,EAAS,IAAS,KAAK,KAErB,OAAO,KAAK,WAAe,MAC7BA,EAAS,WAAgB,KAAK,YAE5B,OAAO,KAAK,QAAY,MAC1BA,EAAS,QAAa,KAAK,SAEzB,OAAO,KAAK,OAAW,KAAe,KAAK,SAAW,OACxDA,EAAS,OAAY,cAAe,KAAK,OAAS,KAAK,OAAO,UAAU,EAAI,KAAK,QAE5EA,CACT,CACF,EACMjU,GAAN,MAAM6V,CAA2B,CAC/B,OAAO,UAAUhC,EAAO,CACtB,IAAIC,EAAI,IAAI+B,EACZ,OAAA/B,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACtBA,EAAM,UACRC,EAAE,QAAU7T,GAAgC,UAAU4T,EAAM,OAAO,GAE9DC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAME,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,QAAY,KAAe,KAAK,UAAY,OAC1DA,EAAS,QAAa,cAAe,KAAK,QAAU,KAAK,QAAQ,UAAU,EAAI,KAAK,SAE/EA,CACT,CACF,EACMhU,GAAN,MAAM6V,CAAgC,CACpC,OAAO,UAAUjC,EAAO,CACtB,IAAIC,EAAI,IAAIgC,EACZ,OAAAhC,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACtBA,EAAM,SACRC,EAAE,OAAS3Z,GAAoB2B,GAAoB+X,EAAM,MAAM,GAE7DA,EAAM,iBACRC,EAAE,eAAiB,IAAI,KAAKD,EAAM,cAAc,GAE9CA,EAAM,iBACRC,EAAE,eAAiB,IAAI,KAAKD,EAAM,cAAc,GAE9CA,EAAM,cACRC,EAAE,YAAcD,EAAM,YAAY,IAAIkC,GAAK5b,GAAoBoB,EAAWwa,CAAC,CAAC,GAEvEjC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAME,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,KAAS,MACvBA,EAAS,KAAU,KAAK,MAEtB,OAAO,KAAK,WAAe,MAC7BA,EAAS,WAAgB,KAAK,YAE5B,OAAO,KAAK,WAAe,MAC7BA,EAAS,WAAgB,KAAK,YAE5B,OAAO,KAAK,WAAe,MAC7BA,EAAS,WAAgB,KAAK,YAE5B,OAAO,KAAK,OAAW,MACzBA,EAAS,OAAY,KAAK,QAExB,OAAO,KAAK,eAAmB,KAAe,KAAK,iBAAmB,OACxEA,EAAS,eAAoB,cAAe,KAAK,eAAiB,KAAK,eAAe,UAAU,EAAI,KAAK,gBAEvG,OAAO,KAAK,eAAmB,KAAe,KAAK,iBAAmB,OACxEA,EAAS,eAAoB,cAAe,KAAK,eAAiB,KAAK,eAAe,UAAU,EAAI,KAAK,gBAEvG,OAAO,KAAK,YAAgB,MAC9BA,EAAS,YAAiB,KAAK,aAE1BA,CACT,CACF,EACM/T,GAAN,MAAM8V,CAAgC,CACpC,OAAO,UAAUnC,EAAO,CACtB,IAAIC,EAAI,IAAIkC,EACZ,OAAAlC,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACnBC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAME,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,KAAS,MACvBA,EAAS,KAAU,KAAK,MAEtB,OAAO,KAAK,WAAe,MAC7BA,EAAS,WAAgB,KAAK,YAE5B,OAAO,KAAK,WAAe,MAC7BA,EAAS,WAAgB,KAAK,YAEzBA,CACT,CACF,EACM9T,GAAN,MAAM8V,CAAuB,CAC3B,OAAO,UAAUpC,EAAO,CACtB,IAAIC,EAAI,IAAImC,EACZ,OAAAnC,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACtBA,EAAM,mBACRC,EAAE,iBAAmBhT,GAA6B,UAAU+S,EAAM,gBAAgB,GAE7EC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAME,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,WAAe,MAC7BA,EAAS,WAAgB,KAAK,YAE5B,OAAO,KAAK,IAAQ,MACtBA,EAAS,IAAS,KAAK,KAErB,OAAO,KAAK,WAAe,MAC7BA,EAAS,WAAgB,KAAK,YAE5B,OAAO,KAAK,QAAY,MAC1BA,EAAS,QAAa,KAAK,SAEzB,OAAO,KAAK,iBAAqB,KAAe,KAAK,mBAAqB,OAC5EA,EAAS,iBAAsB,cAAe,KAAK,iBAAmB,KAAK,iBAAiB,UAAU,EAAI,KAAK,kBAE1GA,CACT,CACF,EACM7T,GAAN,MAAM8V,CAAwB,CAC5B,OAAO,UAAUrC,EAAO,CACtB,IAAIC,EAAI,IAAIoC,EACZ,OAAApC,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACtBA,EAAM,OACRC,EAAE,KAAOpU,GAAa,UAAUmU,EAAM,IAAI,GAErCC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAME,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,KAAS,KAAe,KAAK,OAAS,OACpDA,EAAS,KAAU,cAAe,KAAK,KAAO,KAAK,KAAK,UAAU,EAAI,KAAK,MAEtEA,CACT,CACF,EACM5T,GAAN,MAAM8V,CAA6B,CACjC,OAAO,UAAUtC,EAAO,CACtB,IAAIC,EAAI,IAAIqC,EACZ,OAAArC,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACtBA,EAAM,mBACRC,EAAE,iBAAmBD,EAAM,iBAAiB,IAAIrT,GAAgC,SAAS,GAEvFqT,EAAM,mBACRC,EAAE,iBAAmBhT,GAA6B,UAAU+S,EAAM,gBAAgB,GAE7EC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAME,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,iBAAqB,KAAe,KAAK,mBAAqB,OAC5EA,EAAS,iBAAsB,cAAe,KAAK,iBAAmB,KAAK,iBAAiB,UAAU,EAAI,KAAK,kBAE7G,OAAO,KAAK,iBAAqB,KAAe,KAAK,mBAAqB,OAC5EA,EAAS,iBAAsB,cAAe,KAAK,iBAAmB,KAAK,iBAAiB,UAAU,EAAI,KAAK,kBAE1GA,CACT,CACF,EACM3T,GAAN,MAAM8V,CAA8B,CAClC,OAAO,UAAUvC,EAAO,CACtB,IAAIC,EAAI,IAAIsC,EACZ,OAAAtC,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACtBA,EAAM,gBACRC,EAAE,cAAgBD,EAAM,cAAc,IAAInU,GAAa,SAAS,GAE3DoU,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAME,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,cAAkB,KAAe,KAAK,gBAAkB,OACtEA,EAAS,cAAmB,cAAe,KAAK,cAAgB,KAAK,cAAc,UAAU,EAAI,KAAK,eAEjGA,CACT,CACF,EACM1T,GAAN,MAAM8V,CAAK,CACT,OAAO,UAAUxC,EAAO,CACtB,IAAIC,EAAI,IAAIuC,EACZ,OAAAvC,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACtBA,EAAM,eACRC,EAAE,aAAe,IAAI,KAAKD,EAAM,YAAY,GAEvCC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAME,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,IAAQ,MACtBA,EAAS,IAAS,KAAK,KAErB,OAAO,KAAK,WAAe,MAC7BA,EAAS,WAAgB,KAAK,YAE5B,OAAO,KAAK,QAAY,MAC1BA,EAAS,QAAa,KAAK,SAEzB,OAAO,KAAK,aAAiB,KAAe,KAAK,eAAiB,OACpEA,EAAS,aAAkB,cAAe,KAAK,aAAe,KAAK,aAAa,UAAU,EAAI,KAAK,cAE9FA,CACT,CACF,EACMzT,GAAN,MAAM8V,CAAgC,CACpC,OAAO,UAAUzC,EAAO,CACtB,IAAIC,EAAI,IAAIwC,EACZ,OAAAxC,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACnBC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAME,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,WAAe,MAC7BA,EAAS,WAAgB,KAAK,YAE5B,OAAO,KAAK,IAAQ,MACtBA,EAAS,IAAS,KAAK,KAErB,OAAO,KAAK,WAAe,MAC7BA,EAAS,WAAgB,KAAK,YAE5B,OAAO,KAAK,QAAY,MAC1BA,EAAS,QAAa,KAAK,SAEtBA,CACT,CACF,EACMxT,GAAN,MAAM8V,CAAyB,CAC7B,OAAO,UAAU1C,EAAO,CACtB,IAAIC,EAAI,IAAIyC,EACZ,OAAAzC,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACtBA,EAAM,UACRC,EAAE,QAAU5T,GAAgC,UAAU2T,EAAM,OAAO,GAEjEA,EAAM,gBACRC,EAAE,cAAgB1V,EAAoB,UAAUyV,EAAM,aAAa,GAE9DC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAME,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,QAAY,KAAe,KAAK,UAAY,OAC1DA,EAAS,QAAa,cAAe,KAAK,QAAU,KAAK,QAAQ,UAAU,EAAI,KAAK,SAElF,OAAO,KAAK,cAAkB,KAAe,KAAK,gBAAkB,OACtEA,EAAS,cAAmB,cAAe,KAAK,cAAgB,KAAK,cAAc,UAAU,EAAI,KAAK,eAEpG,OAAO,KAAK,WAAe,MAC7BA,EAAS,WAAgB,KAAK,YAEzBA,CACT,CACF,EACMvT,GAAN,MAAM8V,CAA0B,CAC9B,OAAO,UAAU3C,EAAO,CACtB,IAAIC,EAAI,IAAI0C,EACZ,OAAA1C,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACtBA,EAAM,QACRC,EAAE,MAAQD,EAAM,MAAM,IAAInU,GAAa,SAAS,GAE9CmU,EAAM,iBACRC,EAAE,eAAiBzV,EAAsB,UAAUwV,EAAM,cAAc,GAElEC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAME,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,MAAU,KAAe,KAAK,QAAU,OACtDA,EAAS,MAAW,cAAe,KAAK,MAAQ,KAAK,MAAM,UAAU,EAAI,KAAK,OAE5E,OAAO,KAAK,eAAmB,KAAe,KAAK,iBAAmB,OACxEA,EAAS,eAAoB,cAAe,KAAK,eAAiB,KAAK,eAAe,UAAU,EAAI,KAAK,gBAEpGA,CACT,CACF,EACMtT,GAAN,MAAM8V,CAAyB,CAC7B,OAAO,UAAU5C,EAAO,CACtB,IAAIC,EAAI,IAAI2C,EACZ,OAAA3C,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACtBA,EAAM,UACRC,EAAE,QAAU7T,GAAgC,UAAU4T,EAAM,OAAO,GAEjEA,EAAM,gBACRC,EAAE,cAAgB1V,EAAoB,UAAUyV,EAAM,aAAa,GAEjEA,EAAM,mBACRC,EAAE,iBAAmBhT,GAA6B,UAAU+S,EAAM,gBAAgB,GAE7EC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAME,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,QAAY,KAAe,KAAK,UAAY,OAC1DA,EAAS,QAAa,cAAe,KAAK,QAAU,KAAK,QAAQ,UAAU,EAAI,KAAK,SAElF,OAAO,KAAK,cAAkB,KAAe,KAAK,gBAAkB,OACtEA,EAAS,cAAmB,cAAe,KAAK,cAAgB,KAAK,cAAc,UAAU,EAAI,KAAK,eAEpG,OAAO,KAAK,iBAAqB,KAAe,KAAK,mBAAqB,OAC5EA,EAAS,iBAAsB,cAAe,KAAK,iBAAmB,KAAK,iBAAiB,UAAU,EAAI,KAAK,kBAE1GA,CACT,CACF,EACMrT,GAAN,MAAM8V,CAA0B,CAC9B,OAAO,UAAU7C,EAAO,CACtB,IAAIC,EAAI,IAAI4C,EACZ,OAAA5C,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACtBA,EAAM,gBACRC,EAAE,cAAgBD,EAAM,cAAc,IAAInU,GAAa,SAAS,GAE9DmU,EAAM,iBACRC,EAAE,eAAiBzV,EAAsB,UAAUwV,EAAM,cAAc,GAElEC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAME,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,cAAkB,KAAe,KAAK,gBAAkB,OACtEA,EAAS,cAAmB,cAAe,KAAK,cAAgB,KAAK,cAAc,UAAU,EAAI,KAAK,eAEpG,OAAO,KAAK,eAAmB,KAAe,KAAK,iBAAmB,OACxEA,EAAS,eAAoB,cAAe,KAAK,eAAiB,KAAK,eAAe,UAAU,EAAI,KAAK,gBAEpGA,CACT,CACF,EACMpT,GAAN,MAAM8V,CAAsC,CAC1C,OAAO,UAAU9C,EAAO,CACtB,IAAIC,EAAI,IAAI6C,EACZ,OAAA7C,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACnBC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAME,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,eAAmB,MACjCA,EAAS,eAAoB,KAAK,gBAEhC,OAAO,KAAK,YAAgB,MAC9BA,EAAS,YAAiB,KAAK,aAE1BA,CACT,CACF,EACMnT,GAAN,MAAM8V,CAA6B,CACjC,OAAO,UAAU/C,EAAO,CACtB,IAAIC,EAAI,IAAI8C,EACZ,OAAA9C,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACnBC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAME,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,MAAU,MACxBA,EAAS,MAAW,KAAK,OAEvB,OAAO,KAAK,eAAmB,MACjCA,EAAS,eAAoB,KAAK,gBAE7BA,CACT,CACF,EACMlT,GAAN,MAAM8V,CAA4B,CAChC,OAAO,UAAUhD,EAAO,CACtB,IAAIC,EAAI,IAAI+C,EACZ,OAAA/C,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACnBC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAME,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,WAAe,MAC7BA,EAAS,WAAgB,KAAK,YAE5B,OAAO,KAAK,IAAQ,MACtBA,EAAS,IAAS,KAAK,KAErB,OAAO,KAAK,WAAe,MAC7BA,EAAS,WAAgB,KAAK,YAE5B,OAAO,KAAK,QAAY,MAC1BA,EAAS,QAAa,KAAK,SAEtBA,CACT,CACF,EACMjT,GAAN,MAAM8V,CAA0B,CAC9B,OAAO,UAAUjD,EAAO,CACtB,IAAIC,EAAI,IAAIgD,EACZ,OAAAhD,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACtBA,EAAM,eACRC,EAAE,aAAejT,GAAsC,UAAUgT,EAAM,YAAY,GAEjFA,EAAM,YACRC,EAAE,UAAYxV,EAAU,UAAUuV,EAAM,SAAS,GAE5CC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAME,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,aAAiB,KAAe,KAAK,eAAiB,OACpEA,EAAS,aAAkB,cAAe,KAAK,aAAe,KAAK,aAAa,UAAU,EAAI,KAAK,cAEjG,OAAO,KAAK,UAAc,KAAe,KAAK,YAAc,OAC9DA,EAAS,UAAe,cAAe,KAAK,UAAY,KAAK,UAAU,UAAU,EAAI,KAAK,WAErFA,CACT,CACF,EACMhT,GAAN,MAAM8V,CAA2B,CAC/B,OAAO,UAAUlD,EAAO,CACtB,IAAIC,EAAI,IAAIiD,EACZ,OAAAjD,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACnBC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CAEV,MADiB,CAAC,CAEpB,CACF,EAOM7S,GAAN,MAAM8V,CAAgB,CACpB,OAAO,UAAUnD,EAAO,CACtB,IAAIC,EAAI,IAAIkD,EACZ,OAAAlD,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACtBA,EAAM,OACRC,EAAE,KAAO1Z,GAAoB2B,EAAc8X,EAAM,IAAI,GAEnDA,EAAM,QACRC,EAAE,MAAQ,SAASD,EAAM,MAAO,EAAE,GAEhCA,EAAM,cACRC,EAAE,YAAc,SAASD,EAAM,YAAa,EAAE,GAEzCC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAME,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,KAAS,MACvBA,EAAS,KAAU,KAAK,MAEtB,OAAO,KAAK,MAAU,MACxBA,EAAS,MAAW,KAAK,OAEvB,OAAO,KAAK,YAAgB,MAC9BA,EAAS,YAAiB,KAAK,aAE7B,OAAO,KAAK,YAAgB,MAC9BA,EAAS,YAAiB,KAAK,aAE7B,OAAO,KAAK,YAAgB,MAC9BA,EAAS,YAAiB,KAAK,aAE1BA,CACT,CACF,EAqGM9S,GAAN,MAAM8V,CAAc,CAClB,OAAO,UAAUpD,EAAO,CACtB,IAAIC,EAAI,IAAImD,EACZ,OAAAnD,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACtBA,EAAM,SACRC,EAAE,OAASD,EAAM,OAAO,IAAIzS,GAA+B,SAAS,GAE/D0S,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAME,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,SAAa,MAC3BA,EAAS,SAAc,KAAK,UAE1B,OAAO,KAAK,SAAa,MAC3BA,EAAS,SAAc,KAAK,UAE1B,OAAO,KAAK,OAAW,KAAe,KAAK,SAAW,OACxDA,EAAS,OAAY,cAAe,KAAK,OAAS,KAAK,OAAO,UAAU,EAAI,KAAK,QAE5EA,CACT,CACF,EA0LM7S,GAAN,MAAM8V,CAA+B,CACnC,OAAO,UAAUrD,EAAO,CACtB,IAAIC,EAAI,IAAIoD,EACZ,OAAApD,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACtBA,EAAM,YACRC,EAAE,UAAYzZ,GAAoBkB,EAAWsY,EAAM,SAAS,GAE1DA,EAAM,iBACRC,EAAE,eAAiB,SAASD,EAAM,eAAgB,EAAE,GAElDA,EAAM,eACRC,EAAE,aAAe,SAASD,EAAM,aAAc,EAAE,GAE9CA,EAAM,WACRC,EAAE,SAAW,SAASD,EAAM,SAAU,EAAE,GAEnCC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAME,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,UAAc,MAC5BA,EAAS,UAAe,KAAK,WAE3B,OAAO,KAAK,eAAmB,MACjCA,EAAS,eAAoB,KAAK,gBAEhC,OAAO,KAAK,aAAiB,MAC/BA,EAAS,aAAkB,KAAK,cAE9B,OAAO,KAAK,SAAa,MAC3BA,EAAS,SAAc,KAAK,UAEvBA,CACT,CACF,EA0CM5S,GAAN,MAAM8V,CAAS,CACb,OAAO,UAAUtD,EAAO,CACtB,IAAIC,EAAI,IAAIqD,EACZ,OAAArD,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACtBA,EAAM,OACRC,EAAE,KAAO,SAASD,EAAM,KAAM,EAAE,GAE9BA,EAAM,UACRC,EAAE,QAAU,IAAI,KAAKD,EAAM,OAAO,GAEhCA,EAAM,WACRC,EAAE,SAAWxZ,GAAoBkB,EAAUqY,EAAM,QAAQ,GAEvDA,EAAM,SACRC,EAAE,OAAS,IAAI,KAAKD,EAAM,MAAM,GAE9BA,EAAM,YACRC,EAAE,UAAY,IAAI,KAAKD,EAAM,SAAS,GAEpCA,EAAM,WACRC,EAAE,SAAW,IAAI,KAAKD,EAAM,QAAQ,GAElCA,EAAM,WACRC,EAAE,SAAW,IAAI,KAAKD,EAAM,QAAQ,GAElCA,EAAM,cACRC,EAAE,YAAc,SAASD,EAAM,YAAa,EAAE,GAE5CA,EAAM,MACRC,EAAE,IAAM,IAAI,KAAKD,EAAM,GAAG,GAExBA,EAAM,2BACRC,EAAE,yBAA2BxZ,GAAoB0B,GAA4B6X,EAAM,wBAAwB,GAEtGC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAME,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,WAAe,MAC7BA,EAAS,WAAgB,KAAK,YAE5B,OAAO,KAAK,KAAS,MACvBA,EAAS,KAAU,KAAK,MAEtB,OAAO,KAAK,QAAY,KAAe,KAAK,UAAY,OAC1DA,EAAS,QAAa,cAAe,KAAK,QAAU,KAAK,QAAQ,UAAU,EAAI,KAAK,SAElF,OAAO,KAAK,eAAmB,MACjCA,EAAS,eAAoB,KAAK,gBAEhC,OAAO,KAAK,SAAa,MAC3BA,EAAS,SAAc,KAAK,UAE1B,OAAO,KAAK,OAAW,KAAe,KAAK,SAAW,OACxDA,EAAS,OAAY,cAAe,KAAK,OAAS,KAAK,OAAO,UAAU,EAAI,KAAK,QAE/E,OAAO,KAAK,UAAc,KAAe,KAAK,YAAc,OAC9DA,EAAS,UAAe,cAAe,KAAK,UAAY,KAAK,UAAU,UAAU,EAAI,KAAK,WAExF,OAAO,KAAK,SAAa,KAAe,KAAK,WAAa,OAC5DA,EAAS,SAAc,cAAe,KAAK,SAAW,KAAK,SAAS,UAAU,EAAI,KAAK,UAErF,OAAO,KAAK,SAAa,KAAe,KAAK,WAAa,OAC5DA,EAAS,SAAc,cAAe,KAAK,SAAW,KAAK,SAAS,UAAU,EAAI,KAAK,UAErF,OAAO,KAAK,OAAW,MACzBA,EAAS,OAAY,KAAK,QAExB,OAAO,KAAK,YAAgB,MAC9BA,EAAS,YAAiB,KAAK,aAE7B,OAAO,KAAK,UAAc,MAC5BA,EAAS,UAAe,KAAK,WAE3B,OAAO,KAAK,cAAkB,MAChCA,EAAS,cAAmB,KAAK,eAE/B,OAAO,KAAK,IAAQ,KAAe,KAAK,MAAQ,OAClDA,EAAS,IAAS,cAAe,KAAK,IAAM,KAAK,IAAI,UAAU,EAAI,KAAK,KAEtE,OAAO,KAAK,yBAA6B,MAC3CA,EAAS,yBAA8B,KAAK,0BAEvCA,CACT,CACF,EAoHM3S,GAAN,MAAM8V,CAAoC,CACxC,OAAO,UAAUvD,EAAO,CACtB,IAAIC,EAAI,IAAIsD,EACZ,OAAAtD,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACnBC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAME,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,WAAe,MAC7BA,EAAS,WAAgB,KAAK,YAEzBA,CACT,CACF,EACM1S,GAAN,MAAM8V,CAAqC,CACzC,OAAO,UAAUxD,EAAO,CACtB,IAAIC,EAAI,IAAIuD,EACZ,OAAAvD,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACtBA,EAAM,WACRC,EAAE,SAAWxZ,GAAoBkB,EAAUqY,EAAM,QAAQ,GAEpDC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAME,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,SAAa,MAC3BA,EAAS,SAAc,KAAK,UAEvBA,CACT,CACF,EACMzS,GAAN,MAAM8V,CAAyB,CAC7B,OAAO,UAAUzD,EAAO,CACtB,IAAIC,EAAI,IAAIwD,EACZ,OAAAxD,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACnBC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAME,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,YAAgB,MAC9BA,EAAS,YAAiB,KAAK,aAE1BA,CACT,CACF,EACMxS,GAAN,MAAM8V,CAA0B,CAC9B,OAAO,UAAU1D,EAAO,CACtB,IAAIC,EAAI,IAAIyD,EACZ,OAAAzD,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACtBA,EAAM,YACRC,EAAE,UAAY,OAAO,KAAKD,EAAM,SAAS,EAAE,OAAO,CAAC2D,EAAKC,KACtDD,EAAIC,CAAC,EAAIpW,GAAS,UAAUwS,EAAM,UAAU4D,CAAC,CAAC,EACvCD,GACN,CAAC,CAAC,GAEA1D,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAME,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,UAAc,KAAe,KAAK,YAAc,OAC9DA,EAAS,UAAe,cAAe,KAAK,UAAY,KAAK,UAAU,UAAU,EAAI,KAAK,WAErFA,CACT,CACF,EACMvS,GAAN,MAAMgW,CAAqB,CACzB,OAAO,UAAU7D,EAAO,CACtB,IAAIC,EAAI,IAAI4D,EACZ,OAAA5D,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACtBA,EAAM,gBACRC,EAAE,cAAgB1V,EAAoB,UAAUyV,EAAM,aAAa,GAE9DC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAME,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,cAAkB,KAAe,KAAK,gBAAkB,OACtEA,EAAS,cAAmB,cAAe,KAAK,cAAgB,KAAK,cAAc,UAAU,EAAI,KAAK,eAEjGA,CACT,CACF,EACMtS,GAAN,MAAMgW,CAAsB,CAC1B,OAAO,UAAU9D,EAAO,CACtB,IAAIC,EAAI,IAAI6D,EACZ,OAAA7D,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACtBA,EAAM,YACRC,EAAE,UAAYD,EAAM,UAAU,IAAIxS,GAAS,SAAS,GAElDwS,EAAM,iBACRC,EAAE,eAAiBzV,EAAsB,UAAUwV,EAAM,cAAc,GAElEC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAME,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,UAAc,KAAe,KAAK,YAAc,OAC9DA,EAAS,UAAe,cAAe,KAAK,UAAY,KAAK,UAAU,UAAU,EAAI,KAAK,WAExF,OAAO,KAAK,eAAmB,KAAe,KAAK,iBAAmB,OACxEA,EAAS,eAAoB,cAAe,KAAK,eAAiB,KAAK,eAAe,UAAU,EAAI,KAAK,gBAEpGA,CACT,CACF,EAkEMrS,GAAN,MAAMgW,CAA4B,CAChC,OAAO,UAAU/D,EAAO,CACtB,IAAIC,EAAI,IAAI8D,EACZ,OAAA9D,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACnBC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAME,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,WAAe,MAC7BA,EAAS,WAAgB,KAAK,YAEzBA,CACT,CACF,EAwFMpS,GAAN,MAAMgW,CAAgB,CACpB,OAAO,UAAUhE,EAAO,CACtB,IAAIC,EAAI,IAAI+D,EACZ,OAAA/D,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACtBA,EAAM,uBACRC,EAAE,qBAAuB,SAASD,EAAM,qBAAsB,EAAE,GAE9DA,EAAM,oBACRC,EAAE,kBAAoB,SAASD,EAAM,kBAAmB,EAAE,GAExDA,EAAM,WACRC,EAAE,SAAWvZ,GAAoBiB,EAAUqY,EAAM,QAAQ,GAEpDC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAME,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,WAAe,MAC7BA,EAAS,WAAgB,KAAK,YAE5B,OAAO,KAAK,qBAAyB,MACvCA,EAAS,qBAA0B,KAAK,sBAEtC,OAAO,KAAK,kBAAsB,MACpCA,EAAS,kBAAuB,KAAK,mBAEnC,OAAO,KAAK,SAAa,MAC3BA,EAAS,SAAc,KAAK,UAEvBA,CACT,CACF,EACMnS,GAAN,MAAMgW,CAAiC,CACrC,OAAO,UAAUjE,EAAO,CACtB,IAAIC,EAAI,IAAIgE,EACZ,OAAAhE,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACtBA,EAAM,cACRC,EAAE,YAAc,IAAI,KAAKD,EAAM,WAAW,GAExCA,EAAM,YACRC,EAAE,UAAY,IAAI,KAAKD,EAAM,SAAS,GAEjCC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAME,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,YAAgB,MAC9BA,EAAS,YAAiB,KAAK,aAE7B,OAAO,KAAK,WAAe,MAC7BA,EAAS,WAAgB,KAAK,YAE5B,OAAO,KAAK,YAAgB,KAAe,KAAK,cAAgB,OAClEA,EAAS,YAAiB,cAAe,KAAK,YAAc,KAAK,YAAY,UAAU,EAAI,KAAK,aAE9F,OAAO,KAAK,UAAc,KAAe,KAAK,YAAc,OAC9DA,EAAS,UAAe,cAAe,KAAK,UAAY,KAAK,UAAU,UAAU,EAAI,KAAK,WAErFA,CACT,CACF,EACMlS,GAAN,MAAMgW,CAAkC,CACtC,OAAO,UAAUlE,EAAO,CACtB,IAAIC,EAAI,IAAIiE,EACZ,OAAAjE,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACtBA,EAAM,oBACRC,EAAE,kBAAoBD,EAAM,kBAAkB,IAAIhS,GAAgB,SAAS,GAEtEiS,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAME,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,kBAAsB,KAAe,KAAK,oBAAsB,OAC9EA,EAAS,kBAAuB,cAAe,KAAK,kBAAoB,KAAK,kBAAkB,UAAU,EAAI,KAAK,mBAE7GA,CACT,CACF,EAOMjS,GAAN,MAAMgW,CAAY,CAChB,OAAO,UAAUnE,EAAO,CACtB,IAAIC,EAAI,IAAIkE,EACZ,OAAAlE,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACnBC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAME,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,GAAO,MACrBA,EAAS,GAAQ,KAAK,IAEpB,OAAO,KAAK,kBAAsB,MACpCA,EAAS,kBAAuB,KAAK,mBAEnC,OAAO,KAAK,SAAa,MAC3BA,EAAS,SAAc,KAAK,UAE1B,OAAO,KAAK,QAAY,MAC1BA,EAAS,QAAa,KAAK,SAEzB,OAAO,KAAK,SAAa,MAC3BA,EAAS,SAAc,KAAK,UAE1B,OAAO,KAAK,cAAkB,MAChCA,EAAS,cAAmB,KAAK,eAE/B,OAAO,KAAK,MAAU,MACxBA,EAAS,MAAW,KAAK,OAEvB,OAAO,KAAK,mBAAuB,MACrCA,EAAS,mBAAwB,KAAK,oBAEjCA,CACT,CACF,EACMhS,GAAN,MAAMgW,CAAmC,CACvC,OAAO,UAAUpE,EAAO,CACtB,IAAIC,EAAI,IAAImE,EACZ,OAAAnE,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACnBC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAME,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,WAAe,MAC7BA,EAAS,WAAgB,KAAK,YAE5B,OAAO,KAAK,YAAgB,MAC9BA,EAAS,YAAiB,KAAK,aAE1BA,CACT,CACF,EACM/R,GAAN,MAAMgW,CAAyB,CAC7B,OAAO,UAAUrE,EAAO,CACtB,IAAIC,EAAI,IAAIoE,EACZ,OAAApE,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACnBC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAME,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,WAAe,MAC7BA,EAAS,WAAgB,KAAK,YAE5B,OAAO,KAAK,cAAkB,MAChCA,EAAS,cAAmB,KAAK,eAE5BA,CACT,CACF,EACM9R,GAAN,MAAMgW,CAAwB,CAC5B,OAAO,UAAUtE,EAAO,CACtB,IAAIC,EAAI,IAAIqE,EACZ,OAAArE,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACnBC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAME,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,WAAe,MAC7BA,EAAS,WAAgB,KAAK,YAEzBA,CACT,CACF,EACM7R,GAAN,MAAMgW,CAAyB,CAC7B,OAAO,UAAUvE,EAAO,CACtB,IAAIC,EAAI,IAAIsE,EACZ,OAAAtE,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACtBA,EAAM,cACRC,EAAE,YAAcD,EAAM,YAAY,IAAI7R,GAAY,SAAS,GAEtD8R,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAME,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,YAAgB,KAAe,KAAK,cAAgB,OAClEA,EAAS,YAAiB,cAAe,KAAK,YAAc,KAAK,YAAY,UAAU,EAAI,KAAK,aAE3FA,CACT,CACF,EACM5R,GAAN,MAAMgW,CAA6B,CACjC,OAAO,UAAUxE,EAAO,CACtB,IAAIC,EAAI,IAAIuE,EACZ,OAAAvE,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACnBC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAME,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,WAAe,MAC7BA,EAAS,WAAgB,KAAK,YAE5B,OAAO,KAAK,cAAkB,MAChCA,EAAS,cAAmB,KAAK,eAE5BA,CACT,CACF,EAOM3R,GAAN,MAAMgW,CAAuB,CAC3B,OAAO,UAAUzE,EAAO,CACtB,IAAIC,EAAI,IAAIwE,EACZ,OAAAxE,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACtBA,EAAM,OACRC,EAAE,KAAOtZ,GAAoB0B,GAAoC2X,EAAM,IAAI,GAEzEA,EAAM,QACRC,EAAE,MAAQ,SAASD,EAAM,MAAO,EAAE,GAEhCA,EAAM,cACRC,EAAE,YAAc,SAASD,EAAM,YAAa,EAAE,GAEzCC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAME,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,KAAS,MACvBA,EAAS,KAAU,KAAK,MAEtB,OAAO,KAAK,MAAU,MACxBA,EAAS,MAAW,KAAK,OAEvB,OAAO,KAAK,YAAgB,MAC9BA,EAAS,YAAiB,KAAK,aAE7B,OAAO,KAAK,YAAgB,MAC9BA,EAAS,YAAiB,KAAK,aAE7B,OAAO,KAAK,gBAAoB,MAClCA,EAAS,gBAAqB,KAAK,iBAE9BA,CACT,CACF,EA8BM1R,GAAN,MAAMgW,CAAgC,CACpC,OAAO,UAAU1E,EAAO,CACtB,IAAIC,EAAI,IAAIyE,EACZ,OAAAzE,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACtBA,EAAM,YACRC,EAAE,UAAY,IAAI,KAAKD,EAAM,SAAS,GAEpCA,EAAM,UACRC,EAAE,QAAU,IAAI,KAAKD,EAAM,OAAO,GAE7BC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAME,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,WAAe,MAC7BA,EAAS,WAAgB,KAAK,YAE5B,OAAO,KAAK,UAAc,KAAe,KAAK,YAAc,OAC9DA,EAAS,UAAe,cAAe,KAAK,UAAY,KAAK,UAAU,UAAU,EAAI,KAAK,WAExF,OAAO,KAAK,QAAY,KAAe,KAAK,UAAY,OAC1DA,EAAS,QAAa,cAAe,KAAK,QAAU,KAAK,QAAQ,UAAU,EAAI,KAAK,SAE/EA,CACT,CACF,EACMzR,GAAN,MAAMgW,CAAiC,CACrC,OAAO,UAAU3E,EAAO,CACtB,IAAIC,EAAI,IAAI0E,EACZ,OAAA1E,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACtBA,EAAM,cACRC,EAAE,YAAc,SAASD,EAAM,YAAa,EAAE,GAEzCC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAME,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,YAAgB,MAC9BA,EAAS,YAAiB,KAAK,aAE1BA,CACT,CACF,EACMxR,GAAN,MAAMgW,CAA4B,CAChC,OAAO,UAAU5E,EAAO,CACtB,IAAIC,EAAI,IAAI2E,EACZ,OAAA3E,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACtBA,EAAM,YACRC,EAAE,UAAY,IAAI,KAAKD,EAAM,SAAS,GAEpCA,EAAM,UACRC,EAAE,QAAU,IAAI,KAAKD,EAAM,OAAO,GAEhCA,EAAM,WACRC,EAAE,SAAW,SAASD,EAAM,SAAU,EAAE,GAEnCC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAME,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,WAAe,MAC7BA,EAAS,WAAgB,KAAK,YAE5B,OAAO,KAAK,UAAc,KAAe,KAAK,YAAc,OAC9DA,EAAS,UAAe,cAAe,KAAK,UAAY,KAAK,UAAU,UAAU,EAAI,KAAK,WAExF,OAAO,KAAK,QAAY,KAAe,KAAK,UAAY,OAC1DA,EAAS,QAAa,cAAe,KAAK,QAAU,KAAK,QAAQ,UAAU,EAAI,KAAK,SAElF,OAAO,KAAK,OAAW,MACzBA,EAAS,OAAY,KAAK,QAExB,OAAO,KAAK,SAAa,MAC3BA,EAAS,SAAc,KAAK,UAE1B,OAAO,KAAK,KAAS,MACvBA,EAAS,KAAU,KAAK,MAEnBA,CACT,CACF,EACMvR,GAAN,MAAMgW,CAA6B,CACjC,OAAO,UAAU7E,EAAO,CACtB,IAAIC,EAAI,IAAI4E,EACZ,OAAA5E,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACtBA,EAAM,UACRC,EAAE,QAAUD,EAAM,QAAQ,IAAIjR,GAAe,SAAS,GAEpDiR,EAAM,eACRC,EAAE,aAAe,SAASD,EAAM,aAAc,EAAE,GAE3CC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAME,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,QAAY,KAAe,KAAK,UAAY,OAC1DA,EAAS,QAAa,cAAe,KAAK,QAAU,KAAK,QAAQ,UAAU,EAAI,KAAK,SAElF,OAAO,KAAK,WAAe,MAC7BA,EAAS,WAAgB,KAAK,YAE5B,OAAO,KAAK,QAAY,MAC1BA,EAAS,QAAa,KAAK,SAEzB,OAAO,KAAK,aAAiB,MAC/BA,EAAS,aAAkB,KAAK,cAE3BA,CACT,CACF,EA2FMtR,GAAN,MAAMgW,CAAQ,CACZ,OAAO,UAAU9E,EAAO,CACtB,IAAIC,EAAI,IAAI6E,EACZ,OAAA7E,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACtBA,EAAM,OACRC,EAAE,KAAOtZ,GAAoB4B,GAAiByX,EAAM,IAAI,GAEtDA,EAAM,QACRC,EAAE,MAAQD,EAAM,MAAM,IAAIhR,GAAY,SAAS,GAE1CiR,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAME,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,KAAS,MACvBA,EAAS,KAAU,KAAK,MAEtB,OAAO,KAAK,MAAU,KAAe,KAAK,QAAU,OACtDA,EAAS,MAAW,cAAe,KAAK,MAAQ,KAAK,MAAM,UAAU,EAAI,KAAK,OAEzEA,CACT,CACF,EACMrR,GAAN,MAAMgW,CAAe,CACnB,OAAO,UAAU/E,EAAO,CACtB,IAAIC,EAAI,IAAI8E,EACZ,OAAA9E,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACtBA,EAAM,gBACRC,EAAE,cAAgB,SAASD,EAAM,cAAe,EAAE,GAEhDA,EAAM,cACRC,EAAE,YAAc,SAASD,EAAM,YAAa,EAAE,GAE5CA,EAAM,gBACRC,EAAE,cAAgB,SAASD,EAAM,cAAe,EAAE,GAEhDA,EAAM,UACRC,EAAE,QAAUnR,GAAQ,UAAUkR,EAAM,OAAO,GAEzCA,EAAM,YACRC,EAAE,UAAYD,EAAM,UAAU,IAAIvR,GAAuB,SAAS,GAEhEuR,EAAM,kBACRC,EAAE,gBAAkBtZ,GAAoByB,GAA+B4X,EAAM,eAAe,GAE1FA,EAAM,cACRC,EAAE,YAActZ,GAAoB2B,GAA2B0X,EAAM,WAAW,GAE9EA,EAAM,YACRC,EAAE,UAAYtZ,GAAoBe,EAAWsY,EAAM,SAAS,GAE1DA,EAAM,mBACRC,EAAE,iBAAmB,SAASD,EAAM,iBAAkB,EAAE,GAEtDA,EAAM,WACRC,EAAE,SAAW,SAASD,EAAM,SAAU,EAAE,GAEnCC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAME,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,IAAQ,MACtBA,EAAS,IAAS,KAAK,KAErB,OAAO,KAAK,YAAgB,MAC9BA,EAAS,YAAiB,KAAK,aAE7B,OAAO,KAAK,cAAkB,MAChCA,EAAS,cAAmB,KAAK,eAE/B,OAAO,KAAK,YAAgB,MAC9BA,EAAS,YAAiB,KAAK,aAE7B,OAAO,KAAK,cAAkB,MAChCA,EAAS,cAAmB,KAAK,eAE/B,OAAO,KAAK,QAAY,KAAe,KAAK,UAAY,OAC1DA,EAAS,QAAa,cAAe,KAAK,QAAU,KAAK,QAAQ,UAAU,EAAI,KAAK,SAElF,OAAO,KAAK,UAAc,KAAe,KAAK,YAAc,OAC9DA,EAAS,UAAe,cAAe,KAAK,UAAY,KAAK,UAAU,UAAU,EAAI,KAAK,WAExF,OAAO,KAAK,gBAAoB,MAClCA,EAAS,gBAAqB,KAAK,iBAEjC,OAAO,KAAK,YAAgB,MAC9BA,EAAS,YAAiB,KAAK,aAE7B,OAAO,KAAK,UAAc,MAC5BA,EAAS,UAAe,KAAK,WAE3B,OAAO,KAAK,gBAAoB,MAClCA,EAAS,gBAAqB,KAAK,iBAEjC,OAAO,KAAK,iBAAqB,MACnCA,EAAS,iBAAsB,KAAK,kBAElC,OAAO,KAAK,SAAa,MAC3BA,EAAS,SAAc,KAAK,UAEvBA,CACT,CACF,EAgDMpR,GAAN,MAAMgW,CAAY,CAChB,OAAO,UAAUhF,EAAO,CACtB,IAAIC,EAAI,IAAI+E,EACZ,OAAA/E,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACtBA,EAAM,MACRC,EAAE,IAAM,SAASD,EAAM,IAAK,EAAE,GAE5BA,EAAM,MACRC,EAAE,IAAM,SAASD,EAAM,IAAK,EAAE,GAE5BA,EAAM,QACRC,EAAE,MAAQ,SAASD,EAAM,MAAO,EAAE,GAEhCA,EAAM,YACRC,EAAE,UAAY,SAASD,EAAM,UAAW,EAAE,GAExCA,EAAM,cACRC,EAAE,YAAc,SAASD,EAAM,YAAa,EAAE,GAEzCC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAME,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,IAAQ,MACtBA,EAAS,IAAS,KAAK,KAErB,OAAO,KAAK,IAAQ,MACtBA,EAAS,IAAS,KAAK,KAErB,OAAO,KAAK,MAAU,MACxBA,EAAS,MAAW,KAAK,OAEvB,OAAO,KAAK,UAAc,MAC5BA,EAAS,UAAe,KAAK,WAE3B,OAAO,KAAK,YAAgB,MAC9BA,EAAS,YAAiB,KAAK,aAE1BA,CACT,CACF,EAiCMnR,GAAN,MAAMgW,CAAoB,CACxB,OAAO,UAAUjF,EAAO,CACtB,IAAIC,EAAI,IAAIgF,EACZ,OAAAhF,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACtBA,EAAM,SACRC,EAAE,OAASrZ,GAAoB4B,GAA2BwX,EAAM,MAAM,GAEjEC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAME,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,OAAW,MACzBA,EAAS,OAAY,KAAK,QAErBA,CACT,CACF,EAOMlR,GAAN,MAAMgW,CAAsB,CAC1B,OAAO,UAAUlF,EAAO,CACtB,IAAIC,EAAI,IAAIiF,EACZ,OAAAjF,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACnBC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAME,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,IAAQ,MACtBA,EAAS,IAAS,KAAK,KAErB,OAAO,KAAK,WAAe,MAC7BA,EAAS,WAAgB,KAAK,YAE5B,OAAO,KAAK,QAAY,MAC1BA,EAAS,QAAa,KAAK,SAEtBA,CACT,CACF,EACMjR,GAAN,MAAMgW,CAA8B,CAClC,OAAO,UAAUnF,EAAO,CACtB,IAAIC,EAAI,IAAIkF,EACZ,OAAAlF,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACtBA,EAAM,OACRC,EAAE,KAAO,OAAO,KAAKD,EAAM,IAAI,EAAE,OAAO,CAAC2D,EAAKC,KAC5CD,EAAIC,CAAC,EAAI,SAAS5D,EAAM,KAAK4D,CAAC,EAAG,EAAE,EAC5BD,GACN,CAAC,CAAC,GAEH3D,EAAM,QACRC,EAAE,MAAQD,EAAM,MAAM,IAAIhQ,GAA8C,SAAS,GAE5EiQ,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAME,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,WAAe,MAC7BA,EAAS,WAAgB,KAAK,YAE5B,OAAO,KAAK,KAAS,KAAe,KAAK,OAAS,OACpDA,EAAS,KAAU,cAAe,KAAK,KAAO,KAAK,KAAK,UAAU,EAAI,KAAK,MAEzE,OAAO,KAAK,MAAU,KAAe,KAAK,QAAU,OACtDA,EAAS,MAAW,cAAe,KAAK,MAAQ,KAAK,MAAM,UAAU,EAAI,KAAK,OAEzEA,CACT,CACF,EACMhR,GAAN,MAAMgW,CAA+B,CACnC,OAAO,UAAUpF,EAAO,CACtB,IAAIC,EAAI,IAAImF,EACZ,OAAAnF,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACtBA,EAAM,qBACRC,EAAE,mBAAqBD,EAAM,mBAAmB,IAAI/P,GAAiB,SAAS,GAEzEgQ,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAME,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,mBAAuB,KAAe,KAAK,qBAAuB,OAChFA,EAAS,mBAAwB,cAAe,KAAK,mBAAqB,KAAK,mBAAmB,UAAU,EAAI,KAAK,oBAEhHA,CACT,CACF,EACM/Q,GAAN,MAAMgW,CAA6B,CACjC,OAAO,UAAUrF,EAAO,CACtB,IAAIC,EAAI,IAAIoF,EACZ,OAAApF,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACtBA,EAAM,kBACRC,EAAE,gBAAkB,SAASD,EAAM,gBAAiB,EAAE,GAEjDC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAME,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,WAAe,MAC7BA,EAAS,WAAgB,KAAK,YAE5B,OAAO,KAAK,IAAQ,MACtBA,EAAS,IAAS,KAAK,KAErB,OAAO,KAAK,WAAe,MAC7BA,EAAS,WAAgB,KAAK,YAE5B,OAAO,KAAK,QAAY,MAC1BA,EAAS,QAAa,KAAK,SAEzB,OAAO,KAAK,gBAAoB,MAClCA,EAAS,gBAAqB,KAAK,iBAE9BA,CACT,CACF,EACM9Q,GAAN,MAAMgW,CAAuB,CAC3B,OAAO,UAAUtF,EAAO,CACtB,IAAIC,EAAI,IAAIqF,EACZ,OAAArF,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACtBA,EAAM,YACRC,EAAE,UAAYpZ,GAAoBa,EAAWsY,EAAM,SAAS,GAEvDC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAME,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,WAAe,MAC7BA,EAAS,WAAgB,KAAK,YAE5B,OAAO,KAAK,IAAQ,MACtBA,EAAS,IAAS,KAAK,KAErB,OAAO,KAAK,WAAe,MAC7BA,EAAS,WAAgB,KAAK,YAE5B,OAAO,KAAK,QAAY,MAC1BA,EAAS,QAAa,KAAK,SAEzB,OAAO,KAAK,UAAc,MAC5BA,EAAS,UAAe,KAAK,WAExBA,CACT,CACF,EACM7Q,GAAN,MAAMgW,CAAyB,CAC7B,OAAO,UAAUvF,EAAO,CACtB,IAAIC,EAAI,IAAIsF,EACZ,OAAAtF,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACtBA,EAAM,kBACRC,EAAE,gBAAkB,IAAI,KAAKD,EAAM,eAAe,GAE7CC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAME,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,WAAe,MAC7BA,EAAS,WAAgB,KAAK,YAE5B,OAAO,KAAK,WAAe,MAC7BA,EAAS,WAAgB,KAAK,YAE5B,OAAO,KAAK,IAAQ,MACtBA,EAAS,IAAS,KAAK,KAErB,OAAO,KAAK,QAAY,MAC1BA,EAAS,QAAa,KAAK,SAEzB,OAAO,KAAK,gBAAoB,KAAe,KAAK,kBAAoB,OAC1EA,EAAS,gBAAqB,cAAe,KAAK,gBAAkB,KAAK,gBAAgB,UAAU,EAAI,KAAK,iBAEvGA,CACT,CACF,EACM5Q,GAAN,MAAMgW,CAA0B,CAC9B,OAAO,UAAUxF,EAAO,CACtB,IAAIC,EAAI,IAAIuF,EACZ,OAAAvF,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACtBA,EAAM,eACRC,EAAE,aAAe,IAAI,KAAKD,EAAM,YAAY,GAE1CA,EAAM,aACRC,EAAE,WAAa,IAAI,KAAKD,EAAM,UAAU,GAEtCA,EAAM,eACRC,EAAE,aAAepZ,GAAoB6B,GAAcsX,EAAM,YAAY,GAEnEA,EAAM,kBACRC,EAAE,gBAAkB,SAASD,EAAM,gBAAiB,EAAE,GAEpDA,EAAM,YACRC,EAAE,UAAY/Q,GAAsB,UAAU8Q,EAAM,SAAS,GAE3DA,EAAM,YACRC,EAAE,UAAYpZ,GAAoBa,EAAWsY,EAAM,SAAS,GAE1DA,EAAM,eACRC,EAAE,aAAe,SAASD,EAAM,aAAc,EAAE,GAE9CA,EAAM,kBACRC,EAAE,gBAAkBpZ,GAAoBa,EAAWsY,EAAM,eAAe,GAEtEA,EAAM,WACRC,EAAE,SAAWpZ,GAAoB4B,GAAUuX,EAAM,QAAQ,GAEvDA,EAAM,eACRC,EAAE,aAAe,IAAI,KAAKD,EAAM,YAAY,GAE1CA,EAAM,SACRC,EAAE,OAAS,IAAI,KAAKD,EAAM,MAAM,GAE3BC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAME,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,WAAe,MAC7BA,EAAS,WAAgB,KAAK,YAE5B,OAAO,KAAK,IAAQ,MACtBA,EAAS,IAAS,KAAK,KAErB,OAAO,KAAK,WAAe,MAC7BA,EAAS,WAAgB,KAAK,YAE5B,OAAO,KAAK,QAAY,MAC1BA,EAAS,QAAa,KAAK,SAEzB,OAAO,KAAK,aAAiB,KAAe,KAAK,eAAiB,OACpEA,EAAS,aAAkB,cAAe,KAAK,aAAe,KAAK,aAAa,UAAU,EAAI,KAAK,cAEjG,OAAO,KAAK,WAAe,KAAe,KAAK,aAAe,OAChEA,EAAS,WAAgB,cAAe,KAAK,WAAa,KAAK,WAAW,UAAU,EAAI,KAAK,YAE3F,OAAO,KAAK,aAAiB,MAC/BA,EAAS,aAAkB,KAAK,cAE9B,OAAO,KAAK,eAAmB,MACjCA,EAAS,eAAoB,KAAK,gBAEhC,OAAO,KAAK,UAAc,MAC5BA,EAAS,UAAe,KAAK,WAE3B,OAAO,KAAK,gBAAoB,MAClCA,EAAS,gBAAqB,KAAK,iBAEjC,OAAO,KAAK,UAAc,KAAe,KAAK,YAAc,OAC9DA,EAAS,UAAe,cAAe,KAAK,UAAY,KAAK,UAAU,UAAU,EAAI,KAAK,WAExF,OAAO,KAAK,UAAc,MAC5BA,EAAS,UAAe,KAAK,WAE3B,OAAO,KAAK,aAAiB,MAC/BA,EAAS,aAAkB,KAAK,cAE9B,OAAO,KAAK,gBAAoB,MAClCA,EAAS,gBAAqB,KAAK,iBAEjC,OAAO,KAAK,SAAa,MAC3BA,EAAS,SAAc,KAAK,UAE1B,OAAO,KAAK,aAAiB,KAAe,KAAK,eAAiB,OACpEA,EAAS,aAAkB,cAAe,KAAK,aAAe,KAAK,aAAa,UAAU,EAAI,KAAK,cAEjG,OAAO,KAAK,OAAW,KAAe,KAAK,SAAW,OACxDA,EAAS,OAAY,cAAe,KAAK,OAAS,KAAK,OAAO,UAAU,EAAI,KAAK,QAE/E,OAAO,KAAK,aAAiB,MAC/BA,EAAS,aAAkB,KAAK,cAE9B,OAAO,KAAK,eAAmB,MACjCA,EAAS,eAAoB,KAAK,gBAE7BA,CACT,CACF,EACM3Q,GAAN,MAAMgW,CAA2B,CAC/B,OAAO,UAAUzF,EAAO,CACtB,IAAIC,EAAI,IAAIwF,EACZ,OAAAxF,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACnBC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAME,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,eAAmB,MACjCA,EAAS,eAAoB,KAAK,gBAE7BA,CACT,CACF,EACM1Q,GAAN,MAAMgW,CAA2B,CAC/B,OAAO,UAAU1F,EAAO,CACtB,IAAIC,EAAI,IAAIyF,EACZ,OAAAzF,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACtBA,EAAM,gBACRC,EAAE,cAAgBD,EAAM,cAAc,IAAIjQ,GAAa,SAAS,GAE3DkQ,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAME,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,WAAe,MAC7BA,EAAS,WAAgB,KAAK,YAE5B,OAAO,KAAK,cAAkB,KAAe,KAAK,gBAAkB,OACtEA,EAAS,cAAmB,cAAe,KAAK,cAAgB,KAAK,cAAc,UAAU,EAAI,KAAK,eAEjGA,CACT,CACF,EACMzQ,GAAN,MAAMgW,CAA4B,CAChC,OAAO,UAAU3F,EAAO,CACtB,IAAIC,EAAI,IAAI0F,EACZ,OAAA1F,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACnBC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAME,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,GAAO,MACrBA,EAAS,GAAQ,KAAK,IAEjBA,CACT,CACF,EACMxQ,GAAN,MAAMgW,CAA2B,CAC/B,OAAO,UAAU5F,EAAO,CACtB,IAAIC,EAAI,IAAI2F,EACZ,OAAA3F,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACnBC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAME,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,WAAe,MAC7BA,EAAS,WAAgB,KAAK,YAE5B,OAAO,KAAK,IAAQ,MACtBA,EAAS,IAAS,KAAK,KAErB,OAAO,KAAK,WAAe,MAC7BA,EAAS,WAAgB,KAAK,YAE5B,OAAO,KAAK,QAAY,MAC1BA,EAAS,QAAa,KAAK,SAEtBA,CACT,CACF,EACMvQ,GAAN,MAAMgW,CAAuB,CAC3B,OAAO,UAAU7F,EAAO,CACtB,IAAIC,EAAI,IAAI4F,EACZ,OAAA5F,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACnBC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAME,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,eAAmB,MACjCA,EAAS,eAAoB,KAAK,gBAEhC,OAAO,KAAK,aAAiB,MAC/BA,EAAS,aAAkB,KAAK,cAE3BA,CACT,CACF,EACMtQ,GAAN,MAAMgW,CAAuB,CAC3B,OAAO,UAAU9F,EAAO,CACtB,IAAIC,EAAI,IAAI6F,EACZ,OAAA7F,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACtBA,EAAM,eACRC,EAAE,aAAe,IAAI,KAAKD,EAAM,YAAY,GAEvCC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAME,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,WAAe,MAC7BA,EAAS,WAAgB,KAAK,YAE5B,OAAO,KAAK,IAAQ,MACtBA,EAAS,IAAS,KAAK,KAErB,OAAO,KAAK,WAAe,MAC7BA,EAAS,WAAgB,KAAK,YAE5B,OAAO,KAAK,QAAY,MAC1BA,EAAS,QAAa,KAAK,SAEzB,OAAO,KAAK,aAAiB,KAAe,KAAK,eAAiB,OACpEA,EAAS,aAAkB,cAAe,KAAK,aAAe,KAAK,aAAa,UAAU,EAAI,KAAK,cAE9FA,CACT,CACF,EA2BMrQ,GAAN,MAAMgW,CAAa,CACjB,OAAO,UAAU/F,EAAO,CACtB,IAAIC,EAAI,IAAI8F,EACZ,OAAA9F,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACtBA,EAAM,eACRC,EAAE,aAAe,IAAI,KAAKD,EAAM,YAAY,GAE1CA,EAAM,eACRC,EAAE,aAAepZ,GAAoB6B,GAAcsX,EAAM,YAAY,GAEnEA,EAAM,aACRC,EAAE,WAAa,IAAI,KAAKD,EAAM,UAAU,GAEtCA,EAAM,kBACRC,EAAE,gBAAkB,SAASD,EAAM,gBAAiB,EAAE,GAEpDA,EAAM,YACRC,EAAE,UAAY/Q,GAAsB,UAAU8Q,EAAM,SAAS,GAE3DA,EAAM,YACRC,EAAE,UAAYpZ,GAAoBa,EAAWsY,EAAM,SAAS,GAE1DA,EAAM,eACRC,EAAE,aAAe,SAASD,EAAM,aAAc,EAAE,GAE9CA,EAAM,kBACRC,EAAE,gBAAkBpZ,GAAoBa,EAAWsY,EAAM,eAAe,GAEtEA,EAAM,WACRC,EAAE,SAAWpZ,GAAoB4B,GAAUuX,EAAM,QAAQ,GAEvDA,EAAM,eACRC,EAAE,aAAe,IAAI,KAAKD,EAAM,YAAY,GAE1CA,EAAM,SACRC,EAAE,OAAS,IAAI,KAAKD,EAAM,MAAM,GAE3BC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAME,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,IAAQ,MACtBA,EAAS,IAAS,KAAK,KAErB,OAAO,KAAK,WAAe,MAC7BA,EAAS,WAAgB,KAAK,YAE5B,OAAO,KAAK,QAAY,MAC1BA,EAAS,QAAa,KAAK,SAEzB,OAAO,KAAK,aAAiB,KAAe,KAAK,eAAiB,OACpEA,EAAS,aAAkB,cAAe,KAAK,aAAe,KAAK,aAAa,UAAU,EAAI,KAAK,cAEjG,OAAO,KAAK,aAAiB,MAC/BA,EAAS,aAAkB,KAAK,cAE9B,OAAO,KAAK,WAAe,KAAe,KAAK,aAAe,OAChEA,EAAS,WAAgB,cAAe,KAAK,WAAa,KAAK,WAAW,UAAU,EAAI,KAAK,YAE3F,OAAO,KAAK,eAAmB,MACjCA,EAAS,eAAoB,KAAK,gBAEhC,OAAO,KAAK,UAAc,MAC5BA,EAAS,UAAe,KAAK,WAE3B,OAAO,KAAK,gBAAoB,MAClCA,EAAS,gBAAqB,KAAK,iBAEjC,OAAO,KAAK,UAAc,KAAe,KAAK,YAAc,OAC9DA,EAAS,UAAe,cAAe,KAAK,UAAY,KAAK,UAAU,UAAU,EAAI,KAAK,WAExF,OAAO,KAAK,iBAAqB,MACnCA,EAAS,iBAAsB,KAAK,kBAElC,OAAO,KAAK,UAAc,MAC5BA,EAAS,UAAe,KAAK,WAE3B,OAAO,KAAK,aAAiB,MAC/BA,EAAS,aAAkB,KAAK,cAE9B,OAAO,KAAK,gBAAoB,MAClCA,EAAS,gBAAqB,KAAK,iBAEjC,OAAO,KAAK,SAAa,MAC3BA,EAAS,SAAc,KAAK,UAE1B,OAAO,KAAK,aAAiB,KAAe,KAAK,eAAiB,OACpEA,EAAS,aAAkB,cAAe,KAAK,aAAe,KAAK,aAAa,UAAU,EAAI,KAAK,cAEjG,OAAO,KAAK,OAAW,KAAe,KAAK,SAAW,OACxDA,EAAS,OAAY,cAAe,KAAK,OAAS,KAAK,OAAO,UAAU,EAAI,KAAK,QAE/E,OAAO,KAAK,aAAiB,MAC/BA,EAAS,aAAkB,KAAK,cAE9B,OAAO,KAAK,eAAmB,MACjCA,EAAS,eAAoB,KAAK,gBAE7BA,CACT,CACF,EACMpQ,GAAN,MAAMgW,CAA8C,CAClD,OAAO,UAAUhG,EAAO,CACtB,IAAIC,EAAI,IAAI+F,EACZ,OAAA/F,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACtBA,EAAM,YACRC,EAAE,UAAYpZ,GAAoBa,EAAWsY,EAAM,SAAS,GAE1DA,EAAM,WACRC,EAAE,SAAW,SAASD,EAAM,SAAU,EAAE,GAEnCC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAME,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,IAAQ,MACtBA,EAAS,IAAS,KAAK,KAErB,OAAO,KAAK,UAAc,MAC5BA,EAAS,UAAe,KAAK,WAE3B,OAAO,KAAK,SAAa,MAC3BA,EAAS,SAAc,KAAK,UAEvBA,CACT,CACF,EACMnQ,GAAN,MAAMgW,CAAiB,CACrB,OAAO,UAAUjG,EAAO,CACtB,IAAIC,EAAI,IAAIgG,EACZ,OAAAhG,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACtBA,EAAM,OACRC,EAAE,KAAOhR,GAAoB,UAAU+Q,EAAM,IAAI,GAE5CC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAME,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,IAAQ,MACtBA,EAAS,IAAS,KAAK,KAErB,OAAO,KAAK,KAAS,KAAe,KAAK,OAAS,OACpDA,EAAS,KAAU,cAAe,KAAK,KAAO,KAAK,KAAK,UAAU,EAAI,KAAK,MAEtEA,CACT,CACF,EAOMlQ,GAAN,MAAMgW,CAAsB,CAC1B,OAAO,UAAUlG,EAAO,CACtB,IAAIC,EAAI,IAAIiG,EACZ,OAAAjG,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACtBA,EAAM,eACRC,EAAE,aAAenZ,GAAoBoB,EAAc8X,EAAM,YAAY,GAEnEA,EAAM,SACRC,EAAE,OAAS,SAASD,EAAM,OAAQ,EAAE,GAElCA,EAAM,QACRC,EAAE,MAAQ,IAAI,KAAKD,EAAM,KAAK,GAE5BA,EAAM,MACRC,EAAE,IAAM,IAAI,KAAKD,EAAM,GAAG,GAExBA,EAAM,WACRC,EAAE,SAAWnZ,GAAoB2B,GAAUuX,EAAM,QAAQ,GAEpDC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAME,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,WAAe,MAC7BA,EAAS,WAAgB,KAAK,YAE5B,OAAO,KAAK,IAAQ,MACtBA,EAAS,IAAS,KAAK,KAErB,OAAO,KAAK,aAAiB,MAC/BA,EAAS,aAAkB,KAAK,cAE9B,OAAO,KAAK,OAAW,MACzBA,EAAS,OAAY,KAAK,QAExB,OAAO,KAAK,MAAU,KAAe,KAAK,QAAU,OACtDA,EAAS,MAAW,cAAe,KAAK,MAAQ,KAAK,MAAM,UAAU,EAAI,KAAK,OAE5E,OAAO,KAAK,IAAQ,KAAe,KAAK,MAAQ,OAClDA,EAAS,IAAS,cAAe,KAAK,IAAM,KAAK,IAAI,UAAU,EAAI,KAAK,KAEtE,OAAO,KAAK,gBAAoB,MAClCA,EAAS,gBAAqB,KAAK,iBAEjC,OAAO,KAAK,YAAgB,MAC9BA,EAAS,YAAiB,KAAK,aAE7B,OAAO,KAAK,WAAe,MAC7BA,EAAS,WAAgB,KAAK,YAE5B,OAAO,KAAK,SAAa,MAC3BA,EAAS,SAAc,KAAK,UAE1B,OAAO,KAAK,eAAmB,MACjCA,EAAS,eAAoB,KAAK,gBAE7BA,CACT,CACF,EACMjQ,GAAN,MAAMgW,CAAuB,CAC3B,OAAO,UAAUnG,EAAO,CACtB,IAAIC,EAAI,IAAIkG,EACZ,OAAAlG,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACnBC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAME,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,GAAO,MACrBA,EAAS,GAAQ,KAAK,IAEjBA,CACT,CACF,EACMhQ,GAAN,MAAMgW,CAAS,CACb,OAAO,UAAUpG,EAAO,CACtB,IAAIC,EAAI,IAAImG,EACZ,OAAAnG,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACtBA,EAAM,aACRC,EAAE,WAAa,SAASD,EAAM,WAAY,EAAE,GAE1CA,EAAM,eACRC,EAAE,aAAenZ,GAAoBoB,EAAc8X,EAAM,YAAY,GAEnEA,EAAM,SACRC,EAAE,OAAS,SAASD,EAAM,OAAQ,EAAE,GAElCA,EAAM,QACRC,EAAE,MAAQ,IAAI,KAAKD,EAAM,KAAK,GAE5BA,EAAM,MACRC,EAAE,IAAM,IAAI,KAAKD,EAAM,GAAG,GAExBA,EAAM,UACRC,EAAE,QAAU,IAAI,KAAKD,EAAM,OAAO,GAEhCA,EAAM,UACRC,EAAE,QAAU,IAAI,KAAKD,EAAM,OAAO,GAEhCA,EAAM,WACRC,EAAE,SAAWnZ,GAAoB2B,GAAUuX,EAAM,QAAQ,GAEpDC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAME,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,WAAe,MAC7BA,EAAS,WAAgB,KAAK,YAE5B,OAAO,KAAK,aAAiB,MAC/BA,EAAS,aAAkB,KAAK,cAE9B,OAAO,KAAK,OAAW,MACzBA,EAAS,OAAY,KAAK,QAExB,OAAO,KAAK,MAAU,KAAe,KAAK,QAAU,OACtDA,EAAS,MAAW,cAAe,KAAK,MAAQ,KAAK,MAAM,UAAU,EAAI,KAAK,OAE5E,OAAO,KAAK,IAAQ,KAAe,KAAK,MAAQ,OAClDA,EAAS,IAAS,cAAe,KAAK,IAAM,KAAK,IAAI,UAAU,EAAI,KAAK,KAEtE,OAAO,KAAK,gBAAoB,MAClCA,EAAS,gBAAqB,KAAK,iBAEjC,OAAO,KAAK,WAAe,MAC7BA,EAAS,WAAgB,KAAK,YAE5B,OAAO,KAAK,QAAY,KAAe,KAAK,UAAY,OAC1DA,EAAS,QAAa,cAAe,KAAK,QAAU,KAAK,QAAQ,UAAU,EAAI,KAAK,SAElF,OAAO,KAAK,QAAY,KAAe,KAAK,UAAY,OAC1DA,EAAS,QAAa,cAAe,KAAK,QAAU,KAAK,QAAQ,UAAU,EAAI,KAAK,SAElF,OAAO,KAAK,IAAQ,MACtBA,EAAS,IAAS,KAAK,KAErB,OAAO,KAAK,GAAO,MACrBA,EAAS,GAAQ,KAAK,IAEpB,OAAO,KAAK,YAAgB,MAC9BA,EAAS,YAAiB,KAAK,aAE7B,OAAO,KAAK,WAAe,MAC7BA,EAAS,WAAgB,KAAK,YAE5B,OAAO,KAAK,SAAa,MAC3BA,EAAS,SAAc,KAAK,UAE1B,OAAO,KAAK,eAAmB,MACjCA,EAAS,eAAoB,KAAK,gBAE7BA,CACT,CACF,EACM/P,GAAN,MAAMgW,CAAsB,CAC1B,OAAO,UAAUrG,EAAO,CACtB,IAAIC,EAAI,IAAIoG,EACZ,OAAApG,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACnBC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAME,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,WAAe,MAC7BA,EAAS,WAAgB,KAAK,YAE5B,OAAO,KAAK,GAAO,MACrBA,EAAS,GAAQ,KAAK,IAEjBA,CACT,CACF,EACM9P,GAAN,MAAMgW,CAA4B,CAChC,OAAO,UAAUtG,EAAO,CACtB,IAAIC,EAAI,IAAIqG,EACZ,OAAArG,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACtBA,EAAM,SACRC,EAAE,OAAS,IAAI,KAAKD,EAAM,MAAM,GAE9BA,EAAM,YACRC,EAAE,UAAYD,EAAM,UAAU,IAAIkC,GAAKpb,GAAoB2B,GAAUyZ,CAAC,CAAC,GAElEjC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAME,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,WAAe,MAC7BA,EAAS,WAAgB,KAAK,YAE5B,OAAO,KAAK,OAAW,KAAe,KAAK,SAAW,OACxDA,EAAS,OAAY,cAAe,KAAK,OAAS,KAAK,OAAO,UAAU,EAAI,KAAK,QAE/E,OAAO,KAAK,KAAS,MACvBA,EAAS,KAAU,KAAK,MAEtB,OAAO,KAAK,YAAgB,MAC9BA,EAAS,YAAiB,KAAK,aAE7B,OAAO,KAAK,yBAA6B,MAC3CA,EAAS,yBAA8B,KAAK,0BAE1C,OAAO,KAAK,UAAc,MAC5BA,EAAS,UAAe,KAAK,WAE3B,OAAO,KAAK,gBAAoB,MAClCA,EAAS,gBAAqB,KAAK,iBAE9BA,CACT,CACF,EACM7P,GAAN,MAAMgW,CAAqB,CACzB,OAAO,UAAUvG,EAAO,CACtB,IAAIC,EAAI,IAAIsG,EACZ,OAAAtG,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACtBA,EAAM,UACRC,EAAE,QAAU3P,GAA4B,UAAU0P,EAAM,OAAO,GAE7DA,EAAM,gBACRC,EAAE,cAAgB1V,EAAoB,UAAUyV,EAAM,aAAa,GAE9DC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAME,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,QAAY,KAAe,KAAK,UAAY,OAC1DA,EAAS,QAAa,cAAe,KAAK,QAAU,KAAK,QAAQ,UAAU,EAAI,KAAK,SAElF,OAAO,KAAK,cAAkB,KAAe,KAAK,gBAAkB,OACtEA,EAAS,cAAmB,cAAe,KAAK,cAAgB,KAAK,cAAc,UAAU,EAAI,KAAK,eAEjGA,CACT,CACF,EACM5P,GAAN,MAAMgW,CAAsB,CAC1B,OAAO,UAAUxG,EAAO,CACtB,IAAIC,EAAI,IAAIuG,EACZ,OAAAvG,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACtBA,EAAM,YACRC,EAAE,UAAYD,EAAM,UAAU,IAAI5P,GAAS,SAAS,GAElD4P,EAAM,iBACRC,EAAE,eAAiBzV,EAAsB,UAAUwV,EAAM,cAAc,GAElEC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAME,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,UAAc,KAAe,KAAK,YAAc,OAC9DA,EAAS,UAAe,cAAe,KAAK,UAAY,KAAK,UAAU,UAAU,EAAI,KAAK,WAExF,OAAO,KAAK,eAAmB,KAAe,KAAK,iBAAmB,OACxEA,EAAS,eAAoB,cAAe,KAAK,eAAiB,KAAK,eAAe,UAAU,EAAI,KAAK,gBAEpGA,CACT,CACF,EACM3P,GAAN,MAAMgW,CAAsB,CAC1B,OAAO,UAAUzG,EAAO,CACtB,IAAIC,EAAI,IAAIwG,EACZ,OAAAxG,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACtBA,EAAM,eACRC,EAAE,aAAenZ,GAAoBoB,EAAc8X,EAAM,YAAY,GAEnEA,EAAM,SACRC,EAAE,OAAS,SAASD,EAAM,OAAQ,EAAE,GAElCA,EAAM,QACRC,EAAE,MAAQ,IAAI,KAAKD,EAAM,KAAK,GAE5BA,EAAM,MACRC,EAAE,IAAM,IAAI,KAAKD,EAAM,GAAG,GAErBC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAME,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,WAAe,MAC7BA,EAAS,WAAgB,KAAK,YAE5B,OAAO,KAAK,GAAO,MACrBA,EAAS,GAAQ,KAAK,IAEpB,OAAO,KAAK,aAAiB,MAC/BA,EAAS,aAAkB,KAAK,cAE9B,OAAO,KAAK,OAAW,MACzBA,EAAS,OAAY,KAAK,QAExB,OAAO,KAAK,MAAU,KAAe,KAAK,QAAU,OACtDA,EAAS,MAAW,cAAe,KAAK,MAAQ,KAAK,MAAM,UAAU,EAAI,KAAK,OAE5E,OAAO,KAAK,IAAQ,KAAe,KAAK,MAAQ,OAClDA,EAAS,IAAS,cAAe,KAAK,IAAM,KAAK,IAAI,UAAU,EAAI,KAAK,KAEtE,OAAO,KAAK,gBAAoB,MAClCA,EAAS,gBAAqB,KAAK,iBAEjC,OAAO,KAAK,YAAgB,MAC9BA,EAAS,YAAiB,KAAK,aAE7B,OAAO,KAAK,WAAe,MAC7BA,EAAS,WAAgB,KAAK,YAE5B,OAAO,KAAK,eAAmB,MACjCA,EAAS,eAAoB,KAAK,gBAE7BA,CACT,CACF,EAOM1P,GAAN,MAAMgW,CAAe,CACnB,OAAO,UAAU1G,EAAO,CACtB,IAAIC,EAAI,IAAIyG,EACZ,OAAAzG,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACtBA,EAAM,SACRC,EAAE,OAAS,SAASD,EAAM,OAAQ,EAAE,GAE/BC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAME,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,OAAW,MACzBA,EAAS,OAAY,KAAK,QAExB,OAAO,KAAK,UAAc,MAC5BA,EAAS,UAAe,KAAK,WAE3B,OAAO,KAAK,KAAS,MACvBA,EAAS,KAAU,KAAK,MAEtB,OAAO,KAAK,WAAe,MAC7BA,EAAS,WAAgB,KAAK,YAE5B,OAAO,KAAK,YAAgB,MAC9BA,EAAS,YAAiB,KAAK,aAE1BA,CACT,CACF,EAOMzP,GAAN,MAAMgW,CAAkB,CACtB,OAAO,UAAU3G,EAAO,CACtB,IAAIC,EAAI,IAAI0G,EACZ,OAAA1G,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACnBC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAME,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,WAAe,MAC7BA,EAAS,WAAgB,KAAK,YAE5B,OAAO,KAAK,GAAO,MACrBA,EAAS,GAAQ,KAAK,IAEjBA,CACT,CACF,EACMxP,GAAN,MAAMgW,CAA8B,CAClC,OAAO,UAAU5G,EAAO,CACtB,IAAIC,EAAI,IAAI2G,EACZ,OAAA3G,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACtBA,EAAM,YACRC,EAAE,UAAYD,EAAM,UAAU,IAAI5O,GAAsC,SAAS,GAE5E6O,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAME,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,WAAe,MAC7BA,EAAS,WAAgB,KAAK,YAE5B,OAAO,KAAK,WAAe,MAC7BA,EAAS,WAAgB,KAAK,YAE5B,OAAO,KAAK,UAAc,KAAe,KAAK,YAAc,OAC9DA,EAAS,UAAe,cAAe,KAAK,UAAY,KAAK,UAAU,UAAU,EAAI,KAAK,WAErFA,CACT,CACF,EACMvP,GAAN,MAAMgW,CAA+B,CACnC,OAAO,UAAU7G,EAAO,CACtB,IAAIC,EAAI,IAAI4G,EACZ,OAAA5G,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACtBA,EAAM,gBACRC,EAAE,cAAgBD,EAAM,cAAc,IAAI3O,GAA4C,SAAS,GAE7F2O,EAAM,qBACRC,EAAE,mBAAqB,SAASD,EAAM,mBAAoB,EAAE,GAE1DA,EAAM,WACRC,EAAE,SAAWD,EAAM,SAAS,IAAIxO,GAAQ,SAAS,GAE/CwO,EAAM,eACRC,EAAE,aAAeD,EAAM,aAAa,IAAItP,GAAe,SAAS,GAE3DuP,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAME,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,cAAkB,KAAe,KAAK,gBAAkB,OACtEA,EAAS,cAAmB,cAAe,KAAK,cAAgB,KAAK,cAAc,UAAU,EAAI,KAAK,eAEpG,OAAO,KAAK,mBAAuB,MACrCA,EAAS,mBAAwB,KAAK,oBAEpC,OAAO,KAAK,SAAa,KAAe,KAAK,WAAa,OAC5DA,EAAS,SAAc,cAAe,KAAK,SAAW,KAAK,SAAS,UAAU,EAAI,KAAK,UAErF,OAAO,KAAK,aAAiB,KAAe,KAAK,eAAiB,OACpEA,EAAS,aAAkB,cAAe,KAAK,aAAe,KAAK,aAAa,UAAU,EAAI,KAAK,cAE9FA,CACT,CACF,EACMtP,GAAN,MAAMgW,CAAoB,CACxB,OAAO,UAAU9G,EAAO,CACtB,IAAIC,EAAI,IAAI6G,EACZ,OAAA7G,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACtBA,EAAM,SACRC,EAAE,OAAS,SAASD,EAAM,OAAQ,EAAE,GAE/BC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAME,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,WAAe,MAC7BA,EAAS,WAAgB,KAAK,YAE5B,OAAO,KAAK,WAAe,MAC7BA,EAAS,WAAgB,KAAK,YAE5B,OAAO,KAAK,OAAW,MACzBA,EAAS,OAAY,KAAK,QAErBA,CACT,CACF,EACMrP,GAAN,MAAMgW,CAAqB,CACzB,OAAO,UAAU/G,EAAO,CACtB,IAAIC,EAAI,IAAI8G,EACZ,OAAA9G,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACtBA,EAAM,gBACRC,EAAE,cAAgB,SAASD,EAAM,cAAe,EAAE,GAEhDA,EAAM,WACRC,EAAE,SAAWD,EAAM,SAAS,IAAIxO,GAAQ,SAAS,GAE5CyO,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAME,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,cAAkB,MAChCA,EAAS,cAAmB,KAAK,eAE/B,OAAO,KAAK,SAAa,KAAe,KAAK,WAAa,OAC5DA,EAAS,SAAc,cAAe,KAAK,SAAW,KAAK,SAAS,UAAU,EAAI,KAAK,UAElFA,CACT,CACF,EACMpP,GAAN,MAAMgW,CAAiB,CACrB,OAAO,UAAUhH,EAAO,CACtB,IAAIC,EAAI,IAAI+G,EACZ,OAAA/G,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACnBC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAME,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,WAAe,MAC7BA,EAAS,WAAgB,KAAK,YAE5B,OAAO,KAAK,YAAgB,MAC9BA,EAAS,YAAiB,KAAK,aAE7B,OAAO,KAAK,UAAc,MAC5BA,EAAS,UAAe,KAAK,WAE3B,OAAO,KAAK,KAAS,MACvBA,EAAS,KAAU,KAAK,MAEtB,OAAO,KAAK,YAAgB,MAC9BA,EAAS,YAAiB,KAAK,aAE7B,OAAO,KAAK,WAAe,MAC7BA,EAAS,WAAgB,KAAK,YAE5B,OAAO,KAAK,mBAAuB,MACrCA,EAAS,mBAAwB,KAAK,oBAEjCA,CACT,CACF,EACMnP,GAAN,MAAMgW,CAAsB,CAC1B,OAAO,UAAUjH,EAAO,CACtB,IAAIC,EAAI,IAAIgH,EACZ,OAAAhH,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACnBC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAME,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,WAAe,MAC7BA,EAAS,WAAgB,KAAK,YAE5B,OAAO,KAAK,gBAAoB,MAClCA,EAAS,gBAAqB,KAAK,iBAE9BA,CACT,CACF,EACMlP,GAAN,MAAMgW,CAAmB,CACvB,OAAO,UAAUlH,EAAO,CACtB,IAAIC,EAAI,IAAIiH,EACZ,OAAAjH,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACnBC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAME,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,WAAe,MAC7BA,EAAS,WAAgB,KAAK,YAE5B,OAAO,KAAK,IAAQ,MACtBA,EAAS,IAAS,KAAK,KAElBA,CACT,CACF,EACMjP,GAAN,MAAMgW,CAAoB,CACxB,OAAO,UAAUnH,EAAO,CACtB,IAAIC,EAAI,IAAIkH,EACZ,OAAAlH,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACtBA,EAAM,WACRC,EAAE,SAAWD,EAAM,SAAS,IAAIxO,GAAQ,SAAS,GAE5CyO,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAME,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,SAAa,KAAe,KAAK,WAAa,OAC5DA,EAAS,SAAc,cAAe,KAAK,SAAW,KAAK,SAAS,UAAU,EAAI,KAAK,UAElFA,CACT,CACF,EACMhP,GAAN,MAAMgW,CAAsC,CAC1C,OAAO,UAAUpH,EAAO,CACtB,IAAIC,EAAI,IAAImH,EACZ,OAAAnH,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACtBA,EAAM,SACRC,EAAE,OAAS,SAASD,EAAM,OAAQ,EAAE,GAE/BC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAME,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,IAAQ,MACtBA,EAAS,IAAS,KAAK,KAErB,OAAO,KAAK,OAAW,MACzBA,EAAS,OAAY,KAAK,QAErBA,CACT,CACF,EACM/O,GAAN,MAAMgW,CAA4C,CAChD,OAAO,UAAUrH,EAAO,CACtB,IAAIC,EAAI,IAAIoH,EACZ,OAAApH,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACnBC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAME,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,IAAQ,MACtBA,EAAS,IAAS,KAAK,KAErB,OAAO,KAAK,cAAkB,MAChCA,EAAS,cAAmB,KAAK,eAE5BA,CACT,CACF,EACM9O,GAAN,MAAMgW,CAAe,CACnB,OAAO,UAAUtH,EAAO,CACtB,IAAIC,EAAI,IAAIqH,EACZ,OAAArH,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACtBA,EAAM,UACRC,EAAE,QAAUhP,GAAsB,UAAU+O,EAAM,OAAO,GAEvDA,EAAM,gBACRC,EAAE,cAAgB1V,EAAoB,UAAUyV,EAAM,aAAa,GAE9DC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAME,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,QAAY,KAAe,KAAK,UAAY,OAC1DA,EAAS,QAAa,cAAe,KAAK,QAAU,KAAK,QAAQ,UAAU,EAAI,KAAK,SAElF,OAAO,KAAK,cAAkB,KAAe,KAAK,gBAAkB,OACtEA,EAAS,cAAmB,cAAe,KAAK,cAAgB,KAAK,cAAc,UAAU,EAAI,KAAK,eAEjGA,CACT,CACF,EACM7O,GAAN,MAAMgW,CAAgB,CACpB,OAAO,UAAUvH,EAAO,CACtB,IAAIC,EAAI,IAAIsH,EACZ,OAAAtH,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACtBA,EAAM,WACRC,EAAE,SAAWD,EAAM,SAAS,IAAIxO,GAAQ,SAAS,GAE/CwO,EAAM,iBACRC,EAAE,eAAiBzV,EAAsB,UAAUwV,EAAM,cAAc,GAElEC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAME,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,SAAa,KAAe,KAAK,WAAa,OAC5DA,EAAS,SAAc,cAAe,KAAK,SAAW,KAAK,SAAS,UAAU,EAAI,KAAK,UAErF,OAAO,KAAK,eAAmB,KAAe,KAAK,iBAAmB,OACxEA,EAAS,eAAoB,cAAe,KAAK,eAAiB,KAAK,eAAe,UAAU,EAAI,KAAK,gBAEpGA,CACT,CACF,EACM5O,GAAN,MAAMgW,CAAQ,CACZ,OAAO,UAAUxH,EAAO,CACtB,IAAIC,EAAI,IAAIuH,EACZ,OAAAvH,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACtBA,EAAM,WACRC,EAAE,SAAW,IAAI,KAAKD,EAAM,QAAQ,GAE/BC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAME,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,GAAO,MACrBA,EAAS,GAAQ,KAAK,IAEpB,OAAO,KAAK,WAAe,MAC7BA,EAAS,WAAgB,KAAK,YAE5B,OAAO,KAAK,YAAgB,MAC9BA,EAAS,YAAiB,KAAK,aAE7B,OAAO,KAAK,UAAc,MAC5BA,EAAS,UAAe,KAAK,WAE3B,OAAO,KAAK,KAAS,MACvBA,EAAS,KAAU,KAAK,MAEtB,OAAO,KAAK,YAAgB,MAC9BA,EAAS,YAAiB,KAAK,aAE7B,OAAO,KAAK,WAAe,MAC7BA,EAAS,WAAgB,KAAK,YAE5B,OAAO,KAAK,mBAAuB,MACrCA,EAAS,mBAAwB,KAAK,oBAEpC,OAAO,KAAK,SAAa,KAAe,KAAK,WAAa,OAC5DA,EAAS,SAAc,cAAe,KAAK,SAAW,KAAK,SAAS,UAAU,EAAI,KAAK,UAElFA,CACT,CACF,EACM3O,GAAN,MAAMgW,CAAiB,CACrB,OAAO,UAAUzH,EAAO,CACtB,IAAIC,EAAI,IAAIwH,EACZ,OAAAxH,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACnBC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAME,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,WAAe,MAC7BA,EAAS,WAAgB,KAAK,YAE5B,OAAO,KAAK,GAAO,MACrBA,EAAS,GAAQ,KAAK,IAEpB,OAAO,KAAK,YAAgB,MAC9BA,EAAS,YAAiB,KAAK,aAE7B,OAAO,KAAK,UAAc,MAC5BA,EAAS,UAAe,KAAK,WAE3B,OAAO,KAAK,KAAS,MACvBA,EAAS,KAAU,KAAK,MAEtB,OAAO,KAAK,YAAgB,MAC9BA,EAAS,YAAiB,KAAK,aAE7B,OAAO,KAAK,WAAe,MAC7BA,EAAS,WAAgB,KAAK,YAE5B,OAAO,KAAK,mBAAuB,MACrCA,EAAS,mBAAwB,KAAK,oBAEjCA,CACT,CACF,EAOM1O,GAAN,MAAMgW,CAAc,CAClB,OAAO,UAAU1H,EAAO,CACtB,IAAIC,EAAI,IAAIyH,EACZ,OAAAzH,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACtBA,EAAM,cACRC,EAAE,YAAcD,EAAM,YAAY,IAAIrO,GAAkB,SAAS,GAE5DsO,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAME,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,SAAa,MAC3BA,EAAS,SAAc,KAAK,UAE1B,OAAO,KAAK,KAAS,MACvBA,EAAS,KAAU,KAAK,MAEtB,OAAO,KAAK,YAAgB,KAAe,KAAK,cAAgB,OAClEA,EAAS,YAAiB,cAAe,KAAK,YAAc,KAAK,YAAY,UAAU,EAAI,KAAK,aAE9F,OAAO,KAAK,gBAAoB,MAClCA,EAAS,gBAAqB,KAAK,iBAEjC,OAAO,KAAK,iBAAqB,MACnCA,EAAS,iBAAsB,KAAK,kBAE/BA,CACT,CACF,EACMzO,GAAN,MAAMgW,CAAkB,CACtB,OAAO,UAAU3H,EAAO,CACtB,IAAIC,EAAI,IAAI0H,EACZ,OAAA1H,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACtBA,EAAM,iBACRC,EAAE,eAAiB,SAASD,EAAM,eAAgB,EAAE,GAElDA,EAAM,WACRC,EAAE,SAAW,SAASD,EAAM,SAAU,EAAE,GAEnCC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAME,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,UAAc,MAC5BA,EAAS,UAAe,KAAK,WAE3B,OAAO,KAAK,aAAiB,MAC/BA,EAAS,aAAkB,KAAK,cAE9B,OAAO,KAAK,eAAmB,MACjCA,EAAS,eAAoB,KAAK,gBAEhC,OAAO,KAAK,SAAa,MAC3BA,EAAS,SAAc,KAAK,UAEvBA,CACT,CACF,EAOMxO,GAAN,MAAMgW,CAAiB,CACrB,OAAO,UAAU5H,EAAO,CACtB,IAAIC,EAAI,IAAI2H,EACZ,OAAA3H,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACnBC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAME,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,UAAc,MAC5BA,EAAS,UAAe,KAAK,WAE3B,OAAO,KAAK,WAAe,MAC7BA,EAAS,WAAgB,KAAK,YAE5B,OAAO,KAAK,SAAa,MAC3BA,EAAS,SAAc,KAAK,UAEvBA,CACT,CACF,EACMvO,GAAN,MAAMgW,CAAkB,CACtB,OAAO,UAAU7H,EAAO,CACtB,IAAIC,EAAI,IAAI4H,EACZ,OAAA5H,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACtBA,EAAM,UACRC,EAAE,QAAUhN,EAAQ,UAAU+M,EAAM,OAAO,GAEtCC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAME,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,QAAY,KAAe,KAAK,UAAY,OAC1DA,EAAS,QAAa,cAAe,KAAK,QAAU,KAAK,QAAQ,UAAU,EAAI,KAAK,SAE/EA,CACT,CACF,EACMtO,GAAN,MAAMgW,CAAmB,CACvB,OAAO,UAAU9H,EAAO,CACtB,IAAIC,EAAI,IAAI6H,EACZ,OAAA7H,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACtBA,EAAM,SACRC,EAAE,OAAS,SAASD,EAAM,OAAQ,EAAE,GAElCA,EAAM,YACRC,EAAE,UAAYD,EAAM,UAAU,IAAI3S,GAAgB,SAAS,GAEtD4S,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAME,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,WAAe,MAC7BA,EAAS,WAAgB,KAAK,YAE5B,OAAO,KAAK,UAAc,MAC5BA,EAAS,UAAe,KAAK,WAE3B,OAAO,KAAK,IAAQ,MACtBA,EAAS,IAAS,KAAK,KAErB,OAAO,KAAK,OAAW,MACzBA,EAAS,OAAY,KAAK,QAExB,OAAO,KAAK,SAAa,MAC3BA,EAAS,SAAc,KAAK,UAE1B,OAAO,KAAK,YAAgB,MAC9BA,EAAS,YAAiB,KAAK,aAE7B,OAAO,KAAK,SAAa,MAC3BA,EAAS,SAAc,KAAK,UAE1B,OAAO,KAAK,UAAc,KAAe,KAAK,YAAc,OAC9DA,EAAS,UAAe,cAAe,KAAK,UAAY,KAAK,UAAU,UAAU,EAAI,KAAK,WAErFA,CACT,CACF,EACMrO,GAAN,MAAMgW,CAAoB,CACxB,OAAO,UAAU/H,EAAO,CACtB,IAAIC,EAAI,IAAI8H,EACZ,OAAA9H,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACtBA,EAAM,UACRC,EAAE,QAAUhN,EAAQ,UAAU+M,EAAM,OAAO,GAEtCC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAME,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,QAAY,KAAe,KAAK,UAAY,OAC1DA,EAAS,QAAa,cAAe,KAAK,QAAU,KAAK,QAAQ,UAAU,EAAI,KAAK,SAE/EA,CACT,CACF,EACMpO,GAAN,MAAMgW,CAAqB,CACzB,OAAO,UAAUhI,EAAO,CACtB,IAAIC,EAAI,IAAI+H,EACZ,OAAA/H,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACnBC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAME,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,WAAe,MAC7BA,EAAS,WAAgB,KAAK,YAE5B,OAAO,KAAK,WAAe,MAC7BA,EAAS,WAAgB,KAAK,YAE5B,OAAO,KAAK,UAAc,MAC5BA,EAAS,UAAe,KAAK,WAE3B,OAAO,KAAK,gBAAoB,MAClCA,EAAS,gBAAqB,KAAK,iBAE9BA,CACT,CACF,EACMnO,GAAN,MAAMgW,CAAqB,CACzB,OAAO,UAAUjI,EAAO,CACtB,IAAIC,EAAI,IAAIgI,EACZ,OAAAhI,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACnBC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAME,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,WAAe,MAC7BA,EAAS,WAAgB,KAAK,YAE5B,OAAO,KAAK,WAAe,MAC7BA,EAAS,WAAgB,KAAK,YAE5B,OAAO,KAAK,aAAiB,MAC/BA,EAAS,aAAkB,KAAK,cAE9B,OAAO,KAAK,QAAY,MAC1BA,EAAS,QAAa,KAAK,SAEtBA,CACT,CACF,EACMlO,GAAN,MAAMgW,CAAsB,CAC1B,OAAO,UAAUlI,EAAO,CACtB,IAAIC,EAAI,IAAIiI,EACZ,OAAAjI,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACnBC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAME,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,UAAc,MAC5BA,EAAS,UAAe,KAAK,WAExBA,CACT,CACF,EACMjO,GAAN,MAAMgW,CAAyB,CAC7B,OAAO,UAAUnI,EAAO,CACtB,IAAIC,EAAI,IAAIkI,EACZ,OAAAlI,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACtBA,EAAM,YACRC,EAAE,UAAYD,EAAM,UAAU,IAAIzM,GAAgB,SAAS,GAEtD0M,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAME,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,WAAe,MAC7BA,EAAS,WAAgB,KAAK,YAE5B,OAAO,KAAK,WAAe,MAC7BA,EAAS,WAAgB,KAAK,YAE5B,OAAO,KAAK,aAAiB,MAC/BA,EAAS,aAAkB,KAAK,cAE9B,OAAO,KAAK,UAAc,KAAe,KAAK,YAAc,OAC9DA,EAAS,UAAe,cAAe,KAAK,UAAY,KAAK,UAAU,UAAU,EAAI,KAAK,WAErFA,CACT,CACF,EACMhO,GAAN,MAAMgW,CAA0B,CAC9B,OAAO,UAAUpI,EAAO,CACtB,IAAIC,EAAI,IAAImI,EACZ,OAAAnI,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACnBC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAME,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,UAAc,MAC5BA,EAAS,UAAe,KAAK,WAExBA,CACT,CACF,EACM/N,GAAN,MAAMgW,CAAuB,CAC3B,OAAO,UAAUrI,EAAO,CACtB,IAAIC,EAAI,IAAIoI,EACZ,OAAApI,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACnBC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAME,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,QAAY,MAC1BA,EAAS,QAAa,KAAK,SAEzB,OAAO,KAAK,KAAS,MACvBA,EAAS,KAAU,KAAK,MAEtB,OAAO,KAAK,MAAU,MACxBA,EAAS,MAAW,KAAK,OAEvB,OAAO,KAAK,IAAQ,MACtBA,EAAS,IAAS,KAAK,KAErB,OAAO,KAAK,QAAY,MAC1BA,EAAS,QAAa,KAAK,SAEzB,OAAO,KAAK,SAAa,MAC3BA,EAAS,SAAc,KAAK,UAEvBA,CACT,CACF,EACM9N,GAAN,MAAMgW,CAAqC,CACzC,OAAO,UAAUtI,EAAO,CACtB,IAAIC,EAAI,IAAIqI,EACZ,OAAArI,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACtBA,EAAM,YACRC,EAAE,UAAYlZ,GAAoB4B,GAA+CqX,EAAM,SAAS,GAE9FA,EAAM,UACRC,EAAE,QAAU,IAAI,KAAKD,EAAM,OAAO,GAEhCA,EAAM,UACRC,EAAE,QAAU,IAAI,KAAKD,EAAM,OAAO,GAE7BC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAME,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,UAAc,MAC5BA,EAAS,UAAe,KAAK,WAE3B,OAAO,KAAK,QAAY,KAAe,KAAK,UAAY,OAC1DA,EAAS,QAAa,cAAe,KAAK,QAAU,KAAK,QAAQ,UAAU,EAAI,KAAK,SAElF,OAAO,KAAK,QAAY,KAAe,KAAK,UAAY,OAC1DA,EAAS,QAAa,cAAe,KAAK,QAAU,KAAK,QAAQ,UAAU,EAAI,KAAK,SAE/EA,CACT,CACF,EACM7N,GAAN,MAAMgW,CAAqB,CACzB,OAAO,UAAUvI,EAAO,CACtB,IAAIC,EAAI,IAAIsI,EACZ,OAAAtI,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACnBC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAME,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,WAAe,MAC7BA,EAAS,WAAgB,KAAK,YAE5B,OAAO,KAAK,UAAc,MAC5BA,EAAS,UAAe,KAAK,WAExBA,CACT,CACF,EACM5N,GAAN,MAAMgW,CAAsB,CAC1B,OAAO,UAAUxI,EAAO,CACtB,IAAIC,EAAI,IAAIuI,EACZ,OAAAvI,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACnBC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAME,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,WAAe,MAC7BA,EAAS,WAAgB,KAAK,YAE5B,OAAO,KAAK,UAAc,MAC5BA,EAAS,UAAe,KAAK,WAE3B,OAAO,KAAK,GAAO,MACrBA,EAAS,GAAQ,KAAK,IAEjBA,CACT,CACF,EACM3N,GAAN,MAAMgW,CAAuB,CAC3B,OAAO,UAAUzI,EAAO,CACtB,IAAIC,EAAI,IAAIwI,EACZ,OAAAxI,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACtBA,EAAM,UACRC,EAAE,QAAUhN,EAAQ,UAAU+M,EAAM,OAAO,GAEtCC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAME,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,QAAY,KAAe,KAAK,UAAY,OAC1DA,EAAS,QAAa,cAAe,KAAK,QAAU,KAAK,QAAQ,UAAU,EAAI,KAAK,SAE/EA,CACT,CACF,EACM1N,GAAN,MAAMgW,CAAwB,CAC5B,OAAO,UAAU1I,EAAO,CACtB,IAAIC,EAAI,IAAIyI,EACZ,OAAAzI,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACnBC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAME,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,WAAe,MAC7BA,EAAS,WAAgB,KAAK,YAE5B,OAAO,KAAK,UAAc,MAC5BA,EAAS,UAAe,KAAK,WAExBA,CACT,CACF,EACMzN,GAAN,MAAMgW,CAAyB,CAC7B,OAAO,UAAU3I,EAAO,CACtB,IAAIC,EAAI,IAAI0I,EACZ,OAAA1I,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACnBC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAME,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,UAAc,MAC5BA,EAAS,UAAe,KAAK,WAExBA,CACT,CACF,EACMxN,GAAN,MAAMgW,CAA2B,CAC/B,OAAO,UAAU5I,EAAO,CACtB,IAAIC,EAAI,IAAI2I,EACZ,OAAA3I,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACtBA,EAAM,WACRC,EAAE,SAAWD,EAAM,SAAS,IAAIkC,GAAKnb,GAAoB6B,GAAesZ,CAAC,CAAC,GAExElC,EAAM,aACRC,EAAE,WAAa3N,GAAqC,UAAU0N,EAAM,UAAU,GAEzEC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAME,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,WAAe,MAC7BA,EAAS,WAAgB,KAAK,YAE5B,OAAO,KAAK,WAAe,MAC7BA,EAAS,WAAgB,KAAK,YAE5B,OAAO,KAAK,SAAa,MAC3BA,EAAS,SAAc,KAAK,UAE1B,OAAO,KAAK,QAAY,MAC1BA,EAAS,QAAa,KAAK,SAEzB,OAAO,KAAK,OAAW,MACzBA,EAAS,OAAY,KAAK,QAExB,OAAO,KAAK,WAAe,KAAe,KAAK,aAAe,OAChEA,EAAS,WAAgB,cAAe,KAAK,WAAa,KAAK,WAAW,UAAU,EAAI,KAAK,YAE3F,OAAO,KAAK,QAAY,MAC1BA,EAAS,QAAa,KAAK,SAEzB,OAAO,KAAK,kBAAsB,MACpCA,EAAS,kBAAuB,KAAK,mBAEhCA,CACT,CACF,EACMvN,GAAN,MAAMgW,CAAkB,CACtB,OAAO,UAAU7I,EAAO,CACtB,IAAIC,EAAI,IAAI4I,EACZ,OAAA5I,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACnBC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAME,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,WAAe,MAC7BA,EAAS,WAAgB,KAAK,YAE5B,OAAO,KAAK,UAAc,MAC5BA,EAAS,UAAe,KAAK,WAExBA,CACT,CACF,EACMtN,GAAN,MAAMgW,CAAmB,CACvB,OAAO,UAAU9I,EAAO,CACtB,IAAIC,EAAI,IAAI6I,EACZ,OAAA7I,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACtBA,EAAM,UACRC,EAAE,QAAUhN,EAAQ,UAAU+M,EAAM,OAAO,GAEtCC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAME,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,QAAY,KAAe,KAAK,UAAY,OAC1DA,EAAS,QAAa,cAAe,KAAK,QAAU,KAAK,QAAQ,UAAU,EAAI,KAAK,SAE/EA,CACT,CACF,EACMrN,GAAN,MAAMgW,CAAiC,CACrC,OAAO,UAAU/I,EAAO,CACtB,IAAIC,EAAI,IAAI8I,EACZ,OAAA9I,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACtBA,EAAM,cACRC,EAAE,YAAc,IAAI,KAAKD,EAAM,WAAW,GAErCC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAME,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,WAAe,MAC7BA,EAAS,WAAgB,KAAK,YAE5B,OAAO,KAAK,WAAe,MAC7BA,EAAS,WAAgB,KAAK,YAE5B,OAAO,KAAK,YAAgB,KAAe,KAAK,cAAgB,OAClEA,EAAS,YAAiB,cAAe,KAAK,YAAc,KAAK,YAAY,UAAU,EAAI,KAAK,aAE3FA,CACT,CACF,EACMpN,GAAN,MAAMgW,CAAkC,CACtC,OAAO,UAAUhJ,EAAO,CACtB,IAAIC,EAAI,IAAI+I,EACZ,OAAA/I,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACtBA,EAAM,UACRC,EAAE,QAAUhN,EAAQ,UAAU+M,EAAM,OAAO,GAEtCC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAME,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,QAAY,KAAe,KAAK,UAAY,OAC1DA,EAAS,QAAa,cAAe,KAAK,QAAU,KAAK,QAAQ,UAAU,EAAI,KAAK,SAE/EA,CACT,CACF,EACMnN,EAAN,MAAMgW,CAAQ,CACZ,OAAO,UAAUjJ,EAAO,CACtB,IAAIC,EAAI,IAAIgJ,EACZ,OAAAhJ,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACtBA,EAAM,SACRC,EAAE,OAASlZ,GAAoB6B,GAAeoX,EAAM,MAAM,GAExDA,EAAM,WACRC,EAAE,SAAW,SAASD,EAAM,SAAU,EAAE,GAEtCA,EAAM,QACRC,EAAE,MAAQ,SAASD,EAAM,MAAO,EAAE,GAEhCA,EAAM,aACRC,EAAE,WAAa,SAASD,EAAM,WAAY,EAAE,GAE1CA,EAAM,SACRC,EAAE,OAAS,IAAI,KAAKD,EAAM,MAAM,GAE9BA,EAAM,MACRC,EAAE,IAAM,IAAI,KAAKD,EAAM,GAAG,GAExBA,EAAM,UACRC,EAAE,QAAU,IAAI,KAAKD,EAAM,OAAO,GAEhCA,EAAM,UACRC,EAAE,QAAU,IAAI,KAAKD,EAAM,OAAO,GAEhCA,EAAM,QACRC,EAAE,MAAQD,EAAM,MAAM,IAAI9M,GAAY,SAAS,GAE7C8M,EAAM,WACRC,EAAE,SAAWlZ,GAAoBY,EAAUqY,EAAM,QAAQ,GAEvDA,EAAM,OACRC,EAAE,KAAO,IAAI,KAAKD,EAAM,IAAI,GAE1BA,EAAM,YACRC,EAAE,UAAY,SAASD,EAAM,UAAW,EAAE,GAExCA,EAAM,eACRC,EAAE,aAAeD,EAAM,aAAa,IAAItP,GAAe,SAAS,GAE9DsP,EAAM,kBACRC,EAAE,gBAAkBD,EAAM,gBAAgB,IAAIxO,GAAQ,SAAS,GAE7DwO,EAAM,iBACRC,EAAE,eAAiBD,EAAM,eAAe,IAAItO,GAAc,SAAS,GAEjEsO,EAAM,iBACRC,EAAE,eAAiB,SAASD,EAAM,eAAgB,EAAE,GAElDA,EAAM,SACRC,EAAE,OAAS,IAAI,KAAKD,EAAM,MAAM,GAE9BA,EAAM,kBACRC,EAAE,gBAAkB5N,GAAuB,UAAU2N,EAAM,eAAe,GAExEA,EAAM,QACRC,EAAE,MAAQD,EAAM,MAAM,IAAI3M,GAAK,SAAS,GAEtC2M,EAAM,cACRC,EAAE,YAAc,IAAI,KAAKD,EAAM,WAAW,GAErCC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAME,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,WAAe,MAC7BA,EAAS,WAAgB,KAAK,YAE5B,OAAO,KAAK,GAAO,MACrBA,EAAS,GAAQ,KAAK,IAEpB,OAAO,KAAK,OAAW,MACzBA,EAAS,OAAY,KAAK,QAExB,OAAO,KAAK,WAAe,MAC7BA,EAAS,WAAgB,KAAK,YAE5B,OAAO,KAAK,OAAW,MACzBA,EAAS,OAAY,KAAK,QAExB,OAAO,KAAK,SAAa,MAC3BA,EAAS,SAAc,KAAK,UAE1B,OAAO,KAAK,MAAU,MACxBA,EAAS,MAAW,KAAK,OAEvB,OAAO,KAAK,WAAe,MAC7BA,EAAS,WAAgB,KAAK,YAE5B,OAAO,KAAK,OAAW,KAAe,KAAK,SAAW,OACxDA,EAAS,OAAY,cAAe,KAAK,OAAS,KAAK,OAAO,UAAU,EAAI,KAAK,QAE/E,OAAO,KAAK,IAAQ,KAAe,KAAK,MAAQ,OAClDA,EAAS,IAAS,cAAe,KAAK,IAAM,KAAK,IAAI,UAAU,EAAI,KAAK,KAEtE,OAAO,KAAK,QAAY,KAAe,KAAK,UAAY,OAC1DA,EAAS,QAAa,cAAe,KAAK,QAAU,KAAK,QAAQ,UAAU,EAAI,KAAK,SAElF,OAAO,KAAK,QAAY,KAAe,KAAK,UAAY,OAC1DA,EAAS,QAAa,cAAe,KAAK,QAAU,KAAK,QAAQ,UAAU,EAAI,KAAK,SAElF,OAAO,KAAK,MAAU,KAAe,KAAK,QAAU,OACtDA,EAAS,MAAW,cAAe,KAAK,MAAQ,KAAK,MAAM,UAAU,EAAI,KAAK,OAE5E,OAAO,KAAK,SAAa,MAC3BA,EAAS,SAAc,KAAK,UAE1B,OAAO,KAAK,KAAS,KAAe,KAAK,OAAS,OACpDA,EAAS,KAAU,cAAe,KAAK,KAAO,KAAK,KAAK,UAAU,EAAI,KAAK,MAEzE,OAAO,KAAK,QAAY,MAC1BA,EAAS,QAAa,KAAK,SAEzB,OAAO,KAAK,UAAc,MAC5BA,EAAS,UAAe,KAAK,WAE3B,OAAO,KAAK,aAAiB,KAAe,KAAK,eAAiB,OACpEA,EAAS,aAAkB,cAAe,KAAK,aAAe,KAAK,aAAa,UAAU,EAAI,KAAK,cAEjG,OAAO,KAAK,gBAAoB,KAAe,KAAK,kBAAoB,OAC1EA,EAAS,gBAAqB,cAAe,KAAK,gBAAkB,KAAK,gBAAgB,UAAU,EAAI,KAAK,iBAE1G,OAAO,KAAK,eAAmB,KAAe,KAAK,iBAAmB,OACxEA,EAAS,eAAoB,cAAe,KAAK,eAAiB,KAAK,eAAe,UAAU,EAAI,KAAK,gBAEvG,OAAO,KAAK,eAAmB,MACjCA,EAAS,eAAoB,KAAK,gBAEhC,OAAO,KAAK,aAAiB,MAC/BA,EAAS,aAAkB,KAAK,cAE9B,OAAO,KAAK,OAAW,MACzBA,EAAS,OAAY,KAAK,QAExB,OAAO,KAAK,iBAAqB,MACnCA,EAAS,iBAAsB,KAAK,kBAElC,OAAO,KAAK,UAAc,MAC5BA,EAAS,UAAe,KAAK,WAE3B,OAAO,KAAK,KAAS,MACvBA,EAAS,KAAU,KAAK,MAEtB,OAAO,KAAK,OAAW,KAAe,KAAK,SAAW,OACxDA,EAAS,OAAY,cAAe,KAAK,OAAS,KAAK,OAAO,UAAU,EAAI,KAAK,QAE/E,OAAO,KAAK,qBAAyB,MACvCA,EAAS,qBAA0B,KAAK,sBAEtC,OAAO,KAAK,gBAAoB,KAAe,KAAK,kBAAoB,OAC1EA,EAAS,gBAAqB,cAAe,KAAK,gBAAkB,KAAK,gBAAgB,UAAU,EAAI,KAAK,iBAE1G,OAAO,KAAK,2BAA+B,MAC7CA,EAAS,2BAAgC,KAAK,4BAE5C,OAAO,KAAK,MAAU,KAAe,KAAK,QAAU,OACtDA,EAAS,MAAW,cAAe,KAAK,MAAQ,KAAK,MAAM,UAAU,EAAI,KAAK,OAE5E,OAAO,KAAK,qBAAyB,MACvCA,EAAS,qBAA0B,KAAK,sBAEtC,OAAO,KAAK,YAAgB,KAAe,KAAK,cAAgB,OAClEA,EAAS,YAAiB,cAAe,KAAK,YAAc,KAAK,YAAY,UAAU,EAAI,KAAK,aAE3FA,CACT,CACF,EACMlN,GAAN,MAAMgW,CAAY,CAChB,OAAO,UAAUlJ,EAAO,CACtB,IAAIC,EAAI,IAAIiJ,EACZ,OAAAjJ,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACtBA,EAAM,SACRC,EAAE,OAAS,SAASD,EAAM,OAAQ,EAAE,GAElCA,EAAM,QACRC,EAAE,MAAQ,SAASD,EAAM,MAAO,EAAE,GAEhCA,EAAM,eACRC,EAAE,aAAeD,EAAM,aAAa,IAAItP,GAAe,SAAS,GAE9DsP,EAAM,WACRC,EAAE,SAAWD,EAAM,SAAS,IAAIxO,GAAQ,SAAS,GAE/CwO,EAAM,YACRC,EAAE,UAAYD,EAAM,UAAU,IAAI3S,GAAgB,SAAS,GAEzD2S,EAAM,WACRC,EAAE,SAAW,SAASD,EAAM,SAAU,EAAE,GAEnCC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAME,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,GAAO,MACrBA,EAAS,GAAQ,KAAK,IAEpB,OAAO,KAAK,IAAQ,MACtBA,EAAS,IAAS,KAAK,KAErB,OAAO,KAAK,OAAW,MACzBA,EAAS,OAAY,KAAK,QAExB,OAAO,KAAK,SAAa,MAC3BA,EAAS,SAAc,KAAK,UAE1B,OAAO,KAAK,YAAgB,MAC9BA,EAAS,YAAiB,KAAK,aAE7B,OAAO,KAAK,MAAU,MACxBA,EAAS,MAAW,KAAK,OAEvB,OAAO,KAAK,aAAiB,KAAe,KAAK,eAAiB,OACpEA,EAAS,aAAkB,cAAe,KAAK,aAAe,KAAK,aAAa,UAAU,EAAI,KAAK,cAEjG,OAAO,KAAK,SAAa,KAAe,KAAK,WAAa,OAC5DA,EAAS,SAAc,cAAe,KAAK,SAAW,KAAK,SAAS,UAAU,EAAI,KAAK,UAErF,OAAO,KAAK,SAAa,MAC3BA,EAAS,SAAc,KAAK,UAE1B,OAAO,KAAK,UAAc,KAAe,KAAK,YAAc,OAC9DA,EAAS,UAAe,cAAe,KAAK,UAAY,KAAK,UAAU,UAAU,EAAI,KAAK,WAExF,OAAO,KAAK,SAAa,MAC3BA,EAAS,SAAc,KAAK,UAE1B,OAAO,KAAK,iBAAqB,MACnCA,EAAS,iBAAsB,KAAK,kBAE/BA,CACT,CACF,EACMjN,GAAN,MAAMgW,CAAoB,CACxB,OAAO,UAAUnJ,EAAO,CACtB,IAAIC,EAAI,IAAIkJ,EACZ,OAAAlJ,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACtBA,EAAM,UACRC,EAAE,QAAUrN,GAA2B,UAAUoN,EAAM,OAAO,GAE5DA,EAAM,gBACRC,EAAE,cAAgB1V,EAAoB,UAAUyV,EAAM,aAAa,GAE9DC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAME,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,QAAY,KAAe,KAAK,UAAY,OAC1DA,EAAS,QAAa,cAAe,KAAK,QAAU,KAAK,QAAQ,UAAU,EAAI,KAAK,SAElF,OAAO,KAAK,cAAkB,KAAe,KAAK,gBAAkB,OACtEA,EAAS,cAAmB,cAAe,KAAK,cAAgB,KAAK,cAAc,UAAU,EAAI,KAAK,eAEjGA,CACT,CACF,EACMhN,GAAN,MAAMgW,CAAqB,CACzB,OAAO,UAAUpJ,EAAO,CACtB,IAAIC,EAAI,IAAImJ,EACZ,OAAAnJ,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACtBA,EAAM,WACRC,EAAE,SAAWD,EAAM,SAAS,IAAI/M,EAAQ,SAAS,GAE/C+M,EAAM,iBACRC,EAAE,eAAiBzV,EAAsB,UAAUwV,EAAM,cAAc,GAElEC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAME,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,SAAa,KAAe,KAAK,WAAa,OAC5DA,EAAS,SAAc,cAAe,KAAK,SAAW,KAAK,SAAS,UAAU,EAAI,KAAK,UAErF,OAAO,KAAK,eAAmB,KAAe,KAAK,iBAAmB,OACxEA,EAAS,eAAoB,cAAe,KAAK,eAAiB,KAAK,eAAe,UAAU,EAAI,KAAK,gBAEpGA,CACT,CACF,EACM/M,GAAN,MAAMgW,CAAK,CACT,OAAO,UAAUrJ,EAAO,CACtB,IAAIC,EAAI,IAAIoJ,EACZ,OAAApJ,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACnBC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAME,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,QAAY,MAC1BA,EAAS,QAAa,KAAK,SAEtBA,CACT,CACF,EACM9M,GAAN,MAAMgW,CAAkB,CACtB,OAAO,UAAUtJ,EAAO,CACtB,IAAIC,EAAI,IAAIqJ,EACZ,OAAArJ,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACnBC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAME,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,WAAe,MAC7BA,EAAS,WAAgB,KAAK,YAE5B,OAAO,KAAK,UAAc,MAC5BA,EAAS,UAAe,KAAK,WAE3B,OAAO,KAAK,OAAW,MACzBA,EAAS,OAAY,KAAK,QAErBA,CACT,CACF,EACM7M,GAAN,MAAMgW,CAAgB,CACpB,OAAO,UAAUvJ,EAAO,CACtB,IAAIC,EAAI,IAAIsJ,EACZ,OAAAtJ,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACtBA,EAAM,SACRC,EAAE,OAAS,SAASD,EAAM,OAAQ,EAAE,GAE/BC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAME,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,OAAW,MACzBA,EAAS,OAAY,KAAK,QAExB,OAAO,KAAK,SAAa,MAC3BA,EAAS,SAAc,KAAK,UAE1B,OAAO,KAAK,YAAgB,MAC9BA,EAAS,YAAiB,KAAK,aAE1BA,CACT,CACF,EACM5M,GAAN,MAAMgW,CAAoB,CACxB,OAAO,UAAUxJ,EAAO,CACtB,IAAIC,EAAI,IAAIuJ,EACZ,OAAAvJ,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACnBC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAME,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,UAAc,MAC5BA,EAAS,UAAe,KAAK,WAE3B,OAAO,KAAK,WAAe,MAC7BA,EAAS,WAAgB,KAAK,YAE5B,OAAO,KAAK,SAAa,MAC3BA,EAAS,SAAc,KAAK,UAE1B,OAAO,KAAK,iBAAqB,MACnCA,EAAS,iBAAsB,KAAK,kBAE/BA,CACT,CACF,EACM3M,GAAN,MAAMgW,CAAqB,CACzB,OAAO,UAAUzJ,EAAO,CACtB,IAAIC,EAAI,IAAIwJ,EACZ,OAAAxJ,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACtBA,EAAM,UACRC,EAAE,QAAUhN,EAAQ,UAAU+M,EAAM,OAAO,GAEtCC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAME,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,QAAY,KAAe,KAAK,UAAY,OAC1DA,EAAS,QAAa,cAAe,KAAK,QAAU,KAAK,QAAQ,UAAU,EAAI,KAAK,SAE/EA,CACT,CACF,EACM1M,GAAN,MAAMgW,CAAmB,CACvB,OAAO,UAAU1J,EAAO,CACtB,IAAIC,EAAI,IAAIyJ,EACZ,OAAAzJ,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACnBC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAME,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,WAAe,MAC7BA,EAAS,WAAgB,KAAK,YAE5B,OAAO,KAAK,UAAc,MAC5BA,EAAS,UAAe,KAAK,WAE3B,OAAO,KAAK,eAAmB,MACjCA,EAAS,eAAoB,KAAK,gBAEhC,OAAO,KAAK,aAAiB,MAC/BA,EAAS,aAAkB,KAAK,cAE3BA,CACT,CACF,EACMzM,GAAN,MAAMgW,CAAoB,CACxB,OAAO,UAAU3J,EAAO,CACtB,IAAIC,EAAI,IAAI0J,EACZ,OAAA1J,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACnBC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAME,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,WAAe,MAC7BA,EAAS,WAAgB,KAAK,YAE5B,OAAO,KAAK,UAAc,MAC5BA,EAAS,UAAe,KAAK,WAE3B,OAAO,KAAK,SAAa,MAC3BA,EAAS,SAAc,KAAK,UAE1B,OAAO,KAAK,gBAAoB,MAClCA,EAAS,gBAAqB,KAAK,iBAEjC,OAAO,KAAK,iBAAqB,MACnCA,EAAS,iBAAsB,KAAK,kBAE/BA,CACT,CACF,EACMxM,GAAN,MAAMgW,CAAqB,CACzB,OAAO,UAAU5J,EAAO,CACtB,IAAIC,EAAI,IAAI2J,EACZ,OAAA3J,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACtBA,EAAM,UACRC,EAAE,QAAUhN,EAAQ,UAAU+M,EAAM,OAAO,GAEtCC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAME,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,QAAY,KAAe,KAAK,UAAY,OAC1DA,EAAS,QAAa,cAAe,KAAK,QAAU,KAAK,QAAQ,UAAU,EAAI,KAAK,SAE/EA,CACT,CACF,EACMvM,GAAN,MAAMgW,CAA6B,CACjC,OAAO,UAAU7J,EAAO,CACtB,IAAIC,EAAI,IAAI4J,EACZ,OAAA5J,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACnBC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAME,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,UAAc,MAC5BA,EAAS,UAAe,KAAK,WAE3B,OAAO,KAAK,WAAe,MAC7BA,EAAS,WAAgB,KAAK,YAE5B,OAAO,KAAK,WAAe,MAC7BA,EAAS,WAAgB,KAAK,YAEzBA,CACT,CACF,EACMtM,GAAN,MAAMgW,CAA8B,CAClC,OAAO,UAAU9J,EAAO,CACtB,IAAIC,EAAI,IAAI6J,EACZ,OAAA7J,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACtBA,EAAM,UACRC,EAAE,QAAUhN,EAAQ,UAAU+M,EAAM,OAAO,GAEtCC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAME,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,QAAY,KAAe,KAAK,UAAY,OAC1DA,EAAS,QAAa,cAAe,KAAK,QAAU,KAAK,QAAQ,UAAU,EAAI,KAAK,SAE/EA,CACT,CACF,EACMrM,GAAN,MAAMgW,CAAqB,CACzB,OAAO,UAAU/J,EAAO,CACtB,IAAIC,EAAI,IAAI8J,EACZ,OAAA9J,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACtBA,EAAM,UACRC,EAAE,QAAUhN,EAAQ,UAAU+M,EAAM,OAAO,GAEzCA,EAAM,YACRC,EAAE,UAAYxV,EAAU,UAAUuV,EAAM,SAAS,GAE5CC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAME,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,QAAY,KAAe,KAAK,UAAY,OAC1DA,EAAS,QAAa,cAAe,KAAK,QAAU,KAAK,QAAQ,UAAU,EAAI,KAAK,SAElF,OAAO,KAAK,UAAc,KAAe,KAAK,YAAc,OAC9DA,EAAS,UAAe,cAAe,KAAK,UAAY,KAAK,UAAU,UAAU,EAAI,KAAK,WAErFA,CACT,CACF,EACMpM,GAAN,MAAMgW,CAAsB,CAC1B,OAAO,UAAUhK,EAAO,CACtB,IAAIC,EAAI,IAAI+J,EACZ,OAAA/J,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACtBA,EAAM,UACRC,EAAE,QAAUhN,EAAQ,UAAU+M,EAAM,OAAO,GAEtCC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAME,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,QAAY,KAAe,KAAK,UAAY,OAC1DA,EAAS,QAAa,cAAe,KAAK,QAAU,KAAK,QAAQ,UAAU,EAAI,KAAK,SAE/EA,CACT,CACF,EACMnM,GAAN,MAAMgW,CAAsB,CAC1B,OAAO,UAAUjK,EAAO,CACtB,IAAIC,EAAI,IAAIgK,EACZ,OAAAhK,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACtBA,EAAM,SACRC,EAAE,OAAS,SAASD,EAAM,OAAQ,EAAE,GAElCA,EAAM,YACRC,EAAE,UAAYD,EAAM,UAAU,IAAI3S,GAAgB,SAAS,GAEtD4S,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAME,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,WAAe,MAC7BA,EAAS,WAAgB,KAAK,YAE5B,OAAO,KAAK,UAAc,MAC5BA,EAAS,UAAe,KAAK,WAE3B,OAAO,KAAK,GAAO,MACrBA,EAAS,GAAQ,KAAK,IAEpB,OAAO,KAAK,IAAQ,MACtBA,EAAS,IAAS,KAAK,KAErB,OAAO,KAAK,OAAW,MACzBA,EAAS,OAAY,KAAK,QAExB,OAAO,KAAK,SAAa,MAC3BA,EAAS,SAAc,KAAK,UAE1B,OAAO,KAAK,YAAgB,MAC9BA,EAAS,YAAiB,KAAK,aAE7B,OAAO,KAAK,SAAa,MAC3BA,EAAS,SAAc,KAAK,UAE1B,OAAO,KAAK,UAAc,KAAe,KAAK,YAAc,OAC9DA,EAAS,UAAe,cAAe,KAAK,UAAY,KAAK,UAAU,UAAU,EAAI,KAAK,WAErFA,CACT,CACF,EACMlM,GAAN,MAAMgW,CAAuB,CAC3B,OAAO,UAAUlK,EAAO,CACtB,IAAIC,EAAI,IAAIiK,EACZ,OAAAjK,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACtBA,EAAM,UACRC,EAAE,QAAUhN,EAAQ,UAAU+M,EAAM,OAAO,GAEtCC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAME,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,QAAY,KAAe,KAAK,UAAY,OAC1DA,EAAS,QAAa,cAAe,KAAK,QAAU,KAAK,QAAQ,UAAU,EAAI,KAAK,SAE/EA,CACT,CACF,EACMjM,GAAN,MAAMgW,CAAmB,CACvB,OAAO,UAAUnK,EAAO,CACtB,IAAIC,EAAI,IAAIkK,EACZ,OAAAlK,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACnBC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAME,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,WAAe,MAC7BA,EAAS,WAAgB,KAAK,YAE5B,OAAO,KAAK,UAAc,MAC5BA,EAAS,UAAe,KAAK,WAE3B,OAAO,KAAK,OAAW,MACzBA,EAAS,OAAY,KAAK,QAErBA,CACT,CACF,EAOMhM,GAAN,MAAMgW,CAAe,CACnB,OAAO,UAAUpK,EAAO,CACtB,IAAIC,EAAI,IAAImK,EACZ,OAAAnK,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACtBA,EAAM,YACRC,EAAE,UAAYD,EAAM,UAAU,IAAI1L,GAAc,SAAS,GAEpD2L,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAME,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,UAAc,KAAe,KAAK,YAAc,OAC9DA,EAAS,UAAe,cAAe,KAAK,UAAY,KAAK,UAAU,UAAU,EAAI,KAAK,WAErFA,CACT,CACF,EACM/L,GAAN,MAAMgW,CAAQ,CACZ,OAAO,UAAUrK,EAAO,CACtB,IAAIC,EAAI,IAAIoK,EACZ,OAAApK,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACtBA,EAAM,SACRC,EAAE,OAAS,SAASD,EAAM,OAAQ,EAAE,GAElCA,EAAM,gBACRC,EAAE,cAAgB,SAASD,EAAM,cAAe,EAAE,GAEhDA,EAAM,YACRC,EAAE,UAAY,SAASD,EAAM,UAAW,EAAE,GAErCC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAME,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,aAAiB,MAC/BA,EAAS,aAAkB,KAAK,cAE9B,OAAO,KAAK,OAAW,MACzBA,EAAS,OAAY,KAAK,QAExB,OAAO,KAAK,cAAkB,MAChCA,EAAS,cAAmB,KAAK,eAE/B,OAAO,KAAK,UAAc,MAC5BA,EAAS,UAAe,KAAK,WAExBA,CACT,CACF,EACM9L,GAAN,MAAMgW,CAAc,CAClB,OAAO,UAAUtK,EAAO,CACtB,IAAIC,EAAI,IAAIqK,EACZ,OAAArK,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACtBA,EAAM,SACRC,EAAE,OAAS,SAASD,EAAM,OAAQ,EAAE,GAE/BC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAME,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,aAAiB,MAC/BA,EAAS,aAAkB,KAAK,cAE9B,OAAO,KAAK,OAAW,MACzBA,EAAS,OAAY,KAAK,QAErBA,CACT,CACF,EA0OM7L,GAAN,MAAMgW,CAAa,CACjB,OAAO,UAAUvK,EAAO,CACtB,IAAIC,EAAI,IAAIsK,EACZ,OAAAtK,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACtBA,EAAM,cACRC,EAAE,YAAc,IAAI,KAAKD,EAAM,WAAW,GAExCA,EAAM,SACRC,EAAE,OAAS,SAASD,EAAM,OAAQ,EAAE,GAElCA,EAAM,SACRC,EAAE,OAASjZ,GAAoB6B,GAAcmX,EAAM,MAAM,GAEvDA,EAAM,OACRC,EAAE,KAAOjZ,GAAoB8B,GAAYkX,EAAM,IAAI,GAE9CC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAME,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,GAAO,MACrBA,EAAS,GAAQ,KAAK,IAEpB,OAAO,KAAK,YAAgB,KAAe,KAAK,cAAgB,OAClEA,EAAS,YAAiB,cAAe,KAAK,YAAc,KAAK,YAAY,UAAU,EAAI,KAAK,aAE9F,OAAO,KAAK,OAAW,MACzBA,EAAS,OAAY,KAAK,QAExB,OAAO,KAAK,aAAiB,MAC/BA,EAAS,aAAkB,KAAK,cAE9B,OAAO,KAAK,OAAW,MACzBA,EAAS,OAAY,KAAK,QAExB,OAAO,KAAK,KAAS,MACvBA,EAAS,KAAU,KAAK,MAEtB,OAAO,KAAK,eAAmB,MACjCA,EAAS,eAAoB,KAAK,gBAEhC,OAAO,KAAK,SAAa,MAC3BA,EAAS,SAAc,KAAK,UAE1B,OAAO,KAAK,OAAW,MACzBA,EAAS,OAAY,KAAK,QAExB,OAAO,KAAK,YAAgB,MAC9BA,EAAS,YAAiB,KAAK,aAE7B,OAAO,KAAK,eAAmB,MACjCA,EAAS,eAAoB,KAAK,gBAE7BA,CACT,CACF,EAOM5L,GAAN,MAAMgW,CAA2B,CAC/B,OAAO,UAAUxK,EAAO,CACtB,IAAIC,EAAI,IAAIuK,EACZ,OAAAvK,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACnBC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAME,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,WAAe,MAC7BA,EAAS,WAAgB,KAAK,YAEzBA,CACT,CACF,EACM3L,GAAN,MAAMgW,CAA0B,CAC9B,OAAO,UAAUzK,EAAO,CACtB,IAAIC,EAAI,IAAIwK,EACZ,OAAAxK,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACtBA,EAAM,SACRC,EAAE,OAAS,SAASD,EAAM,OAAQ,EAAE,GAE/BC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAME,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,WAAe,MAC7BA,EAAS,WAAgB,KAAK,YAE5B,OAAO,KAAK,UAAc,MAC5BA,EAAS,UAAe,KAAK,WAE3B,OAAO,KAAK,OAAW,MACzBA,EAAS,OAAY,KAAK,QAErBA,CACT,CACF,EAqDM1L,GAAN,MAAMgW,CAAsB,CAC1B,OAAO,UAAU1K,EAAO,CACtB,IAAIC,EAAI,IAAIyK,EACZ,OAAAzK,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACtBA,EAAM,4BACRC,EAAE,0BAA4BvK,GAA+C,UAAUsK,EAAM,yBAAyB,GAEpHA,EAAM,eACRC,EAAE,aAAehZ,GAAoB+B,GAAcgX,EAAM,YAAY,GAEhEC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAME,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,WAAe,MAC7BA,EAAS,WAAgB,KAAK,YAE5B,OAAO,KAAK,QAAY,MAC1BA,EAAS,QAAa,KAAK,SAEzB,OAAO,KAAK,KAAS,MACvBA,EAAS,KAAU,KAAK,MAEtB,OAAO,KAAK,MAAU,MACxBA,EAAS,MAAW,KAAK,OAEvB,OAAO,KAAK,QAAY,MAC1BA,EAAS,QAAa,KAAK,SAEzB,OAAO,KAAK,QAAY,MAC1BA,EAAS,QAAa,KAAK,SAEzB,OAAO,KAAK,aAAiB,MAC/BA,EAAS,aAAkB,KAAK,cAE9B,OAAO,KAAK,YAAgB,MAC9BA,EAAS,YAAiB,KAAK,aAE7B,OAAO,KAAK,YAAgB,MAC9BA,EAAS,YAAiB,KAAK,aAE7B,OAAO,KAAK,YAAgB,MAC9BA,EAAS,YAAiB,KAAK,aAE7B,OAAO,KAAK,yBAA6B,MAC3CA,EAAS,yBAA8B,KAAK,0BAE1C,OAAO,KAAK,0BAA8B,KAAe,KAAK,4BAA8B,OAC9FA,EAAS,0BAA+B,cAAe,KAAK,0BAA4B,KAAK,0BAA0B,UAAU,EAAI,KAAK,2BAExI,OAAO,KAAK,4BAAgC,MAC9CA,EAAS,4BAAiC,KAAK,6BAE7C,OAAO,KAAK,aAAiB,MAC/BA,EAAS,aAAkB,KAAK,cAE3BA,CACT,CACF,EACMzL,GAAN,MAAMgW,CAA6B,CACjC,OAAO,UAAU3K,EAAO,CACtB,IAAIC,EAAI,IAAI0K,EACZ,OAAA1K,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACtBA,EAAM,aACRC,EAAE,WAAa,SAASD,EAAM,WAAY,EAAE,GAE1CA,EAAM,OACRC,EAAE,KAAO,SAASD,EAAM,KAAM,EAAE,GAE3BC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAME,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,eAAmB,MACjCA,EAAS,eAAoB,KAAK,gBAEhC,OAAO,KAAK,iBAAqB,MACnCA,EAAS,iBAAsB,KAAK,kBAElC,OAAO,KAAK,WAAe,MAC7BA,EAAS,WAAgB,KAAK,YAE5B,OAAO,KAAK,KAAS,MACvBA,EAAS,KAAU,KAAK,MAEtB,OAAO,KAAK,KAAS,MACvBA,EAAS,KAAU,KAAK,MAEtB,OAAO,KAAK,gCAAoC,MAClDA,EAAS,gCAAqC,KAAK,iCAE9CA,CACT,CACF,EACMxL,GAAN,MAAMgW,CAAmB,CACvB,OAAO,UAAU5K,EAAO,CACtB,IAAIC,EAAI,IAAI2K,EACZ,OAAA3K,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACnBC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAME,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,WAAe,MAC7BA,EAAS,WAAgB,KAAK,YAEzBA,CACT,CACF,EACMvL,GAAN,MAAMgW,CAAoB,CACxB,OAAO,UAAU7K,EAAO,CACtB,IAAIC,EAAI,IAAI4K,EACZ,OAAA5K,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACtBA,EAAM,WACRC,EAAE,SAAWnK,GAAS,UAAUkK,EAAM,QAAQ,GAEzCC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAME,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,SAAa,KAAe,KAAK,WAAa,OAC5DA,EAAS,SAAc,cAAe,KAAK,SAAW,KAAK,SAAS,UAAU,EAAI,KAAK,UAElFA,CACT,CACF,EACMtL,GAAN,MAAMgW,CAAoC,CACxC,OAAO,UAAU9K,EAAO,CACtB,IAAIC,EAAI,IAAI6K,EACZ,OAAA7K,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACnBC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAME,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,WAAe,MAC7BA,EAAS,WAAgB,KAAK,YAE5B,OAAO,KAAK,eAAmB,MACjCA,EAAS,eAAoB,KAAK,gBAE7BA,CACT,CACF,EACMrL,GAAN,MAAMgW,CAAqC,CACzC,OAAO,UAAU/K,EAAO,CACtB,IAAIC,EAAI,IAAI8K,EACZ,OAAA9K,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACtBA,EAAM,uBACRC,EAAE,qBAAuB,OAAO,KAAKD,EAAM,oBAAoB,EAAE,OAAO,CAAC2D,EAAKC,KAC5ED,EAAIC,CAAC,EAAI7N,GAAoB,UAAUiK,EAAM,qBAAqB4D,CAAC,CAAC,EAC7DD,GACN,CAAC,CAAC,GAEA1D,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAME,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,qBAAyB,KAAe,KAAK,uBAAyB,OACpFA,EAAS,qBAA0B,cAAe,KAAK,qBAAuB,KAAK,qBAAqB,UAAU,EAAI,KAAK,sBAEtHA,CACT,CACF,EACMpL,GAAN,MAAMgW,CAA6B,CACjC,OAAO,UAAUhL,EAAO,CACtB,IAAIC,EAAI,IAAI+K,EACZ,OAAA/K,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACnBC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAME,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,WAAe,MAC7BA,EAAS,WAAgB,KAAK,YAEzBA,CACT,CACF,EACMnL,GAAN,MAAMgW,CAA8B,CAClC,OAAO,UAAUjL,EAAO,CACtB,IAAIC,EAAI,IAAIgL,EACZ,OAAAhL,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACtBA,EAAM,qBACRC,EAAE,mBAAqB,SAASD,EAAM,mBAAoB,EAAE,GAE1DA,EAAM,WACRC,EAAE,SAAWhZ,GAAoBU,EAAUqY,EAAM,QAAQ,GAEpDC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAME,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,mBAAuB,MACrCA,EAAS,mBAAwB,KAAK,oBAEpC,OAAO,KAAK,SAAa,MAC3BA,EAAS,SAAc,KAAK,UAEvBA,CACT,CACF,EACMlL,GAAN,MAAMgW,CAAwB,CAC5B,OAAO,UAAUlL,EAAO,CACtB,IAAIC,EAAI,IAAIiL,EACZ,OAAAjL,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACnBC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAME,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,WAAe,MAC7BA,EAAS,WAAgB,KAAK,YAEzBA,CACT,CACF,EACMjL,GAAN,MAAMgW,CAAyB,CAC7B,OAAO,UAAUnL,EAAO,CACtB,IAAIC,EAAI,IAAIkL,EACZ,OAAAlL,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACtBA,EAAM,WACRC,EAAE,SAAWD,EAAM,SAAS,IAAI3L,GAAQ,SAAS,GAE/C2L,EAAM,kCACRC,EAAE,gCAAkC,IAAI,KAAKD,EAAM,+BAA+B,GAEhFA,EAAM,kBACRC,EAAE,gBAAkB,SAASD,EAAM,gBAAiB,EAAE,GAEjDC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAME,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,SAAa,KAAe,KAAK,WAAa,OAC5DA,EAAS,SAAc,cAAe,KAAK,SAAW,KAAK,SAAS,UAAU,EAAI,KAAK,UAErF,OAAO,KAAK,gCAAoC,KAAe,KAAK,kCAAoC,OAC1GA,EAAS,gCAAqC,cAAe,KAAK,gCAAkC,KAAK,gCAAgC,UAAU,EAAI,KAAK,iCAE1J,OAAO,KAAK,eAAmB,MACjCA,EAAS,eAAoB,KAAK,gBAEhC,OAAO,KAAK,gBAAoB,MAClCA,EAAS,gBAAqB,KAAK,iBAE9BA,CACT,CACF,EACMhL,GAAN,MAAMgW,CAA+B,CACnC,OAAO,UAAUpL,EAAO,CACtB,IAAIC,EAAI,IAAImL,EACZ,OAAAnL,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACnBC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAME,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,WAAe,MAC7BA,EAAS,WAAgB,KAAK,YAEzBA,CACT,CACF,EACM/K,GAAN,MAAMgW,CAAgC,CACpC,OAAO,UAAUrL,EAAO,CACtB,IAAIC,EAAI,IAAIoL,EACZ,OAAApL,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACtBA,EAAM,UACRC,EAAE,QAAU7L,GAAe,UAAU4L,EAAM,OAAO,GAE7CC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAME,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,QAAY,KAAe,KAAK,UAAY,OAC1DA,EAAS,QAAa,cAAe,KAAK,QAAU,KAAK,QAAQ,UAAU,EAAI,KAAK,SAE/EA,CACT,CACF,EACM9K,GAAN,MAAMgW,CAAwB,CAC5B,OAAO,UAAUtL,EAAO,CACtB,IAAIC,EAAI,IAAIqL,EACZ,OAAArL,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACnBC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAME,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,WAAe,MAC7BA,EAAS,WAAgB,KAAK,YAEzBA,CACT,CACF,EACM7K,GAAN,MAAMgW,CAAyB,CAC7B,OAAO,UAAUvL,EAAO,CACtB,IAAIC,EAAI,IAAIsL,EACZ,OAAAtL,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACtBA,EAAM,WACRC,EAAE,SAAWD,EAAM,SAAS,IAAI3L,GAAQ,SAAS,GAE5C4L,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAME,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,SAAa,KAAe,KAAK,WAAa,OAC5DA,EAAS,SAAc,cAAe,KAAK,SAAW,KAAK,SAAS,UAAU,EAAI,KAAK,UAElFA,CACT,CACF,EACM5K,GAAN,MAAMgW,CAAuB,CAC3B,OAAO,UAAUxL,EAAO,CACtB,IAAIC,EAAI,IAAIuL,EACZ,OAAAvL,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACnBC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAME,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,WAAe,MAC7BA,EAAS,WAAgB,KAAK,YAE5B,OAAO,KAAK,SAAa,MAC3BA,EAAS,SAAc,KAAK,UAEvBA,CACT,CACF,EACM3K,GAAN,MAAMgW,CAAwB,CAC5B,OAAO,UAAUzL,EAAO,CACtB,IAAIC,EAAI,IAAIwL,EACZ,OAAAxL,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACtBA,EAAM,SACRC,EAAE,OAAS1L,GAAa,UAAUyL,EAAM,MAAM,GAEzCC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAME,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,OAAW,KAAe,KAAK,SAAW,OACxDA,EAAS,OAAY,cAAe,KAAK,OAAS,KAAK,OAAO,UAAU,EAAI,KAAK,QAE5EA,CACT,CACF,EACM1K,GAAN,MAAMgW,CAA+C,CACnD,OAAO,UAAU1L,EAAO,CACtB,IAAIC,EAAI,IAAIyL,EACZ,OAAAzL,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACnBC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAME,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,0BAA8B,MAC5CA,EAAS,0BAA+B,KAAK,2BAExCA,CACT,CACF,EACMzK,GAAN,MAAMgW,CAA+C,CACnD,OAAO,UAAU3L,EAAO,CACtB,IAAIC,EAAI,IAAI0L,EACZ,OAAA1L,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACnBC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAME,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,0BAA8B,MAC5CA,EAAS,0BAA+B,KAAK,2BAExCA,CACT,CACF,EACMxK,GAAN,MAAMgW,CAAyB,CAC7B,OAAO,UAAU5L,EAAO,CACtB,IAAIC,EAAI,IAAI2L,EACZ,OAAA3L,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACtBA,EAAM,gBACRC,EAAE,cAAgB1V,EAAoB,UAAUyV,EAAM,aAAa,GAE9DC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAME,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,WAAe,MAC7BA,EAAS,WAAgB,KAAK,YAE5B,OAAO,KAAK,cAAkB,KAAe,KAAK,gBAAkB,OACtEA,EAAS,cAAmB,cAAe,KAAK,cAAgB,KAAK,cAAc,UAAU,EAAI,KAAK,eAEjGA,CACT,CACF,EACMvK,GAAN,MAAMgW,CAA0B,CAC9B,OAAO,UAAU7L,EAAO,CACtB,IAAIC,EAAI,IAAI4L,EACZ,OAAA5L,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACtBA,EAAM,UACRC,EAAE,QAAUD,EAAM,QAAQ,IAAIzL,GAAa,SAAS,GAElDyL,EAAM,iBACRC,EAAE,eAAiBzV,EAAsB,UAAUwV,EAAM,cAAc,GAElEC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAME,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,QAAY,KAAe,KAAK,UAAY,OAC1DA,EAAS,QAAa,cAAe,KAAK,QAAU,KAAK,QAAQ,UAAU,EAAI,KAAK,SAElF,OAAO,KAAK,eAAmB,KAAe,KAAK,iBAAmB,OACxEA,EAAS,eAAoB,cAAe,KAAK,eAAiB,KAAK,eAAe,UAAU,EAAI,KAAK,gBAEpGA,CACT,CACF,EACMtK,GAAN,MAAMgW,CAAS,CACb,OAAO,UAAU9L,EAAO,CACtB,IAAIC,EAAI,IAAI6L,EACZ,OAAA7L,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACtBA,EAAM,eACRC,EAAE,aAAehZ,GAAoB+B,GAAcgX,EAAM,YAAY,GAEhEC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAME,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,WAAe,MAC7BA,EAAS,WAAgB,KAAK,YAE5B,OAAO,KAAK,QAAY,MAC1BA,EAAS,QAAa,KAAK,SAEzB,OAAO,KAAK,KAAS,MACvBA,EAAS,KAAU,KAAK,MAEtB,OAAO,KAAK,MAAU,MACxBA,EAAS,MAAW,KAAK,OAEvB,OAAO,KAAK,QAAY,MAC1BA,EAAS,QAAa,KAAK,SAEzB,OAAO,KAAK,QAAY,MAC1BA,EAAS,QAAa,KAAK,SAEzB,OAAO,KAAK,aAAiB,MAC/BA,EAAS,aAAkB,KAAK,cAE9B,OAAO,KAAK,YAAgB,MAC9BA,EAAS,YAAiB,KAAK,aAE7B,OAAO,KAAK,YAAgB,MAC9BA,EAAS,YAAiB,KAAK,aAE7B,OAAO,KAAK,YAAgB,MAC9BA,EAAS,YAAiB,KAAK,aAE7B,OAAO,KAAK,iBAAqB,MACnCA,EAAS,iBAAsB,KAAK,kBAElC,OAAO,KAAK,mBAAuB,MACrCA,EAAS,mBAAwB,KAAK,oBAEpC,OAAO,KAAK,0BAA8B,MAC5CA,EAAS,0BAA+B,KAAK,2BAE3C,OAAO,KAAK,yBAA6B,MAC3CA,EAAS,yBAA8B,KAAK,0BAE1C,OAAO,KAAK,4BAAgC,MAC9CA,EAAS,4BAAiC,KAAK,6BAE7C,OAAO,KAAK,gBAAoB,MAClCA,EAAS,gBAAqB,KAAK,iBAEjC,OAAO,KAAK,aAAiB,MAC/BA,EAAS,aAAkB,KAAK,cAE3BA,CACT,CACF,EACMrK,GAAN,MAAMgW,CAAoB,CACxB,OAAO,UAAU/L,EAAO,CACtB,IAAIC,EAAI,IAAI8L,EACZ,OAAA9L,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACtBA,EAAM,+BACRC,EAAE,6BAA+BtL,GAA6B,UAAUqL,EAAM,4BAA4B,GAExGA,EAAM,yBACRC,EAAE,uBAAyB,SAASD,EAAM,uBAAwB,EAAE,GAE/DC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAME,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,WAAe,MAC7BA,EAAS,WAAgB,KAAK,YAE5B,OAAO,KAAK,cAAkB,MAChCA,EAAS,cAAmB,KAAK,eAE/B,OAAO,KAAK,aAAiB,MAC/BA,EAAS,aAAkB,KAAK,cAE9B,OAAO,KAAK,6BAAiC,KAAe,KAAK,+BAAiC,OACpGA,EAAS,6BAAkC,cAAe,KAAK,6BAA+B,KAAK,6BAA6B,UAAU,EAAI,KAAK,8BAEjJ,OAAO,KAAK,uBAA2B,MACzCA,EAAS,uBAA4B,KAAK,wBAErCA,CACT,CACF,EA2BMpK,GAAN,MAAMgW,CAAuB,CAC3B,OAAO,UAAUhM,EAAO,CACtB,IAAIC,EAAI,IAAI+L,EACZ,OAAA/L,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACtBA,EAAM,SACRC,EAAE,OAAShZ,GAAoBgC,GAA8B+W,EAAM,MAAM,GAEvEA,EAAM,gBACRC,EAAE,cAAgBhZ,GAAoB8B,GAAeiX,EAAM,aAAa,GAEtEA,EAAM,gBACRC,EAAE,cAAgB1V,EAAoB,UAAUyV,EAAM,aAAa,GAE9DC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAME,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,WAAe,MAC7BA,EAAS,WAAgB,KAAK,YAE5B,OAAO,KAAK,OAAW,MACzBA,EAAS,OAAY,KAAK,QAExB,OAAO,KAAK,cAAkB,MAChCA,EAAS,cAAmB,KAAK,eAE/B,OAAO,KAAK,cAAkB,KAAe,KAAK,gBAAkB,OACtEA,EAAS,cAAmB,cAAe,KAAK,cAAgB,KAAK,cAAc,UAAU,EAAI,KAAK,eAEjGA,CACT,CACF,EACMnK,GAAN,MAAMgW,CAAwB,CAC5B,OAAO,UAAUjM,EAAO,CACtB,IAAIC,EAAI,IAAIgM,EACZ,OAAAhM,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACtBA,EAAM,YACRC,EAAE,UAAYD,EAAM,UAAU,IAAIlK,GAAS,SAAS,GAElDkK,EAAM,iBACRC,EAAE,eAAiBzV,EAAsB,UAAUwV,EAAM,cAAc,GAElEC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAME,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,UAAc,KAAe,KAAK,YAAc,OAC9DA,EAAS,UAAe,cAAe,KAAK,UAAY,KAAK,UAAU,UAAU,EAAI,KAAK,WAExF,OAAO,KAAK,eAAmB,KAAe,KAAK,iBAAmB,OACxEA,EAAS,eAAoB,cAAe,KAAK,eAAiB,KAAK,eAAe,UAAU,EAAI,KAAK,gBAEpGA,CACT,CACF,EACMlK,GAAN,MAAMgW,CAA6B,CACjC,OAAO,UAAUlM,EAAO,CACtB,IAAIC,EAAI,IAAIiM,EACZ,OAAAjM,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACnBC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAME,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,WAAe,MAC7BA,EAAS,WAAgB,KAAK,YAE5B,OAAO,KAAK,mBAAuB,MACrCA,EAAS,mBAAwB,KAAK,oBAEjCA,CACT,CACF,EACMjK,GAAN,MAAMgW,CAA2B,CAC/B,OAAO,UAAUnM,EAAO,CACtB,IAAIC,EAAI,IAAIkM,EACZ,OAAAlM,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACnBC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAME,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,WAAe,MAC7BA,EAAS,WAAgB,KAAK,YAE5B,OAAO,KAAK,uBAA2B,MACzCA,EAAS,uBAA4B,KAAK,wBAErCA,CACT,CACF,EACMhK,GAAN,MAAMgW,CAA6B,CACjC,OAAO,UAAUpM,EAAO,CACtB,IAAIC,EAAI,IAAImM,EACZ,OAAAnM,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACnBC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAME,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,WAAe,MAC7BA,EAAS,WAAgB,KAAK,YAE5B,OAAO,KAAK,OAAW,MACzBA,EAAS,OAAY,KAAK,QAErBA,CACT,CACF,EACM/J,GAAN,MAAMgW,CAAsC,CAC1C,OAAO,UAAUrM,EAAO,CACtB,IAAIC,EAAI,IAAIoM,EACZ,OAAApM,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACnBC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAME,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,WAAe,MAC7BA,EAAS,WAAgB,KAAK,YAE5B,OAAO,KAAK,4BAAgC,MAC9CA,EAAS,4BAAiC,KAAK,6BAE1CA,CACT,CACF,EACM9J,GAAN,MAAMgW,CAAoC,CACxC,OAAO,UAAUtM,EAAO,CACtB,IAAIC,EAAI,IAAIqM,EACZ,OAAArM,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACnBC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAME,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,WAAe,MAC7BA,EAAS,WAAgB,KAAK,YAE5B,OAAO,KAAK,0BAA8B,MAC5CA,EAAS,0BAA+B,KAAK,2BAExCA,CACT,CACF,EACM7J,GAAN,MAAMgW,CAAsB,CAC1B,OAAO,UAAUvM,EAAO,CACtB,IAAIC,EAAI,IAAIsM,EACZ,OAAAtM,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACtBA,EAAM,4BACRC,EAAE,0BAA4BtK,GAA+C,UAAUqK,EAAM,yBAAyB,GAEpHA,EAAM,eACRC,EAAE,aAAehZ,GAAoB+B,GAAcgX,EAAM,YAAY,GAEhEC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAME,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,WAAe,MAC7BA,EAAS,WAAgB,KAAK,YAE5B,OAAO,KAAK,QAAY,MAC1BA,EAAS,QAAa,KAAK,SAEzB,OAAO,KAAK,KAAS,MACvBA,EAAS,KAAU,KAAK,MAEtB,OAAO,KAAK,MAAU,MACxBA,EAAS,MAAW,KAAK,OAEvB,OAAO,KAAK,QAAY,MAC1BA,EAAS,QAAa,KAAK,SAEzB,OAAO,KAAK,QAAY,MAC1BA,EAAS,QAAa,KAAK,SAEzB,OAAO,KAAK,aAAiB,MAC/BA,EAAS,aAAkB,KAAK,cAE9B,OAAO,KAAK,YAAgB,MAC9BA,EAAS,YAAiB,KAAK,aAE7B,OAAO,KAAK,YAAgB,MAC9BA,EAAS,YAAiB,KAAK,aAE7B,OAAO,KAAK,YAAgB,MAC9BA,EAAS,YAAiB,KAAK,aAE7B,OAAO,KAAK,yBAA6B,MAC3CA,EAAS,yBAA8B,KAAK,0BAE1C,OAAO,KAAK,0BAA8B,KAAe,KAAK,4BAA8B,OAC9FA,EAAS,0BAA+B,cAAe,KAAK,0BAA4B,KAAK,0BAA0B,UAAU,EAAI,KAAK,2BAExI,OAAO,KAAK,4BAAgC,MAC9CA,EAAS,4BAAiC,KAAK,6BAE7C,OAAO,KAAK,aAAiB,MAC/BA,EAAS,aAAkB,KAAK,cAE3BA,CACT,CACF,EACM5J,GAAN,MAAMgW,CAAgD,CACpD,OAAO,UAAUxM,EAAO,CACtB,IAAIC,EAAI,IAAIuM,EACZ,OAAAvM,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACtBA,EAAM,+BACRC,EAAE,6BAA+BtL,GAA6B,UAAUqL,EAAM,4BAA4B,GAErGC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAME,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,WAAe,MAC7BA,EAAS,WAAgB,KAAK,YAE5B,OAAO,KAAK,cAAkB,MAChCA,EAAS,cAAmB,KAAK,eAE/B,OAAO,KAAK,6BAAiC,KAAe,KAAK,+BAAiC,OACpGA,EAAS,6BAAkC,cAAe,KAAK,6BAA+B,KAAK,6BAA6B,UAAU,EAAI,KAAK,8BAE9IA,CACT,CACF,EACM3J,GAAN,MAAMgW,CAAiC,CACrC,OAAO,UAAUzM,EAAO,CACtB,IAAIC,EAAI,IAAIwM,EACZ,OAAAxM,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACtBA,EAAM,yBACRC,EAAE,uBAAyB,SAASD,EAAM,uBAAwB,EAAE,GAE/DC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAME,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,WAAe,MAC7BA,EAAS,WAAgB,KAAK,YAE5B,OAAO,KAAK,cAAkB,MAChCA,EAAS,cAAmB,KAAK,eAE/B,OAAO,KAAK,aAAiB,MAC/BA,EAAS,aAAkB,KAAK,cAE9B,OAAO,KAAK,uBAA2B,MACzCA,EAAS,uBAA4B,KAAK,wBAErCA,CACT,CACF,EAOM1J,GAAN,MAAMgW,CAAkC,CACtC,OAAO,UAAU1M,EAAO,CACtB,IAAIC,EAAI,IAAIyM,EACZ,OAAAzM,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACtBA,EAAM,gBACRC,EAAE,cAAgB1V,EAAoB,UAAUyV,EAAM,aAAa,GAE9DC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAME,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,WAAe,MAC7BA,EAAS,WAAgB,KAAK,YAE5B,OAAO,KAAK,cAAkB,KAAe,KAAK,gBAAkB,OACtEA,EAAS,cAAmB,cAAe,KAAK,cAAgB,KAAK,cAAc,UAAU,EAAI,KAAK,eAEjGA,CACT,CACF,EACMzJ,GAAN,MAAMgW,CAAmC,CACvC,OAAO,UAAU3M,EAAO,CACtB,IAAIC,EAAI,IAAI0M,EACZ,OAAA1M,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACtBA,EAAM,UACRC,EAAE,QAAUD,EAAM,QAAQ,IAAIpJ,GAAe,SAAS,GAEpDoJ,EAAM,iBACRC,EAAE,eAAiBzV,EAAsB,UAAUwV,EAAM,cAAc,GAElEC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAME,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,QAAY,KAAe,KAAK,UAAY,OAC1DA,EAAS,QAAa,cAAe,KAAK,QAAU,KAAK,QAAQ,UAAU,EAAI,KAAK,SAElF,OAAO,KAAK,eAAmB,KAAe,KAAK,iBAAmB,OACxEA,EAAS,eAAoB,cAAe,KAAK,eAAiB,KAAK,eAAe,UAAU,EAAI,KAAK,gBAEpGA,CACT,CACF,EACMxJ,GAAN,MAAMgW,CAAe,CACnB,OAAO,UAAU5M,EAAO,CACtB,IAAIC,EAAI,IAAI2M,EACZ,OAAA3M,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACtBA,EAAM,OACRC,EAAE,KAAO,SAASD,EAAM,KAAM,EAAE,GAE9BA,EAAM,QACRC,EAAE,MAAQ/Y,GAAoBgC,GAAO8W,EAAM,KAAK,GAE9CA,EAAM,UACRC,EAAE,QAAU,IAAI,KAAKD,EAAM,OAAO,GAEhCA,EAAM,SACRC,EAAE,OAAS/Y,GAAoBiC,GAAsB6W,EAAM,MAAM,GAE5DC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAME,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,WAAe,MAC7BA,EAAS,WAAgB,KAAK,YAE5B,OAAO,KAAK,KAAS,MACvBA,EAAS,KAAU,KAAK,MAEtB,OAAO,KAAK,MAAU,MACxBA,EAAS,MAAW,KAAK,OAEvB,OAAO,KAAK,QAAY,KAAe,KAAK,UAAY,OAC1DA,EAAS,QAAa,cAAe,KAAK,QAAU,KAAK,QAAQ,UAAU,EAAI,KAAK,SAElF,OAAO,KAAK,OAAW,MACzBA,EAAS,OAAY,KAAK,QAErBA,CACT,CACF,EAOMvJ,GAAN,MAAMgW,CAA8B,CAClC,OAAO,UAAU7M,EAAO,CACtB,IAAIC,EAAI,IAAI4M,EACZ,OAAA5M,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACtBA,EAAM,YACRC,EAAE,UAAYnJ,GAAiB,UAAUkJ,EAAM,SAAS,GAEnDC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAME,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,UAAc,KAAe,KAAK,YAAc,OAC9DA,EAAS,UAAe,cAAe,KAAK,UAAY,KAAK,UAAU,UAAU,EAAI,KAAK,WAExF,OAAO,KAAK,IAAQ,MACtBA,EAAS,IAAS,KAAK,KAElBA,CACT,CACF,EACMtJ,GAAN,MAAMgW,CAAiB,CACrB,OAAO,UAAU9M,EAAO,CACtB,IAAIC,EAAI,IAAI6M,EACZ,OAAA7M,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACnBC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAME,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,YAAgB,MAC9BA,EAAS,YAAiB,KAAK,aAE7B,OAAO,KAAK,KAAS,MACvBA,EAAS,KAAU,KAAK,MAEnBA,CACT,CACF,EACMrJ,GAAN,MAAMgW,CAA0B,CAC9B,OAAO,UAAU/M,EAAO,CACtB,IAAIC,EAAI,IAAI8M,EACZ,OAAA9M,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACtBA,EAAM,WACRC,EAAE,SAAW,SAASD,EAAM,SAAU,EAAE,GAEnCC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAME,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,WAAe,MAC7BA,EAAS,WAAgB,KAAK,YAE5B,OAAO,KAAK,WAAe,MAC7BA,EAAS,WAAgB,KAAK,YAE5B,OAAO,KAAK,YAAgB,MAC9BA,EAAS,YAAiB,KAAK,aAE7B,OAAO,KAAK,QAAY,MAC1BA,EAAS,QAAa,KAAK,SAEzB,OAAO,KAAK,IAAQ,MACtBA,EAAS,IAAS,KAAK,KAErB,OAAO,KAAK,SAAa,MAC3BA,EAAS,SAAc,KAAK,UAE1B,OAAO,KAAK,eAAmB,MACjCA,EAAS,eAAoB,KAAK,gBAE7BA,CACT,CACF,EAOMpJ,GAAN,MAAMgW,CAAW,CACf,OAAO,UAAUhN,EAAO,CACtB,IAAIC,EAAI,IAAI+M,EACZ,OAAA/M,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACtBA,EAAM,SACRC,EAAE,OAAS,SAASD,EAAM,OAAQ,EAAE,GAElCA,EAAM,MACRC,EAAE,IAAM,SAASD,EAAM,IAAK,EAAE,GAE5BA,EAAM,MACRC,EAAE,IAAM,SAASD,EAAM,IAAK,EAAE,GAE5BA,EAAM,SACRC,EAAE,OAASzG,GAAa,UAAUwG,EAAM,MAAM,GAE5CA,EAAM,UACRC,EAAE,QAAU3I,GAAQ,UAAU0I,EAAM,OAAO,GAEzCA,EAAM,UACRC,EAAE,QAAU,IAAI,KAAKD,EAAM,OAAO,GAE7BC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAME,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,GAAO,MACrBA,EAAS,GAAQ,KAAK,IAEpB,OAAO,KAAK,OAAW,MACzBA,EAAS,OAAY,KAAK,QAExB,OAAO,KAAK,SAAa,MAC3BA,EAAS,SAAc,KAAK,UAE1B,OAAO,KAAK,YAAgB,MAC9BA,EAAS,YAAiB,KAAK,aAE7B,OAAO,KAAK,IAAQ,MACtBA,EAAS,IAAS,KAAK,KAErB,OAAO,KAAK,IAAQ,MACtBA,EAAS,IAAS,KAAK,KAErB,OAAO,KAAK,OAAW,KAAe,KAAK,SAAW,OACxDA,EAAS,OAAY,cAAe,KAAK,OAAS,KAAK,OAAO,UAAU,EAAI,KAAK,QAE/E,OAAO,KAAK,QAAY,KAAe,KAAK,UAAY,OAC1DA,EAAS,QAAa,cAAe,KAAK,QAAU,KAAK,QAAQ,UAAU,EAAI,KAAK,SAElF,OAAO,KAAK,QAAY,KAAe,KAAK,UAAY,OAC1DA,EAAS,QAAa,cAAe,KAAK,QAAU,KAAK,QAAQ,UAAU,EAAI,KAAK,SAE/EA,CACT,CACF,EACMnJ,GAAN,MAAMgW,CAAyB,CAC7B,OAAO,UAAUjN,EAAO,CACtB,IAAIC,EAAI,IAAIgN,EACZ,OAAAhN,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACtBA,EAAM,WACRC,EAAE,SAAW9Y,GAAoBiC,GAAU4W,EAAM,QAAQ,GAEpDC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAME,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,SAAa,MAC3BA,EAAS,SAAc,KAAK,UAE1B,OAAO,KAAK,eAAmB,MACjCA,EAAS,eAAoB,KAAK,gBAE7BA,CACT,CACF,EACMlJ,GAAN,MAAMgW,CAA0B,CAC9B,OAAO,UAAUlN,EAAO,CACtB,IAAIC,EAAI,IAAIiN,EACZ,OAAAjN,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACnBC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAME,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,WAAe,MAC7BA,EAAS,WAAgB,KAAK,YAE5B,OAAO,KAAK,UAAc,MAC5BA,EAAS,UAAe,KAAK,WAExBA,CACT,CACF,EACMjJ,GAAN,MAAMgW,CAAsC,CAC1C,OAAO,UAAUnN,EAAO,CACtB,IAAIC,EAAI,IAAIkN,EACZ,OAAAlN,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACnBC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAME,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,WAAe,MAC7BA,EAAS,WAAgB,KAAK,YAE5B,OAAO,KAAK,WAAe,MAC7BA,EAAS,WAAgB,KAAK,YAE5B,OAAO,KAAK,WAAe,MAC7BA,EAAS,WAAgB,KAAK,YAEzBA,CACT,CACF,EACMhJ,GAAN,MAAMgW,CAAuC,CAC3C,OAAO,UAAUpN,EAAO,CACtB,IAAIC,EAAI,IAAImN,EACZ,OAAAnN,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACnBC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAME,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,UAAc,MAC5BA,EAAS,UAAe,KAAK,WAE3B,OAAO,KAAK,MAAU,MACxBA,EAAS,MAAW,KAAK,OAEpBA,CACT,CACF,EACM/I,GAAN,MAAMgW,CAA4B,CAChC,OAAO,UAAUrN,EAAO,CACtB,IAAIC,EAAI,IAAIoN,EACZ,OAAApN,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACnBC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAME,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,WAAe,MAC7BA,EAAS,WAAgB,KAAK,YAE5B,OAAO,KAAK,GAAO,MACrBA,EAAS,GAAQ,KAAK,IAEjBA,CACT,CACF,EACM9I,GAAN,MAAMgW,CAAQ,CACZ,OAAO,UAAUtN,EAAO,CACtB,IAAIC,EAAI,IAAIqN,EACZ,OAAArN,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACtBA,EAAM,SACRC,EAAE,OAAS9Y,GAAoBkC,GAAe2W,EAAM,MAAM,GAExDA,EAAM,SACRC,EAAE,OAAS,SAASD,EAAM,OAAQ,EAAE,GAElCA,EAAM,UACRC,EAAE,QAAU,IAAI,KAAKD,EAAM,OAAO,GAEhCA,EAAM,WACRC,EAAE,SAAW1I,GAAgB,UAAUyI,EAAM,QAAQ,GAEnDA,EAAM,kBACRC,EAAE,gBAAkBxI,GAAuB,UAAUuI,EAAM,eAAe,GAExEA,EAAM,MACRC,EAAE,IAAM,SAASD,EAAM,IAAK,EAAE,GAEzBC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAME,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,UAAc,MAC5BA,EAAS,UAAe,KAAK,WAE3B,OAAO,KAAK,OAAW,MACzBA,EAAS,OAAY,KAAK,QAExB,OAAO,KAAK,GAAO,MACrBA,EAAS,GAAQ,KAAK,IAEpB,OAAO,KAAK,OAAW,MACzBA,EAAS,OAAY,KAAK,QAExB,OAAO,KAAK,QAAY,KAAe,KAAK,UAAY,OAC1DA,EAAS,QAAa,cAAe,KAAK,QAAU,KAAK,QAAQ,UAAU,EAAI,KAAK,SAElF,OAAO,KAAK,aAAiB,MAC/BA,EAAS,aAAkB,KAAK,cAE9B,OAAO,KAAK,SAAa,KAAe,KAAK,WAAa,OAC5DA,EAAS,SAAc,cAAe,KAAK,SAAW,KAAK,SAAS,UAAU,EAAI,KAAK,UAErF,OAAO,KAAK,gBAAoB,KAAe,KAAK,kBAAoB,OAC1EA,EAAS,gBAAqB,cAAe,KAAK,gBAAkB,KAAK,gBAAgB,UAAU,EAAI,KAAK,iBAE1G,OAAO,KAAK,mBAAuB,MACrCA,EAAS,mBAAwB,KAAK,oBAEpC,OAAO,KAAK,OAAW,MACzBA,EAAS,OAAY,KAAK,QAExB,OAAO,KAAK,IAAQ,MACtBA,EAAS,IAAS,KAAK,KAErB,OAAO,KAAK,gBAAoB,MAClCA,EAAS,gBAAqB,KAAK,iBAE9BA,CACT,CACF,EACM7I,GAAN,MAAMgW,CAAgB,CACpB,OAAO,UAAUvN,EAAO,CACtB,IAAIC,EAAI,IAAIsN,EACZ,OAAAtN,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACtBA,EAAM,wBACRC,EAAE,sBAAwBvI,GAAK,UAAUsI,EAAM,qBAAqB,GAElEA,EAAM,oBACRC,EAAE,kBAAoBvI,GAAK,UAAUsI,EAAM,iBAAiB,GAE1DA,EAAM,wBACRC,EAAE,sBAAwBvI,GAAK,UAAUsI,EAAM,qBAAqB,GAElEA,EAAM,UACRC,EAAE,QAAUvI,GAAK,UAAUsI,EAAM,OAAO,GAEtCA,EAAM,oBACRC,EAAE,kBAAoBvI,GAAK,UAAUsI,EAAM,iBAAiB,GAEvDC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAME,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,sBAA0B,KAAe,KAAK,wBAA0B,OACtFA,EAAS,sBAA2B,cAAe,KAAK,sBAAwB,KAAK,sBAAsB,UAAU,EAAI,KAAK,uBAE5H,OAAO,KAAK,kBAAsB,KAAe,KAAK,oBAAsB,OAC9EA,EAAS,kBAAuB,cAAe,KAAK,kBAAoB,KAAK,kBAAkB,UAAU,EAAI,KAAK,mBAEhH,OAAO,KAAK,sBAA0B,KAAe,KAAK,wBAA0B,OACtFA,EAAS,sBAA2B,cAAe,KAAK,sBAAwB,KAAK,sBAAsB,UAAU,EAAI,KAAK,uBAE5H,OAAO,KAAK,QAAY,KAAe,KAAK,UAAY,OAC1DA,EAAS,QAAa,cAAe,KAAK,QAAU,KAAK,QAAQ,UAAU,EAAI,KAAK,SAElF,OAAO,KAAK,kBAAsB,KAAe,KAAK,oBAAsB,OAC9EA,EAAS,kBAAuB,cAAe,KAAK,kBAAoB,KAAK,kBAAkB,UAAU,EAAI,KAAK,mBAEhH,OAAO,KAAK,eAAmB,MACjCA,EAAS,eAAoB,KAAK,gBAEhC,OAAO,KAAK,qBAAyB,MACvCA,EAAS,qBAA0B,KAAK,sBAEtC,OAAO,KAAK,aAAiB,MAC/BA,EAAS,aAAkB,KAAK,cAE9B,OAAO,KAAK,mBAAuB,MACrCA,EAAS,mBAAwB,KAAK,oBAEjCA,CACT,CACF,EACM5I,GAAN,MAAMgW,CAAqC,CACzC,OAAO,UAAUxN,EAAO,CACtB,IAAIC,EAAI,IAAIuN,EACZ,OAAAvN,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACnBC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAME,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,eAAmB,MACjCA,EAAS,eAAoB,KAAK,gBAEhC,OAAO,KAAK,qBAAyB,MACvCA,EAAS,qBAA0B,KAAK,sBAEtC,OAAO,KAAK,aAAiB,MAC/BA,EAAS,aAAkB,KAAK,cAE9B,OAAO,KAAK,mBAAuB,MACrCA,EAAS,mBAAwB,KAAK,oBAEpC,OAAO,KAAK,wBAA4B,MAC1CA,EAAS,wBAA6B,KAAK,yBAEzC,OAAO,KAAK,4BAAgC,MAC9CA,EAAS,4BAAiC,KAAK,6BAE7C,OAAO,KAAK,cAAkB,MAChCA,EAAS,cAAmB,KAAK,eAE/B,OAAO,KAAK,4BAAgC,MAC9CA,EAAS,4BAAiC,KAAK,6BAE7C,OAAO,KAAK,oBAAwB,MACtCA,EAAS,oBAAyB,KAAK,qBAElCA,CACT,CACF,EACM3I,GAAN,MAAMgW,CAAuB,CAC3B,OAAO,UAAUzN,EAAO,CACtB,IAAIC,EAAI,IAAIwN,EACZ,OAAAxN,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACtBA,EAAM,QACRC,EAAE,MAAQ,IAAI,KAAKD,EAAM,KAAK,GAE5BA,EAAM,kBACRC,EAAE,gBAAkB,SAASD,EAAM,gBAAiB,EAAE,GAEjDC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAME,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,MAAU,KAAe,KAAK,QAAU,OACtDA,EAAS,MAAW,cAAe,KAAK,MAAQ,KAAK,MAAM,UAAU,EAAI,KAAK,OAE5E,OAAO,KAAK,YAAgB,MAC9BA,EAAS,YAAiB,KAAK,aAE7B,OAAO,KAAK,QAAY,MAC1BA,EAAS,QAAa,KAAK,SAEzB,OAAO,KAAK,gBAAoB,MAClCA,EAAS,gBAAqB,KAAK,iBAE9BA,CACT,CACF,EACM1I,GAAN,MAAMgW,CAAK,CACT,OAAO,UAAU1N,EAAO,CACtB,IAAIC,EAAI,IAAIyN,EACZ,OAAAzN,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACtBA,EAAM,UACRC,EAAE,QAAU,IAAI,KAAKD,EAAM,OAAO,GAE7BC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAME,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,QAAY,KAAe,KAAK,UAAY,OAC1DA,EAAS,QAAa,cAAe,KAAK,QAAU,KAAK,QAAQ,UAAU,EAAI,KAAK,SAElF,OAAO,KAAK,GAAO,MACrBA,EAAS,GAAQ,KAAK,IAEpB,OAAO,KAAK,SAAa,MAC3BA,EAAS,SAAc,KAAK,UAE1B,OAAO,KAAK,IAAQ,MACtBA,EAAS,IAAS,KAAK,KAElBA,CACT,CACF,EACMzI,GAAN,MAAMgW,CAAwB,CAC5B,OAAO,UAAU3N,EAAO,CACtB,IAAIC,EAAI,IAAI0N,EACZ,OAAA1N,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACnBC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAME,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,WAAe,MAC7BA,EAAS,WAAgB,KAAK,YAE5B,OAAO,KAAK,UAAc,MAC5BA,EAAS,UAAe,KAAK,WAExBA,CACT,CACF,EACMxI,GAAN,MAAMgW,CAAyB,CAC7B,OAAO,UAAU5N,EAAO,CACtB,IAAIC,EAAI,IAAI2N,EACZ,OAAA3N,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACtBA,EAAM,UACRC,EAAE,QAAU3I,GAAQ,UAAU0I,EAAM,OAAO,GAEtCC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAME,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,QAAY,KAAe,KAAK,UAAY,OAC1DA,EAAS,QAAa,cAAe,KAAK,QAAU,KAAK,QAAQ,UAAU,EAAI,KAAK,SAE/EA,CACT,CACF,EACMvI,GAAN,MAAMgW,CAAgC,CACpC,OAAO,UAAU7N,EAAO,CACtB,IAAIC,EAAI,IAAI4N,EACZ,OAAA5N,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACnBC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAME,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,WAAe,MAC7BA,EAAS,WAAgB,KAAK,YAEzBA,CACT,CACF,EACMtI,GAAN,MAAMgW,CAAiC,CACrC,OAAO,UAAU9N,EAAO,CACtB,IAAIC,EAAI,IAAI6N,EACZ,OAAA7N,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACnBC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAME,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,oBAAwB,MACtCA,EAAS,oBAAyB,KAAK,qBAErC,OAAO,KAAK,gBAAoB,MAClCA,EAAS,gBAAqB,KAAK,iBAE9BA,CACT,CACF,EACMrI,GAAN,MAAMgW,CAAwB,CAC5B,OAAO,UAAU/N,EAAO,CACtB,IAAIC,EAAI,IAAI8N,EACZ,OAAA9N,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACnBC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAME,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,WAAe,MAC7BA,EAAS,WAAgB,KAAK,YAE5B,OAAO,KAAK,UAAc,MAC5BA,EAAS,UAAe,KAAK,WAExBA,CACT,CACF,EACMpI,GAAN,MAAMgW,CAAyB,CAC7B,OAAO,UAAUhO,EAAO,CACtB,IAAIC,EAAI,IAAI+N,EACZ,OAAA/N,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACtBA,EAAM,UACRC,EAAE,QAAU5G,GAAc,UAAU2G,EAAM,OAAO,GAE5CC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAME,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,QAAY,KAAe,KAAK,UAAY,OAC1DA,EAAS,QAAa,cAAe,KAAK,QAAU,KAAK,QAAQ,UAAU,EAAI,KAAK,SAE/EA,CACT,CACF,EACMnI,GAAN,MAAMgW,CAAqC,CACzC,OAAO,UAAUjO,EAAO,CACtB,IAAIC,EAAI,IAAIgO,EACZ,OAAAhO,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACnBC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAME,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,WAAe,MAC7BA,EAAS,WAAgB,KAAK,YAE5B,OAAO,KAAK,YAAgB,MAC9BA,EAAS,YAAiB,KAAK,aAE1BA,CACT,CACF,EACMlI,GAAN,MAAMgW,CAAsC,CAC1C,OAAO,UAAUlO,EAAO,CACtB,IAAIC,EAAI,IAAIiO,EACZ,OAAAjO,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACnBC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAME,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,YAAgB,MAC9BA,EAAS,YAAiB,KAAK,aAE1BA,CACT,CACF,EACMjI,GAAN,MAAMgW,CAAqC,CACzC,OAAO,UAAUnO,EAAO,CACtB,IAAIC,EAAI,IAAIkO,EACZ,OAAAlO,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACtBA,EAAM,QACRC,EAAE,MAAQ,IAAI,KAAKD,EAAM,KAAK,GAE5BA,EAAM,MACRC,EAAE,IAAM,IAAI,KAAKD,EAAM,GAAG,GAErBC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAME,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,WAAe,MAC7BA,EAAS,WAAgB,KAAK,YAE5B,OAAO,KAAK,cAAkB,MAChCA,EAAS,cAAmB,KAAK,eAE/B,OAAO,KAAK,MAAU,KAAe,KAAK,QAAU,OACtDA,EAAS,MAAW,cAAe,KAAK,MAAQ,KAAK,MAAM,UAAU,EAAI,KAAK,OAE5E,OAAO,KAAK,IAAQ,KAAe,KAAK,MAAQ,OAClDA,EAAS,IAAS,cAAe,KAAK,IAAM,KAAK,IAAI,UAAU,EAAI,KAAK,KAEnEA,CACT,CACF,EACMhI,GAAN,MAAMgW,CAAmB,CACvB,OAAO,UAAUpO,EAAO,CACtB,IAAIC,EAAI,IAAImO,EACZ,OAAAnO,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACtBA,EAAM,UACRC,EAAE,QAAU9H,GAAqC,UAAU6H,EAAM,OAAO,GAEtEA,EAAM,gBACRC,EAAE,cAAgB1V,EAAoB,UAAUyV,EAAM,aAAa,GAE9DC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAME,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,QAAY,KAAe,KAAK,UAAY,OAC1DA,EAAS,QAAa,cAAe,KAAK,QAAU,KAAK,QAAQ,UAAU,EAAI,KAAK,SAElF,OAAO,KAAK,cAAkB,KAAe,KAAK,gBAAkB,OACtEA,EAAS,cAAmB,cAAe,KAAK,cAAgB,KAAK,cAAc,UAAU,EAAI,KAAK,eAEjGA,CACT,CACF,EACM/H,GAAN,MAAMgW,CAAoB,CACxB,OAAO,UAAUrO,EAAO,CACtB,IAAIC,EAAI,IAAIoO,EACZ,OAAApO,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACtBA,EAAM,WACRC,EAAE,SAAWD,EAAM,SAAS,IAAIjH,GAAQ,SAAS,GAE/CiH,EAAM,iBACRC,EAAE,eAAiBzV,EAAsB,UAAUwV,EAAM,cAAc,GAElEC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAME,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,SAAa,KAAe,KAAK,WAAa,OAC5DA,EAAS,SAAc,cAAe,KAAK,SAAW,KAAK,SAAS,UAAU,EAAI,KAAK,UAErF,OAAO,KAAK,eAAmB,KAAe,KAAK,iBAAmB,OACxEA,EAAS,eAAoB,cAAe,KAAK,eAAiB,KAAK,eAAe,UAAU,EAAI,KAAK,gBAEpGA,CACT,CACF,EACM9H,GAAN,MAAMgW,CAA0B,CAC9B,OAAO,UAAUtO,EAAO,CACtB,IAAIC,EAAI,IAAIqO,EACZ,OAAArO,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACtBA,EAAM,gBACRC,EAAE,cAAgB1V,EAAoB,UAAUyV,EAAM,aAAa,GAE9DC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAME,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,WAAe,MAC7BA,EAAS,WAAgB,KAAK,YAE5B,OAAO,KAAK,cAAkB,KAAe,KAAK,gBAAkB,OACtEA,EAAS,cAAmB,cAAe,KAAK,cAAgB,KAAK,cAAc,UAAU,EAAI,KAAK,eAEjGA,CACT,CACF,EACM7H,GAAN,MAAMgW,CAA2B,CAC/B,OAAO,UAAUvO,EAAO,CACtB,IAAIC,EAAI,IAAIsO,EACZ,OAAAtO,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACtBA,EAAM,WACRC,EAAE,SAAWD,EAAM,SAAS,IAAI1I,GAAQ,SAAS,GAE/C0I,EAAM,iBACRC,EAAE,eAAiBzV,EAAsB,UAAUwV,EAAM,cAAc,GAElEC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAME,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,SAAa,KAAe,KAAK,WAAa,OAC5DA,EAAS,SAAc,cAAe,KAAK,SAAW,KAAK,SAAS,UAAU,EAAI,KAAK,UAErF,OAAO,KAAK,eAAmB,KAAe,KAAK,iBAAmB,OACxEA,EAAS,eAAoB,cAAe,KAAK,eAAiB,KAAK,eAAe,UAAU,EAAI,KAAK,gBAEpGA,CACT,CACF,EACM5H,GAAN,MAAMgW,CAAmD,CACvD,OAAO,UAAUxO,EAAO,CACtB,IAAIC,EAAI,IAAIuO,EACZ,OAAAvO,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACtBA,EAAM,iBACRC,EAAE,eAAiB,IAAI,KAAKD,EAAM,cAAc,GAE9CA,EAAM,iBACRC,EAAE,eAAiB,IAAI,KAAKD,EAAM,cAAc,GAE3CC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAME,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,SAAa,MAC3BA,EAAS,SAAc,KAAK,UAE1B,OAAO,KAAK,WAAe,MAC7BA,EAAS,WAAgB,KAAK,YAE5B,OAAO,KAAK,eAAmB,KAAe,KAAK,iBAAmB,OACxEA,EAAS,eAAoB,cAAe,KAAK,eAAiB,KAAK,eAAe,UAAU,EAAI,KAAK,gBAEvG,OAAO,KAAK,eAAmB,KAAe,KAAK,iBAAmB,OACxEA,EAAS,eAAoB,cAAe,KAAK,eAAiB,KAAK,eAAe,UAAU,EAAI,KAAK,gBAEpGA,CACT,CACF,EACM3H,GAAN,MAAMgW,CAA0B,CAC9B,OAAO,UAAUzO,EAAO,CACtB,IAAIC,EAAI,IAAIwO,EACZ,OAAAxO,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACtBA,EAAM,gBACRC,EAAE,cAAgB1V,EAAoB,UAAUyV,EAAM,aAAa,GAEjEA,EAAM,UACRC,EAAE,QAAUzH,GAAmD,UAAUwH,EAAM,OAAO,GAEjFC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAME,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,WAAe,MAC7BA,EAAS,WAAgB,KAAK,YAE5B,OAAO,KAAK,cAAkB,KAAe,KAAK,gBAAkB,OACtEA,EAAS,cAAmB,cAAe,KAAK,cAAgB,KAAK,cAAc,UAAU,EAAI,KAAK,eAEpG,OAAO,KAAK,QAAY,KAAe,KAAK,UAAY,OAC1DA,EAAS,QAAa,cAAe,KAAK,QAAU,KAAK,QAAQ,UAAU,EAAI,KAAK,SAE/EA,CACT,CACF,EACM1H,GAAN,MAAMgW,CAA2B,CAC/B,OAAO,UAAU1O,EAAO,CACtB,IAAIC,EAAI,IAAIyO,EACZ,OAAAzO,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACtBA,EAAM,WACRC,EAAE,SAAWD,EAAM,SAAS,IAAI3G,GAAc,SAAS,GAErD2G,EAAM,iBACRC,EAAE,eAAiBzV,EAAsB,UAAUwV,EAAM,cAAc,GAElEC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAME,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,SAAa,KAAe,KAAK,WAAa,OAC5DA,EAAS,SAAc,cAAe,KAAK,SAAW,KAAK,SAAS,UAAU,EAAI,KAAK,UAErF,OAAO,KAAK,eAAmB,KAAe,KAAK,iBAAmB,OACxEA,EAAS,eAAoB,cAAe,KAAK,eAAiB,KAAK,eAAe,UAAU,EAAI,KAAK,gBAEpGA,CACT,CACF,EACMzH,GAAN,MAAMgW,CAA2D,CAC/D,OAAO,UAAU3O,EAAO,CACtB,IAAIC,EAAI,IAAI0O,EACZ,OAAA1O,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACtBA,EAAM,iBACRC,EAAE,eAAiB,IAAI,KAAKD,EAAM,cAAc,GAE9CA,EAAM,iBACRC,EAAE,eAAiB,IAAI,KAAKD,EAAM,cAAc,GAE9CA,EAAM,OACRC,EAAE,KAAO9Y,GAAoB0C,GAAuBmW,EAAM,IAAI,GAEzDC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAME,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,SAAa,MAC3BA,EAAS,SAAc,KAAK,UAE1B,OAAO,KAAK,eAAmB,KAAe,KAAK,iBAAmB,OACxEA,EAAS,eAAoB,cAAe,KAAK,eAAiB,KAAK,eAAe,UAAU,EAAI,KAAK,gBAEvG,OAAO,KAAK,eAAmB,KAAe,KAAK,iBAAmB,OACxEA,EAAS,eAAoB,cAAe,KAAK,eAAiB,KAAK,eAAe,UAAU,EAAI,KAAK,gBAEvG,OAAO,KAAK,KAAS,MACvBA,EAAS,KAAU,KAAK,MAEtB,OAAO,KAAK,WAAe,MAC7BA,EAAS,WAAgB,KAAK,YAEzBA,CACT,CACF,EACMxH,GAAN,MAAMgW,CAA8B,CAClC,OAAO,UAAU5O,EAAO,CACtB,IAAIC,EAAI,IAAI2O,EACZ,OAAA3O,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACtBA,EAAM,gBACRC,EAAE,cAAgB1V,EAAoB,UAAUyV,EAAM,aAAa,GAEjEA,EAAM,UACRC,EAAE,QAAUtH,GAA2D,UAAUqH,EAAM,OAAO,GAEzFC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAME,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,WAAe,MAC7BA,EAAS,WAAgB,KAAK,YAE5B,OAAO,KAAK,cAAkB,KAAe,KAAK,gBAAkB,OACtEA,EAAS,cAAmB,cAAe,KAAK,cAAgB,KAAK,cAAc,UAAU,EAAI,KAAK,eAEpG,OAAO,KAAK,QAAY,KAAe,KAAK,UAAY,OAC1DA,EAAS,QAAa,cAAe,KAAK,QAAU,KAAK,QAAQ,UAAU,EAAI,KAAK,SAE/EA,CACT,CACF,EACMvH,GAAN,MAAMgW,CAA+B,CACnC,OAAO,UAAU7O,EAAO,CACtB,IAAIC,EAAI,IAAI4O,EACZ,OAAA5O,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACtBA,EAAM,eACRC,EAAE,aAAeD,EAAM,aAAa,IAAIrG,GAAkB,SAAS,GAEjEqG,EAAM,iBACRC,EAAE,eAAiBzV,EAAsB,UAAUwV,EAAM,cAAc,GAElEC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAME,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,aAAiB,KAAe,KAAK,eAAiB,OACpEA,EAAS,aAAkB,cAAe,KAAK,aAAe,KAAK,aAAa,UAAU,EAAI,KAAK,cAEjG,OAAO,KAAK,eAAmB,KAAe,KAAK,iBAAmB,OACxEA,EAAS,eAAoB,cAAe,KAAK,eAAiB,KAAK,eAAe,UAAU,EAAI,KAAK,gBAEpGA,CACT,CACF,EACMtH,GAAN,MAAMgW,CAAiC,CACrC,OAAO,UAAU9O,EAAO,CACtB,IAAIC,EAAI,IAAI6O,EACZ,OAAA7O,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACtBA,EAAM,SACRC,EAAE,OAAS,SAASD,EAAM,OAAQ,EAAE,GAE/BC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAME,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,QAAY,MAC1BA,EAAS,QAAa,KAAK,SAEzB,OAAO,KAAK,OAAW,MACzBA,EAAS,OAAY,KAAK,QAExB,OAAO,KAAK,aAAiB,MAC/BA,EAAS,aAAkB,KAAK,cAE9B,OAAO,KAAK,gBAAoB,MAClCA,EAAS,gBAAqB,KAAK,iBAE9BA,CACT,CACF,EACMrH,GAAN,MAAMgW,CAAQ,CACZ,OAAO,UAAU/O,EAAO,CACtB,IAAIC,EAAI,IAAI8O,EACZ,OAAA9O,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACtBA,EAAM,UACRC,EAAE,QAAU,IAAI,KAAKD,EAAM,OAAO,GAEhCA,EAAM,WACRC,EAAE,SAAW9Y,GAAoBQ,EAAUqY,EAAM,QAAQ,GAEvDA,EAAM,gBACRC,EAAE,cAAgB9Y,GAAoBoC,GAAeyW,EAAM,aAAa,GAEtEA,EAAM,cACRC,EAAE,YAAcD,EAAM,YAAY,IAAIhH,GAAyB,SAAS,GAEtEgH,EAAM,QACRC,EAAE,MAAQ,SAASD,EAAM,MAAO,EAAE,GAEhCA,EAAM,SACRC,EAAE,OAAS9Y,GAAoBqC,GAAewW,EAAM,MAAM,GAErDC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAME,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,WAAe,MAC7BA,EAAS,WAAgB,KAAK,YAE5B,OAAO,KAAK,QAAY,KAAe,KAAK,UAAY,OAC1DA,EAAS,QAAa,cAAe,KAAK,QAAU,KAAK,QAAQ,UAAU,EAAI,KAAK,SAElF,OAAO,KAAK,SAAa,MAC3BA,EAAS,SAAc,KAAK,UAE1B,OAAO,KAAK,cAAkB,MAChCA,EAAS,cAAmB,KAAK,eAE/B,OAAO,KAAK,YAAgB,KAAe,KAAK,cAAgB,OAClEA,EAAS,YAAiB,cAAe,KAAK,YAAc,KAAK,YAAY,UAAU,EAAI,KAAK,aAE9F,OAAO,KAAK,MAAU,MACxBA,EAAS,MAAW,KAAK,OAEvB,OAAO,KAAK,YAAgB,MAC9BA,EAAS,YAAiB,KAAK,aAE7B,OAAO,KAAK,oBAAwB,MACtCA,EAAS,oBAAyB,KAAK,qBAErC,OAAO,KAAK,OAAW,MACzBA,EAAS,OAAY,KAAK,QAErBA,CACT,CACF,EACMpH,GAAN,MAAMgW,CAAyB,CAC7B,OAAO,UAAUhP,EAAO,CACtB,IAAIC,EAAI,IAAI+O,EACZ,OAAA/O,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACtBA,EAAM,SACRC,EAAE,OAAS,SAASD,EAAM,OAAQ,EAAE,GAElCA,EAAM,OACRC,EAAE,KAAO9Y,GAAoBmC,GAAuB0W,EAAM,IAAI,GAEzDC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAME,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,YAAgB,MAC9BA,EAAS,YAAiB,KAAK,aAE7B,OAAO,KAAK,OAAW,MACzBA,EAAS,OAAY,KAAK,QAExB,OAAO,KAAK,KAAS,MACvBA,EAAS,KAAU,KAAK,MAEnBA,CACT,CACF,EACMnH,GAAN,MAAMgW,CAA4B,CAChC,OAAO,UAAUjP,EAAO,CACtB,IAAIC,EAAI,IAAIgP,EACZ,OAAAhP,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACtBA,EAAM,QACRC,EAAE,MAAQnH,GAAiC,UAAUkH,EAAM,KAAK,GAE3DC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAME,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,WAAe,MAC7BA,EAAS,WAAgB,KAAK,YAE5B,OAAO,KAAK,WAAe,MAC7BA,EAAS,WAAgB,KAAK,YAE5B,OAAO,KAAK,UAAc,MAC5BA,EAAS,UAAe,KAAK,WAE3B,OAAO,KAAK,MAAU,KAAe,KAAK,QAAU,OACtDA,EAAS,MAAW,cAAe,KAAK,MAAQ,KAAK,MAAM,UAAU,EAAI,KAAK,OAEzEA,CACT,CACF,EACMlH,GAAN,MAAMgW,CAA6B,CACjC,OAAO,UAAUlP,EAAO,CACtB,IAAIC,EAAI,IAAIiP,EACZ,OAAAjP,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACnBC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAME,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,mBAAuB,MACrCA,EAAS,mBAAwB,KAAK,oBAEpC,OAAO,KAAK,SAAa,MAC3BA,EAAS,SAAc,KAAK,UAEvBA,CACT,CACF,EACMjH,GAAN,MAAMgW,CAA2B,CAC/B,OAAO,UAAUnP,EAAO,CACtB,IAAIC,EAAI,IAAIkP,EACZ,OAAAlP,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACtBA,EAAM,SACRC,EAAE,OAAS,SAASD,EAAM,OAAQ,EAAE,GAElCA,EAAM,SACRC,EAAE,OAAS9Y,GAAoBwC,GAAoBqW,EAAM,MAAM,GAE1DC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAME,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,WAAe,MAC7BA,EAAS,WAAgB,KAAK,YAE5B,OAAO,KAAK,UAAc,MAC5BA,EAAS,UAAe,KAAK,WAE3B,OAAO,KAAK,OAAW,MACzBA,EAAS,OAAY,KAAK,QAExB,OAAO,KAAK,OAAW,MACzBA,EAAS,OAAY,KAAK,QAErBA,CACT,CACF,EACMhH,GAAN,MAAMgW,CAA4B,CAChC,OAAO,UAAUpP,EAAO,CACtB,IAAIC,EAAI,IAAImP,EACZ,OAAAnP,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACtBA,EAAM,UACRC,EAAE,QAAU5G,GAAc,UAAU2G,EAAM,OAAO,GAE5CC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAME,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,QAAY,KAAe,KAAK,UAAY,OAC1DA,EAAS,QAAa,cAAe,KAAK,QAAU,KAAK,QAAQ,UAAU,EAAI,KAAK,SAE/EA,CACT,CACF,EACM/G,GAAN,MAAMgW,CAAc,CAClB,OAAO,UAAUrP,EAAO,CACtB,IAAIC,EAAI,IAAIoP,EACZ,OAAApP,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACtBA,EAAM,UACRC,EAAE,QAAU,IAAI,KAAKD,EAAM,OAAO,GAEhCA,EAAM,SACRC,EAAE,OAAS,SAASD,EAAM,OAAQ,EAAE,GAElCA,EAAM,gBACRC,EAAE,cAAgB9Y,GAAoBsC,GAA4BuW,EAAM,aAAa,GAEnFA,EAAM,SACRC,EAAE,OAAS9Y,GAAoBqC,GAAewW,EAAM,MAAM,GAExDA,EAAM,iBACRC,EAAE,eAAiB,SAASD,EAAM,eAAgB,EAAE,GAElDA,EAAM,UACRC,EAAE,QAAU3I,GAAQ,UAAU0I,EAAM,OAAO,GAEzCA,EAAM,cACRC,EAAE,YAAchJ,GAAyB,UAAU+I,EAAM,WAAW,GAElEA,EAAM,UACRC,EAAE,QAAUD,EAAM,QAAQ,IAAIxG,GAAa,SAAS,GAE/CyG,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAME,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,WAAe,MAC7BA,EAAS,WAAgB,KAAK,YAE5B,OAAO,KAAK,QAAY,KAAe,KAAK,UAAY,OAC1DA,EAAS,QAAa,cAAe,KAAK,QAAU,KAAK,QAAQ,UAAU,EAAI,KAAK,SAElF,OAAO,KAAK,aAAiB,MAC/BA,EAAS,aAAkB,KAAK,cAE9B,OAAO,KAAK,OAAW,MACzBA,EAAS,OAAY,KAAK,QAExB,OAAO,KAAK,YAAgB,MAC9BA,EAAS,YAAiB,KAAK,aAE7B,OAAO,KAAK,cAAkB,MAChCA,EAAS,cAAmB,KAAK,eAE/B,OAAO,KAAK,WAAe,MAC7BA,EAAS,WAAgB,KAAK,YAE5B,OAAO,KAAK,OAAW,MACzBA,EAAS,OAAY,KAAK,QAExB,OAAO,KAAK,YAAgB,MAC9BA,EAAS,YAAiB,KAAK,aAE7B,OAAO,KAAK,YAAgB,MAC9BA,EAAS,YAAiB,KAAK,aAE7B,OAAO,KAAK,eAAmB,MACjCA,EAAS,eAAoB,KAAK,gBAEhC,OAAO,KAAK,eAAmB,MACjCA,EAAS,eAAoB,KAAK,gBAEhC,OAAO,KAAK,SAAa,MAC3BA,EAAS,SAAc,KAAK,UAE1B,OAAO,KAAK,GAAO,MACrBA,EAAS,GAAQ,KAAK,IAEpB,OAAO,KAAK,QAAY,KAAe,KAAK,UAAY,OAC1DA,EAAS,QAAa,cAAe,KAAK,QAAU,KAAK,QAAQ,UAAU,EAAI,KAAK,SAElF,OAAO,KAAK,YAAgB,KAAe,KAAK,cAAgB,OAClEA,EAAS,YAAiB,cAAe,KAAK,YAAc,KAAK,YAAY,UAAU,EAAI,KAAK,aAE9F,OAAO,KAAK,QAAY,KAAe,KAAK,UAAY,OAC1DA,EAAS,QAAa,cAAe,KAAK,QAAU,KAAK,QAAQ,UAAU,EAAI,KAAK,SAE/EA,CACT,CACF,EACM9G,GAAN,MAAMgW,CAA6B,CACjC,OAAO,UAAUtP,EAAO,CACtB,IAAIC,EAAI,IAAIqP,EACZ,OAAArP,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACnBC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAME,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,WAAe,MAC7BA,EAAS,WAAgB,KAAK,YAEzBA,CACT,CACF,EACM7G,GAAN,MAAMgW,CAA8B,CAClC,OAAO,UAAUvP,EAAO,CACtB,IAAIC,EAAI,IAAIsP,EACZ,OAAAtP,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACnBC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAME,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,QAAY,MAC1BA,EAAS,QAAa,KAAK,SAEtBA,CACT,CACF,EACM5G,GAAN,MAAMgW,CAAa,CACjB,OAAO,UAAUxP,EAAO,CACtB,IAAIC,EAAI,IAAIuP,EACZ,OAAAvP,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACtBA,EAAM,SACRC,EAAE,OAAS,SAASD,EAAM,OAAQ,EAAE,GAElCA,EAAM,eACRC,EAAE,aAAe9Y,GAAoBwC,GAAoBqW,EAAM,YAAY,GAEzEA,EAAM,SACRC,EAAE,OAAS9Y,GAAoByC,GAAoBoW,EAAM,MAAM,GAE7DA,EAAM,gBACRC,EAAE,cAAgB9Y,GAAoBuC,GAA2BsW,EAAM,aAAa,GAElFA,EAAM,UACRC,EAAE,QAAU,IAAI,KAAKD,EAAM,OAAO,GAEhCA,EAAM,UACRC,EAAE,QAAU5G,GAAc,UAAU2G,EAAM,OAAO,GAE5CC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAME,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,GAAO,MACrBA,EAAS,GAAQ,KAAK,IAEpB,OAAO,KAAK,OAAW,MACzBA,EAAS,OAAY,KAAK,QAExB,OAAO,KAAK,aAAiB,MAC/BA,EAAS,aAAkB,KAAK,cAE9B,OAAO,KAAK,aAAiB,MAC/BA,EAAS,aAAkB,KAAK,cAE9B,OAAO,KAAK,OAAW,MACzBA,EAAS,OAAY,KAAK,QAExB,OAAO,KAAK,cAAkB,MAChCA,EAAS,cAAmB,KAAK,eAE/B,OAAO,KAAK,QAAY,KAAe,KAAK,UAAY,OAC1DA,EAAS,QAAa,cAAe,KAAK,QAAU,KAAK,QAAQ,UAAU,EAAI,KAAK,SAElF,OAAO,KAAK,QAAY,KAAe,KAAK,UAAY,OAC1DA,EAAS,QAAa,cAAe,KAAK,QAAU,KAAK,QAAQ,UAAU,EAAI,KAAK,SAE/EA,CACT,CACF,EACM3G,GAAN,MAAMgW,CAAoB,CACxB,OAAO,UAAUzP,EAAO,CACtB,IAAIC,EAAI,IAAIwP,EACZ,OAAAxP,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACnBC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAME,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,WAAe,MAC7BA,EAAS,WAAgB,KAAK,YAEzBA,CACT,CACF,EACM1G,GAAN,MAAMgW,CAAqB,CACzB,OAAO,UAAU1P,EAAO,CACtB,IAAIC,EAAI,IAAIyP,EACZ,OAAAzP,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACtBA,EAAM,eACRC,EAAE,aAAelG,GAA6C,UAAUiG,EAAM,YAAY,GAExFA,EAAM,qBACRC,EAAE,mBAAqBlG,GAA6C,UAAUiG,EAAM,kBAAkB,GAEjGC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAME,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,gBAAoB,MAClCA,EAAS,gBAAqB,KAAK,iBAEjC,OAAO,KAAK,iBAAqB,MACnCA,EAAS,iBAAsB,KAAK,kBAElC,OAAO,KAAK,aAAiB,KAAe,KAAK,eAAiB,OACpEA,EAAS,aAAkB,cAAe,KAAK,aAAe,KAAK,aAAa,UAAU,EAAI,KAAK,cAEjG,OAAO,KAAK,eAAmB,MACjCA,EAAS,eAAoB,KAAK,gBAEhC,OAAO,KAAK,mBAAuB,KAAe,KAAK,qBAAuB,OAChFA,EAAS,mBAAwB,cAAe,KAAK,mBAAqB,KAAK,mBAAmB,UAAU,EAAI,KAAK,oBAEhHA,CACT,CACF,EACMzG,GAAN,MAAMgW,CAAkB,CACtB,OAAO,UAAU3P,EAAO,CACtB,IAAIC,EAAI,IAAI0P,EACZ,OAAA1P,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACtBA,EAAM,UACRC,EAAE,QAAU5G,GAAc,UAAU2G,EAAM,OAAO,GAE/CA,EAAM,SACRC,EAAE,OAASzG,GAAa,UAAUwG,EAAM,MAAM,GAE5CA,EAAM,gBACRC,EAAE,cAAgB1L,GAAa,UAAUyL,EAAM,aAAa,GAE1DA,EAAM,aACRC,EAAE,WAAajJ,GAAW,UAAUgJ,EAAM,UAAU,GAE/CC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAME,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,QAAY,KAAe,KAAK,UAAY,OAC1DA,EAAS,QAAa,cAAe,KAAK,QAAU,KAAK,QAAQ,UAAU,EAAI,KAAK,SAElF,OAAO,KAAK,OAAW,KAAe,KAAK,SAAW,OACxDA,EAAS,OAAY,cAAe,KAAK,OAAS,KAAK,OAAO,UAAU,EAAI,KAAK,QAE/E,OAAO,KAAK,cAAkB,KAAe,KAAK,gBAAkB,OACtEA,EAAS,cAAmB,cAAe,KAAK,cAAgB,KAAK,cAAc,UAAU,EAAI,KAAK,eAEpG,OAAO,KAAK,WAAe,KAAe,KAAK,aAAe,OAChEA,EAAS,WAAgB,cAAe,KAAK,WAAa,KAAK,WAAW,UAAU,EAAI,KAAK,YAExFA,CACT,CACF,EACMxG,GAAN,MAAMgW,CAAsB,CAC1B,OAAO,UAAU5P,EAAO,CACtB,IAAIC,EAAI,IAAI2P,EACZ,OAAA3P,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACtBA,EAAM,WACRC,EAAE,SAAWzI,GAAqC,UAAUwI,EAAM,QAAQ,GAErEC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAME,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,WAAe,MAC7BA,EAAS,WAAgB,KAAK,YAE5B,OAAO,KAAK,UAAc,MAC5BA,EAAS,UAAe,KAAK,WAE3B,OAAO,KAAK,UAAc,MAC5BA,EAAS,UAAe,KAAK,WAE3B,OAAO,KAAK,SAAa,KAAe,KAAK,WAAa,OAC5DA,EAAS,SAAc,cAAe,KAAK,SAAW,KAAK,SAAS,UAAU,EAAI,KAAK,UAErF,OAAO,KAAK,OAAW,MACzBA,EAAS,OAAY,KAAK,QAErBA,CACT,CACF,EACMvG,GAAN,MAAMgW,CAAmC,CACvC,OAAO,UAAU7P,EAAO,CACtB,IAAIC,EAAI,IAAI4P,EACZ,OAAA5P,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACnBC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAME,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,WAAe,MAC7BA,EAAS,WAAgB,KAAK,YAE5B,OAAO,KAAK,oBAAwB,MACtCA,EAAS,oBAAyB,KAAK,qBAElCA,CACT,CACF,EACMtG,GAAN,MAAMgW,CAAsC,CAC1C,OAAO,UAAU9P,EAAO,CACtB,IAAIC,EAAI,IAAI6P,EACZ,OAAA7P,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACnBC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAME,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,YAAgB,MAC9BA,EAAS,YAAiB,KAAK,aAE7B,OAAO,KAAK,KAAS,MACvBA,EAAS,KAAU,KAAK,MAEtB,OAAO,KAAK,OAAW,MACzBA,EAAS,OAAY,KAAK,QAErBA,CACT,CACF,EACMrG,GAAN,MAAMgW,CAA6C,CACjD,OAAO,UAAU/P,EAAO,CACtB,IAAIC,EAAI,IAAI8P,EACZ,OAAA9P,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACtBA,EAAM,QACRC,EAAE,MAAQD,EAAM,MAAM,IAAIlG,GAAsC,SAAS,GAEvEkG,EAAM,kBACRC,EAAE,gBAAkB,IAAI,KAAKD,EAAM,eAAe,GAE7CC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAME,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,IAAQ,MACtBA,EAAS,IAAS,KAAK,KAErB,OAAO,KAAK,MAAU,KAAe,KAAK,QAAU,OACtDA,EAAS,MAAW,cAAe,KAAK,MAAQ,KAAK,MAAM,UAAU,EAAI,KAAK,OAE5E,OAAO,KAAK,gBAAoB,KAAe,KAAK,kBAAoB,OAC1EA,EAAS,gBAAqB,cAAe,KAAK,gBAAkB,KAAK,gBAAgB,UAAU,EAAI,KAAK,iBAE1G,OAAO,KAAK,cAAkB,MAChCA,EAAS,cAAmB,KAAK,eAE5BA,CACT,CACF,EAOMpG,GAAN,MAAMgW,CAAyB,CAC7B,OAAO,UAAUhQ,EAAO,CACtB,IAAIC,EAAI,IAAI+P,EACZ,OAAA/P,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACnBC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAME,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,WAAe,MAC7BA,EAAS,WAAgB,KAAK,YAE5B,OAAO,KAAK,YAAgB,MAC9BA,EAAS,YAAiB,KAAK,aAE1BA,CACT,CACF,EACMnG,GAAN,MAAMgW,CAAyB,CAC7B,OAAO,UAAUjQ,EAAO,CACtB,IAAIC,EAAI,IAAIgQ,EACZ,OAAAhQ,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACnBC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAME,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,WAAe,MAC7BA,EAAS,WAAgB,KAAK,YAE5B,OAAO,KAAK,OAAW,MACzBA,EAAS,OAAY,KAAK,QAErBA,CACT,CACF,EACMlG,GAAN,MAAMgW,CAAwB,CAC5B,OAAO,UAAUlQ,EAAO,CACtB,IAAIC,EAAI,IAAIiQ,EACZ,OAAAjQ,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACnBC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAME,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,WAAe,MAC7BA,EAAS,WAAgB,KAAK,YAE5B,OAAO,KAAK,WAAe,MAC7BA,EAAS,WAAgB,KAAK,YAEzBA,CACT,CACF,EACMjG,GAAN,MAAMgW,CAAyB,CAC7B,OAAO,UAAUnQ,EAAO,CACtB,IAAIC,EAAI,IAAIkQ,EACZ,OAAAlQ,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACtBA,EAAM,cACRC,EAAE,YAAcD,EAAM,YAAY,IAAI5F,GAAY,SAAS,GAEtD6F,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAME,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,YAAgB,KAAe,KAAK,cAAgB,OAClEA,EAAS,YAAiB,cAAe,KAAK,YAAc,KAAK,YAAY,UAAU,EAAI,KAAK,aAE3FA,CACT,CACF,EACMhG,GAAN,MAAMgW,CAAY,CAChB,OAAO,UAAUpQ,EAAO,CACtB,IAAIC,EAAI,IAAImQ,EACZ,OAAAnQ,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACtBA,EAAM,WACRC,EAAE,SAAW7Y,GAAoB0C,GAAsBkW,EAAM,QAAQ,GAEnEA,EAAM,cACRC,EAAE,YAAc7Y,GAAoB2C,GAAyBiW,EAAM,WAAW,GAEzEC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAME,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,eAAmB,MACjCA,EAAS,eAAoB,KAAK,gBAEhC,OAAO,KAAK,SAAa,MAC3BA,EAAS,SAAc,KAAK,UAE1B,OAAO,KAAK,QAAY,MAC1BA,EAAS,QAAa,KAAK,SAEzB,OAAO,KAAK,KAAS,MACvBA,EAAS,KAAU,KAAK,MAEtB,OAAO,KAAK,MAAU,MACxBA,EAAS,MAAW,KAAK,OAEvB,OAAO,KAAK,QAAY,MAC1BA,EAAS,QAAa,KAAK,SAEzB,OAAO,KAAK,QAAY,MAC1BA,EAAS,QAAa,KAAK,SAEzB,OAAO,KAAK,OAAW,MACzBA,EAAS,OAAY,KAAK,QAExB,OAAO,KAAK,eAAmB,MACjCA,EAAS,eAAoB,KAAK,gBAEhC,OAAO,KAAK,YAAgB,MAC9BA,EAAS,YAAiB,KAAK,aAE7B,OAAO,KAAK,WAAe,MAC7BA,EAAS,WAAgB,KAAK,YAE5B,OAAO,KAAK,YAAgB,MAC9BA,EAAS,YAAiB,KAAK,aAE7B,OAAO,KAAK,QAAY,MAC1BA,EAAS,QAAa,KAAK,SAEtBA,CACT,CACF,EACM/F,GAAN,MAAMgW,CAA+B,CACnC,OAAO,UAAUrQ,EAAO,CACtB,IAAIC,EAAI,IAAIoQ,EACZ,OAAApQ,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACnBC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAME,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,WAAe,MAC7BA,EAAS,WAAgB,KAAK,YAE5B,OAAO,KAAK,WAAe,MAC7BA,EAAS,WAAgB,KAAK,YAE5B,OAAO,KAAK,gBAAoB,MAClCA,EAAS,gBAAqB,KAAK,iBAE9BA,CACT,CACF,EACM9F,GAAN,MAAMgW,CAAyB,CAC7B,OAAO,UAAUtQ,EAAO,CACtB,IAAIC,EAAI,IAAIqQ,EACZ,OAAArQ,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACnBC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAME,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,WAAe,MAC7BA,EAAS,WAAgB,KAAK,YAE5B,OAAO,KAAK,YAAgB,MAC9BA,EAAS,YAAiB,KAAK,aAE1BA,CACT,CACF,EAOM7F,GAAN,MAAMgW,CAAgC,CACpC,OAAO,UAAUvQ,EAAO,CACtB,IAAIC,EAAI,IAAIsQ,EACZ,OAAAtQ,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACtBA,EAAM,YACRC,EAAE,UAAY5Y,GAAoBK,EAAWsY,EAAM,SAAS,GAE1DA,EAAM,UACRC,EAAE,QAAU,OAAO,KAAKD,EAAM,OAAO,EAAE,OAAO,CAAC2D,EAAKC,KAClDD,EAAIC,CAAC,EAAIzY,GAA0B,UAAU6U,EAAM,QAAQ4D,CAAC,CAAC,EACtDD,GACN,CAAC,CAAC,GAEH3D,EAAM,aACRC,EAAE,WAAavV,GAAW,UAAUsV,EAAM,UAAU,GAElDA,EAAM,WACRC,EAAE,SAAW5Y,GAAoBS,EAAiBkY,EAAM,QAAQ,GAE9DA,EAAM,mBACRC,EAAE,iBAAmB,SAASD,EAAM,iBAAkB,EAAE,GAEtDA,EAAM,2BACRC,EAAE,yBAA2B,IAAI,KAAKD,EAAM,wBAAwB,GAElEA,EAAM,yBACRC,EAAE,uBAAyB,IAAI,KAAKD,EAAM,sBAAsB,GAE3DC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAME,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,cAAkB,MAChCA,EAAS,cAAmB,KAAK,eAE/B,OAAO,KAAK,IAAQ,MACtBA,EAAS,IAAS,KAAK,KAErB,OAAO,KAAK,UAAc,MAC5BA,EAAS,UAAe,KAAK,WAE3B,OAAO,KAAK,QAAY,KAAe,KAAK,UAAY,OAC1DA,EAAS,QAAa,cAAe,KAAK,QAAU,KAAK,QAAQ,UAAU,EAAI,KAAK,SAElF,OAAO,KAAK,WAAe,KAAe,KAAK,aAAe,OAChEA,EAAS,WAAgB,cAAe,KAAK,WAAa,KAAK,WAAW,UAAU,EAAI,KAAK,YAE3F,OAAO,KAAK,SAAa,MAC3BA,EAAS,SAAc,KAAK,UAE1B,OAAO,KAAK,iBAAqB,MACnCA,EAAS,iBAAsB,KAAK,kBAElC,OAAO,KAAK,yBAA6B,KAAe,KAAK,2BAA6B,OAC5FA,EAAS,yBAA8B,cAAe,KAAK,yBAA2B,KAAK,yBAAyB,UAAU,EAAI,KAAK,0BAErI,OAAO,KAAK,uBAA2B,KAAe,KAAK,yBAA2B,OACxFA,EAAS,uBAA4B,cAAe,KAAK,uBAAyB,KAAK,uBAAuB,UAAU,EAAI,KAAK,wBAE5HA,CACT,CACF,EACM5F,GAAN,MAAMgW,CAAiC,CACrC,OAAO,UAAUxQ,EAAO,CACtB,IAAIC,EAAI,IAAIuQ,EACZ,OAAAvQ,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACnBC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAME,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,cAAkB,MAChCA,EAAS,cAAmB,KAAK,eAE/B,OAAO,KAAK,IAAQ,MACtBA,EAAS,IAAS,KAAK,KAElBA,CACT,CACF,EACM3F,GAAN,MAAMgW,CAAgC,CACpC,OAAO,UAAUzQ,EAAO,CACtB,IAAIC,EAAI,IAAIwQ,EACZ,OAAAxQ,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACnBC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAME,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,cAAkB,MAChCA,EAAS,cAAmB,KAAK,eAE/B,OAAO,KAAK,IAAQ,MACtBA,EAAS,IAAS,KAAK,KAElBA,CACT,CACF,EACM1F,GAAN,MAAMgW,CAAkC,CACtC,OAAO,UAAU1Q,EAAO,CACtB,IAAIC,EAAI,IAAIyQ,EACZ,OAAAzQ,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACnBC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAME,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,cAAkB,MAChCA,EAAS,cAAmB,KAAK,eAE/B,OAAO,KAAK,KAAS,MACvBA,EAAS,KAAU,KAAK,MAEnBA,CACT,CACF,EACMzF,GAAN,MAAMgW,CAAmC,CACvC,OAAO,UAAU3Q,EAAO,CACtB,IAAIC,EAAI,IAAI0Q,EACZ,OAAA1Q,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACtBA,EAAM,sBACRC,EAAE,oBAAsBD,EAAM,oBAAoB,IAAI/E,GAAmB,SAAS,GAE7EgF,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAME,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,oBAAwB,KAAe,KAAK,sBAAwB,OAClFA,EAAS,oBAAyB,cAAe,KAAK,oBAAsB,KAAK,oBAAoB,UAAU,EAAI,KAAK,qBAEnHA,CACT,CACF,EACMxF,GAAN,MAAMgW,CAA6B,CACjC,OAAO,UAAU5Q,EAAO,CACtB,IAAIC,EAAI,IAAI2Q,EACZ,OAAA3Q,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACnBC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAME,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,cAAkB,MAChCA,EAAS,cAAmB,KAAK,eAE/B,OAAO,KAAK,IAAQ,MACtBA,EAAS,IAAS,KAAK,KAElBA,CACT,CACF,EACMvF,GAAN,MAAMgW,CAA8B,CAClC,OAAO,UAAU7Q,EAAO,CACtB,IAAIC,EAAI,IAAI4Q,EACZ,OAAA5Q,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACtBA,EAAM,qBACRC,EAAE,mBAAqBhF,GAAmB,UAAU+E,EAAM,kBAAkB,GAE1EA,EAAM,6BACRC,EAAE,2BAA6B5Y,GAAoBS,EAAiBkY,EAAM,0BAA0B,GAE/FC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAME,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,mBAAuB,KAAe,KAAK,qBAAuB,OAChFA,EAAS,mBAAwB,cAAe,KAAK,mBAAqB,KAAK,mBAAmB,UAAU,EAAI,KAAK,oBAEnH,OAAO,KAAK,2BAA+B,MAC7CA,EAAS,2BAAgC,KAAK,4BAEzCA,CACT,CACF,EACMtF,GAAN,MAAMgW,CAA6D,CACjE,OAAO,UAAU9Q,EAAO,CACtB,IAAIC,EAAI,IAAI6Q,EACZ,OAAA7Q,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACnBC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAME,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,IAAQ,MACtBA,EAAS,IAAS,KAAK,KAErB,OAAO,KAAK,eAAmB,MACjCA,EAAS,eAAoB,KAAK,gBAE7BA,CACT,CACF,EACMrF,GAAN,MAAMgW,CAA+B,CACnC,OAAO,UAAU/Q,EAAO,CACtB,IAAIC,EAAI,IAAI8Q,EACZ,OAAA9Q,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACtBA,EAAM,gBACRC,EAAE,cAAgB1V,EAAoB,UAAUyV,EAAM,aAAa,GAEjEA,EAAM,UACRC,EAAE,QAAUnF,GAA6D,UAAUkF,EAAM,OAAO,GAE3FC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAME,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,IAAQ,MACtBA,EAAS,IAAS,KAAK,KAErB,OAAO,KAAK,cAAkB,KAAe,KAAK,gBAAkB,OACtEA,EAAS,cAAmB,cAAe,KAAK,cAAgB,KAAK,cAAc,UAAU,EAAI,KAAK,eAEpG,OAAO,KAAK,QAAY,KAAe,KAAK,UAAY,OAC1DA,EAAS,QAAa,cAAe,KAAK,QAAU,KAAK,QAAQ,UAAU,EAAI,KAAK,SAE/EA,CACT,CACF,EACMpF,GAAN,MAAMgW,CAAgC,CACpC,OAAO,UAAUhR,EAAO,CACtB,IAAIC,EAAI,IAAI+Q,EACZ,OAAA/Q,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACtBA,EAAM,WACRC,EAAE,SAAWD,EAAM,SAAS,IAAI/E,GAAmB,SAAS,GAE1D+E,EAAM,iBACRC,EAAE,eAAiBzV,EAAsB,UAAUwV,EAAM,cAAc,GAElEC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAME,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,SAAa,KAAe,KAAK,WAAa,OAC5DA,EAAS,SAAc,cAAe,KAAK,SAAW,KAAK,SAAS,UAAU,EAAI,KAAK,UAErF,OAAO,KAAK,eAAmB,KAAe,KAAK,iBAAmB,OACxEA,EAAS,eAAoB,cAAe,KAAK,eAAiB,KAAK,eAAe,UAAU,EAAI,KAAK,gBAEpGA,CACT,CACF,EA+EMnF,GAAN,MAAMgW,CAAmB,CACvB,OAAO,UAAUjR,EAAO,CACtB,IAAIC,EAAI,IAAIgR,EACZ,OAAAhR,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACtBA,EAAM,YACRC,EAAE,UAAY5Y,GAAoBK,EAAWsY,EAAM,SAAS,GAE1DA,EAAM,UACRC,EAAE,QAAU,OAAO,KAAKD,EAAM,OAAO,EAAE,OAAO,CAAC2D,EAAKC,KAClDD,EAAIC,CAAC,EAAIzY,GAA0B,UAAU6U,EAAM,QAAQ4D,CAAC,CAAC,EACtDD,GACN,CAAC,CAAC,GAEH3D,EAAM,aACRC,EAAE,WAAavV,GAAW,UAAUsV,EAAM,UAAU,GAElDA,EAAM,UACRC,EAAE,QAAU,IAAI,KAAKD,EAAM,OAAO,GAEhCA,EAAM,WACRC,EAAE,SAAW,IAAI,KAAKD,EAAM,QAAQ,GAElCA,EAAM,WACRC,EAAE,SAAW5Y,GAAoBS,EAAiBkY,EAAM,QAAQ,GAE9DA,EAAM,mBACRC,EAAE,iBAAmB,SAASD,EAAM,iBAAkB,EAAE,GAEtDA,EAAM,2BACRC,EAAE,yBAA2B,IAAI,KAAKD,EAAM,wBAAwB,GAElEA,EAAM,yBACRC,EAAE,uBAAyB,IAAI,KAAKD,EAAM,sBAAsB,GAE9DA,EAAM,cACRC,EAAE,YAAc5Y,GAAoBU,GAAoBiY,EAAM,WAAW,GAEpEC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAME,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,cAAkB,MAChCA,EAAS,cAAmB,KAAK,eAE/B,OAAO,KAAK,IAAQ,MACtBA,EAAS,IAAS,KAAK,KAErB,OAAO,KAAK,UAAc,MAC5BA,EAAS,UAAe,KAAK,WAE3B,OAAO,KAAK,QAAY,KAAe,KAAK,UAAY,OAC1DA,EAAS,QAAa,cAAe,KAAK,QAAU,KAAK,QAAQ,UAAU,EAAI,KAAK,SAElF,OAAO,KAAK,WAAe,KAAe,KAAK,aAAe,OAChEA,EAAS,WAAgB,cAAe,KAAK,WAAa,KAAK,WAAW,UAAU,EAAI,KAAK,YAE3F,OAAO,KAAK,QAAY,KAAe,KAAK,UAAY,OAC1DA,EAAS,QAAa,cAAe,KAAK,QAAU,KAAK,QAAQ,UAAU,EAAI,KAAK,SAElF,OAAO,KAAK,SAAa,KAAe,KAAK,WAAa,OAC5DA,EAAS,SAAc,cAAe,KAAK,SAAW,KAAK,SAAS,UAAU,EAAI,KAAK,UAErF,OAAO,KAAK,SAAa,MAC3BA,EAAS,SAAc,KAAK,UAE1B,OAAO,KAAK,iBAAqB,MACnCA,EAAS,iBAAsB,KAAK,kBAElC,OAAO,KAAK,yBAA6B,KAAe,KAAK,2BAA6B,OAC5FA,EAAS,yBAA8B,cAAe,KAAK,yBAA2B,KAAK,yBAAyB,UAAU,EAAI,KAAK,0BAErI,OAAO,KAAK,uBAA2B,KAAe,KAAK,yBAA2B,OACxFA,EAAS,uBAA4B,cAAe,KAAK,uBAAyB,KAAK,uBAAuB,UAAU,EAAI,KAAK,wBAE/H,OAAO,KAAK,YAAgB,MAC9BA,EAAS,YAAiB,KAAK,aAE1BA,CACT,CACF,EACMlF,GAAN,MAAMgW,CAAgC,CACpC,OAAO,UAAUlR,EAAO,CACtB,IAAIC,EAAI,IAAIiR,EACZ,OAAAjR,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACtBA,EAAM,YACRC,EAAE,UAAY5Y,GAAoBK,EAAWsY,EAAM,SAAS,GAE1DA,EAAM,UACRC,EAAE,QAAU,OAAO,KAAKD,EAAM,OAAO,EAAE,OAAO,CAAC2D,EAAKC,KAClDD,EAAIC,CAAC,EAAIzY,GAA0B,UAAU6U,EAAM,QAAQ4D,CAAC,CAAC,EACtDD,GACN,CAAC,CAAC,GAEH3D,EAAM,aACRC,EAAE,WAAavV,GAAW,UAAUsV,EAAM,UAAU,GAElDA,EAAM,YACRC,EAAE,UAAYxV,EAAU,UAAUuV,EAAM,SAAS,GAE/CA,EAAM,WACRC,EAAE,SAAW5Y,GAAoBS,EAAiBkY,EAAM,QAAQ,GAE9DA,EAAM,mBACRC,EAAE,iBAAmB,SAASD,EAAM,iBAAkB,EAAE,GAEtDA,EAAM,2BACRC,EAAE,yBAA2B,IAAI,KAAKD,EAAM,wBAAwB,GAElEA,EAAM,yBACRC,EAAE,uBAAyB,IAAI,KAAKD,EAAM,sBAAsB,GAE3DC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAME,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,cAAkB,MAChCA,EAAS,cAAmB,KAAK,eAE/B,OAAO,KAAK,IAAQ,MACtBA,EAAS,IAAS,KAAK,KAErB,OAAO,KAAK,UAAc,MAC5BA,EAAS,UAAe,KAAK,WAE3B,OAAO,KAAK,QAAY,KAAe,KAAK,UAAY,OAC1DA,EAAS,QAAa,cAAe,KAAK,QAAU,KAAK,QAAQ,UAAU,EAAI,KAAK,SAElF,OAAO,KAAK,WAAe,KAAe,KAAK,aAAe,OAChEA,EAAS,WAAgB,cAAe,KAAK,WAAa,KAAK,WAAW,UAAU,EAAI,KAAK,YAE3F,OAAO,KAAK,UAAc,KAAe,KAAK,YAAc,OAC9DA,EAAS,UAAe,cAAe,KAAK,UAAY,KAAK,UAAU,UAAU,EAAI,KAAK,WAExF,OAAO,KAAK,SAAa,MAC3BA,EAAS,SAAc,KAAK,UAE1B,OAAO,KAAK,iBAAqB,MACnCA,EAAS,iBAAsB,KAAK,kBAElC,OAAO,KAAK,yBAA6B,KAAe,KAAK,2BAA6B,OAC5FA,EAAS,yBAA8B,cAAe,KAAK,yBAA2B,KAAK,yBAAyB,UAAU,EAAI,KAAK,0BAErI,OAAO,KAAK,uBAA2B,KAAe,KAAK,yBAA2B,OACxFA,EAAS,uBAA4B,cAAe,KAAK,uBAAyB,KAAK,uBAAuB,UAAU,EAAI,KAAK,wBAE5HA,CACT,CACF,EACMjF,GAAN,MAAMgW,CAAiC,CACrC,OAAO,UAAUnR,EAAO,CACtB,IAAIC,EAAI,IAAIkR,EACZ,OAAAlR,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACnBC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CAEV,MADiB,CAAC,CAEpB,CACF,EACM9E,GAAN,MAAMgW,CAA8B,CAClC,OAAO,UAAUpR,EAAO,CACtB,IAAIC,EAAI,IAAImR,EACZ,OAAAnR,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACtBA,EAAM,UACRC,EAAE,QAAUD,EAAM,QAAQ,IAAI7U,GAA0B,SAAS,GAE/D6U,EAAM,iBACRC,EAAE,eAAiBvV,GAAW,UAAUsV,EAAM,cAAc,GAE1DA,EAAM,WACRC,EAAE,SAAW5Y,GAAoBS,EAAiBkY,EAAM,QAAQ,GAE9DA,EAAM,mBACRC,EAAE,iBAAmB,SAASD,EAAM,iBAAkB,EAAE,GAEtDA,EAAM,2BACRC,EAAE,yBAA2B,IAAI,KAAKD,EAAM,wBAAwB,GAElEA,EAAM,yBACRC,EAAE,uBAAyB,IAAI,KAAKD,EAAM,sBAAsB,GAE3DC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAME,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,cAAkB,MAChCA,EAAS,cAAmB,KAAK,eAE/B,OAAO,KAAK,IAAQ,MACtBA,EAAS,IAAS,KAAK,KAErB,OAAO,KAAK,QAAY,KAAe,KAAK,UAAY,OAC1DA,EAAS,QAAa,cAAe,KAAK,QAAU,KAAK,QAAQ,UAAU,EAAI,KAAK,SAElF,OAAO,KAAK,eAAmB,KAAe,KAAK,iBAAmB,OACxEA,EAAS,eAAoB,cAAe,KAAK,eAAiB,KAAK,eAAe,UAAU,EAAI,KAAK,gBAEvG,OAAO,KAAK,SAAa,MAC3BA,EAAS,SAAc,KAAK,UAE1B,OAAO,KAAK,iBAAqB,MACnCA,EAAS,iBAAsB,KAAK,kBAElC,OAAO,KAAK,yBAA6B,KAAe,KAAK,2BAA6B,OAC5FA,EAAS,yBAA8B,cAAe,KAAK,yBAA2B,KAAK,yBAAyB,UAAU,EAAI,KAAK,0BAErI,OAAO,KAAK,uBAA2B,KAAe,KAAK,yBAA2B,OACxFA,EAAS,uBAA4B,cAAe,KAAK,uBAAyB,KAAK,uBAAuB,UAAU,EAAI,KAAK,wBAE5HA,CACT,CACF,EAoEM/E,GAAN,MAAMgW,CAAuB,CAC3B,OAAO,UAAUrR,EAAO,CACtB,IAAIC,EAAI,IAAIoR,EACZ,OAAApR,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACnBC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAME,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,KAAS,MACvBA,EAAS,KAAU,KAAK,MAEnBA,CACT,CACF,EACM9E,GAAN,MAAMgW,CAAwB,CAC5B,OAAO,UAAUtR,EAAO,CACtB,IAAIC,EAAI,IAAIqR,EACZ,OAAArR,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACtBA,EAAM,WACRC,EAAE,SAAW,OAAO,KAAKD,EAAM,QAAQ,EAAE,OAAO,CAAC2D,EAAKC,KACpDD,EAAIC,CAAC,EAAIlI,GAAQ,UAAUsE,EAAM,SAAS4D,CAAC,CAAC,EACrCD,GACN,CAAC,CAAC,GAEA1D,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAME,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,SAAa,KAAe,KAAK,WAAa,OAC5DA,EAAS,SAAc,cAAe,KAAK,SAAW,KAAK,SAAS,UAAU,EAAI,KAAK,UAElFA,CACT,CACF,EACM7E,GAAN,MAAMgW,CAAuC,CAC3C,OAAO,UAAUvR,EAAO,CACtB,IAAIC,EAAI,IAAIsR,EACZ,OAAAtR,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACtBA,EAAM,cACRC,EAAE,YAAcD,EAAM,YAAY,IAAIkC,GAAK5a,GAAoB0C,GAAakY,CAAC,CAAC,GAEzEjC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAME,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,YAAgB,MAC9BA,EAAS,YAAiB,KAAK,aAE7B,OAAO,KAAK,mBAAuB,MACrCA,EAAS,mBAAwB,KAAK,oBAEpC,OAAO,KAAK,YAAgB,MAC9BA,EAAS,YAAiB,KAAK,aAE7B,OAAO,KAAK,KAAS,MACvBA,EAAS,KAAU,KAAK,MAEnBA,CACT,CACF,EACM5E,GAAN,MAAMgW,CAAoB,CACxB,OAAO,UAAUxR,EAAO,CACtB,IAAIC,EAAI,IAAIuR,EACZ,OAAAvR,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACtBA,EAAM,UACRC,EAAE,QAAU1E,GAAuC,UAAUyE,EAAM,OAAO,GAExEA,EAAM,gBACRC,EAAE,cAAgB1V,EAAoB,UAAUyV,EAAM,aAAa,GAE9DC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAME,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,WAAe,MAC7BA,EAAS,WAAgB,KAAK,YAE5B,OAAO,KAAK,WAAe,MAC7BA,EAAS,WAAgB,KAAK,YAE5B,OAAO,KAAK,QAAY,KAAe,KAAK,UAAY,OAC1DA,EAAS,QAAa,cAAe,KAAK,QAAU,KAAK,QAAQ,UAAU,EAAI,KAAK,SAElF,OAAO,KAAK,cAAkB,KAAe,KAAK,gBAAkB,OACtEA,EAAS,cAAmB,cAAe,KAAK,cAAgB,KAAK,cAAc,UAAU,EAAI,KAAK,eAEjGA,CACT,CACF,EACM3E,GAAN,MAAMgW,CAAqB,CACzB,OAAO,UAAUzR,EAAO,CACtB,IAAIC,EAAI,IAAIwR,EACZ,OAAAxR,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACtBA,EAAM,WACRC,EAAE,SAAWD,EAAM,SAAS,IAAItE,GAAQ,SAAS,GAE/CsE,EAAM,iBACRC,EAAE,eAAiBzV,EAAsB,UAAUwV,EAAM,cAAc,GAElEC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAME,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,SAAa,KAAe,KAAK,WAAa,OAC5DA,EAAS,SAAc,cAAe,KAAK,SAAW,KAAK,SAAS,UAAU,EAAI,KAAK,UAErF,OAAO,KAAK,eAAmB,KAAe,KAAK,iBAAmB,OACxEA,EAAS,eAAoB,cAAe,KAAK,eAAiB,KAAK,eAAe,UAAU,EAAI,KAAK,gBAEpGA,CACT,CACF,EACM1E,GAAN,MAAMgW,CAAQ,CACZ,OAAO,UAAU1R,EAAO,CACtB,IAAIC,EAAI,IAAIyR,EACZ,OAAAzR,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACtBA,EAAM,cACRC,EAAE,YAAc3Y,GAAoB0C,GAAagW,EAAM,WAAW,GAE7DC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAME,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,KAAS,MACvBA,EAAS,KAAU,KAAK,MAEtB,OAAO,KAAK,IAAQ,MACtBA,EAAS,IAAS,KAAK,KAErB,OAAO,KAAK,QAAY,MAC1BA,EAAS,QAAa,KAAK,SAEzB,OAAO,KAAK,mBAAuB,MACrCA,EAAS,mBAAwB,KAAK,oBAEpC,OAAO,KAAK,YAAgB,MAC9BA,EAAS,YAAiB,KAAK,aAE7B,OAAO,KAAK,YAAgB,MAC9BA,EAAS,YAAiB,KAAK,aAE7B,OAAO,KAAK,QAAY,MAC1BA,EAAS,QAAa,KAAK,SAEtBA,CACT,CACF,EAoEMzE,GAAN,MAAMgW,CAAc,CAClB,OAAO,UAAU3R,EAAO,CACtB,IAAIC,EAAI,IAAI0R,EACZ,OAAA1R,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACtBA,EAAM,gBACRC,EAAE,cAAgB,SAASD,EAAM,cAAe,EAAE,GAEhDA,EAAM,gBACRC,EAAE,cAAgB1Y,GAAoB0C,GAAY+V,EAAM,aAAa,GAEhEC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAME,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,cAAkB,MAChCA,EAAS,cAAmB,KAAK,eAE/B,OAAO,KAAK,YAAgB,MAC9BA,EAAS,YAAiB,KAAK,aAE7B,OAAO,KAAK,cAAkB,MAChCA,EAAS,cAAmB,KAAK,eAE5BA,CACT,CACF,EACMxE,GAAN,MAAMgW,CAAqD,CACzD,OAAO,UAAU5R,EAAO,CACtB,IAAIC,EAAI,IAAI2R,EACZ,OAAA3R,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACtBA,EAAM,kBACRC,EAAE,gBAAkBD,EAAM,gBAAgB,IAAIkC,GAAK3a,GAAoBO,EAAiBoa,CAAC,CAAC,GAErFjC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAME,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,gBAAoB,MAClCA,EAAS,gBAAqB,KAAK,iBAE9BA,CACT,CACF,EACMvE,GAAN,MAAMgW,CAAuC,CAC3C,OAAO,UAAU7R,EAAO,CACtB,IAAIC,EAAI,IAAI4R,EACZ,OAAA5R,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACtBA,EAAM,QACRC,EAAE,MAAQ,IAAI,KAAKD,EAAM,KAAK,GAE5BA,EAAM,MACRC,EAAE,IAAM,IAAI,KAAKD,EAAM,GAAG,GAExBA,EAAM,wBACRC,EAAE,sBAAwBrE,GAAqD,UAAUoE,EAAM,qBAAqB,GAElHA,EAAM,QACRC,EAAE,MAAQ1Y,GAAoB4C,GAA0B6V,EAAM,KAAK,GAEjEA,EAAM,WACRC,EAAE,SAAW,SAASD,EAAM,SAAU,EAAE,GAEtCA,EAAM,SACRC,EAAE,OAAS1Y,GAAoB2C,GAAgB8V,EAAM,MAAM,GAEzDA,EAAM,oBACRC,EAAE,kBAAoB,IAAI,KAAKD,EAAM,iBAAiB,GAEpDA,EAAM,kBACRC,EAAE,gBAAkB,IAAI,KAAKD,EAAM,eAAe,GAE7CC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAME,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,WAAe,MAC7BA,EAAS,WAAgB,KAAK,YAE5B,OAAO,KAAK,WAAe,MAC7BA,EAAS,WAAgB,KAAK,YAE5B,OAAO,KAAK,MAAU,KAAe,KAAK,QAAU,OACtDA,EAAS,MAAW,cAAe,KAAK,MAAQ,KAAK,MAAM,UAAU,EAAI,KAAK,OAE5E,OAAO,KAAK,IAAQ,KAAe,KAAK,MAAQ,OAClDA,EAAS,IAAS,cAAe,KAAK,IAAM,KAAK,IAAI,UAAU,EAAI,KAAK,KAEtE,OAAO,KAAK,sBAA0B,KAAe,KAAK,wBAA0B,OACtFA,EAAS,sBAA2B,cAAe,KAAK,sBAAwB,KAAK,sBAAsB,UAAU,EAAI,KAAK,uBAE5H,OAAO,KAAK,MAAU,MACxBA,EAAS,MAAW,KAAK,OAEvB,OAAO,KAAK,SAAa,MAC3BA,EAAS,SAAc,KAAK,UAE1B,OAAO,KAAK,OAAW,MACzBA,EAAS,OAAY,KAAK,QAExB,OAAO,KAAK,cAAkB,MAChCA,EAAS,cAAmB,KAAK,eAE/B,OAAO,KAAK,kBAAsB,KAAe,KAAK,oBAAsB,OAC9EA,EAAS,kBAAuB,cAAe,KAAK,kBAAoB,KAAK,kBAAkB,UAAU,EAAI,KAAK,mBAEhH,OAAO,KAAK,gBAAoB,KAAe,KAAK,kBAAoB,OAC1EA,EAAS,gBAAqB,cAAe,KAAK,gBAAkB,KAAK,gBAAgB,UAAU,EAAI,KAAK,iBAEvGA,CACT,CACF,EACMtE,GAAN,MAAMgW,CAAiD,CACrD,OAAO,UAAU9R,EAAO,CACtB,IAAIC,EAAI,IAAI6R,EACZ,OAAA7R,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACtBA,EAAM,QACRC,EAAE,MAAQ,IAAI,KAAKD,EAAM,KAAK,GAE5BA,EAAM,MACRC,EAAE,IAAM,IAAI,KAAKD,EAAM,GAAG,GAErBC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAME,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,WAAe,MAC7BA,EAAS,WAAgB,KAAK,YAE5B,OAAO,KAAK,WAAe,MAC7BA,EAAS,WAAgB,KAAK,YAE5B,OAAO,KAAK,MAAU,KAAe,KAAK,QAAU,OACtDA,EAAS,MAAW,cAAe,KAAK,MAAQ,KAAK,MAAM,UAAU,EAAI,KAAK,OAE5E,OAAO,KAAK,IAAQ,KAAe,KAAK,MAAQ,OAClDA,EAAS,IAAS,cAAe,KAAK,IAAM,KAAK,IAAI,UAAU,EAAI,KAAK,KAEnEA,CACT,CACF,EACMrE,GAAN,MAAMgW,CAAyB,CAC7B,OAAO,UAAU/R,EAAO,CACtB,IAAIC,EAAI,IAAI8R,EACZ,OAAA9R,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACtBA,EAAM,UACRC,EAAE,QAAUnE,GAAiD,UAAUkE,EAAM,OAAO,GAElFA,EAAM,gBACRC,EAAE,cAAgB1V,EAAoB,UAAUyV,EAAM,aAAa,GAE9DC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAME,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,QAAY,KAAe,KAAK,UAAY,OAC1DA,EAAS,QAAa,cAAe,KAAK,QAAU,KAAK,QAAQ,UAAU,EAAI,KAAK,SAElF,OAAO,KAAK,cAAkB,KAAe,KAAK,gBAAkB,OACtEA,EAAS,cAAmB,cAAe,KAAK,cAAgB,KAAK,cAAc,UAAU,EAAI,KAAK,eAEjGA,CACT,CACF,EACMpE,GAAN,MAAMgW,CAA0B,CAC9B,OAAO,UAAUhS,EAAO,CACtB,IAAIC,EAAI,IAAI+R,EACZ,OAAA/R,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACtBA,EAAM,gBACRC,EAAE,cAAgBD,EAAM,cAAc,IAAI3D,GAAa,SAAS,GAE9D2D,EAAM,iBACRC,EAAE,eAAiBzV,EAAsB,UAAUwV,EAAM,cAAc,GAErEA,EAAM,WACRC,EAAE,SAAW1Y,GAAoBI,EAAUqY,EAAM,QAAQ,GAEpDC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAME,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,cAAkB,KAAe,KAAK,gBAAkB,OACtEA,EAAS,cAAmB,cAAe,KAAK,cAAgB,KAAK,cAAc,UAAU,EAAI,KAAK,eAEpG,OAAO,KAAK,eAAmB,KAAe,KAAK,iBAAmB,OACxEA,EAAS,eAAoB,cAAe,KAAK,eAAiB,KAAK,eAAe,UAAU,EAAI,KAAK,gBAEvG,OAAO,KAAK,SAAa,MAC3BA,EAAS,SAAc,KAAK,UAEvBA,CACT,CACF,EACMnE,GAAN,MAAMgW,CAAoB,CACxB,OAAO,UAAUjS,EAAO,CACtB,IAAIC,EAAI,IAAIgS,EACZ,OAAAhS,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACtBA,EAAM,UACRC,EAAE,QAAUpE,GAAuC,UAAUmE,EAAM,OAAO,GAExEA,EAAM,gBACRC,EAAE,cAAgB1V,EAAoB,UAAUyV,EAAM,aAAa,GAE9DC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAME,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,QAAY,KAAe,KAAK,UAAY,OAC1DA,EAAS,QAAa,cAAe,KAAK,QAAU,KAAK,QAAQ,UAAU,EAAI,KAAK,SAElF,OAAO,KAAK,cAAkB,KAAe,KAAK,gBAAkB,OACtEA,EAAS,cAAmB,cAAe,KAAK,cAAgB,KAAK,cAAc,UAAU,EAAI,KAAK,eAEjGA,CACT,CACF,EACMlE,GAAN,MAAMgW,CAAqB,CACzB,OAAO,UAAUlS,EAAO,CACtB,IAAIC,EAAI,IAAIiS,EACZ,OAAAjS,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACtBA,EAAM,YACRC,EAAE,UAAYD,EAAM,UAAU,IAAI5D,GAAS,SAAS,GAElD4D,EAAM,iBACRC,EAAE,eAAiBzV,EAAsB,UAAUwV,EAAM,cAAc,GAElEC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAME,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,UAAc,KAAe,KAAK,YAAc,OAC9DA,EAAS,UAAe,cAAe,KAAK,UAAY,KAAK,UAAU,UAAU,EAAI,KAAK,WAExF,OAAO,KAAK,eAAmB,KAAe,KAAK,iBAAmB,OACxEA,EAAS,eAAoB,cAAe,KAAK,eAAiB,KAAK,eAAe,UAAU,EAAI,KAAK,gBAEpGA,CACT,CACF,EACMjE,GAAN,MAAMgW,CAAoB,CACxB,OAAO,UAAUnS,EAAO,CACtB,IAAIC,EAAI,IAAIkS,EACZ,OAAAlS,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACtBA,EAAM,oBACRC,EAAE,kBAAoB,IAAI,KAAKD,EAAM,iBAAiB,GAEjDC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAME,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,WAAe,MAC7BA,EAAS,WAAgB,KAAK,YAE5B,OAAO,KAAK,WAAe,MAC7BA,EAAS,WAAgB,KAAK,YAE5B,OAAO,KAAK,IAAQ,MACtBA,EAAS,IAAS,KAAK,KAErB,OAAO,KAAK,kBAAsB,KAAe,KAAK,oBAAsB,OAC9EA,EAAS,kBAAuB,cAAe,KAAK,kBAAoB,KAAK,kBAAkB,UAAU,EAAI,KAAK,mBAE7GA,CACT,CACF,EACMhE,GAAN,MAAMgW,CAAS,CACb,OAAO,UAAUpS,EAAO,CACtB,IAAIC,EAAI,IAAImS,EACZ,OAAAnS,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACtBA,EAAM,YACRC,EAAE,UAAY,IAAI,KAAKD,EAAM,SAAS,GAEpCA,EAAM,QACRC,EAAE,MAAQ,SAASD,EAAM,MAAO,EAAE,GAEhCA,EAAM,WACRC,EAAE,SAAW1Y,GAAoBI,EAAUqY,EAAM,QAAQ,GAEvDA,EAAM,QACRC,EAAE,MAAQD,EAAM,MAAM,IAAI3D,GAAa,SAAS,GAE9C2D,EAAM,kBACRC,EAAE,gBAAkB1Y,GAAoBO,EAAiBkY,EAAM,eAAe,GAE5EA,EAAM,iBACRC,EAAE,eAAiB,SAASD,EAAM,eAAgB,EAAE,GAElDA,EAAM,SACRC,EAAE,OAAS,IAAI,KAAKD,EAAM,MAAM,GAE9BA,EAAM,SACRC,EAAE,OAAS1Y,GAAoB2C,GAAgB8V,EAAM,MAAM,GAEzDA,EAAM,eACRC,EAAE,aAAe,SAASD,EAAM,aAAc,EAAE,GAE9CA,EAAM,iBACRC,EAAE,eAAiBD,EAAM,eAAe,IAAIrE,GAAc,SAAS,GAEjEqE,EAAM,YACRC,EAAE,UAAY,SAASD,EAAM,UAAW,EAAE,GAExCA,EAAM,kBACRC,EAAE,gBAAkBD,EAAM,gBAAgB,IAAItP,GAAe,SAAS,GAEpEsP,EAAM,oBACRC,EAAE,kBAAoB,IAAI,KAAKD,EAAM,iBAAiB,GAEjDC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAME,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,WAAe,MAC7BA,EAAS,WAAgB,KAAK,YAE5B,OAAO,KAAK,UAAc,KAAe,KAAK,YAAc,OAC9DA,EAAS,UAAe,cAAe,KAAK,UAAY,KAAK,UAAU,UAAU,EAAI,KAAK,WAExF,OAAO,KAAK,WAAe,MAC7BA,EAAS,WAAgB,KAAK,YAE5B,OAAO,KAAK,MAAU,MACxBA,EAAS,MAAW,KAAK,OAEvB,OAAO,KAAK,SAAa,MAC3BA,EAAS,SAAc,KAAK,UAE1B,OAAO,KAAK,QAAY,MAC1BA,EAAS,QAAa,KAAK,SAEzB,OAAO,KAAK,MAAU,KAAe,KAAK,QAAU,OACtDA,EAAS,MAAW,cAAe,KAAK,MAAQ,KAAK,MAAM,UAAU,EAAI,KAAK,OAE5E,OAAO,KAAK,gBAAoB,MAClCA,EAAS,gBAAqB,KAAK,iBAEjC,OAAO,KAAK,UAAc,MAC5BA,EAAS,UAAe,KAAK,WAE3B,OAAO,KAAK,eAAmB,MACjCA,EAAS,eAAoB,KAAK,gBAEhC,OAAO,KAAK,OAAW,KAAe,KAAK,SAAW,OACxDA,EAAS,OAAY,cAAe,KAAK,OAAS,KAAK,OAAO,UAAU,EAAI,KAAK,QAE/E,OAAO,KAAK,KAAS,MACvBA,EAAS,KAAU,KAAK,MAEtB,OAAO,KAAK,OAAW,MACzBA,EAAS,OAAY,KAAK,QAExB,OAAO,KAAK,aAAiB,MAC/BA,EAAS,aAAkB,KAAK,cAE9B,OAAO,KAAK,eAAmB,KAAe,KAAK,iBAAmB,OACxEA,EAAS,eAAoB,cAAe,KAAK,eAAiB,KAAK,eAAe,UAAU,EAAI,KAAK,gBAEvG,OAAO,KAAK,UAAc,MAC5BA,EAAS,UAAe,KAAK,WAE3B,OAAO,KAAK,gBAAoB,KAAe,KAAK,kBAAoB,OAC1EA,EAAS,gBAAqB,cAAe,KAAK,gBAAkB,KAAK,gBAAgB,UAAU,EAAI,KAAK,iBAE1G,OAAO,KAAK,kBAAsB,KAAe,KAAK,oBAAsB,OAC9EA,EAAS,kBAAuB,cAAe,KAAK,kBAAoB,KAAK,kBAAkB,UAAU,EAAI,KAAK,mBAE7GA,CACT,CACF,EACM/D,GAAN,MAAMgW,CAAa,CACjB,OAAO,UAAUrS,EAAO,CACtB,IAAIC,EAAI,IAAIoS,EACZ,OAAApS,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACtBA,EAAM,SACRC,EAAE,OAAS,SAASD,EAAM,OAAQ,EAAE,GAElCA,EAAM,iBACRC,EAAE,eAAiB,SAASD,EAAM,eAAgB,EAAE,GAElDA,EAAM,QACRC,EAAE,MAAQ,SAASD,EAAM,MAAO,EAAE,GAEhCA,EAAM,mBACRC,EAAE,iBAAmBD,EAAM,iBAAiB,IAAI3S,GAAgB,SAAS,GAEvE2S,EAAM,YACRC,EAAE,UAAY,SAASD,EAAM,UAAW,EAAE,GAExCA,EAAM,kBACRC,EAAE,gBAAkBD,EAAM,gBAAgB,IAAItP,GAAe,SAAS,GAEpEsP,EAAM,WACRC,EAAE,SAAW,SAASD,EAAM,SAAU,EAAE,GAEtCA,EAAM,YACRC,EAAE,UAAY,SAASD,EAAM,UAAW,EAAE,GAExCA,EAAM,cACRC,EAAE,YAAcD,EAAM,YAAY,IAAIrV,GAAW,SAAS,GAErDsV,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAME,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,IAAQ,MACtBA,EAAS,IAAS,KAAK,KAErB,OAAO,KAAK,OAAW,MACzBA,EAAS,OAAY,KAAK,QAExB,OAAO,KAAK,QAAY,MAC1BA,EAAS,QAAa,KAAK,SAEzB,OAAO,KAAK,WAAe,MAC7BA,EAAS,WAAgB,KAAK,YAE5B,OAAO,KAAK,eAAmB,MACjCA,EAAS,eAAoB,KAAK,gBAEhC,OAAO,KAAK,MAAU,MACxBA,EAAS,MAAW,KAAK,OAEvB,OAAO,KAAK,iBAAqB,KAAe,KAAK,mBAAqB,OAC5EA,EAAS,iBAAsB,cAAe,KAAK,iBAAmB,KAAK,iBAAiB,UAAU,EAAI,KAAK,kBAE7G,OAAO,KAAK,WAAe,MAC7BA,EAAS,WAAgB,KAAK,YAE5B,OAAO,KAAK,IAAQ,MACtBA,EAAS,IAAS,KAAK,KAErB,OAAO,KAAK,WAAe,MAC7BA,EAAS,WAAgB,KAAK,YAE5B,OAAO,KAAK,YAAgB,MAC9BA,EAAS,YAAiB,KAAK,aAE7B,OAAO,KAAK,UAAc,MAC5BA,EAAS,UAAe,KAAK,WAE3B,OAAO,KAAK,gBAAoB,KAAe,KAAK,kBAAoB,OAC1EA,EAAS,gBAAqB,cAAe,KAAK,gBAAkB,KAAK,gBAAgB,UAAU,EAAI,KAAK,iBAE1G,OAAO,KAAK,SAAa,MAC3BA,EAAS,SAAc,KAAK,UAE1B,OAAO,KAAK,UAAc,MAC5BA,EAAS,UAAe,KAAK,WAE3B,OAAO,KAAK,YAAgB,KAAe,KAAK,cAAgB,OAClEA,EAAS,YAAiB,cAAe,KAAK,YAAc,KAAK,YAAY,UAAU,EAAI,KAAK,aAE3FA,CACT,CACF,EACM9D,GAAN,MAAMgW,CAAqB,CACzB,OAAO,UAAUtS,EAAO,CACtB,IAAIC,EAAI,IAAIqS,EACZ,OAAArS,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACnBC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAME,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,WAAe,MAC7BA,EAAS,WAAgB,KAAK,YAE5B,OAAO,KAAK,WAAe,MAC7BA,EAAS,WAAgB,KAAK,YAE5B,OAAO,KAAK,IAAQ,MACtBA,EAAS,IAAS,KAAK,KAElBA,CACT,CACF,EACM7D,GAAN,MAAMgW,CAAqB,CACzB,OAAO,UAAUvS,EAAO,CACtB,IAAIC,EAAI,IAAIsS,EACZ,OAAAtS,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACnBC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAME,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,WAAe,MAC7BA,EAAS,WAAgB,KAAK,YAE5B,OAAO,KAAK,WAAe,MAC7BA,EAAS,WAAgB,KAAK,YAE5B,OAAO,KAAK,IAAQ,MACtBA,EAAS,IAAS,KAAK,KAErB,OAAO,KAAK,mBAAuB,MACrCA,EAAS,mBAAwB,KAAK,oBAEjCA,CACT,CACF,EACM5D,GAAN,MAAMgW,CAAmB,CACvB,OAAO,UAAUxS,EAAO,CACtB,IAAIC,EAAI,IAAIuS,EACZ,OAAAvS,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACnBC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAME,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,WAAe,MAC7BA,EAAS,WAAgB,KAAK,YAE5B,OAAO,KAAK,WAAe,MAC7BA,EAAS,WAAgB,KAAK,YAE5B,OAAO,KAAK,IAAQ,MACtBA,EAAS,IAAS,KAAK,KAElBA,CACT,CACF,EACM3D,GAAN,MAAMgW,CAAoB,CACxB,OAAO,UAAUzS,EAAO,CACtB,IAAIC,EAAI,IAAIwS,EACZ,OAAAxS,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACnBC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAME,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,WAAe,MAC7BA,EAAS,WAAgB,KAAK,YAE5B,OAAO,KAAK,WAAe,MAC7BA,EAAS,WAAgB,KAAK,YAE5B,OAAO,KAAK,IAAQ,MACtBA,EAAS,IAAS,KAAK,KAElBA,CACT,CACF,EA2oBM1D,GAAN,MAAMgW,CAA6B,CACjC,OAAO,UAAU1S,EAAO,CACtB,IAAIC,EAAI,IAAIyS,EACZ,OAAAzS,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACnBC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAME,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,WAAe,MAC7BA,EAAS,WAAgB,KAAK,YAE5B,OAAO,KAAK,UAAc,MAC5BA,EAAS,UAAe,KAAK,WAExBA,CACT,CACF,EACMzD,GAAN,MAAMgW,CAAoC,CACxC,OAAO,UAAU3S,EAAO,CACtB,IAAIC,EAAI,IAAI0S,EACZ,OAAA1S,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACnBC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAME,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,WAAe,MAC7BA,EAAS,WAAgB,KAAK,YAE5B,OAAO,KAAK,UAAc,MAC5BA,EAAS,UAAe,KAAK,WAExBA,CACT,CACF,EAw5BMxD,GAAN,MAAMgW,CAAgC,CACpC,OAAO,UAAU5S,EAAO,CACtB,IAAIC,EAAI,IAAI2S,EACZ,OAAA3S,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACtBA,EAAM,aACRC,EAAE,WAAazY,GAAoB6C,GAA+B2V,EAAM,UAAU,GAEhFA,EAAM,gBACRC,EAAE,cAAgB,IAAI,KAAKD,EAAM,aAAa,GAE5CA,EAAM,cACRC,EAAE,YAAc,IAAI,KAAKD,EAAM,WAAW,GAErCC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAME,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,WAAe,MAC7BA,EAAS,WAAgB,KAAK,YAE5B,OAAO,KAAK,WAAe,MAC7BA,EAAS,WAAgB,KAAK,YAE5B,OAAO,KAAK,cAAkB,KAAe,KAAK,gBAAkB,OACtEA,EAAS,cAAmB,cAAe,KAAK,cAAgB,KAAK,cAAc,UAAU,EAAI,KAAK,eAEpG,OAAO,KAAK,YAAgB,KAAe,KAAK,cAAgB,OAClEA,EAAS,YAAiB,cAAe,KAAK,YAAc,KAAK,YAAY,UAAU,EAAI,KAAK,aAE9F,OAAO,KAAK,aAAiB,MAC/BA,EAAS,aAAkB,KAAK,cAE3BA,CACT,CACF,EACMvD,GAAN,MAAMgW,CAA6B,CACjC,OAAO,UAAU7S,EAAO,CACtB,IAAIC,EAAI,IAAI4S,EACZ,OAAA5S,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACnBC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAME,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,GAAO,MACrBA,EAAS,GAAQ,KAAK,IAEjBA,CACT,CACF,EACMtD,GAAN,MAAMgW,CAA0B,CAC9B,OAAO,UAAU9S,EAAO,CACtB,IAAIC,EAAI,IAAI6S,EACZ,OAAA7S,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACtBA,EAAM,UACRC,EAAE,QAAU,IAAI,KAAKD,EAAM,OAAO,GAEhCA,EAAM,aACRC,EAAE,WAAazY,GAAoB6C,GAA+B2V,EAAM,UAAU,GAEhFA,EAAM,SACRC,EAAE,OAASzY,GAAoB4C,GAAiC4V,EAAM,MAAM,GAEvEC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAME,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,GAAO,MACrBA,EAAS,GAAQ,KAAK,IAEpB,OAAO,KAAK,QAAY,KAAe,KAAK,UAAY,OAC1DA,EAAS,QAAa,cAAe,KAAK,QAAU,KAAK,QAAQ,UAAU,EAAI,KAAK,SAElF,OAAO,KAAK,WAAe,MAC7BA,EAAS,WAAgB,KAAK,YAE5B,OAAO,KAAK,OAAW,MACzBA,EAAS,OAAY,KAAK,QAExB,OAAO,KAAK,MAAU,MACxBA,EAAS,MAAW,KAAK,OAEpBA,CACT,CACF,EAgTMrD,GAAN,MAAMgW,CAAkC,CACtC,OAAO,UAAU/S,EAAO,CACtB,IAAIC,EAAI,IAAI8S,EACZ,OAAA9S,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACtBA,EAAM,UACRC,EAAE,QAAUD,EAAM,QAAQ,IAAI/C,GAAmB,SAAS,GAErDgD,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAME,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,QAAY,KAAe,KAAK,UAAY,OAC1DA,EAAS,QAAa,cAAe,KAAK,QAAU,KAAK,QAAQ,UAAU,EAAI,KAAK,SAE/EA,CACT,CACF,EACMpD,GAAN,MAAMgW,CAAmC,CACvC,OAAO,UAAUhT,EAAO,CACtB,IAAIC,EAAI,IAAI+S,EACZ,OAAA/S,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACnBC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAME,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,gBAAoB,MAClCA,EAAS,gBAAqB,KAAK,iBAE9BA,CACT,CACF,EACMnD,GAAN,MAAMgW,CAAmB,CACvB,OAAO,UAAUjT,EAAO,CACtB,IAAIC,EAAI,IAAIgT,EACZ,OAAAhT,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACnBC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAME,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,eAAmB,MACjCA,EAAS,eAAoB,KAAK,gBAEhC,OAAO,KAAK,aAAiB,MAC/BA,EAAS,aAAkB,KAAK,cAE9B,OAAO,KAAK,aAAiB,MAC/BA,EAAS,aAAkB,KAAK,cAE9B,OAAO,KAAK,gBAAoB,MAClCA,EAAS,gBAAqB,KAAK,iBAEjC,OAAO,KAAK,WAAe,MAC7BA,EAAS,WAAgB,KAAK,YAEzBA,CACT,CACF,EAOMlD,GAAN,MAAMgW,CAA2B,CAC/B,OAAO,UAAUlT,EAAO,CACtB,IAAIC,EAAI,IAAIiT,EACZ,OAAAjT,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACnBC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAME,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,WAAe,MAC7BA,EAAS,WAAgB,KAAK,YAE5B,OAAO,KAAK,IAAQ,MACtBA,EAAS,IAAS,KAAK,KAErB,OAAO,KAAK,QAAY,MAC1BA,EAAS,QAAa,KAAK,SAEzB,OAAO,KAAK,WAAe,MAC7BA,EAAS,WAAgB,KAAK,YAE5B,OAAO,KAAK,eAAmB,MACjCA,EAAS,eAAoB,KAAK,gBAE7BA,CACT,CACF,EACMjD,GAAN,MAAMgW,CAAgC,CACpC,OAAO,UAAUnT,EAAO,CACtB,IAAIC,EAAI,IAAIkT,EACZ,OAAAlT,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACtBA,EAAM,cACRC,EAAE,YAAc,IAAI,KAAKD,EAAM,WAAW,GAExCA,EAAM,YACRC,EAAE,UAAY,IAAI,KAAKD,EAAM,SAAS,GAEjCC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAME,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,WAAe,MAC7BA,EAAS,WAAgB,KAAK,YAE5B,OAAO,KAAK,YAAgB,KAAe,KAAK,cAAgB,OAClEA,EAAS,YAAiB,cAAe,KAAK,YAAc,KAAK,YAAY,UAAU,EAAI,KAAK,aAE9F,OAAO,KAAK,UAAc,KAAe,KAAK,YAAc,OAC9DA,EAAS,UAAe,cAAe,KAAK,UAAY,KAAK,UAAU,UAAU,EAAI,KAAK,WAErFA,CACT,CACF,EACMhD,GAAN,MAAMgW,CAAiC,CACrC,OAAO,UAAUpT,EAAO,CACtB,IAAIC,EAAI,IAAImT,EACZ,OAAAnT,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACnBC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAME,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,IAAQ,MACtBA,EAAS,IAAS,KAAK,KAElBA,CACT,CACF,EACM/C,GAAN,MAAMgW,CAA4B,CAChC,OAAO,UAAUrT,EAAO,CACtB,IAAIC,EAAI,IAAIoT,EACZ,OAAApT,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACtBA,EAAM,cACRC,EAAE,YAAc,IAAI,KAAKD,EAAM,WAAW,GAExCA,EAAM,YACRC,EAAE,UAAY,IAAI,KAAKD,EAAM,SAAS,GAEjCC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAME,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,KAAS,MACvBA,EAAS,KAAU,KAAK,MAEtB,OAAO,KAAK,YAAgB,KAAe,KAAK,cAAgB,OAClEA,EAAS,YAAiB,cAAe,KAAK,YAAc,KAAK,YAAY,UAAU,EAAI,KAAK,aAE9F,OAAO,KAAK,UAAc,KAAe,KAAK,YAAc,OAC9DA,EAAS,UAAe,cAAe,KAAK,UAAY,KAAK,UAAU,UAAU,EAAI,KAAK,WAExF,OAAO,KAAK,WAAe,MAC7BA,EAAS,WAAgB,KAAK,YAE5B,OAAO,KAAK,eAAmB,MACjCA,EAAS,eAAoB,KAAK,gBAE7BA,CACT,CACF,EACM9C,GAAN,MAAMgW,CAA6B,CACjC,OAAO,UAAUtT,EAAO,CACtB,IAAIC,EAAI,IAAIqT,EACZ,OAAArT,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACnBC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAME,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,IAAQ,MACtBA,EAAS,IAAS,KAAK,KAErB,OAAO,KAAK,OAAW,MACzBA,EAAS,OAAY,KAAK,QAExB,OAAO,KAAK,SAAa,MAC3BA,EAAS,SAAc,KAAK,UAEvBA,CACT,CACF,EACM7C,GAAN,MAAMgW,CAAmC,CACvC,OAAO,UAAUvT,EAAO,CACtB,IAAIC,EAAI,IAAIsT,EACZ,OAAAtT,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACnBC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAME,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,WAAe,MAC7BA,EAAS,WAAgB,KAAK,YAE5B,OAAO,KAAK,QAAY,MAC1BA,EAAS,QAAa,KAAK,SAEzB,OAAO,KAAK,UAAc,MAC5BA,EAAS,UAAe,KAAK,WAExBA,CACT,CACF,EACM5C,GAAN,MAAMgW,CAAoC,CACxC,OAAO,UAAUxT,EAAO,CACtB,IAAIC,EAAI,IAAIuT,EACZ,OAAAvT,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACtBA,EAAM,SACRC,EAAE,OAAS,OAAO,KAAKD,EAAM,MAAM,EAAE,OAAO,CAAC2D,EAAKC,KAChDD,EAAIC,CAAC,EAAItW,GAAc,UAAU0S,EAAM,OAAO4D,CAAC,CAAC,EACzCD,GACN,CAAC,CAAC,GAEA1D,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAME,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,OAAW,KAAe,KAAK,SAAW,OACxDA,EAAS,OAAY,cAAe,KAAK,OAAS,KAAK,OAAO,UAAU,EAAI,KAAK,QAE5EA,CACT,CACF,EACM3C,GAAN,MAAMgW,CAA8B,CAClC,OAAO,UAAUzT,EAAO,CACtB,IAAIC,EAAI,IAAIwT,EACZ,OAAAxT,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACnBC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAME,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,WAAe,MAC7BA,EAAS,WAAgB,KAAK,YAE5B,OAAO,KAAK,KAAS,MACvBA,EAAS,KAAU,KAAK,MAEtB,OAAO,KAAK,cAAkB,MAChCA,EAAS,cAAmB,KAAK,eAE5BA,CACT,CACF,EACM1C,GAAN,MAAMgW,CAA+B,CACnC,OAAO,UAAU1T,EAAO,CACtB,IAAIC,EAAI,IAAIyT,EACZ,OAAAzT,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACtBA,EAAM,gBACRC,EAAE,cAAgB,OAAO,KAAKD,EAAM,aAAa,EAAE,OAAO,CAAC2D,EAAKC,KAC9DD,EAAIC,CAAC,EAAIpY,GAAe,UAAUwU,EAAM,cAAc4D,CAAC,CAAC,EACjDD,GACN,CAAC,CAAC,GAEH3D,EAAM,SACRC,EAAE,OAASD,EAAM,OAAO,IAAIzU,GAAc,SAAS,GAE9C0U,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAME,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,cAAkB,KAAe,KAAK,gBAAkB,OACtEA,EAAS,cAAmB,cAAe,KAAK,cAAgB,KAAK,cAAc,UAAU,EAAI,KAAK,eAEpG,OAAO,KAAK,OAAW,KAAe,KAAK,SAAW,OACxDA,EAAS,OAAY,cAAe,KAAK,OAAS,KAAK,OAAO,UAAU,EAAI,KAAK,QAE5EA,CACT,CACF,EACMzC,GAAN,MAAMgW,CAA6B,CACjC,OAAO,UAAU3T,EAAO,CACtB,IAAIC,EAAI,IAAI0T,EACZ,OAAA1T,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACtBA,EAAM,WACRC,EAAE,SAAWxY,GAAkBE,EAAUqY,EAAM,QAAQ,GAElDC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAME,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,WAAe,MAC7BA,EAAS,WAAgB,KAAK,YAE5B,OAAO,KAAK,SAAa,MAC3BA,EAAS,SAAc,KAAK,UAE1B,OAAO,KAAK,KAAS,MACvBA,EAAS,KAAU,KAAK,MAEtB,OAAO,KAAK,QAAY,MAC1BA,EAAS,QAAa,KAAK,SAEzB,OAAO,KAAK,WAAe,MAC7BA,EAAS,WAAgB,KAAK,YAEzBA,CACT,CACF,EACMxC,GAAN,MAAMgW,CAA8B,CAClC,OAAO,UAAU5T,EAAO,CACtB,IAAIC,EAAI,IAAI2T,EACZ,OAAA3T,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACtBA,EAAM,gBACRC,EAAE,cAAgB,OAAO,KAAKD,EAAM,aAAa,EAAE,OAAO,CAAC2D,EAAKC,KAC9DD,EAAIC,CAAC,EAAIpY,GAAe,UAAUwU,EAAM,cAAc4D,CAAC,CAAC,EACjDD,GACN,CAAC,CAAC,GAEH3D,EAAM,SACRC,EAAE,OAASD,EAAM,OAAO,IAAIzU,GAAc,SAAS,GAE9C0U,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAME,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,cAAkB,KAAe,KAAK,gBAAkB,OACtEA,EAAS,cAAmB,cAAe,KAAK,cAAgB,KAAK,cAAc,UAAU,EAAI,KAAK,eAEpG,OAAO,KAAK,OAAW,KAAe,KAAK,SAAW,OACxDA,EAAS,OAAY,cAAe,KAAK,OAAS,KAAK,OAAO,UAAU,EAAI,KAAK,QAE5EA,CACT,CACF,EACMvC,GAAN,MAAMgW,CAA6B,CACjC,OAAO,UAAU7T,EAAO,CACtB,IAAIC,EAAI,IAAI4T,EACZ,OAAA5T,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACtBA,EAAM,QACRC,EAAE,MAAQD,EAAM,MAAM,IAAIvU,GAAyB,SAAS,GAEvDwU,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAME,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,WAAe,MAC7BA,EAAS,WAAgB,KAAK,YAE5B,OAAO,KAAK,MAAU,KAAe,KAAK,QAAU,OACtDA,EAAS,MAAW,cAAe,KAAK,MAAQ,KAAK,MAAM,UAAU,EAAI,KAAK,OAEzEA,CACT,CACF,EACMtC,GAAN,MAAMgW,CAA8B,CAClC,OAAO,UAAU9T,EAAO,CACtB,IAAIC,EAAI,IAAI6T,EACZ,OAAA7T,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACtBA,EAAM,QACRC,EAAE,MAAQD,EAAM,MAAM,IAAIhC,GAAwB,SAAS,GAEtDiC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAME,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,MAAU,KAAe,KAAK,QAAU,OACtDA,EAAS,MAAW,cAAe,KAAK,MAAQ,KAAK,MAAM,UAAU,EAAI,KAAK,OAEzEA,CACT,CACF,EACMrC,GAAN,MAAMgW,CAAuB,CAC3B,OAAO,UAAU/T,EAAO,CACtB,IAAIC,EAAI,IAAI8T,EACZ,OAAA9T,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACtBA,EAAM,WACRC,EAAE,SAAW,SAASD,EAAM,SAAU,EAAE,GAEtCA,EAAM,YACRC,EAAE,UAAYxY,GAAkBC,EAAWsY,EAAM,SAAS,GAErDC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAME,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,WAAe,MAC7BA,EAAS,WAAgB,KAAK,YAE5B,OAAO,KAAK,IAAQ,MACtBA,EAAS,IAAS,KAAK,KAErB,OAAO,KAAK,SAAa,MAC3BA,EAAS,SAAc,KAAK,UAE1B,OAAO,KAAK,UAAc,MAC5BA,EAAS,UAAe,KAAK,WAExBA,CACT,CACF,EACMpC,GAAN,MAAMgW,CAAwB,CAC5B,OAAO,UAAUhU,EAAO,CACtB,IAAIC,EAAI,IAAI+T,EACZ,OAAA/T,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACtBA,EAAM,YACRC,EAAE,UAAY,SAASD,EAAM,UAAW,EAAE,GAExCA,EAAM,WACRC,EAAE,SAAWxY,GAAkBE,EAAUqY,EAAM,QAAQ,GAErDA,EAAM,WACRC,EAAE,SAAWxY,GAAkBK,EAAiBkY,EAAM,QAAQ,GAE5DA,EAAM,aACRC,EAAE,WAAavV,GAAW,UAAUsV,EAAM,UAAU,GAElDA,EAAM,iBACRC,EAAE,eAAiB,SAASD,EAAM,eAAgB,EAAE,GAElDA,EAAM,eACRC,EAAE,aAAe,SAASD,EAAM,aAAc,EAAE,GAE9CA,EAAM,WACRC,EAAE,SAAW,SAASD,EAAM,SAAU,EAAE,GAEnCC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAME,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,iBAAqB,MACnCA,EAAS,iBAAsB,KAAK,kBAElC,OAAO,KAAK,UAAc,MAC5BA,EAAS,UAAe,KAAK,WAE3B,OAAO,KAAK,SAAa,MAC3BA,EAAS,SAAc,KAAK,UAE1B,OAAO,KAAK,SAAa,MAC3BA,EAAS,SAAc,KAAK,UAE1B,OAAO,KAAK,WAAe,KAAe,KAAK,aAAe,OAChEA,EAAS,WAAgB,cAAe,KAAK,WAAa,KAAK,WAAW,UAAU,EAAI,KAAK,YAE3F,OAAO,KAAK,gBAAoB,MAClCA,EAAS,gBAAqB,KAAK,iBAEjC,OAAO,KAAK,eAAmB,MACjCA,EAAS,eAAoB,KAAK,gBAEhC,OAAO,KAAK,aAAiB,MAC/BA,EAAS,aAAkB,KAAK,cAE9B,OAAO,KAAK,SAAa,MAC3BA,EAAS,SAAc,KAAK,UAEvBA,CACT,CACF,EACMnC,GAAN,MAAMgW,CAAuB,CAC3B,OAAO,UAAUjU,EAAO,CACtB,IAAIC,EAAI,IAAIgU,EACZ,OAAAhU,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACtBA,EAAM,cACRC,EAAE,YAAc,IAAI,KAAKD,EAAM,WAAW,GAExCA,EAAM,YACRC,EAAE,UAAY,IAAI,KAAKD,EAAM,SAAS,GAEjCC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAME,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,KAAS,MACvBA,EAAS,KAAU,KAAK,MAEtB,OAAO,KAAK,YAAgB,KAAe,KAAK,cAAgB,OAClEA,EAAS,YAAiB,cAAe,KAAK,YAAc,KAAK,YAAY,UAAU,EAAI,KAAK,aAE9F,OAAO,KAAK,UAAc,KAAe,KAAK,YAAc,OAC9DA,EAAS,UAAe,cAAe,KAAK,UAAY,KAAK,UAAU,UAAU,EAAI,KAAK,WAErFA,CACT,CACF,EACMlC,GAAN,MAAMgW,CAAwB,CAC5B,OAAO,UAAUlU,EAAO,CACtB,IAAIC,EAAI,IAAIiU,EACZ,OAAAjU,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACtBA,EAAM,eACRC,EAAE,aAAe,SAASD,EAAM,aAAc,EAAE,GAE3CC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAME,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,aAAiB,MAC/BA,EAAS,aAAkB,KAAK,cAE3BA,CACT,CACF,EACMjC,GAAN,MAAMgW,CAAqB,CACzB,OAAO,UAAUnU,EAAO,CACtB,IAAIC,EAAI,IAAIkU,EACZ,OAAAlU,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACnBC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAME,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,WAAe,MAC7BA,EAAS,WAAgB,KAAK,YAEzBA,CACT,CACF,EACMhC,GAAN,MAAMgW,CAAsB,CAC1B,OAAO,UAAUpU,EAAO,CACtB,IAAIC,EAAI,IAAImU,EACZ,OAAAnU,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACtBA,EAAM,yBACRC,EAAE,uBAAyB,SAASD,EAAM,uBAAwB,EAAE,GAE/DC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAME,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,uBAA2B,MACzCA,EAAS,uBAA4B,KAAK,wBAExC,OAAO,KAAK,kBAAsB,MACpCA,EAAS,kBAAuB,KAAK,mBAEnC,OAAO,KAAK,yBAA6B,MAC3CA,EAAS,yBAA8B,KAAK,0BAEvCA,CACT,CACF,EACM/B,GAAN,MAAMgW,CAA2D,CAC/D,OAAO,UAAUrU,EAAO,CACtB,IAAIC,EAAI,IAAIoU,EACZ,OAAApU,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACnBC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAME,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,IAAQ,MACtBA,EAAS,IAAS,KAAK,KAErB,OAAO,KAAK,aAAiB,MAC/BA,EAAS,aAAkB,KAAK,cAE3BA,CACT,CACF,EACM9B,GAAN,MAAMgW,CAA8B,CAClC,OAAO,UAAUtU,EAAO,CACtB,IAAIC,EAAI,IAAIqU,EACZ,OAAArU,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACtBA,EAAM,SACRC,EAAE,OAAS5B,GAA2D,UAAU2B,EAAM,MAAM,GAEvFC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAME,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,cAAkB,MAChCA,EAAS,cAAmB,KAAK,eAE/B,OAAO,KAAK,OAAW,KAAe,KAAK,SAAW,OACxDA,EAAS,OAAY,cAAe,KAAK,OAAS,KAAK,OAAO,UAAU,EAAI,KAAK,QAE5EA,CACT,CACF,EACM7B,GAAN,MAAMgW,CAA+B,CACnC,OAAO,UAAUvU,EAAO,CACtB,IAAIC,EAAI,IAAIsU,EACZ,OAAAtU,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACtBA,EAAM,UACRC,EAAE,QAAUD,EAAM,QAAQ,IAAIxB,GAA2D,SAAS,GAE7FyB,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAME,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,QAAY,KAAe,KAAK,UAAY,OAC1DA,EAAS,QAAa,cAAe,KAAK,QAAU,KAAK,QAAQ,UAAU,EAAI,KAAK,SAE/EA,CACT,CACF,EACM5B,GAAN,MAAMgW,CAA2D,CAC/D,OAAO,UAAUxU,EAAO,CACtB,IAAIC,EAAI,IAAIuU,EACZ,OAAAvU,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACtBA,EAAM,iBACRC,EAAE,eAAiBzU,GAAe,UAAUwU,EAAM,cAAc,GAE3DC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAME,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,cAAkB,MAChCA,EAAS,cAAmB,KAAK,eAE/B,OAAO,KAAK,IAAQ,MACtBA,EAAS,IAAS,KAAK,KAErB,OAAO,KAAK,eAAmB,KAAe,KAAK,iBAAmB,OACxEA,EAAS,eAAoB,cAAe,KAAK,eAAiB,KAAK,eAAe,UAAU,EAAI,KAAK,gBAEpGA,CACT,CACF,EAyGM3B,GAAN,MAAMgW,CAAmC,CACvC,OAAO,UAAUzU,EAAO,CACtB,IAAIC,EAAI,IAAIwU,EACZ,OAAAxU,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACtBA,EAAM,WACRC,EAAE,SAAWxY,GAAkBK,EAAiBkY,EAAM,QAAQ,GAEzDC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAME,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,WAAe,MAC7BA,EAAS,WAAgB,KAAK,YAE5B,OAAO,KAAK,IAAQ,MACtBA,EAAS,IAAS,KAAK,KAErB,OAAO,KAAK,SAAa,MAC3BA,EAAS,SAAc,KAAK,UAEvBA,CACT,CACF,EACM1B,GAAN,MAAMgW,CAA2C,CAC/C,OAAO,UAAU1U,EAAO,CACtB,IAAIC,EAAI,IAAIyU,EACZ,OAAAzU,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACtBA,EAAM,mBACRC,EAAE,iBAAmB,SAASD,EAAM,iBAAkB,EAAE,GAEtDA,EAAM,2BACRC,EAAE,yBAA2B,IAAI,KAAKD,EAAM,wBAAwB,GAElEA,EAAM,yBACRC,EAAE,uBAAyB,IAAI,KAAKD,EAAM,sBAAsB,GAE3DC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAME,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,WAAe,MAC7BA,EAAS,WAAgB,KAAK,YAE5B,OAAO,KAAK,IAAQ,MACtBA,EAAS,IAAS,KAAK,KAErB,OAAO,KAAK,iBAAqB,MACnCA,EAAS,iBAAsB,KAAK,kBAElC,OAAO,KAAK,yBAA6B,KAAe,KAAK,2BAA6B,OAC5FA,EAAS,yBAA8B,cAAe,KAAK,yBAA2B,KAAK,yBAAyB,UAAU,EAAI,KAAK,0BAErI,OAAO,KAAK,uBAA2B,KAAe,KAAK,yBAA2B,OACxFA,EAAS,uBAA4B,cAAe,KAAK,uBAAyB,KAAK,uBAAuB,UAAU,EAAI,KAAK,wBAE5HA,CACT,CACF,EACMzB,GAAN,MAAMgW,CAAmC,CACvC,OAAO,UAAU3U,EAAO,CACtB,IAAIC,EAAI,IAAI0U,EACZ,OAAA1U,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACnBC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CAEV,MADiB,CAAC,CAEpB,CACF,EACMtB,GAAN,MAAMgW,CAA2B,CAC/B,OAAO,UAAU5U,EAAO,CACtB,IAAIC,EAAI,IAAI2U,EACZ,OAAA3U,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACtBA,EAAM,YACRC,EAAE,UAAYxY,GAAkBC,EAAWsY,EAAM,SAAS,GAExDA,EAAM,UACRC,EAAE,QAAU,OAAO,KAAKD,EAAM,OAAO,EAAE,OAAO,CAAC2D,EAAKC,KAClDD,EAAIC,CAAC,EAAIzY,GAA0B,UAAU6U,EAAM,QAAQ4D,CAAC,CAAC,EACtDD,GACN,CAAC,CAAC,GAEA1D,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAME,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,WAAe,MAC7BA,EAAS,WAAgB,KAAK,YAE5B,OAAO,KAAK,IAAQ,MACtBA,EAAS,IAAS,KAAK,KAErB,OAAO,KAAK,UAAc,MAC5BA,EAAS,UAAe,KAAK,WAE3B,OAAO,KAAK,QAAY,KAAe,KAAK,UAAY,OAC1DA,EAAS,QAAa,cAAe,KAAK,QAAU,KAAK,QAAQ,UAAU,EAAI,KAAK,SAElF,OAAO,KAAK,QAAY,MAC1BA,EAAS,QAAa,KAAK,SAEzB,OAAO,KAAK,WAAe,MAC7BA,EAAS,WAAgB,KAAK,YAE5B,OAAO,KAAK,eAAmB,MACjCA,EAAS,eAAoB,KAAK,gBAE7BA,CACT,CACF,EASMvB,IAAe,OAAS,OAAO,YAAiB,SAAW,OAC3DC,GAAU,CACd,MAAS,iCACT,KAAQ,GACR,KAAQ,6BACR,KAAQ,6BACR,WAAc,4BAChB,EACIC,GAA4B,IAAM,CACpC,IAAM8V,EAAN,MAAMA,CAAY,CAChB,IAAI,MAAO,CACT,OAAO/V,GAAQD,GAAY,YAAY,CAAC,CAC1C,CACA,IAAI,gBAAiB,CACnB,MAAO,WAAa,KAAK,IAC3B,CAaF,EAXIgW,EAAK,UAAO,SAA6BC,EAAG,CAC1C,OAAO,IAAKA,GAAKD,EACnB,EAGAA,EAAK,WAA0BE,EAAmB,CAChD,MAAOF,EACP,QAASA,EAAY,UACrB,WAAY,MACd,CAAC,EAjBL,IAAM9V,EAAN8V,EAoBA,OAAO9V,CACT,GAAG,EA2DCC,IAAkC,IAAM,CAC1C,IAAMgW,EAAN,MAAMA,CAAkB,CACtB,YAAYC,EAAMC,EAAa,CAC7B,KAAK,KAAOD,EACZ,KAAK,YAAcC,EACnB,KAAK,MAAQ,KAAK,YAAY,cAChC,CACA,YAAa,CACX,MAAO,CACL,QAAS,IAAIC,EAAY,CACvB,eAAgB,kBAClB,CAAC,EACD,gBAAiB,EACnB,CACF,CACA,YAAYC,EAAG,CACb,IAAMC,EAAUD,EAAE,UAAYA,EAAI,IAAItpB,GAAmBspB,CAAC,EAC1D,OAAO,KAAK,KAAK,KAAK,KAAK,MAAQ,kCAAmCC,EAAQ,UAAU,EAAGC,EAAAC,EAAA,GACtF,KAAK,WAAW,GADsE,CAEzF,QAAS,UACX,EAAC,CACH,CACA,uBAAuBH,EAAG,CACxB,IAAMC,EAAUD,EAAE,UAAYA,EAAI,IAAIjmB,GAA8BimB,CAAC,EACrE,OAAO,KAAK,KAAK,KAAK,KAAK,MAAQ,6CAA8CC,EAAQ,UAAU,EAAG,KAAK,WAAW,CAAC,EAAE,KAAKG,EAAIC,GAAQrmB,GAA+B,UAAUqmB,CAAI,CAAC,CAAC,CAC3L,CACA,mBAAmBL,EAAG,CACpB,IAAMC,EAAUD,EAAE,UAAYA,EAAI,IAAI5lB,GAA0B4lB,CAAC,EACjE,OAAO,KAAK,KAAK,KAAK,KAAK,MAAQ,yCAA0CC,EAAQ,UAAU,EAAG,KAAK,WAAW,CAAC,EAAE,KAAKG,EAAIC,GAAQhmB,GAA2B,UAAUgmB,CAAI,CAAC,CAAC,CACnL,CACA,oBAAoBL,EAAG,CACrB,IAAMC,EAAUD,EAAE,UAAYA,EAAI,IAAI1lB,GAA2B0lB,CAAC,EAClE,OAAO,KAAK,KAAK,KAAK,KAAK,MAAQ,0CAA2CC,EAAQ,UAAU,EAAG,KAAK,WAAW,CAAC,EAAE,KAAKG,EAAIC,GAAQ9lB,GAA4B,UAAU8lB,CAAI,CAAC,CAAC,CACrL,CACA,oBAAoBL,EAAG,CACrB,IAAMC,EAAUD,EAAE,UAAYA,EAAI,IAAIxlB,GAA2BwlB,CAAC,EAClE,OAAO,KAAK,KAAK,KAAK,KAAK,MAAQ,0CAA2CC,EAAQ,UAAU,EAAGC,EAAAC,EAAA,GAC9F,KAAK,WAAW,GAD8E,CAEjG,QAAS,UACX,EAAC,CACH,CACA,gBAAgBH,EAAG,CACjB,IAAMC,EAAUD,EAAE,UAAYA,EAAI,IAAIvlB,GAAuBulB,CAAC,EAC9D,OAAO,KAAK,KAAK,KAAK,KAAK,MAAQ,sCAAuCC,EAAQ,UAAU,EAAGC,EAAAC,EAAA,GAC1F,KAAK,WAAW,GAD0E,CAE7F,QAAS,UACX,EAAC,CACH,CACA,gBAAgBH,EAAG,CACjB,IAAMC,EAAUD,EAAE,UAAYA,EAAI,IAAItlB,GAAuBslB,CAAC,EAC9D,OAAO,KAAK,KAAK,KAAK,KAAK,MAAQ,sCAAuCC,EAAQ,UAAU,EAAGC,EAAAC,EAAA,GAC1F,KAAK,WAAW,GAD0E,CAE7F,QAAS,UACX,EAAC,CACH,CACA,SAASH,EAAG,CACV,IAAMC,EAAUD,EAAE,UAAYA,EAAI,IAAI1pB,GAAgB0pB,CAAC,EACvD,OAAO,KAAK,KAAK,KAAK,KAAK,MAAQ,+BAAgCC,EAAQ,UAAU,EAAGC,EAAAC,EAAA,GACnF,KAAK,WAAW,GADmE,CAEtF,QAAS,UACX,EAAC,CACH,CACA,kBAAkBH,EAAG,CACnB,IAAMC,EAAUD,EAAE,UAAYA,EAAI,IAAIzpB,GAAyBypB,CAAC,EAChE,OAAO,KAAK,KAAK,KAAK,KAAK,MAAQ,wCAAyCC,EAAQ,UAAU,EAAG,KAAK,WAAW,CAAC,EAAE,KAAKG,EAAIC,GAAQ7pB,GAA0B,UAAU6pB,CAAI,CAAC,CAAC,CACjL,CACA,gBAAgBL,EAAG,CACjB,IAAMC,EAAUD,EAAE,UAAYA,EAAI,IAAI9oB,GAAuB8oB,CAAC,EAC9D,OAAO,KAAK,KAAK,KAAK,KAAK,MAAQ,sCAAuCC,EAAQ,UAAU,EAAG,KAAK,WAAW,CAAC,EAAE,KAAKG,EAAIC,GAAQlpB,GAAwB,UAAUkpB,CAAI,CAAC,CAAC,CAC7K,CACA,sBAAsBL,EAAG,CACvB,IAAMC,EAAUD,EAAE,UAAYA,EAAI,IAAI5oB,GAA6B4oB,CAAC,EACpE,OAAO,KAAK,KAAK,KAAK,KAAK,MAAQ,4CAA6CC,EAAQ,UAAU,EAAG,KAAK,WAAW,CAAC,EAAE,KAAKG,EAAIC,GAAQhpB,GAA8B,UAAUgpB,CAAI,CAAC,CAAC,CACzL,CACA,kBAAkBL,EAAG,CACnB,IAAMC,EAAUD,EAAE,UAAYA,EAAI,IAAItoB,GAAyBsoB,CAAC,EAChE,OAAO,KAAK,KAAK,KAAK,KAAK,MAAQ,wCAAyCC,EAAQ,UAAU,EAAG,KAAK,WAAW,CAAC,EAAE,KAAKG,EAAIC,GAAQ1oB,GAA0B,UAAU0oB,CAAI,CAAC,CAAC,CACjL,CACA,oBAAoBL,EAAG,CACrB,IAAMC,EAAUD,EAAE,UAAYA,EAAI,IAAIjpB,GAA2BipB,CAAC,EAClE,OAAO,KAAK,KAAK,KAAK,KAAK,MAAQ,0CAA2CC,EAAQ,UAAU,EAAG,KAAK,WAAW,CAAC,EAAE,KAAKG,EAAIC,GAAQnrB,GAAe,UAAUmrB,CAAI,CAAC,CAAC,CACxK,CACA,wBAAwBL,EAAG,CACzB,IAAMC,EAAUD,EAAE,UAAYA,EAAI,IAAItoB,GAAyBsoB,CAAC,EAChE,OAAO,KAAK,KAAK,KAAK,KAAK,MAAQ,8CAA+CC,EAAQ,UAAU,EAAG,KAAK,WAAW,CAAC,EAAE,KAAKG,EAAIC,GAAQ1oB,GAA0B,UAAU0oB,CAAI,CAAC,CAAC,CACvL,CACA,kBAAkBL,EAAG,CACnB,IAAMC,EAAUD,EAAE,UAAYA,EAAI,IAAIxoB,GAAyBwoB,CAAC,EAChE,OAAO,KAAK,KAAK,KAAK,KAAK,MAAQ,wCAAyCC,EAAQ,UAAU,EAAG,KAAK,WAAW,CAAC,EAAE,KAAKG,EAAIC,GAAQ5oB,GAA0B,UAAU4oB,CAAI,CAAC,CAAC,CACjL,CACA,mBAAmBL,EAAG,CACpB,IAAMC,EAAUD,EAAE,UAAYA,EAAI,IAAIlpB,GAA0BkpB,CAAC,EACjE,OAAO,KAAK,KAAK,KAAK,KAAK,MAAQ,yCAA0CC,EAAQ,UAAU,EAAGC,EAAAC,EAAA,GAC7F,KAAK,WAAW,GAD6E,CAEhG,QAAS,UACX,EAAC,CACH,CACA,qBAAqBH,EAAG,CACtB,IAAMC,EAAUD,EAAE,UAAYA,EAAI,IAAIloB,GAA4BkoB,CAAC,EACnE,OAAO,KAAK,KAAK,KAAK,KAAK,MAAQ,2CAA4CC,EAAQ,UAAU,EAAGC,EAAAC,EAAA,GAC/F,KAAK,WAAW,GAD+E,CAElG,QAAS,UACX,EAAC,CACH,CACA,mBAAmBH,EAAG,CACpB,IAAMC,EAAUD,EAAE,UAAYA,EAAI,IAAInpB,GAA0BmpB,CAAC,EACjE,OAAO,KAAK,KAAK,KAAK,KAAK,MAAQ,yCAA0CC,EAAQ,UAAU,EAAGC,EAAAC,EAAA,GAC7F,KAAK,WAAW,GAD6E,CAEhG,QAAS,UACX,EAAC,CACH,CACA,2BAA2BH,EAAG,CAC5B,IAAMC,EAAUD,EAAE,UAAYA,EAAI,IAAI1e,GAAkC0e,CAAC,EACzE,OAAO,KAAK,KAAK,KAAK,KAAK,MAAQ,iDAAkDC,EAAQ,UAAU,EAAG,KAAK,WAAW,CAAC,EAAE,KAAKG,EAAIC,GAAQ9e,GAAmC,UAAU8e,CAAI,CAAC,CAAC,CACnM,CACA,qBAAqBL,EAAG,CACtB,IAAMC,EAAUD,EAAE,UAAYA,EAAI,IAAIxmB,GAA4BwmB,CAAC,EACnE,OAAO,KAAK,KAAK,KAAK,KAAK,MAAQ,2CAA4CC,EAAQ,UAAU,EAAG,KAAK,WAAW,CAAC,EAAE,KAAKG,EAAIC,GAAQ5mB,GAA6B,UAAU4mB,CAAI,CAAC,CAAC,CACvL,CACA,yBAAyBL,EAAG,CAC1B,IAAMC,EAAUD,EAAE,UAAYA,EAAI,IAAI1mB,GAAgC0mB,CAAC,EACvE,OAAO,KAAK,KAAK,KAAK,KAAK,MAAQ,+CAAgDC,EAAQ,UAAU,EAAG,KAAK,WAAW,CAAC,EAAE,KAAKG,EAAIC,GAAQ9mB,GAAiC,UAAU8mB,CAAI,CAAC,CAAC,CAC/L,CACA,yBAAyBL,EAAG,CAC1B,IAAMC,EAAUD,EAAE,UAAYA,EAAI,IAAIjY,GAAgCiY,CAAC,EACvE,OAAO,KAAK,KAAK,KAAK,KAAK,MAAQ,+CAAgDC,EAAQ,UAAU,EAAG,KAAK,WAAW,CAAC,EAAE,KAAKG,EAAIC,GAAQrY,GAAiC,UAAUqY,CAAI,CAAC,CAAC,CAC/L,CACA,kBAAkBL,EAAG,CACnB,IAAMC,EAAUD,EAAE,UAAYA,EAAI,IAAItqB,GAAyBsqB,CAAC,EAChE,OAAO,KAAK,KAAK,KAAK,KAAK,MAAQ,wCAAyCC,EAAQ,UAAU,EAAG,KAAK,WAAW,CAAC,EAAE,KAAKG,EAAIC,GAAQ1qB,GAA0B,UAAU0qB,CAAI,CAAC,CAAC,CACjL,CACA,kBAAkBL,EAAG,CACnB,IAAMC,EAAUD,EAAE,UAAYA,EAAI,IAAI/pB,GAAyB+pB,CAAC,EAChE,OAAO,KAAK,KAAK,KAAK,KAAK,MAAQ,wCAAyCC,EAAQ,UAAU,EAAG,KAAK,WAAW,CAAC,EAAE,KAAKG,EAAIC,GAAQnqB,GAA0B,UAAUmqB,CAAI,CAAC,CAAC,CACjL,CACA,oBAAoBL,EAAG,CACrB,IAAMC,EAAUD,EAAE,UAAYA,EAAI,IAAIpqB,GAA2BoqB,CAAC,EAClE,OAAO,KAAK,KAAK,KAAK,KAAK,MAAQ,0CAA2CC,EAAQ,UAAU,EAAG,KAAK,WAAW,CAAC,EAAE,KAAKG,EAAIC,GAAQxqB,GAA4B,UAAUwqB,CAAI,CAAC,CAAC,CACrL,CACA,yBAAyBL,EAAG,CAC1B,IAAMC,EAAUD,EAAE,UAAYA,EAAI,IAAI7a,GAAgC6a,CAAC,EACvE,OAAO,KAAK,KAAK,KAAK,KAAK,MAAQ,+CAAgDC,EAAQ,UAAU,EAAG,KAAK,WAAW,CAAC,EAAE,KAAKG,EAAIC,GAAQjb,GAAiC,UAAUib,CAAI,CAAC,CAAC,CAC/L,CACA,yBAAyBL,EAAG,CAC1B,IAAMC,EAAUD,EAAE,UAAYA,EAAI,IAAIla,GAAgCka,CAAC,EACvE,OAAO,KAAK,KAAK,KAAK,KAAK,MAAQ,+CAAgDC,EAAQ,UAAU,EAAG,KAAK,WAAW,CAAC,EAAE,KAAKG,EAAIC,GAAQta,GAAiC,UAAUsa,CAAI,CAAC,CAAC,CAC/L,CACA,yBAAyBL,EAAG,CAC1B,IAAMC,EAAUD,EAAE,UAAYA,EAAI,IAAI3a,GAAgC2a,CAAC,EACvE,OAAO,KAAK,KAAK,KAAK,KAAK,MAAQ,+CAAgDC,EAAQ,UAAU,EAAGC,EAAAC,EAAA,GACnG,KAAK,WAAW,GADmF,CAEtG,QAAS,UACX,EAAC,CACH,CACA,wBAAwBH,EAAG,CACzB,IAAMC,EAAUD,EAAE,UAAYA,EAAI,IAAIra,GAA+Bqa,CAAC,EACtE,OAAO,KAAK,KAAK,KAAK,KAAK,MAAQ,8CAA+CC,EAAQ,UAAU,EAAG,KAAK,WAAW,CAAC,EAAE,KAAKG,EAAIC,GAAQza,GAAgC,UAAUya,CAAI,CAAC,CAAC,CAC7L,CACA,sBAAsBL,EAAG,CACvB,IAAMC,EAAUD,EAAE,UAAYA,EAAI,IAAIxa,GAA6Bwa,CAAC,EACpE,OAAO,KAAK,KAAK,KAAK,KAAK,MAAQ,4CAA6CC,EAAQ,UAAU,EAAG,KAAK,WAAW,CAAC,EAAE,KAAKG,EAAIC,GAAQ5a,GAA8B,UAAU4a,CAAI,CAAC,CAAC,CACzL,CACA,2BAA2BL,EAAG,CAC5B,IAAMC,EAAUD,EAAE,UAAYA,EAAI,IAAI1a,GAAkC0a,CAAC,EACzE,OAAO,KAAK,KAAK,KAAK,KAAK,MAAQ,iDAAkDC,EAAQ,UAAU,EAAG,KAAK,WAAW,CAAC,EAAE,KAAKG,EAAIC,GAAQ9a,GAAmC,UAAU8a,CAAI,CAAC,CAAC,CACnM,CACA,uBAAuBL,EAAG,CACxB,IAAMC,EAAUD,EAAE,UAAYA,EAAI,IAAI3X,GAA8B2X,CAAC,EACrE,OAAO,KAAK,KAAK,KAAK,KAAK,MAAQ,6CAA8CC,EAAQ,UAAU,EAAG,KAAK,WAAW,CAAC,EAAE,KAAKG,EAAIC,GAAQ/X,GAA+B,UAAU+X,CAAI,CAAC,CAAC,CAC3L,CACA,mBAAmBL,EAAG,CACpB,IAAMC,EAAUD,EAAE,UAAYA,EAAI,IAAIre,GAA0Bqe,CAAC,EACjE,OAAO,KAAK,KAAK,KAAK,KAAK,MAAQ,yCAA0CC,EAAQ,UAAU,EAAGC,EAAAC,EAAA,GAC7F,KAAK,WAAW,GAD6E,CAEhG,QAAS,UACX,EAAC,CACH,CACA,uBAAuBH,EAAG,CACxB,IAAMC,EAAUD,EAAE,UAAYA,EAAI,IAAIve,GAA8Bue,CAAC,EACrE,OAAO,KAAK,KAAK,KAAK,KAAK,MAAQ,6CAA8CC,EAAQ,UAAU,EAAGC,EAAAC,EAAA,GACjG,KAAK,WAAW,GADiF,CAEpG,QAAS,UACX,EAAC,CACH,CACA,YAAYH,EAAG,CACb,IAAMC,EAAUD,EAAE,UAAYA,EAAI,IAAIrpB,GAAmBqpB,CAAC,EAC1D,OAAO,KAAK,KAAK,KAAK,KAAK,MAAQ,kCAAmCC,EAAQ,UAAU,EAAGC,EAAAC,EAAA,GACtF,KAAK,WAAW,GADsE,CAEzF,QAAS,UACX,EAAC,CACH,CACA,cAAcH,EAAG,CACf,IAAMC,EAAUD,EAAE,UAAYA,EAAI,IAAIvnB,GAAqBunB,CAAC,EAC5D,OAAO,KAAK,KAAK,KAAK,KAAK,MAAQ,oCAAqCC,EAAQ,UAAU,EAAG,KAAK,WAAW,CAAC,EAAE,KAAKG,EAAIC,GAAQ3nB,GAAsB,UAAU2nB,CAAI,CAAC,CAAC,CACzK,CACA,iBAAiBL,EAAG,CAClB,IAAMC,EAAUD,EAAE,UAAYA,EAAI,IAAIznB,GAAyBynB,CAAC,EAChE,OAAO,KAAK,KAAK,KAAK,KAAK,MAAQ,uCAAwCC,EAAQ,UAAU,EAAG,KAAK,WAAW,CAAC,EAAE,KAAKG,EAAIC,GAAQ7nB,GAA0B,UAAU6nB,CAAI,CAAC,CAAC,CAChL,CACA,6BAA6BL,EAAG,CAC9B,IAAMC,EAAUD,EAAE,UAAYA,EAAI,IAAI3nB,GAAoC2nB,CAAC,EAC3E,OAAO,KAAK,KAAK,KAAK,KAAK,MAAQ,mDAAoDC,EAAQ,UAAU,EAAG,KAAK,WAAW,CAAC,EAAE,KAAKG,EAAIC,GAAQ/nB,GAAqC,UAAU+nB,CAAI,CAAC,CAAC,CACvM,CACA,aAAaL,EAAG,CACd,IAAMC,EAAUD,EAAE,UAAYA,EAAI,IAAI5Z,GAAoB4Z,CAAC,EAC3D,OAAO,KAAK,KAAK,KAAK,KAAK,MAAQ,mCAAoCC,EAAQ,UAAU,EAAG,KAAK,WAAW,CAAC,EAAE,KAAKG,EAAIC,GAAQha,GAAqB,UAAUga,CAAI,CAAC,CAAC,CACvK,CACA,gBAAgBL,EAAG,CACjB,IAAMC,EAAUD,EAAE,UAAYA,EAAI,IAAI/Z,GAAuB+Z,CAAC,EAC9D,OAAO,KAAK,KAAK,KAAK,KAAK,MAAQ,sCAAuCC,EAAQ,UAAU,EAAG,KAAK,WAAW,CAAC,EAAE,KAAKG,EAAIC,GAAQna,GAAwB,UAAUma,CAAI,CAAC,CAAC,CAC7K,CACA,qBAAqBL,EAAG,CACtB,IAAMC,EAAUD,EAAE,UAAYA,EAAI,IAAIrnB,GAA4BqnB,CAAC,EACnE,OAAO,KAAK,KAAK,KAAK,KAAK,MAAQ,2CAA4CC,EAAQ,UAAU,EAAGC,EAAAC,EAAA,GAC/F,KAAK,WAAW,GAD+E,CAElG,QAAS,UACX,EAAC,CACH,CACA,gBAAgBH,EAAG,CACjB,IAAMC,EAAUD,EAAE,UAAYA,EAAI,IAAIrX,GAAuBqX,CAAC,EAC9D,OAAO,KAAK,KAAK,KAAK,KAAK,MAAQ,sCAAuCC,EAAQ,UAAU,EAAG,KAAK,WAAW,CAAC,EAAE,KAAKG,EAAIC,GAAQzX,GAAwB,UAAUyX,CAAI,CAAC,CAAC,CAC7K,CACA,gBAAgBL,EAAG,CACjB,IAAMC,EAAUD,EAAE,UAAYA,EAAI,IAAI9lB,GAAuB8lB,CAAC,EAC9D,OAAO,KAAK,KAAK,KAAK,KAAK,MAAQ,sCAAuCC,EAAQ,UAAU,EAAGC,EAAAC,EAAA,GAC1F,KAAK,WAAW,GAD0E,CAE7F,QAAS,UACX,EAAC,CACH,CACA,kBAAkBH,EAAG,CACnB,IAAMC,EAAUD,EAAE,UAAYA,EAAI,IAAI7lB,GAAyB6lB,CAAC,EAChE,OAAO,KAAK,KAAK,KAAK,KAAK,MAAQ,wCAAyCC,EAAQ,UAAU,EAAGC,EAAAC,EAAA,GAC5F,KAAK,WAAW,GAD4E,CAE/F,QAAS,UACX,EAAC,CACH,CACA,sBAAsBH,EAAG,CACvB,IAAMC,EAAUD,EAAE,UAAYA,EAAI,IAAI/lB,GAA6B+lB,CAAC,EACpE,OAAO,KAAK,KAAK,KAAK,KAAK,MAAQ,4CAA6CC,EAAQ,UAAU,EAAGC,EAAAC,EAAA,GAChG,KAAK,WAAW,GADgF,CAEnG,QAAS,UACX,EAAC,CACH,CACA,4BAA4BH,EAAG,CAC7B,IAAMC,EAAUD,EAAE,UAAYA,EAAI,IAAIzW,GAAmCyW,CAAC,EAC1E,OAAO,KAAK,KAAK,KAAK,KAAK,MAAQ,kDAAmDC,EAAQ,UAAU,EAAGC,EAAAC,EAAA,GACtG,KAAK,WAAW,GADsF,CAEzG,QAAS,UACX,EAAC,CACH,CACA,2BAA2BH,EAAG,CAC5B,IAAMC,EAAUD,EAAE,UAAYA,EAAI,IAAIrY,GAAkCqY,CAAC,EACzE,OAAO,KAAK,KAAK,KAAK,KAAK,MAAQ,iDAAkDC,EAAQ,UAAU,EAAG,KAAK,WAAW,CAAC,EAAE,KAAKG,EAAIC,GAAQzY,GAAmC,UAAUyY,CAAI,CAAC,CAAC,CACnM,CACA,mBAAmBL,EAAG,CACpB,IAAMC,EAAUD,EAAE,UAAYA,EAAI,IAAIjoB,GAA0BioB,CAAC,EACjE,OAAO,KAAK,KAAK,KAAK,KAAK,MAAQ,yCAA0CC,EAAQ,UAAU,EAAG,KAAK,WAAW,CAAC,EAAE,KAAKG,EAAIC,GAAQroB,GAA2B,UAAUqoB,CAAI,CAAC,CAAC,CACnL,CAaF,EAXIT,EAAK,UAAO,SAAmCF,EAAG,CAChD,OAAO,IAAKA,GAAKE,GAAsBU,EAAYC,CAAU,EAAMD,EAAS3W,CAAW,CAAC,CAC1F,EAGAiW,EAAK,WAA0BD,EAAmB,CAChD,MAAOC,EACP,QAASA,EAAkB,UAC3B,WAAY,MACd,CAAC,EA3QL,IAAMhW,EAANgW,EA8QA,OAAOhW,CACT,GAAG,EAmOCC,IAAmC,IAAM,CAC3C,IAAM2W,EAAN,MAAMA,CAAmB,CACvB,YAAYX,EAAMC,EAAa,CAC7B,KAAK,KAAOD,EACZ,KAAK,YAAcC,EACnB,KAAK,MAAQ,KAAK,YAAY,cAChC,CACA,YAAa,CACX,MAAO,CACL,QAAS,IAAIC,EAAY,CACvB,eAAgB,kBAClB,CAAC,EACD,gBAAiB,EACnB,CACF,CACA,KAAKC,EAAG,CACN,IAAMC,EAAUD,EAAE,UAAYA,EAAI,IAAI7kB,GAAqB6kB,CAAC,EAC5D,OAAO,KAAK,KAAK,KAAK,KAAK,MAAQ,mCAAoCC,EAAQ,UAAU,EAAG,KAAK,WAAW,CAAC,EAAE,KAAKG,EAAIC,GAAQjlB,GAAsB,UAAUilB,CAAI,CAAC,CAAC,CACxK,CACA,OAAOL,EAAG,CACR,IAAMC,EAAUD,EAAE,UAAYA,EAAI,IAAIllB,GAAsBklB,CAAC,EAC7D,OAAO,KAAK,KAAK,KAAK,KAAK,MAAQ,qCAAsCC,EAAQ,UAAU,EAAG,KAAK,WAAW,CAAC,EAAE,KAAKG,EAAIC,GAAQtlB,GAAuB,UAAUslB,CAAI,CAAC,CAAC,CAC3K,CACA,OAAOL,EAAG,CACR,IAAMC,EAAUD,EAAE,UAAYA,EAAI,IAAI3kB,GAAsB2kB,CAAC,EAC7D,OAAO,KAAK,KAAK,KAAK,KAAK,MAAQ,qCAAsCC,EAAQ,UAAU,EAAGC,EAAAC,EAAA,GACzF,KAAK,WAAW,GADyE,CAE5F,QAAS,UACX,EAAC,CACH,CACA,OAAOH,EAAG,CACR,IAAMC,EAAUD,EAAE,UAAYA,EAAI,IAAI/kB,GAAsB+kB,CAAC,EAC7D,OAAO,KAAK,KAAK,KAAK,KAAK,MAAQ,qCAAsCC,EAAQ,UAAU,EAAGC,EAAAC,EAAA,GACzF,KAAK,WAAW,GADyE,CAE5F,QAAS,UACX,EAAC,CACH,CAaF,EAXIK,EAAK,UAAO,SAAoCd,EAAG,CACjD,OAAO,IAAKA,GAAKc,GAAuBF,EAAYC,CAAU,EAAMD,EAAS3W,CAAW,CAAC,CAC3F,EAGA6W,EAAK,WAA0Bb,EAAmB,CAChD,MAAOa,EACP,QAASA,EAAmB,UAC5B,WAAY,MACd,CAAC,EA9CL,IAAM3W,EAAN2W,EAiDA,OAAO3W,CACT,GAAG,EAWCC,IAAkC,IAAM,CAC1C,IAAM2W,EAAN,MAAMA,CAAkB,CACtB,YAAYZ,EAAMC,EAAa,CAC7B,KAAK,KAAOD,EACZ,KAAK,YAAcC,EACnB,KAAK,MAAQ,KAAK,YAAY,cAChC,CACA,YAAa,CACX,MAAO,CACL,QAAS,IAAIC,EAAY,CACvB,eAAgB,kBAClB,CAAC,EACD,gBAAiB,EACnB,CACF,CACA,UAAUC,EAAG,CACX,IAAMC,EAAUD,EAAE,UAAYA,EAAI,IAAIxjB,GAAiBwjB,CAAC,EACxD,OAAO,KAAK,KAAK,KAAK,KAAK,MAAQ,uCAAwCC,EAAQ,UAAU,EAAG,KAAK,WAAW,CAAC,EAAE,KAAKG,EAAIC,GAAQ5jB,GAAkB,UAAU4jB,CAAI,CAAC,CAAC,CACxK,CACA,YAAYL,EAAG,CACb,IAAMC,EAAUD,EAAE,UAAYA,EAAI,IAAItjB,GAAmBsjB,CAAC,EAC1D,OAAO,KAAK,KAAK,KAAK,KAAK,MAAQ,yCAA0CC,EAAQ,UAAU,EAAG,KAAK,WAAW,CAAC,EAAE,KAAKG,EAAIC,GAAQ1jB,GAAoB,UAAU0jB,CAAI,CAAC,CAAC,CAC5K,CACA,OAAOL,EAAG,CACR,IAAMC,EAAUD,EAAE,UAAYA,EAAI,IAAIpjB,GAAqBojB,CAAC,EAC5D,OAAO,KAAK,KAAK,KAAK,KAAK,MAAQ,oCAAqCC,EAAQ,UAAU,EAAGC,EAAAC,EAAA,GACxF,KAAK,WAAW,GADwE,CAE3F,QAAS,UACX,EAAC,CACH,CACA,OAAOH,EAAG,CACR,IAAMC,EAAUD,EAAE,UAAYA,EAAI,IAAInjB,GAAqBmjB,CAAC,EAC5D,OAAO,KAAK,KAAK,KAAK,KAAK,MAAQ,oCAAqCC,EAAQ,UAAU,EAAG,KAAK,WAAW,CAAC,EAAE,KAAKG,EAAIC,GAAQvjB,GAAsB,UAAUujB,CAAI,CAAC,CAAC,CACzK,CACA,OAAOL,EAAG,CACR,IAAMC,EAAUD,EAAE,UAAYA,EAAI,IAAI7iB,GAAqB6iB,CAAC,EAC5D,OAAO,KAAK,KAAK,KAAK,KAAK,MAAQ,oCAAqCC,EAAQ,UAAU,EAAGC,EAAAC,EAAA,GACxF,KAAK,WAAW,GADwE,CAE3F,QAAS,UACX,EAAC,CACH,CACA,eAAeH,EAAG,CAChB,IAAMC,EAAUD,EAAE,UAAYA,EAAI,IAAI5iB,GAAsB4iB,CAAC,EAC7D,OAAO,KAAK,KAAK,KAAK,KAAK,MAAQ,4CAA6CC,EAAQ,UAAU,EAAG,KAAK,WAAW,CAAC,EAAE,KAAKG,EAAIC,GAAQhjB,GAAuB,UAAUgjB,CAAI,CAAC,CAAC,CAClL,CACA,IAAIL,EAAG,CACL,IAAMC,EAAUD,EAAE,UAAYA,EAAI,IAAIviB,GAAkBuiB,CAAC,EACzD,OAAO,KAAK,KAAK,KAAK,KAAK,MAAQ,iCAAkCC,EAAQ,UAAU,EAAG,KAAK,WAAW,CAAC,EAAE,KAAKG,EAAIC,GAAQ3iB,GAAmB,UAAU2iB,CAAI,CAAC,CAAC,CACnK,CACA,aAAaL,EAAG,CACd,IAAMC,EAAUD,EAAE,UAAYA,EAAI,IAAI5hB,GAAoB4hB,CAAC,EAC3D,OAAO,KAAK,KAAK,KAAK,KAAK,MAAQ,0CAA2CC,EAAQ,UAAU,EAAG,KAAK,WAAW,CAAC,EAAE,KAAKG,EAAIC,GAAQhiB,GAAqB,UAAUgiB,CAAI,CAAC,CAAC,CAC9K,CACA,KAAKL,EAAG,CACN,IAAMC,EAAUD,EAAE,UAAYA,EAAI,IAAI1hB,GAAmB0hB,CAAC,EAC1D,OAAO,KAAK,KAAK,KAAK,KAAK,MAAQ,kCAAmCC,EAAQ,UAAU,EAAGC,EAAAC,EAAA,GACtF,KAAK,WAAW,GADsE,CAEzF,QAAS,UACX,EAAC,CACH,CACA,KAAKH,EAAG,CACN,IAAMC,EAAUD,EAAE,UAAYA,EAAI,IAAIjiB,GAAoBiiB,CAAC,EAC3D,OAAO,KAAK,KAAK,KAAK,KAAK,MAAQ,kCAAmCC,EAAQ,UAAU,EAAG,KAAK,WAAW,CAAC,EAAE,KAAKG,EAAIC,GAAQriB,GAAqB,UAAUqiB,CAAI,CAAC,CAAC,CACtK,CACA,OAAOL,EAAG,CACR,IAAMC,EAAUD,EAAE,UAAYA,EAAI,IAAIrhB,GAAqBqhB,CAAC,EAC5D,OAAO,KAAK,KAAK,KAAK,KAAK,MAAQ,oCAAqCC,EAAQ,UAAU,EAAG,KAAK,WAAW,CAAC,EAAE,KAAKG,EAAIC,GAAQzhB,GAAsB,UAAUyhB,CAAI,CAAC,CAAC,CACzK,CACA,IAAIL,EAAG,CACL,IAAMC,EAAUD,EAAE,UAAYA,EAAI,IAAI9hB,GAAkB8hB,CAAC,EACzD,OAAO,KAAK,KAAK,KAAK,KAAK,MAAQ,iCAAkCC,EAAQ,UAAU,EAAGC,EAAAC,EAAA,GACrF,KAAK,WAAW,GADqE,CAExF,QAAS,UACX,EAAC,CACH,CACA,sBAAsBH,EAAG,CACvB,IAAMC,EAAUD,EAAE,UAAYA,EAAI,IAAIvhB,GAA6BuhB,CAAC,EACpE,OAAO,KAAK,KAAK,KAAK,KAAK,MAAQ,mDAAoDC,EAAQ,UAAU,EAAG,KAAK,WAAW,CAAC,EAAE,KAAKG,EAAIC,GAAQ3hB,GAA8B,UAAU2hB,CAAI,CAAC,CAAC,CAChM,CACA,eAAeL,EAAG,CAChB,IAAMC,EAAUD,EAAE,UAAYA,EAAI,IAAInhB,GAAsBmhB,CAAC,EAC7D,OAAO,KAAK,KAAK,KAAK,KAAK,MAAQ,4CAA6CC,EAAQ,UAAU,EAAG,KAAK,WAAW,CAAC,EAAE,KAAKG,EAAIC,GAAQvhB,GAAuB,UAAUuhB,CAAI,CAAC,CAAC,CAClL,CACA,KAAKL,EAAG,CACN,IAAMC,EAAUD,EAAE,UAAYA,EAAI,IAAIjhB,GAAmBihB,CAAC,EAC1D,OAAO,KAAK,KAAK,KAAK,KAAK,MAAQ,kCAAmCC,EAAQ,UAAU,EAAGC,EAAAC,EAAA,GACtF,KAAK,WAAW,GADsE,CAEzF,QAAS,UACX,EAAC,CACH,CACA,UAAUH,EAAG,CACX,IAAMC,EAAUD,EAAE,UAAYA,EAAI,IAAI1iB,GAAwB0iB,CAAC,EAC/D,OAAO,KAAK,KAAK,KAAK,KAAK,MAAQ,uCAAwCC,EAAQ,UAAU,EAAG,KAAK,WAAW,CAAC,EAAE,KAAKG,EAAIC,GAAQ9iB,GAAyB,UAAU8iB,CAAI,CAAC,CAAC,CAC/K,CACA,aAAaL,EAAG,CACd,IAAMC,EAAUD,EAAE,UAAYA,EAAI,IAAIzhB,GAAoByhB,CAAC,EAC3D,OAAO,KAAK,KAAK,KAAK,KAAK,MAAQ,0CAA2CC,EAAQ,UAAU,EAAG,KAAK,WAAW,CAAC,EAAE,KAAKG,EAAIC,GAAQ7hB,GAAqB,UAAU6hB,CAAI,CAAC,CAAC,CAC9K,CACA,kBAAkBL,EAAG,CACnB,IAAMC,EAAUD,EAAE,UAAYA,EAAI,IAAIjjB,GAAyBijB,CAAC,EAChE,OAAO,KAAK,KAAK,KAAK,KAAK,MAAQ,+CAAgDC,EAAQ,UAAU,EAAG,KAAK,WAAW,CAAC,EAAE,KAAKG,EAAIC,GAAQrjB,GAA0B,UAAUqjB,CAAI,CAAC,CAAC,CACxL,CACA,0BAA0BL,EAAG,CAC3B,IAAMC,EAAUD,EAAE,UAAYA,EAAI,IAAIriB,GAAiCqiB,CAAC,EACxE,OAAO,KAAK,KAAK,KAAK,KAAK,MAAQ,uDAAwDC,EAAQ,UAAU,EAAG,KAAK,WAAW,CAAC,EAAE,KAAKG,EAAIC,GAAQziB,GAAkC,UAAUyiB,CAAI,CAAC,CAAC,CACxM,CAaF,EAXII,EAAK,UAAO,SAAmCf,EAAG,CAChD,OAAO,IAAKA,GAAKe,GAAsBH,EAAYC,CAAU,EAAMD,EAAS3W,CAAW,CAAC,CAC1F,EAGA8W,EAAK,WAA0Bd,EAAmB,CAChD,MAAOc,EACP,QAASA,EAAkB,UAC3B,WAAY,MACd,CAAC,EAnHL,IAAM3W,EAAN2W,EAsHA,OAAO3W,CACT,GAAG,EAWCC,IAAmC,IAAM,CAC3C,IAAM2W,EAAN,MAAMA,CAAmB,CACvB,YAAYb,EAAMC,EAAa,CAC7B,KAAK,KAAOD,EACZ,KAAK,YAAcC,EACnB,KAAK,MAAQ,KAAK,YAAY,cAChC,CACA,YAAa,CACX,MAAO,CACL,QAAS,IAAIC,EAAY,CACvB,eAAgB,kBAClB,CAAC,EACD,gBAAiB,EACnB,CACF,CACA,OAAOC,EAAG,CACR,IAAMC,EAAUD,EAAE,UAAYA,EAAI,IAAI1gB,GAAsB0gB,CAAC,EAC7D,OAAO,KAAK,KAAK,KAAK,KAAK,MAAQ,qCAAsCC,EAAQ,UAAU,EAAGC,EAAAC,EAAA,GACzF,KAAK,WAAW,GADyE,CAE5F,QAAS,UACX,EAAC,CACH,CACA,IAAIH,EAAG,CACL,IAAMC,EAAUD,EAAE,UAAYA,EAAI,IAAIxgB,GAAmBwgB,CAAC,EAC1D,OAAO,KAAK,KAAK,KAAK,KAAK,MAAQ,kCAAmCC,EAAQ,UAAU,EAAG,KAAK,WAAW,CAAC,EAAE,KAAKG,EAAIC,GAAQ5gB,GAAoB,UAAU4gB,CAAI,CAAC,CAAC,CACrK,CACA,sBAAsBL,EAAG,CACvB,IAAMC,EAAUD,EAAE,UAAYA,EAAI,IAAIpgB,GAA6BogB,CAAC,EACpE,OAAO,KAAK,KAAK,KAAK,KAAK,MAAQ,oDAAqDC,EAAQ,UAAU,EAAG,KAAK,WAAW,CAAC,EAAE,KAAKG,EAAIC,GAAQxgB,GAA8B,UAAUwgB,CAAI,CAAC,CAAC,CACjM,CACA,OAAOL,EAAG,CACR,IAAMC,EAAUD,EAAE,UAAYA,EAAI,IAAI7e,GAAsB6e,CAAC,EAC7D,OAAO,KAAK,KAAK,KAAK,KAAK,MAAQ,qCAAsCC,EAAQ,UAAU,EAAGC,EAAAC,EAAA,GACzF,KAAK,WAAW,GADyE,CAE5F,QAAS,UACX,EAAC,CACH,CACA,kBAAkBH,EAAG,CACnB,IAAMC,EAAUD,EAAE,UAAYA,EAAI,IAAIpb,GAAyBob,CAAC,EAChE,OAAO,KAAK,KAAK,KAAK,KAAK,MAAQ,gDAAiDC,EAAQ,UAAU,EAAGC,EAAAC,EAAA,GACpG,KAAK,WAAW,GADoF,CAEvG,QAAS,UACX,EAAC,CACH,CACA,sBAAsBH,EAAG,CACvB,IAAMC,EAAUD,EAAE,UAAYA,EAAI,IAAIhf,GAA6Bgf,CAAC,EACpE,OAAO,KAAK,KAAK,KAAK,KAAK,MAAQ,oDAAqDC,EAAQ,UAAU,EAAGC,EAAAC,EAAA,GACxG,KAAK,WAAW,GADwF,CAE3G,QAAS,UACX,EAAC,CACH,CACA,iBAAiBH,EAAG,CAClB,IAAMC,EAAUD,EAAE,UAAYA,EAAI,IAAIlb,GAAwBkb,CAAC,EAC/D,OAAO,KAAK,KAAK,KAAK,KAAK,MAAQ,+CAAgDC,EAAQ,UAAU,EAAG,KAAK,WAAW,CAAC,EAAE,KAAKG,EAAIC,GAAQtb,GAAyB,UAAUsb,CAAI,CAAC,CAAC,CACvL,CACA,kBAAkBL,EAAG,CACnB,IAAMC,EAAUD,EAAE,UAAYA,EAAI,IAAI9a,GAAyB8a,CAAC,EAChE,OAAO,KAAK,KAAK,KAAK,KAAK,MAAQ,gDAAiDC,EAAQ,UAAU,EAAGC,EAAAC,EAAA,GACpG,KAAK,WAAW,GADoF,CAEvG,QAAS,UACX,EAAC,CACH,CACA,cAAcH,EAAG,CACf,IAAMC,EAAUD,EAAE,UAAYA,EAAI,IAAIjX,GAAqBiX,CAAC,EAC5D,OAAO,KAAK,KAAK,KAAK,KAAK,MAAQ,4CAA6CC,EAAQ,UAAU,EAAG,KAAK,WAAW,CAAC,EAAE,KAAKG,EAAIC,GAAQrX,GAAsB,UAAUqX,CAAI,CAAC,CAAC,CACjL,CACA,OAAOL,EAAG,CACR,IAAMC,EAAUD,EAAE,UAAYA,EAAI,IAAIpf,GAAuBof,CAAC,EAC9D,OAAO,KAAK,KAAK,KAAK,KAAK,MAAQ,qCAAsCC,EAAQ,UAAU,EAAG,KAAK,WAAW,CAAC,EAAE,KAAKG,EAAIC,GAAQxf,GAAwB,UAAUwf,CAAI,CAAC,CAAC,CAC5K,CACA,oBAAoBL,EAAG,CACrB,IAAMC,EAAUD,EAAE,UAAYA,EAAI,IAAIjf,GAA2Bif,CAAC,EAClE,OAAO,KAAK,KAAK,KAAK,KAAK,MAAQ,kDAAmDC,EAAQ,UAAU,EAAGC,EAAAC,EAAA,GACtG,KAAK,WAAW,GADsF,CAEzG,QAAS,UACX,EAAC,CACH,CACA,sBAAsBH,EAAG,CACvB,IAAMC,EAAUD,EAAE,UAAYA,EAAI,IAAIlf,GAA6Bkf,CAAC,EACpE,OAAO,KAAK,KAAK,KAAK,KAAK,MAAQ,oDAAqDC,EAAQ,UAAU,EAAGC,EAAAC,EAAA,GACxG,KAAK,WAAW,GADwF,CAE3G,QAAS,UACX,EAAC,CACH,CACA,6BAA6BH,EAAG,CAC9B,IAAMC,EAAUD,EAAE,UAAYA,EAAI,IAAI9e,GAAoC8e,CAAC,EAC3E,OAAO,KAAK,KAAK,KAAK,KAAK,MAAQ,2DAA4DC,EAAQ,UAAU,EAAGC,EAAAC,EAAA,GAC/G,KAAK,WAAW,GAD+F,CAElH,QAAS,UACX,EAAC,CACH,CACA,+BAA+BH,EAAG,CAChC,IAAMC,EAAUD,EAAE,UAAYA,EAAI,IAAI/e,GAAsC+e,CAAC,EAC7E,OAAO,KAAK,KAAK,KAAK,KAAK,MAAQ,6DAA8DC,EAAQ,UAAU,EAAGC,EAAAC,EAAA,GACjH,KAAK,WAAW,GADiG,CAEpH,QAAS,UACX,EAAC,CACH,CACA,sBAAsBH,EAAG,CACvB,IAAMC,EAAUD,EAAE,UAAYA,EAAI,IAAI1Y,GAA6B0Y,CAAC,EACpE,OAAO,KAAK,KAAK,KAAK,KAAK,MAAQ,oDAAqDC,EAAQ,UAAU,EAAGC,EAAAC,EAAA,GACxG,KAAK,WAAW,GADwF,CAE3G,QAAS,UACX,EAAC,CACH,CACA,mBAAmBH,EAAG,CACpB,IAAMC,EAAUD,EAAE,UAAYA,EAAI,IAAI3gB,GAA0B2gB,CAAC,EACjE,OAAO,KAAK,KAAK,KAAK,KAAK,MAAQ,iDAAkDC,EAAQ,UAAU,EAAGC,EAAAC,EAAA,GACrG,KAAK,WAAW,GADqF,CAExG,QAAS,UACX,EAAC,CACH,CACA,6BAA6BH,EAAG,CAC9B,IAAMC,EAAUD,EAAE,UAAYA,EAAI,IAAIzY,GAAoCyY,CAAC,EAC3E,OAAO,KAAK,KAAK,KAAK,KAAK,MAAQ,2DAA4DC,EAAQ,UAAU,EAAGC,EAAAC,EAAA,GAC/G,KAAK,WAAW,GAD+F,CAElH,QAAS,UACX,EAAC,CACH,CACA,4BAA4BH,EAAG,CAC7B,IAAMC,EAAUD,EAAE,UAAYA,EAAI,IAAIhnB,GAAmCgnB,CAAC,EAC1E,OAAO,KAAK,KAAK,KAAK,KAAK,MAAQ,0DAA2DC,EAAQ,UAAU,EAAGC,EAAAC,EAAA,GAC9G,KAAK,WAAW,GAD8F,CAEjH,QAAS,UACX,EAAC,CACH,CACA,iBAAiBH,EAAG,CAClB,IAAMC,EAAUD,EAAE,UAAYA,EAAI,IAAI9mB,GAAwB8mB,CAAC,EAC/D,OAAO,KAAK,KAAK,KAAK,KAAK,MAAQ,+CAAgDC,EAAQ,UAAU,EAAG,KAAK,WAAW,CAAC,EAAE,KAAKG,EAAIC,GAAQlnB,GAAyB,UAAUknB,CAAI,CAAC,CAAC,CACvL,CACA,sBAAsBL,EAAG,CACvB,IAAMC,EAAUD,EAAE,UAAYA,EAAI,IAAI5mB,GAA6B4mB,CAAC,EACpE,OAAO,KAAK,KAAK,KAAK,KAAK,MAAQ,oDAAqDC,EAAQ,UAAU,EAAGC,EAAAC,EAAA,GACxG,KAAK,WAAW,GADwF,CAE3G,QAAS,UACX,EAAC,CACH,CACA,kBAAkBH,EAAG,CACnB,IAAMC,EAAUD,EAAE,UAAYA,EAAI,IAAI/mB,GAAyB+mB,CAAC,EAChE,OAAO,KAAK,KAAK,KAAK,KAAK,MAAQ,gDAAiDC,EAAQ,UAAU,EAAGC,EAAAC,EAAA,GACpG,KAAK,WAAW,GADoF,CAEvG,QAAS,UACX,EAAC,CACH,CACA,6BAA6BH,EAAG,CAC9B,IAAMC,EAAUD,EAAE,UAAYA,EAAI,IAAItgB,GAAoCsgB,CAAC,EAC3E,OAAO,KAAK,KAAK,KAAK,KAAK,MAAQ,2DAA4DC,EAAQ,UAAU,EAAG,KAAK,WAAW,CAAC,EAAE,KAAKG,EAAIC,GAAQ1gB,GAAqC,UAAU0gB,CAAI,CAAC,CAAC,CAC/M,CACA,0BAA0BL,EAAG,CAC3B,IAAMC,EAAUD,EAAE,UAAYA,EAAI,IAAI3e,GAAiC2e,CAAC,EACxE,OAAO,KAAK,KAAK,KAAK,KAAK,MAAQ,wDAAyDC,EAAQ,UAAU,EAAGC,EAAAC,EAAA,GAC5G,KAAK,WAAW,GAD4F,CAE/G,QAAS,UACX,EAAC,CACH,CACA,yCAAyCH,EAAG,CAC1C,IAAMC,EAAUD,EAAE,UAAYA,EAAI,IAAI5e,GAAgD4e,CAAC,EACvF,OAAO,KAAK,KAAK,KAAK,KAAK,MAAQ,uEAAwEC,EAAQ,UAAU,EAAGC,EAAAC,EAAA,GAC3H,KAAK,WAAW,GAD2G,CAE9H,QAAS,UACX,EAAC,CACH,CACA,iBAAiBH,EAAG,CAClB,IAAMC,EAAUD,EAAE,UAAYA,EAAI,IAAI9f,GAAwB8f,CAAC,EAC/D,OAAO,KAAK,KAAK,KAAK,KAAK,MAAQ,+CAAgDC,EAAQ,UAAU,EAAG,KAAK,WAAW,CAAC,EAAE,KAAKG,EAAIC,GAAQlgB,GAAyB,UAAUkgB,CAAI,CAAC,CAAC,CACvL,CACA,iBAAiBL,EAAG,CAClB,IAAMC,EAAUD,EAAE,UAAYA,EAAI,IAAIlgB,GAAwBkgB,CAAC,EAC/D,OAAO,KAAK,KAAK,KAAK,KAAK,MAAQ,+CAAgDC,EAAQ,UAAU,EAAG,KAAK,WAAW,CAAC,EAAE,KAAKG,EAAIC,GAAQtgB,GAAyB,UAAUsgB,CAAI,CAAC,CAAC,CACvL,CACA,kBAAkBL,EAAG,CACnB,IAAMC,EAAUD,EAAE,UAAYA,EAAI,IAAIxf,GAAyBwf,CAAC,EAChE,OAAO,KAAK,KAAK,KAAK,KAAK,MAAQ,gDAAiDC,EAAQ,UAAU,EAAG,KAAK,WAAW,CAAC,EAAE,KAAKG,EAAIC,GAAQ5f,GAA0B,UAAU4f,CAAI,CAAC,CAAC,CACzL,CACA,gBAAgBL,EAAG,CACjB,IAAMC,EAAUD,EAAE,UAAYA,EAAI,IAAI5f,GAAuB4f,CAAC,EAC9D,OAAO,KAAK,KAAK,KAAK,KAAK,MAAQ,8CAA+CC,EAAQ,UAAU,EAAG,KAAK,WAAW,CAAC,EAAE,KAAKG,EAAIC,GAAQhgB,GAAwB,UAAUggB,CAAI,CAAC,CAAC,CACrL,CACA,gBAAgBL,EAAG,CACjB,IAAMC,EAAUD,EAAE,UAAYA,EAAI,IAAIxY,GAAgCwY,CAAC,EACvE,OAAO,KAAK,KAAK,KAAK,KAAK,MAAQ,8CAA+CC,EAAQ,UAAU,EAAG,KAAK,WAAW,CAAC,EAAE,KAAKG,EAAIC,GAAQ3Y,GAA0B,UAAU2Y,CAAI,CAAC,CAAC,CACvL,CACA,aAAaL,EAAG,CACd,IAAMC,EAAUD,EAAE,UAAYA,EAAI,IAAIvY,GAA6BuY,CAAC,EACpE,OAAO,KAAK,KAAK,KAAK,KAAK,MAAQ,2CAA4CC,EAAQ,UAAU,EAAG,KAAK,WAAW,CAAC,EAAE,KAAKG,EAAIC,GAAQ3Y,GAA0B,UAAU2Y,CAAI,CAAC,CAAC,CACpL,CACA,wBAAwBL,EAAG,CACzB,IAAMC,EAAUD,EAAE,UAAYA,EAAI,IAAIhgB,GAA+BggB,CAAC,EACtE,OAAO,KAAK,KAAK,KAAK,KAAK,MAAQ,sDAAuDC,EAAQ,UAAU,EAAG,KAAK,WAAW,CAAC,EAAE,KAAKG,EAAIC,GAAQpgB,GAAgC,UAAUogB,CAAI,CAAC,CAAC,CACrM,CACA,oBAAoBL,EAAG,CACrB,IAAMC,EAAUD,EAAE,UAAYA,EAAI,IAAI5gB,GAA2B4gB,CAAC,EAClE,OAAO,KAAK,KAAK,KAAK,KAAK,MAAQ,kDAAmDC,EAAQ,UAAU,EAAGC,EAAAC,EAAA,GACtG,KAAK,WAAW,GADsF,CAEzG,QAAS,UACX,EAAC,CACH,CAaF,EAXIO,EAAK,UAAO,SAAoChB,EAAG,CACjD,OAAO,IAAKA,GAAKgB,GAAuBJ,EAAYC,CAAU,EAAMD,EAAS3W,CAAW,CAAC,CAC3F,EAGA+W,EAAK,WAA0Bf,EAAmB,CAChD,MAAOe,EACP,QAASA,EAAmB,UAC5B,WAAY,MACd,CAAC,EA9ML,IAAM3W,EAAN2W,EAiNA,OAAO3W,CACT,GAAG,EAWCC,IAAwC,IAAM,CAChD,IAAM2W,EAAN,MAAMA,CAAwB,CAC5B,YAAYd,EAAMC,EAAa,CAC7B,KAAK,KAAOD,EACZ,KAAK,YAAcC,EACnB,KAAK,MAAQ,KAAK,YAAY,cAChC,CACA,YAAa,CACX,MAAO,CACL,QAAS,IAAIC,EAAY,CACvB,eAAgB,kBAClB,CAAC,EACD,gBAAiB,EACnB,CACF,CACA,iBAAiBC,EAAG,CAClB,IAAMC,EAAUD,EAAE,UAAYA,EAAI,IAAIlb,GAAwBkb,CAAC,EAC/D,OAAO,KAAK,KAAK,KAAK,KAAK,MAAQ,oDAAqDC,EAAQ,UAAU,EAAG,KAAK,WAAW,CAAC,EAAE,KAAKG,EAAIC,GAAQtb,GAAyB,UAAUsb,CAAI,CAAC,CAAC,CAC5L,CACA,kBAAkBL,EAAG,CACnB,IAAMC,EAAUD,EAAE,UAAYA,EAAI,IAAInb,GAAyBmb,CAAC,EAChE,OAAO,KAAK,KAAK,KAAK,KAAK,MAAQ,qDAAsDC,EAAQ,UAAU,EAAGC,EAAAC,EAAA,GACzG,KAAK,WAAW,GADyF,CAE5G,QAAS,UACX,EAAC,CACH,CACA,wBAAwBH,EAAG,CACzB,IAAMC,EAAUD,EAAE,UAAYA,EAAI,IAAI/a,GAA+B+a,CAAC,EACtE,OAAO,KAAK,KAAK,KAAK,KAAK,MAAQ,2DAA4DC,EAAQ,UAAU,EAAGC,EAAAC,EAAA,GAC/G,KAAK,WAAW,GAD+F,CAElH,QAAS,UACX,EAAC,CACH,CAaF,EAXIQ,EAAK,UAAO,SAAyCjB,EAAG,CACtD,OAAO,IAAKA,GAAKiB,GAA4BL,EAAYC,CAAU,EAAMD,EAAS3W,CAAW,CAAC,CAChG,EAGAgX,EAAK,WAA0BhB,EAAmB,CAChD,MAAOgB,EACP,QAASA,EAAwB,UACjC,WAAY,MACd,CAAC,EA1CL,IAAM3W,EAAN2W,EA6CA,OAAO3W,CACT,GAAG,EAWCC,IAAkC,IAAM,CAC1C,IAAM2W,EAAN,MAAMA,CAAkB,CACtB,YAAYf,EAAMC,EAAa,CAC7B,KAAK,KAAOD,EACZ,KAAK,YAAcC,EACnB,KAAK,MAAQ,KAAK,YAAY,cAChC,CACA,YAAa,CACX,MAAO,CACL,QAAS,IAAIC,EAAY,CACvB,eAAgB,kBAClB,CAAC,EACD,gBAAiB,EACnB,CACF,CACA,KAAKC,EAAG,CACN,IAAMC,EAAUD,EAAE,UAAYA,EAAI,IAAIhd,GAAmBgd,CAAC,EAC1D,OAAO,KAAK,KAAK,KAAK,KAAK,MAAQ,kCAAmCC,EAAQ,UAAU,EAAG,KAAK,WAAW,CAAC,EAAE,KAAKG,EAAIC,GAAQpd,GAAoB,UAAUod,CAAI,CAAC,CAAC,CACrK,CACA,UAAUL,EAAG,CACX,IAAMC,EAAUD,EAAE,UAAYA,EAAI,IAAIrd,GAAwBqd,CAAC,EAC/D,OAAO,KAAK,KAAK,KAAK,KAAK,MAAQ,uCAAwCC,EAAQ,UAAU,EAAG,KAAK,WAAW,CAAC,EAAE,KAAKG,EAAIC,GAAQzd,GAAyB,UAAUyd,CAAI,CAAC,CAAC,CAC/K,CACA,WAAWL,EAAG,CACZ,IAAMC,EAAUD,EAAE,UAAYA,EAAI,IAAI3c,GAA0B2c,CAAC,EACjE,OAAO,KAAK,KAAK,KAAK,KAAK,MAAQ,wCAAyCC,EAAQ,UAAU,EAAG,KAAK,WAAW,CAAC,EAAE,KAAKG,EAAIC,GAAQ/c,GAA2B,UAAU+c,CAAI,CAAC,CAAC,CAClL,CACA,uBAAuBL,EAAG,CACxB,IAAMC,EAAUD,EAAE,UAAYA,EAAI,IAAIxc,GAA8Bwc,CAAC,EACrE,OAAO,KAAK,KAAK,KAAK,KAAK,MAAQ,oDAAqDC,EAAQ,UAAU,EAAG,KAAK,WAAW,CAAC,EAAE,KAAKG,EAAIC,GAAQ5c,GAA+B,UAAU4c,CAAI,CAAC,CAAC,CAClM,CACA,mBAAmBL,EAAG,CACpB,IAAMC,EAAUD,EAAE,UAAYA,EAAI,IAAI9c,GAA0B8c,CAAC,EACjE,OAAO,KAAK,KAAK,KAAK,KAAK,MAAQ,gDAAiDC,EAAQ,UAAU,EAAG,KAAK,WAAW,CAAC,EAAE,KAAKG,EAAIC,GAAQld,GAA2B,UAAUkd,CAAI,CAAC,CAAC,CAC1L,CACA,iBAAiBL,EAAG,CAClB,IAAMC,EAAUD,EAAE,UAAYA,EAAI,IAAIzd,GAAwByd,CAAC,EAC/D,OAAO,KAAK,KAAK,KAAK,KAAK,MAAQ,8CAA+CC,EAAQ,UAAU,EAAG,KAAK,WAAW,CAAC,EAAE,KAAKG,EAAIC,GAAQ7d,GAAyB,UAAU6d,CAAI,CAAC,CAAC,CACtL,CACA,mBAAmBL,EAAG,CACpB,IAAMC,EAAUD,EAAE,UAAYA,EAAI,IAAIle,GAA0Bke,CAAC,EACjE,OAAO,KAAK,KAAK,KAAK,KAAK,MAAQ,gDAAiDC,EAAQ,UAAU,EAAGC,EAAAC,EAAA,GACpG,KAAK,WAAW,GADoF,CAEvG,QAAS,UACX,EAAC,CACH,CACA,cAAcH,EAAG,CACf,IAAMC,EAAUD,EAAE,UAAYA,EAAI,IAAInc,GAA4Bmc,CAAC,EACnE,OAAO,KAAK,KAAK,KAAK,KAAK,MAAQ,2CAA4CC,EAAQ,UAAU,EAAG,KAAK,WAAW,CAAC,EAAE,KAAKG,EAAIC,GAAQvc,GAA6B,UAAUuc,CAAI,CAAC,CAAC,CACvL,CACA,cAAcL,EAAG,CACf,IAAMC,EAAUD,EAAE,UAAYA,EAAI,IAAI/d,GAA4B+d,CAAC,EACnE,OAAO,KAAK,KAAK,KAAK,KAAK,MAAQ,2CAA4CC,EAAQ,UAAU,EAAGC,EAAAC,EAAA,GAC/F,KAAK,WAAW,GAD+E,CAElG,QAAS,UACX,EAAC,CACH,CACA,aAAaH,EAAG,CACd,IAAMC,EAAUD,EAAE,UAAYA,EAAI,IAAI3b,GAAoB2b,CAAC,EAC3D,OAAO,KAAK,KAAK,KAAK,KAAK,MAAQ,0CAA2CC,EAAQ,UAAU,EAAG,KAAK,WAAW,CAAC,EAAE,KAAKG,EAAIC,GAAQ/b,GAAqB,UAAU+b,CAAI,CAAC,CAAC,CAC9K,CACA,sBAAsBL,EAAG,CACvB,IAAMC,EAAUD,EAAE,UAAYA,EAAI,IAAI9b,GAA6B8b,CAAC,EACpE,OAAO,KAAK,KAAK,KAAK,KAAK,MAAQ,mDAAoDC,EAAQ,UAAU,EAAG,KAAK,WAAW,CAAC,EAAE,KAAKG,EAAIC,GAAQlc,GAA8B,UAAUkc,CAAI,CAAC,CAAC,CAChM,CACA,wBAAwBL,EAAG,CACzB,IAAMC,EAAUD,EAAE,UAAYA,EAAI,IAAIje,GAAsCie,CAAC,EAC7E,OAAO,KAAK,KAAK,KAAK,KAAK,MAAQ,qDAAsDC,EAAQ,UAAU,EAAG,KAAK,WAAW,CAAC,EAAE,KAAKG,EAAIC,GAAQre,GAAuC,UAAUqe,CAAI,CAAC,CAAC,CAC3M,CACA,qBAAqBL,EAAG,CACtB,IAAMC,EAAUD,EAAE,UAAYA,EAAI,IAAIvb,GAAmCub,CAAC,EAC1E,OAAO,KAAK,KAAK,KAAK,KAAK,MAAQ,kDAAmDC,EAAQ,UAAU,EAAGC,EAAAC,EAAA,GACtG,KAAK,WAAW,GADsF,CAEzG,QAAS,UACX,EAAC,CACH,CACA,kBAAkBH,EAAG,CACnB,IAAMC,EAAUD,EAAE,UAAYA,EAAI,IAAIvd,GAAgCud,CAAC,EACvE,OAAO,KAAK,KAAK,KAAK,KAAK,MAAQ,+CAAgDC,EAAQ,UAAU,EAAG,KAAK,WAAW,CAAC,EAAE,KAAKG,EAAIC,GAAQ3d,GAAiC,UAAU2d,CAAI,CAAC,CAAC,CAC/L,CACA,eAAeL,EAAG,CAChB,IAAMC,EAAUD,EAAE,UAAYA,EAAI,IAAIxb,GAAsBwb,CAAC,EAC7D,OAAO,KAAK,KAAK,KAAK,KAAK,MAAQ,4CAA6CC,EAAQ,UAAU,EAAGC,EAAAC,EAAA,GAChG,KAAK,WAAW,GADgF,CAEnG,QAAS,UACX,EAAC,CACH,CACA,8BAA8BH,EAAG,CAC/B,IAAMC,EAAUD,EAAE,UAAYA,EAAI,IAAInd,GAAqCmd,CAAC,EAC5E,OAAO,KAAK,KAAK,KAAK,KAAK,MAAQ,2DAA4DC,EAAQ,UAAU,EAAG,KAAK,WAAW,CAAC,EAAE,KAAKG,EAAIC,GAAQvd,GAAsC,UAAUud,CAAI,CAAC,CAAC,CAChN,CACA,aAAaL,EAAG,CACd,IAAMC,EAAUD,EAAE,UAAYA,EAAI,IAAIjc,GAA2Bic,CAAC,EAClE,OAAO,KAAK,KAAK,KAAK,KAAK,MAAQ,0CAA2CC,EAAQ,UAAU,EAAG,KAAK,WAAW,CAAC,EAAE,KAAKG,EAAIC,GAAQrc,GAA4B,UAAUqc,CAAI,CAAC,CAAC,CACrL,CAaF,EAXIO,EAAK,UAAO,SAAmClB,EAAG,CAChD,OAAO,IAAKA,GAAKkB,GAAsBN,EAAYC,CAAU,EAAMD,EAAS3W,CAAW,CAAC,CAC1F,EAGAiX,EAAK,WAA0BjB,EAAmB,CAChD,MAAOiB,EACP,QAASA,EAAkB,UAC3B,WAAY,MACd,CAAC,EAxGL,IAAM3W,EAAN2W,EA2GA,OAAO3W,CACT,GAAG,EAWCC,IAAkC,IAAM,CAC1C,IAAM2W,EAAN,MAAMA,CAAkB,CACtB,YAAYhB,EAAMC,EAAa,CAC7B,KAAK,KAAOD,EACZ,KAAK,YAAcC,EACnB,KAAK,MAAQ,KAAK,YAAY,cAChC,CACA,YAAa,CACX,MAAO,CACL,QAAS,IAAIC,EAAY,CACvB,eAAgB,kBAClB,CAAC,EACD,gBAAiB,EACnB,CACF,CACA,eAAeC,EAAG,CAChB,IAAMC,EAAUD,EAAE,UAAYA,EAAI,IAAIzX,GAA6ByX,CAAC,EACpE,OAAO,KAAK,KAAK,KAAK,KAAK,MAAQ,4CAA6CC,EAAQ,UAAU,EAAG,KAAK,WAAW,CAAC,EAAE,KAAKG,EAAIC,GAAQ7X,GAA8B,UAAU6X,CAAI,CAAC,CAAC,CACzL,CACA,aAAaL,EAAG,CACd,IAAMC,EAAUD,EAAE,UAAYA,EAAI,IAAIxW,GAA2BwW,CAAC,EAClE,OAAO,KAAK,KAAK,KAAK,KAAK,MAAQ,0CAA2CC,EAAQ,UAAU,EAAGC,EAAAC,EAAA,GAC9F,KAAK,WAAW,GAD8E,CAEjG,QAAS,UACX,EAAC,CACH,CACA,aAAaH,EAAG,CACd,IAAMC,EAAUD,EAAE,UAAYA,EAAI,IAAIlY,GAA2BkY,CAAC,EAClE,OAAO,KAAK,KAAK,KAAK,KAAK,MAAQ,0CAA2CC,EAAQ,UAAU,EAAGC,EAAAC,EAAA,GAC9F,KAAK,WAAW,GAD8E,CAEjG,QAAS,UACX,EAAC,CACH,CACA,qBAAqBH,EAAG,CACtB,IAAMC,EAAUD,EAAE,UAAYA,EAAI,IAAI7X,GAAmC6X,CAAC,EAC1E,OAAO,KAAK,KAAK,KAAK,KAAK,MAAQ,kDAAmDC,EAAQ,UAAU,EAAG,KAAK,WAAW,CAAC,EAAE,KAAKG,EAAIC,GAAQjY,GAAoC,UAAUiY,CAAI,CAAC,CAAC,CACrM,CACA,uBAAuBL,EAAG,CACxB,IAAMC,EAAUD,EAAE,UAAYA,EAAI,IAAI9W,GAA8B8W,CAAC,EACrE,OAAO,KAAK,KAAK,KAAK,KAAK,MAAQ,oDAAqDC,EAAQ,UAAU,EAAG,KAAK,WAAW,CAAC,EAAE,KAAKG,EAAIC,GAAQlX,GAA+B,UAAUkX,CAAI,CAAC,CAAC,CAClM,CACA,4BAA4BL,EAAG,CAC7B,IAAMC,EAAUD,EAAE,UAAYA,EAAI,IAAI3W,GAAmC2W,CAAC,EAC1E,OAAO,KAAK,KAAK,KAAK,KAAK,MAAQ,yDAA0DC,EAAQ,UAAU,EAAGC,EAAAC,EAAA,GAC7G,KAAK,WAAW,GAD6F,CAEhH,QAAS,UACX,EAAC,CACH,CACA,oCAAoCH,EAAG,CACrC,IAAMC,EAAUD,EAAE,UAAYA,EAAI,IAAI1W,GAA2C0W,CAAC,EAClF,OAAO,KAAK,KAAK,KAAK,KAAK,MAAQ,iEAAkEC,EAAQ,UAAU,EAAGC,EAAAC,EAAA,GACrH,KAAK,WAAW,GADqG,CAExH,QAAS,UACX,EAAC,CACH,CACA,gBAAgBH,EAAG,CACjB,IAAMC,EAAUD,EAAE,UAAYA,EAAI,IAAIrX,GAAuBqX,CAAC,EAC9D,OAAO,KAAK,KAAK,KAAK,KAAK,MAAQ,6CAA8CC,EAAQ,UAAU,EAAG,KAAK,WAAW,CAAC,EAAE,KAAKG,EAAIC,GAAQzX,GAAwB,UAAUyX,CAAI,CAAC,CAAC,CACpL,CACA,sBAAsBL,EAAG,CACvB,IAAMC,EAAUD,EAAE,UAAYA,EAAI,IAAIvX,GAA6BuX,CAAC,EACpE,OAAO,KAAK,KAAK,KAAK,KAAK,MAAQ,mDAAoDC,EAAQ,UAAU,EAAG,KAAK,WAAW,CAAC,EAAE,KAAKG,EAAIC,GAAQ3X,GAA8B,UAAU2X,CAAI,CAAC,CAAC,CAChM,CACA,gBAAgBL,EAAG,CACjB,IAAMC,EAAUD,EAAE,UAAYA,EAAI,IAAIha,GAA8Bga,CAAC,EACrE,OAAO,KAAK,KAAK,KAAK,KAAK,MAAQ,6CAA8CC,EAAQ,UAAU,EAAGC,EAAAC,EAAA,GACjG,KAAK,WAAW,GADiF,CAEpG,QAAS,UACX,EAAC,CACH,CAaF,EAXIU,EAAK,UAAO,SAAmCnB,EAAG,CAChD,OAAO,IAAKA,GAAKmB,GAAsBP,EAAYC,CAAU,EAAMD,EAAS3W,CAAW,CAAC,CAC1F,EAGAkX,EAAK,WAA0BlB,EAAmB,CAChD,MAAOkB,EACP,QAASA,EAAkB,UAC3B,WAAY,MACd,CAAC,EA/EL,IAAM3W,EAAN2W,EAkFA,OAAO3W,CACT,GAAG,EAwHCC,IAAmC,IAAM,CAC3C,IAAM2W,EAAN,MAAMA,CAAmB,CACvB,YAAYjB,EAAMC,EAAa,CAC7B,KAAK,KAAOD,EACZ,KAAK,YAAcC,EACnB,KAAK,MAAQ,KAAK,YAAY,cAChC,CACA,YAAa,CACX,MAAO,CACL,QAAS,IAAIC,EAAY,CACvB,eAAgB,kBAClB,CAAC,EACD,gBAAiB,EACnB,CACF,CACA,KAAKC,EAAG,CACN,IAAMC,EAAUD,EAAE,UAAYA,EAAI,IAAInZ,GAAoBmZ,CAAC,EAC3D,OAAO,KAAK,KAAK,KAAK,KAAK,MAAQ,mCAAoCC,EAAQ,UAAU,EAAG,KAAK,WAAW,CAAC,EAAE,KAAKG,EAAIC,GAAQvZ,GAAqB,UAAUuZ,CAAI,CAAC,CAAC,CACvK,CACA,0BAA0BL,EAAG,CAC3B,IAAMC,EAAUD,EAAE,UAAYA,EAAI,IAAInnB,GAAiCmnB,CAAC,EACxE,OAAO,KAAK,KAAK,KAAK,KAAK,MAAQ,wDAAyDC,EAAQ,UAAU,EAAG,KAAK,WAAW,CAAC,EAAE,KAAKG,EAAIC,GAAQvnB,GAAkC,UAAUunB,CAAI,CAAC,CAAC,CACzM,CACA,kBAAkBL,EAAG,CACnB,IAAMC,EAAUD,EAAE,UAAYA,EAAI,IAAIrZ,GAAyBqZ,CAAC,EAChE,OAAO,KAAK,KAAK,KAAK,KAAK,MAAQ,gDAAiDC,EAAQ,UAAU,EAAG,KAAK,WAAW,CAAC,EAAE,KAAKG,EAAIC,GAAQzZ,GAA0B,UAAUyZ,CAAI,CAAC,CAAC,CACzL,CACA,MAAML,EAAG,CACP,IAAMC,EAAUD,EAAE,UAAYA,EAAI,IAAI7Y,GAAqB6Y,CAAC,EAC5D,OAAO,KAAK,KAAK,KAAK,KAAK,MAAQ,oCAAqCC,EAAQ,UAAU,EAAGC,EAAAC,EAAA,GACxF,KAAK,WAAW,GADwE,CAE3F,QAAS,UACX,EAAC,CACH,CACA,KAAKH,EAAG,CACN,IAAMC,EAAUD,EAAE,UAAYA,EAAI,IAAI3Y,GAAoB2Y,CAAC,EAC3D,OAAO,KAAK,KAAK,KAAK,KAAK,MAAQ,mCAAoCC,EAAQ,UAAU,EAAGC,EAAAC,EAAA,GACvF,KAAK,WAAW,GADuE,CAE1F,QAAS,UACX,EAAC,CACH,CACA,aAAaH,EAAG,CACd,IAAMC,EAAUD,EAAE,UAAYA,EAAI,IAAIjZ,GAAoBiZ,CAAC,EAC3D,OAAO,KAAK,KAAK,KAAK,KAAK,MAAQ,2CAA4CC,EAAQ,UAAU,EAAGC,EAAAC,EAAA,GAC/F,KAAK,WAAW,GAD+E,CAElG,QAAS,UACX,EAAC,CACH,CACA,cAAcH,EAAG,CACf,IAAMC,EAAUD,EAAE,UAAYA,EAAI,IAAI9Y,GAAqB8Y,CAAC,EAC5D,OAAO,KAAK,KAAK,KAAK,KAAK,MAAQ,4CAA6CC,EAAQ,UAAU,EAAGC,EAAAC,EAAA,GAChG,KAAK,WAAW,GADgF,CAEnG,QAAS,UACX,EAAC,CACH,CACA,YAAYH,EAAG,CACb,IAAMC,EAAUD,EAAE,UAAYA,EAAI,IAAI5Y,GAAmB4Y,CAAC,EAC1D,OAAO,KAAK,KAAK,KAAK,KAAK,MAAQ,0CAA2CC,EAAQ,UAAU,EAAGC,EAAAC,EAAA,GAC9F,KAAK,WAAW,GAD8E,CAEjG,QAAS,UACX,EAAC,CACH,CAaF,EAXIW,EAAK,UAAO,SAAoCpB,EAAG,CACjD,OAAO,IAAKA,GAAKoB,GAAuBR,EAAYC,CAAU,EAAMD,EAAS3W,CAAW,CAAC,CAC3F,EAGAmX,EAAK,WAA0BnB,EAAmB,CAChD,MAAOmB,EACP,QAASA,EAAmB,UAC5B,WAAY,MACd,CAAC,EAvEL,IAAM3W,EAAN2W,EA0EA,OAAO3W,CACT,GAAG,EA8UCC,IAA8B,IAAM,CACtC,IAAM2W,EAAN,MAAMA,CAAc,CAClB,YAAYlB,EAAMC,EAAa,CAC7B,KAAK,KAAOD,EACZ,KAAK,YAAcC,EACnB,KAAK,MAAQ,KAAK,YAAY,cAChC,CACA,YAAa,CACX,MAAO,CACL,QAAS,IAAIC,EAAY,CACvB,eAAgB,kBAClB,CAAC,EACD,gBAAiB,EACnB,CACF,CACA,UAAUC,EAAG,CACX,IAAMC,EAAUD,EAAE,UAAYA,EAAI,IAAItkB,GAAoBskB,CAAC,EAC3D,OAAO,KAAK,KAAK,KAAK,KAAK,MAAQ,mCAAoCC,EAAQ,UAAU,EAAG,KAAK,WAAW,CAAC,EAAE,KAAKG,EAAIC,GAAQ1kB,GAAqB,UAAU0kB,CAAI,CAAC,CAAC,CACvK,CACA,mBAAmBL,EAAG,CACpB,IAAMC,EAAUD,EAAE,UAAYA,EAAI,IAAIxkB,GAA8BwkB,CAAC,EACrE,OAAO,KAAK,KAAK,KAAK,KAAK,MAAQ,4CAA6CC,EAAQ,UAAU,EAAG,KAAK,WAAW,CAAC,EAAE,KAAKG,EAAIC,GAAQ5kB,GAA+B,UAAU4kB,CAAI,CAAC,CAAC,CAC1L,CACA,OAAOL,EAAG,CACR,IAAMC,EAAUD,EAAE,UAAYA,EAAI,IAAIpkB,GAAiBokB,CAAC,EACxD,OAAO,KAAK,KAAK,KAAK,KAAK,MAAQ,gCAAiCC,EAAQ,UAAU,EAAGC,EAAAC,EAAA,GACpF,KAAK,WAAW,GADoE,CAEvF,QAAS,UACX,EAAC,CACH,CACA,SAASH,EAAG,CACV,IAAMC,EAAUD,EAAE,UAAYA,EAAI,IAAIlkB,GAAmBkkB,CAAC,EAC1D,OAAO,KAAK,KAAK,KAAK,KAAK,MAAQ,kCAAmCC,EAAQ,UAAU,EAAG,KAAK,WAAW,CAAC,EAAE,KAAKG,EAAIC,GAAQtkB,GAAoB,UAAUskB,CAAI,CAAC,CAAC,CACrK,CACA,OAAOL,EAAG,CACR,IAAMC,EAAUD,EAAE,UAAYA,EAAI,IAAI3jB,GAAiB2jB,CAAC,EACxD,OAAO,KAAK,KAAK,KAAK,KAAK,MAAQ,gCAAiCC,EAAQ,UAAU,EAAGC,EAAAC,EAAA,GACpF,KAAK,WAAW,GADoE,CAEvF,QAAS,UACX,EAAC,CACH,CACA,KAAKH,EAAG,CACN,IAAMC,EAAUD,EAAE,UAAYA,EAAI,IAAI9jB,GAAe8jB,CAAC,EACtD,OAAO,KAAK,KAAK,KAAK,KAAK,MAAQ,8BAA+BC,EAAQ,UAAU,EAAG,KAAK,WAAW,CAAC,EAAE,KAAKG,EAAIC,GAAQlkB,GAAgB,UAAUkkB,CAAI,CAAC,CAAC,CAC7J,CACA,QAAQL,EAAG,CACT,IAAMC,EAAUD,EAAE,UAAYA,EAAI,IAAIzkB,GAAkBykB,CAAC,EACzD,OAAO,KAAK,KAAK,KAAK,KAAK,MAAQ,iCAAkCC,EAAQ,UAAU,EAAGC,EAAAC,EAAA,GACrF,KAAK,WAAW,GADqE,CAExF,QAAS,UACX,EAAC,CACH,CAaF,EAXIY,EAAK,UAAO,SAA+BrB,EAAG,CAC5C,OAAO,IAAKA,GAAKqB,GAAkBT,EAAYC,CAAU,EAAMD,EAAS3W,CAAW,CAAC,CACtF,EAGAoX,EAAK,WAA0BpB,EAAmB,CAChD,MAAOoB,EACP,QAASA,EAAc,UACvB,WAAY,MACd,CAAC,EA7DL,IAAM3W,EAAN2W,EAgEA,OAAO3W,CACT,GAAG,EAWCC,IAAiC,IAAM,CACzC,IAAM2W,EAAN,MAAMA,CAAiB,CACrB,YAAYnB,EAAMC,EAAa,CAC7B,KAAK,KAAOD,EACZ,KAAK,YAAcC,EACnB,KAAK,MAAQ,KAAK,YAAY,cAChC,CACA,YAAa,CACX,MAAO,CACL,QAAS,IAAIC,EAAY,CACvB,eAAgB,kBAClB,CAAC,EACD,gBAAiB,EACnB,CACF,CACA,eAAeC,EAAG,CAChB,IAAMC,EAAUD,EAAE,UAAYA,EAAI,IAAI/X,GAA4B+X,CAAC,EACnE,OAAO,KAAK,KAAK,KAAK,KAAK,MAAQ,2CAA4CC,EAAQ,UAAU,EAAG,KAAK,WAAW,CAAC,EAAE,KAAKG,EAAIC,GAAQnY,GAA6B,UAAUmY,CAAI,CAAC,CAAC,CACvL,CACA,gBAAgBL,EAAG,CACjB,IAAMC,EAAUD,EAAE,UAAYA,EAAI,IAAInX,GAAuBmX,CAAC,EAC9D,OAAO,KAAK,KAAK,KAAK,KAAK,MAAQ,4CAA6CC,EAAQ,UAAU,EAAG,KAAK,WAAW,CAAC,EAAE,KAAKG,EAAIC,GAAQvX,GAAwB,UAAUuX,CAAI,CAAC,CAAC,CACnL,CAaF,EAXIW,EAAK,UAAO,SAAkCtB,EAAG,CAC/C,OAAO,IAAKA,GAAKsB,GAAqBV,EAAYC,CAAU,EAAMD,EAAS3W,CAAW,CAAC,CACzF,EAGAqX,EAAK,WAA0BrB,EAAmB,CAChD,MAAOqB,EACP,QAASA,EAAiB,UAC1B,WAAY,MACd,CAAC,EAhCL,IAAM3W,EAAN2W,EAmCA,OAAO3W,CACT,GAAG,IC90gBG,SAAU4W,GAAeC,EAAmB,CAChD,GAAKA,EAGL,MAAO,CACLC,GAAID,EAAQC,IAAM,GAClBC,UAAWF,EAAQE,WAAa,GAChCC,OAAQC,GAAqBJ,EAAQG,MAAM,EAC3CE,OAAQL,EAAQK,QAAU,EAC1BC,QAASN,EAAQM,QACjBC,aAAcP,EAAQO,aACtBC,SAAUC,GAAuBT,EAAQQ,QAAQ,EACjDE,gBAAiBC,GAA8BX,EAAQU,eAAe,EACtEE,mBAAoBZ,EAAQY,oBAAsB,GAClDC,OAAQb,EAAQa,QAAU,GAC1BC,IAAKd,EAAQc,IACbC,gBAAiBf,EAAQe,gBAE7B,CAEA,SAASN,GAAuBD,EAA4B,CAC1D,GAAKA,EAGL,MAAO,CACLQ,sBAAuBC,GAAYT,EAASQ,qBAAqB,EACjEE,kBAAmBD,GAAYT,EAASU,iBAAiB,EACzDC,sBAAuBF,GAAYT,EAASW,qBAAqB,EACjEC,QAASH,GAAYT,EAASY,OAAO,EACrCC,kBAAmBJ,GAAYT,EAASa,iBAAiB,EACzDC,eAAgBd,EAASc,gBAAkB,GAC3CC,qBAAsBf,EAASe,sBAAwB,GACvDC,aAAchB,EAASgB,cAAgB,GACvCC,mBAAoBjB,EAASiB,oBAAsB,GAEvD,CAEA,SAASR,GAAYS,EAAa,CAChC,GAAKA,EAGL,MAAO,CACLzB,GAAIyB,EAAKzB,IAAM,GACfK,QAASoB,EAAKpB,QACdqB,SAAUD,EAAKC,UAAY,GAC3BC,IAAKF,EAAKE,KAAO,GAErB,CAEA,SAASjB,GAA8BH,EAAmC,CACxE,GAAKA,EAGL,MAAO,CACLqB,MAAOrB,EAASqB,MAChBC,YAAatB,EAASsB,YACtBC,QAASvB,EAASuB,QAClBC,gBAAiBxB,EAASwB,gBAE9B,CAEM,SAAU5B,GAAqBD,EAAwB,CAC3D,OAAQA,EAAM,CACZ,KAAK8B,GAAiBC,sCACpB,OAAOC,GAAcC,uBACvB,KAAKH,GAAiBI,oCACpB,OAAOF,GAAcG,qBACvB,KAAKL,GAAiBM,8BACpB,OAAOJ,GAAcK,eACvB,KAAKP,GAAiBQ,8BACpB,OAAON,GAAcO,eACvB,KAAKT,GAAiBU,4BACpB,OAAOR,GAAcS,aACvB,KAAKX,GAAiBY,+BACpB,OAAOV,GAAcW,gBACvB,KAAKb,GAAiBc,oBACpB,OAAOZ,GAAca,KACvB,KAAKf,GAAiBgB,mBACpB,OAAOd,GAAce,IACvB,QACE,MACJ,CACF,CA3JA,IAQYf,GARZgB,GAAAC,EAAA,KAAAC,IAQYlB,GAAZ,SAAYA,EAAa,CACvBA,OAAAA,EAAA,uBAAA,yBACAA,EAAA,qBAAA,uBACAA,EAAA,eAAA,iBACAA,EAAA,eAAA,iBACAA,EAAA,aAAA,eACAA,EAAA,gBAAA,kBACAA,EAAA,KAAA,OACAA,EAAA,IAAA,MACAA,EAAA,QAAA,UATUA,CAUZ,EAVYA,IAAa,CAAA,CAAA,ICMnB,SAAUmB,GAAuBC,EAA6C,CAClF,OAAQA,EAAK,CACX,KAAKC,EAA2BC,+BAC9B,OAAOC,EAAgBC,YACzB,KAAKH,EAA2BI,iCAC9B,OAAOF,EAAgBG,cACzB,KAAKL,EAA2BM,2BAC9B,OAAOJ,EAAgBK,UACzB,KAAKP,EAA2BQ,4BAC9B,OAAON,EAAgBO,QAC3B,CACA,OAAOP,EAAgBQ,OACzB,CAEM,SAAUC,GAAqBC,EAAqC,CACxE,OAAQA,EAAQ,CACd,KAAKV,EAAgBC,YACnB,OAAOH,EAA2BC,+BACpC,KAAKC,EAAgBG,cACnB,OAAOL,EAA2BI,iCACpC,KAAKF,EAAgBK,UACnB,OAAOP,EAA2BM,2BACpC,KAAKJ,EAAgBO,SACnB,OAAOT,EAA2BQ,2BACtC,CACA,OAAOR,EAA2Ba,qBACpC,CAxCA,IAEYX,EAFZY,GAAAC,EAAA,KAAAC,IAEYd,EAAZ,SAAYA,EAAe,CACzBA,OAAAA,EAAA,QAAA,UACAA,EAAA,YAAA,gBACAA,EAAA,cAAA,kBACAA,EAAA,UAAA,YACAA,EAAA,SAAA,aALUA,CAMZ,EANYA,GAAe,CAAA,CAAA,IC4BrB,SAAUe,EAAgBC,EAA6B,CAC3D,OAAQA,EAAI,CACV,KAAKC,EAAYC,IACf,OAAOC,EAASD,IAClB,KAAKD,EAAYG,IACf,OAAOD,EAASC,IAClB,KAAKH,EAAYI,IACf,OAAOF,EAASE,IAClB,KAAKJ,EAAYK,IACf,OAAOH,EAASG,IAClB,KAAKL,EAAYM,IACf,OAAOJ,EAASI,IAClB,KAAKN,EAAYO,IACf,OAAOL,EAASK,IAClB,KAAKP,EAAYQ,IACf,OAAON,EAASM,IAClB,KAAKR,EAAYS,IACf,OAAOP,EAASO,IAClB,KAAKT,EAAYU,IACf,OAAOR,EAASQ,IAClB,KAAKV,EAAYW,IACf,OAAOT,EAASS,IAClB,KAAKX,EAAYY,IACf,OAAOV,EAASU,IAClB,KAAKZ,EAAYa,IACf,OAAOX,EAASW,IAClB,KAAKb,EAAYc,IACf,OAAOZ,EAASY,IAClB,KAAKd,EAAYe,IACf,OAAOb,EAASa,IAClB,KAAKf,EAAYgB,IACf,OAAOd,EAASc,IAClB,KAAKhB,EAAYiB,IACf,OAAOf,EAASe,IAClB,KAAKjB,EAAYkB,IACf,OAAOhB,EAASgB,IAClB,KAAKlB,EAAYmB,IACf,OAAOjB,EAASiB,IAClB,KAAKnB,EAAYoB,IACf,OAAOlB,EAASkB,IAClB,KAAKpB,EAAYqB,IACf,OAAOnB,EAASmB,IAClB,KAAKrB,EAAYsB,IACf,OAAOpB,EAASoB,IAClB,KAAKtB,EAAYuB,IACf,OAAOrB,EAASqB,IAClB,KAAKvB,EAAYwB,IACf,OAAOtB,EAASsB,IAClB,KAAKxB,EAAYyB,IACf,OAAOvB,EAASuB,IAClB,KAAKzB,EAAY0B,IACf,OAAOxB,EAASwB,IAClB,QACE,OAAOxB,EAASD,GACpB,CACF,CArFA,IAEYC,EAFZyB,GAAAC,EAAA,KAAAC,IAEY3B,EAAZ,SAAYA,EAAQ,CAClBA,OAAAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MAzBUA,CA0BZ,EA1BYA,GAAQ,CAAA,CAAA,ICmBd,SAAU4B,GAAiBC,EAA8B,CAC7D,OAAQA,EAAI,CACV,KAAKC,EAAaC,QAChB,OAAOC,GAAUC,QACnB,KAAKH,EAAaI,OAChB,OAAOF,GAAUG,OACnB,KAAKL,EAAaM,SAChB,OAAOJ,GAAUK,OACrB,CACA,OAAOL,GAAUM,OACnB,CAEM,SAAUC,GAAeC,EAAgC,CAC7D,OAAQA,EAAS,CACf,KAAKR,GAAUC,QACb,OAAOH,EAAaC,QACtB,KAAKC,GAAUG,OACb,OAAOL,EAAaI,OACtB,KAAKF,GAAUK,QACb,OAAOP,EAAaM,QACxB,CACA,OAAON,EAAaW,OACtB,CA3CA,IAEYT,GAFZU,GAAAC,EAAA,KAAAC,IAEYZ,GAAZ,SAAYA,EAAS,CACnBA,OAAAA,EAAA,QAAA,UACAA,EAAA,QAAA,UACAA,EAAA,OAAA,SACAA,EAAA,QAAA,WAJUA,CAKZ,EALYA,IAAS,CAAA,CAAA,ICMf,SAAUa,GAA2BC,EAAiD,CAC1F,OAAQA,GAAU,CAAA,GAAIC,IAAKC,IAClB,CACLC,MAAOD,EAAEC,OAAS,EAClBC,SAAUF,EAAEE,SACZC,SAAUH,EAAEG,UAEf,CACH,CARA,IAAAC,GAAAC,EAAA,QCCM,SAAUC,GAA0BC,EAAyC,CACjF,OAAQA,EAAM,CACZ,KAAKC,GAAsBC,8BACzB,OAAOC,GAAmBC,SAC5B,KAAKH,GAAsBI,+BACzB,OAAOF,GAAmBG,UAC5B,KAAKL,GAAsBM,4BACzB,OAAOJ,GAAmBK,MAC9B,CACA,OAAOL,GAAmBM,OAC5B,CAEM,SAAUC,GAAwBC,EAAuB,CAC7D,OAAQA,EAAG,CACT,KAAKR,GAAmBC,SACtB,OAAOH,GAAsBC,8BAC/B,KAAKC,GAAmBG,UACtB,OAAOL,GAAsBI,+BAC/B,KAAKF,GAAmBK,OACtB,OAAOP,GAAsBM,2BACjC,CACA,OAAON,GAAsBW,4BAC/B,CA/BA,IAEYT,GAFZU,GAAAC,EAAA,KAAAC,IAEYZ,GAAZ,SAAYA,EAAkB,CAC5BA,OAAAA,EAAA,QAAA,UACAA,EAAA,SAAA,WACAA,EAAA,UAAA,YACAA,EAAA,OAAA,SAJUA,CAKZ,EALYA,IAAkB,CAAA,CAAA,ICKxB,SAAUa,GAAkBC,EAAuC,CACvE,MAAO,CACLC,QAASD,GAAQC,SAAW,EAC5BC,UAAWF,GAAQE,WAAa,EAEpC,CALA,IAAAC,GAAAC,EAAA,QCYM,SAAUC,GAAYC,EAAkB,CAC5C,MAAI,CAACA,GAAUA,EAAOC,OAAS,EACtB,CAAA,EAEFD,EAAOE,IAAKC,IACV,CACLC,OAAQD,EAAMC,QAAU,EACxBC,WAAYF,EAAME,WAClBC,QAASH,EAAMG,SAElB,CACH,CAEM,SAAUC,GAAUC,EAAW,CACnC,MAAI,CAACA,GAAQA,EAAKP,OAAS,EAClB,CAAA,EAEFO,EAAKN,IAAKO,IACR,CACLL,OAAQK,EAAIL,QAAU,EACtBC,WAAYI,EAAIJ,WAChBC,QAASG,EAAIH,SAEhB,CACH,CAnCA,IAAAI,GAAAC,EAAA,QCiCM,SAAUC,GAA0BC,EAAiC,CACzE,IAAMC,EAAiC,CAAA,EACvC,QAAWC,KAAeF,EAAWG,QAAS,CAC5C,GAAI,CAACC,OAAOC,UAAUC,eAAeC,KAAKP,EAAWG,QAASD,CAAW,EACvE,SAGF,IAAMM,EAAaR,EAAWG,QAAQD,CAAW,EACjDD,EAAWC,CAAW,EAAI,CACxBO,KAAMC,GAA0BF,EAAWC,IAAI,EAC/CE,MAAOC,GAA2BJ,EAAWG,KAAK,EAClDE,SAAUL,EAAWK,UAAY,EACjCC,KAAMC,GAAYP,EAAWM,IAAI,EACjCE,UAAWC,GAAiBT,EAAWQ,SAAS,EAEpD,CAEA,MAAO,CACLE,cAAelB,EAAWkB,cAC1BC,IAAKnB,EAAWmB,IAChBH,UAAWC,GAAiBjB,EAAWgB,SAAS,EAChDb,QAASF,EACTmB,WAAYC,GAAkBrB,EAAWoB,UAAU,EACnDE,QAAStB,EAAWsB,QACpBC,SAAUvB,EAAWuB,SACrBC,SAAUC,GAAuBzB,EAAWwB,QAAQ,EACpDE,iBAAkB1B,EAAW0B,iBAC7BC,yBACE3B,EAAW2B,0BAA0BC,QAAO,IAAO,EAAI5B,EAAW2B,yBAA2BE,OAC/FC,uBACE9B,EAAW8B,wBAAwBF,QAAO,IAAO,EAAI5B,EAAW8B,uBAAyBD,OAE/F,CAEM,SAAUE,GAAwBC,EAAkD,CAGxF,OAAKA,EAGE5B,OAAO6B,KAAKD,CAAkB,EAClCE,OAAQC,GAAMA,KAAKC,CAAQ,EAC3BC,OAAO,CAACC,EAA8CH,KACrDG,EAAcH,CAAC,EAAII,GAA+BP,EAAmBG,CAAC,CAAC,EAChEG,GACN,CAAA,CAAE,EAPE,CAAA,CAQX,CAEM,SAAUE,GAAyB7B,EAA4B,CACnE,OAAOA,EAAM8B,IAAKC,GAAS,IAAIC,GAAQD,CAAI,CAAC,CAC9C,CAEM,SAAUH,GAA+BpC,EAAkC,CAC/E,OAAO,IAAIyC,GAAW,CACpBnC,KAAMoC,GAAwB1C,EAAQM,IAAI,EAC1CE,MAAO6B,GAAyBrC,EAAQQ,KAAK,EAC7CE,SAAUV,EAAQU,SAClBC,KAAMgC,GAAU3C,EAAQW,IAAI,EAC5BE,UAAW+B,GAAe5C,EAAQa,SAAS,EAC3CgC,aAAc7C,EAAQ6C,aACvB,CACH,CAtGA,IAAAC,GAAAC,EAAA,KAAAC,IAKAC,KACAC,KACAC,KACAC,KACAC,KACAC,KACAC,OCsDM,SAAUC,GAAsBC,EAA6B,CACjE,MAAO,CACLC,SAAUC,GAAuBF,EAAKC,QAAQ,EAC9CE,YAAaC,GAA0BJ,EAAKG,WAAW,EACvDE,SAAUC,EAAgBN,EAAKK,QAAQ,EACvCE,UAAWC,GAAiBR,EAAKO,SAAS,EAC1CE,aAAcC,GAA2BV,EAAKS,YAAY,EAC1DE,WAAYC,GAAkBZ,EAAKW,UAAU,EAC7CE,iBAAkBb,EAAKa,kBAAoB,EAC3CC,gBAAiBd,EAAKc,iBAAmB,GACzCC,aAAcf,EAAKe,aACnBC,SAAUhB,EAAKgB,UAAY,EAC3BC,KAAMC,GAAYlB,EAAKiB,MAAQ,CAAA,CAAE,EAErC,CA/EA,IAAAE,GAAAC,EAAA,KAMAC,KACAC,KACAC,KACAC,KACAC,KACAC,KACAC,OCXA,IAAAC,GAAAC,EAAA,QCDA,IAAAC,GAAAC,EAAA,QCCA,IAAAC,GAAAC,EAAA,QCDA,IA2DKC,GAICC,GASAC,GASDC,EAoCCC,GA+JAC,GA+JAC,GAKAC,GAKAC,GA7bNC,GAAAC,EAAA,KACAC,KAIAC,KAsDKZ,GAAL,SAAKA,EAAqB,CACxBA,OAAAA,EAAA,KAAA,OADGA,CAEL,EAFKA,IAAqB,CAAA,CAAA,EAIpBC,GAAwC,CAC5C,CACEY,GAAI,0CACJC,KAAMd,GAAsBe,KAC5BC,iBAAkB,OAClBC,gBAAiBC,EAAgBC,QAClC,EAGGjB,GAAwC,CAC5C,CACEW,GAAI,0CACJC,KAAMd,GAAsBe,KAC5BC,iBAAkB,OAClBC,gBAAiBC,EAAgBC,QAClC,EAGEhB,EAAL,SAAKA,EAAwB,CAE3BA,OAAAA,EAAA,QAAA,OACAA,EAAA,WAAA,UACAA,EAAA,SAAA,SACAA,EAAA,gBAAA,gBACAA,EAAA,cAAA,cACAA,EAAA,mBAAA,oBACAA,EAAA,YAAA,WACAA,EAAA,eAAA,cACAA,EAAA,WAAA,UACAA,EAAA,UAAA,SAGAA,EAAA,kBAAA,QACAA,EAAA,yBAAA,eACAA,EAAA,uBAAA,aACAA,EAAA,kBAAA,QACAA,EAAA,oBAAA,mBACAA,EAAA,YAAA,UAEAA,EAAA,uBAAA,aACAA,EAAA,iBAAA,OACAA,EAAA,oBAAA,UACAA,EAAA,mBAAA,SAEAA,EAAA,2BAAA,aACAA,EAAA,6BAAA,eACAA,EAAA,wBAAA,UACAA,EAAA,uBAAA,SAEAA,EAAA,wBAAA,UAEAA,EAAA,QAAA,UAjCGA,CAkCL,EAlCKA,GAAwB,CAAA,CAAA,EAoCvBC,GAA2C,CAC/C,CACES,GAAI,0CACJC,KAAMX,EAAyBiB,QAC/BJ,iBAAkB,oBAClBC,gBAAiBC,EAAgBC,SAEnC,CACEN,GAAI,0CACJC,KAAMX,EAAyBkB,WAC/BL,iBAAkB,uBAClBC,gBAAiBC,EAAgBC,SAEnC,CACEN,GAAI,0CACJC,KAAMX,EAAyBmB,SAC/BN,iBAAkB,yBAClBC,gBAAiBC,EAAgBC,SAEnC,CACEN,GAAI,0CACJC,KAAMX,EAAyBoB,gBAC/BP,iBAAkB,gCAClBC,gBAAiBC,EAAgBC,SAEnC,CACEN,GAAI,0CACJC,KAAMX,EAAyBqB,cAC/BR,iBAAkB,8BAClBC,gBAAiBC,EAAgBC,SAEnC,CACEN,GAAI,0CACJC,KAAMX,EAAyBsB,mBAC/BT,iBAAkB,oCAClBC,gBAAiBC,EAAgBC,SAEnC,CACEN,GAAI,0CACJC,KAAMX,EAAyBuB,YAC/BV,iBAAkB,4BAClBC,gBAAiBC,EAAgBC,SAEnC,CACEN,GAAI,0CACJC,KAAMX,EAAyBwB,eAC/BX,iBAAkB,+BAClBC,gBAAiBC,EAAgBC,SAEnC,CACEN,GAAI,0CACJC,KAAMX,EAAyByB,WAC/BZ,iBAAkB,2BAClBC,gBAAiBC,EAAgBC,SAEnC,CACEN,GAAI,0CACJC,KAAMX,EAAyB0B,UAC/Bb,iBAAkB,0BAClBC,gBAAiBC,EAAgBC,SAEnC,CACEN,GAAI,0CACJC,KAAMX,EAAyB2B,YAC/Bd,iBAAkB,4BAClBC,gBAAiBC,EAAgBC,SAEnC,CACEN,GAAI,0CACJC,KAAMX,EAAyB4B,kBAC/Bf,iBAAkB,qBAClBC,gBAAiBC,EAAgBC,SAEnC,CACEN,GAAI,0CACJC,KAAMX,EAAyB6B,yBAC/BhB,iBAAkB,4BAClBC,gBAAiBC,EAAgBC,SAEnC,CACEN,GAAI,0CACJC,KAAMX,EAAyB8B,uBAC/BjB,iBAAkB,0BAClBC,gBAAiBC,EAAgBC,SAEnC,CACEN,GAAI,0CACJC,KAAMX,EAAyB+B,kBAC/BlB,iBAAkB,qBAClBC,gBAAiBC,EAAgBC,SAEnC,CACEN,GAAI,0CACJC,KAAMX,EAAyBgC,oBAC/BnB,iBAAkB,uBAClBC,gBAAiBC,EAAgBC,SAEnC,CACEN,GAAI,0CACJC,KAAMX,EAAyBiC,uBAC/BpB,iBAAkB,uBAClBC,gBAAiBC,EAAgBC,SAEnC,CACEN,GAAI,0CACJC,KAAMX,EAAyBkC,iBAC/BrB,iBAAkB,wBAClBC,gBAAiBC,EAAgBC,SAEnC,CACEN,GAAI,0CACJC,KAAMX,EAAyBmC,oBAC/BtB,iBAAkB,yBAClBC,gBAAiBC,EAAgBC,SAEnC,CACEN,GAAI,0CACJC,KAAMX,EAAyBoC,mBAC/BvB,iBAAkB,wBAClBC,gBAAiBC,EAAgBC,SAEnC,CACEN,GAAI,0CACJC,KAAMX,EAAyBqC,2BAC/BxB,iBAAkB,mCAClBC,gBAAiBC,EAAgBC,SAEnC,CACEN,GAAI,0CACJC,KAAMX,EAAyBsC,6BAC/BzB,iBAAkB,qCAClBC,gBAAiBC,EAAgBC,SAEnC,CACEN,GAAI,0CACJC,KAAMX,EAAyBuC,wBAC/B1B,iBAAkB,gCAClBC,gBAAiBC,EAAgBC,SAEnC,CACEN,GAAI,0CACJC,KAAMX,EAAyBwC,uBAC/B3B,iBAAkB,+BAClBC,gBAAiBC,EAAgBC,SAEnC,CACEN,GAAI,0CACJC,KAAMX,EAAyByC,wBAC/B5B,iBAAkB,gCAClBC,gBAAiBC,EAAgBC,SAEnC,CACEN,GAAI,0CACJC,KAAMX,EAAyB0C,QAC/B7B,iBAAkB,GAClBC,gBAAiBC,EAAgBC,QAClC,EAGGd,GAA2C,CAC/C,CACEQ,GAAI,0CACJC,KAAMX,EAAyBiB,QAC/BJ,iBAAkB,oBAClBC,gBAAiBC,EAAgBC,SAEnC,CACEN,GAAI,0CACJC,KAAMX,EAAyBkB,WAC/BL,iBAAkB,uBAClBC,gBAAiBC,EAAgBC,SAEnC,CACEN,GAAI,0CACJC,KAAMX,EAAyBmB,SAC/BN,iBAAkB,yBAClBC,gBAAiBC,EAAgBC,SAEnC,CACEN,GAAI,0CACJC,KAAMX,EAAyBoB,gBAC/BP,iBAAkB,gCAClBC,gBAAiBC,EAAgBC,SAEnC,CACEN,GAAI,0CACJC,KAAMX,EAAyBqB,cAC/BR,iBAAkB,8BAClBC,gBAAiBC,EAAgBC,SAEnC,CACEN,GAAI,0CACJC,KAAMX,EAAyBsB,mBAC/BT,iBAAkB,oCAClBC,gBAAiBC,EAAgBC,SAEnC,CACEN,GAAI,0CACJC,KAAMX,EAAyBuB,YAC/BV,iBAAkB,4BAClBC,gBAAiBC,EAAgBC,SAEnC,CACEN,GAAI,0CACJC,KAAMX,EAAyBwB,eAC/BX,iBAAkB,+BAClBC,gBAAiBC,EAAgBC,SAEnC,CACEN,GAAI,0CACJC,KAAMX,EAAyByB,WAC/BZ,iBAAkB,2BAClBC,gBAAiBC,EAAgBC,SAEnC,CACEN,GAAI,0CACJC,KAAMX,EAAyB0B,UAC/Bb,iBAAkB,0BAClBC,gBAAiBC,EAAgBC,SAEnC,CACEN,GAAI,0CACJC,KAAMX,EAAyB2B,YAC/Bd,iBAAkB,4BAClBC,gBAAiBC,EAAgBC,SAEnC,CACEN,GAAI,0CACJC,KAAMX,EAAyB4B,kBAC/Bf,iBAAkB,qBAClBC,gBAAiBC,EAAgBC,SAEnC,CACEN,GAAI,0CACJC,KAAMX,EAAyB6B,yBAC/BhB,iBAAkB,4BAClBC,gBAAiBC,EAAgBC,SAEnC,CACEN,GAAI,0CACJC,KAAMX,EAAyB8B,uBAC/BjB,iBAAkB,0BAClBC,gBAAiBC,EAAgBC,SAEnC,CACEN,GAAI,0CACJC,KAAMX,EAAyB+B,kBAC/BlB,iBAAkB,qBAClBC,gBAAiBC,EAAgBC,SAEnC,CACEN,GAAI,0CACJC,KAAMX,EAAyBgC,oBAC/BnB,iBAAkB,uBAClBC,gBAAiBC,EAAgBC,SAEnC,CACEN,GAAI,0CACJC,KAAMX,EAAyBiC,uBAC/BpB,iBAAkB,uBAClBC,gBAAiBC,EAAgBC,SAEnC,CACEN,GAAI,0CACJC,KAAMX,EAAyBkC,iBAC/BrB,iBAAkB,wBAClBC,gBAAiBC,EAAgBC,SAEnC,CACEN,GAAI,0CACJC,KAAMX,EAAyBmC,oBAC/BtB,iBAAkB,yBAClBC,gBAAiBC,EAAgBC,SAEnC,CACEN,GAAI,0CACJC,KAAMX,EAAyBoC,mBAC/BvB,iBAAkB,wBAClBC,gBAAiBC,EAAgBC,SAEnC,CACEN,GAAI,0CACJC,KAAMX,EAAyBqC,2BAC/BxB,iBAAkB,mCAClBC,gBAAiBC,EAAgBC,SAEnC,CACEN,GAAI,0CACJC,KAAMX,EAAyBsC,6BAC/BzB,iBAAkB,qCAClBC,gBAAiBC,EAAgBC,SAEnC,CACEN,GAAI,0CACJC,KAAMX,EAAyBuC,wBAC/B1B,iBAAkB,gCAClBC,gBAAiBC,EAAgBC,SAEnC,CACEN,GAAI,0CACJC,KAAMX,EAAyBwC,uBAC/B3B,iBAAkB,+BAClBC,gBAAiBC,EAAgBC,SAEnC,CACEN,GAAI,0CACJC,KAAMX,EAAyByC,wBAC/B5B,iBAAkB,gCAClBC,gBAAiBC,EAAgBC,SAEnC,CACEN,GAAI,0CACJC,KAAMX,EAAyB0C,QAC/B7B,iBAAkB,GAClBC,gBAAiBC,EAAgBC,QAClC,EAGGb,GAAe,IAAIwC,IAAgC,CACvD,CAACC,GAAYC,KAAM,CAAC,GAAG5C,GAA2B,GAAGH,EAAsB,CAAC,EAC5E,CAAC8C,GAAYE,KAAM,CAAC,GAAG5C,GAA2B,GAAGH,EAAsB,CAAC,CAAC,CAC9E,EAEKK,GAAiB,IAAIuC,IAAgC,CACzD,CAACC,GAAYC,KAAM,CAAC,GAAG5C,EAAyB,CAAC,EACjD,CAAC2C,GAAYE,KAAM,CAAC,GAAG5C,EAAyB,CAAC,CAAC,CACnD,EAEKG,GAAc,IAAIsC,IAAgC,CACtD,CAACC,GAAYC,KAAM,CAAC,GAAG/C,EAAsB,CAAC,EAC9C,CAAC8C,GAAYE,KAAM,CAAC,GAAG/C,EAAsB,CAAC,CAAC,CAChD,IChcD,IAAAgD,GAAAC,EAAA,QCQM,SAAUC,GAA0BC,EAAuC,CAC/E,OAAQA,EAAI,CACV,KAAKC,GAAsBC,2BACzB,OAAOC,GAAmBC,OAC5B,KAAKH,GAAsBI,4BACzB,OAAOF,GAAmBG,SAC5B,QACE,OAAOH,GAAmBI,KAC9B,CACF,CAjBA,IAEYJ,GAFZK,GAAAC,EAAA,KAAAC,IAEYP,GAAZ,SAAYA,EAAkB,CAC5BA,OAAAA,EAAA,MAAA,QACAA,EAAA,OAAA,SACAA,EAAA,SAAA,WAHUA,CAIZ,EAJYA,IAAkB,CAAA,CAAA,ICMxB,SAAUQ,GAA0BC,EAAuC,CAC/E,OAAQA,EAAI,CACV,KAAKC,GAAsBC,cACzB,OAAOC,GAAmBC,OAC5B,KAAKH,GAAsBI,YACzB,OAAOF,GAAmBG,KAC5B,QACE,OAAOH,GAAmBI,KAC9B,CACF,CAjBA,IAEYJ,GAFZK,GAAAC,EAAA,KAAAC,IAEYP,GAAZ,SAAYA,EAAkB,CAC5BA,OAAAA,EAAA,MAAA,GACAA,EAAA,OAAA,SACAA,EAAA,KAAA,OAHUA,CAIZ,EAJYA,IAAkB,CAAA,CAAA,ICF9B,IAAAQ,GAAAC,EAAA,KAAAC,KACAC,KACAC,KACAC,KACAC,KACAC,KACAC,KACAC,KACAC,KACAC,KACAC,KACAC,KACAC,KACAC,KACAC,OCNM,SAAUC,GAAqBC,EAAkC,CACrE,OAAQA,EAAI,CACV,KAAKC,GAAiBC,sBACpB,OAAOC,GAAcC,OACvB,KAAKH,GAAiBI,qBACpB,OAAOF,GAAcG,MACvB,QACE,OAAOH,GAAcI,KACzB,CACF,CAjBA,IAEYJ,GAFZK,GAAAC,EAAA,KAAAC,IAEYP,GAAZ,SAAYA,EAAa,CACvBA,OAAAA,EAAA,MAAA,QACAA,EAAA,OAAA,SACAA,EAAA,MAAA,QAHUA,CAIZ,EAJYA,IAAa,CAAA,CAAA,ICMnB,SAAUQ,GAAqBC,EAAmC,CACtE,OAAQA,EAAK,CACX,KAAKC,GAAiBC,sBACpB,OAAOC,GAAcC,OACvB,KAAKH,GAAiBI,yBACpB,OAAOF,GAAcG,SACzB,CACA,OAAOH,GAAcI,KACvB,CAhBA,IAEYJ,GAFZK,GAAAC,EAAA,KAAAC,IAEYP,GAAZ,SAAYA,EAAa,CACvBA,OAAAA,EAAA,MAAA,QACAA,EAAA,OAAA,SACAA,EAAA,UAAA,YAHUA,CAIZ,EAJYA,IAAa,CAAA,CAAA,ICMnB,SAAUQ,GAA6BC,EAA8B,CACzE,OAAQA,EAAI,CACV,KAAKC,GAAyBC,gCAC5B,OAAOC,GAAsBC,QAC/B,KAAKH,GAAyBI,iCAC5B,OAAOF,GAAsBG,SAC/B,QACE,OAAOH,GAAsBI,KACjC,CACF,CAjBA,IAEYJ,GAFZK,GAAAC,EAAA,KAAAC,IAEYP,GAAZ,SAAYA,EAAqB,CAC/BA,OAAAA,EAAA,MAAA,QACAA,EAAA,SAAA,WACAA,EAAA,QAAA,UAHUA,CAIZ,EAJYA,IAAqB,CAAA,CAAA,ICkC3B,SAAUQ,GAAeC,EAAsB,CACnD,MAAO,CACLC,WAAYD,EAAKC,YAAc,GAC/BC,QAASF,EAAKE,QAAU,IAAIC,KAAKH,EAAKE,OAAO,EAAIE,OACjDC,SAAUL,EAAKK,SAAWC,EAAgBN,EAAKK,QAAQ,EAAIE,EAASC,IACpEC,cAAeC,GAAqBV,EAAKS,aAAa,EACtDE,YAAaX,EAAKW,YAAcX,EAAKW,YAAYC,IAAKC,GAAMC,GAAyBD,CAAC,CAAC,EAAI,CAAA,EAC3FE,MAAOf,EAAKe,OAAS,EACrBC,YAAahB,EAAKgB,aAAe,GACjCC,oBAAqBjB,EAAKiB,qBAAuB,GACjDC,OAAQC,GAAqBnB,EAAKkB,MAAM,EAE5C,CAEM,SAAUJ,GAAyBd,EAAuC,CAC9E,MAAO,CACLoB,YAAapB,EAAKoB,aAAe,GACjCC,OAAQrB,EAAKqB,QAAU,EACvBC,KAAMtB,EAAKsB,KAAOC,GAA6BvB,EAAKsB,IAAI,EAAIE,GAAsBC,MAEtF,CAvDA,IAAAC,GAAAC,EAAA,KAAAC,KACAC,KACAC,KACAC,OCoDA,SAASC,GAA0BC,EAAuB,CACxD,OAAOC,GAAwBC,IAAIF,CAAC,GAAKG,EAC3C,CAUM,SAAUC,GAAsBJ,EAA0B,CAC9D,OAAOK,GAAoBH,IAAIF,CAAC,GAAKM,EACvC,CAEM,SAAUC,GAA6BC,EAAiB,CAC5D,MAAO,CACLC,SAAUV,GAA0BS,EAAEC,QAAQ,EAC9CC,YAAaN,GAAsBI,EAAEE,WAAW,EAChDC,OAAQH,EAAEG,OACVC,eAAgBJ,EAAEI,eAClBC,YAAaL,EAAEK,YACfC,WAAYN,EAAEM,WACdC,eAAgBP,EAAEO,eAClBC,QAASR,EAAEQ,QACXC,KAAMT,EAAES,KACRC,MAAOV,EAAEU,MACTC,QAASX,EAAEW,QACXC,QAASZ,EAAEY,QACXC,QAASb,EAAEa,QAEf,CAxFA,IAkBYC,GAYAC,EAeNpB,GACAF,GAcAK,GACAD,GA7DNmB,GAAAC,EAAA,KAAAC,IAkBYJ,GAAZ,SAAYA,EAAW,CACrBA,OAAAA,EAAA,QAAA,WACAA,EAAA,MAAA,QACAA,EAAA,OAAA,SACAA,EAAA,QAAA,UAJUA,CAKZ,EALYA,IAAW,CAAA,CAAA,EAYXC,EAAZ,SAAYA,EAAe,CACzBA,OAAAA,EAAA,KAAA,mBACAA,EAAA,KAAA,OACAA,EAAA,WAAA,aACAA,EAAA,IAAA,MACAA,EAAA,YAAA,cACAA,EAAA,SAAA,WACAA,EAAA,QAAA,UAPUA,CAQZ,EARYA,GAAe,CAAA,CAAA,EAerBpB,GAAkB,CAAEwB,GAAIJ,EAAgBK,QAASC,MAAO,SAAS,EACjE5B,GAA0B,IAAI6B,IAAgD,CAClF,CAACC,GAAqBC,KAAM,CAAEL,GAAIJ,EAAgBS,KAAMH,MAAO,kBAAkB,CAAE,EACnF,CAACE,GAAqBE,KAAM,CAAEN,GAAIJ,EAAgBU,KAAMJ,MAAO,MAAM,CAAE,EACvE,CAACE,GAAqBG,WAAY,CAAEP,GAAIJ,EAAgBW,WAAYL,MAAO,YAAY,CAAE,EACzF,CAACE,GAAqBI,IAAK,CAAER,GAAIJ,EAAgBY,IAAKN,MAAO,KAAK,CAAE,EACpE,CAACE,GAAqBK,YAAa,CAAET,GAAIJ,EAAgBa,YAAaP,MAAO,aAAa,CAAE,EAC5F,CAACE,GAAqBM,SAAU,CAAEV,GAAIJ,EAAgBc,SAAUR,MAAO,UAAU,CAAE,EACnF,CAACE,GAAqBH,QAASzB,EAAe,CAAC,CAChD,EAMKG,GAAqB,CAAEqB,GAAIL,GAAYM,QAASC,MAAO,SAAS,EAChExB,GAAsB,IAAIyB,IAA+C,CAC7E,CAACQ,GAAwBC,mBAAoB,CAAEZ,GAAIL,GAAYkB,MAAOX,MAAO,OAAO,CAAE,EACtF,CAACS,GAAwBG,oBAAqB,CAAEd,GAAIL,GAAYoB,OAAQb,MAAO,QAAQ,CAAE,EACzF,CAACS,GAAwBK,qBAAsB,CAAEhB,GAAIL,GAAYsB,QAASf,MAAO,UAAU,CAAE,EAC7F,CAACS,GAAwBO,qBAAsBvC,EAAkB,CAAC,CACnE,IClED,IAAAwC,GAAAC,EAAA,KACAD,OCoEM,SAAUE,GAA0BC,EAAkB,CAC1D,OAAQA,EAAC,CACP,KAAKC,GAAgBC,2BACnB,OAAOC,GAAmBC,MAC5B,KAAKH,GAAgBI,+BACnB,OAAOF,GAAmBG,UAC5B,KAAKL,GAAgBM,gCACnB,OAAOJ,GAAmBK,WAC5B,KAAKP,GAAgBQ,2CACnB,OAAON,GAAmBO,oBAC5B,QACE,MACJ,CACF,CAEM,SAAUC,GAAwBX,EAAqB,CAC3D,OAAQA,EAAC,CACP,KAAKG,GAAmBG,UACtB,OAAOL,GAAgBI,+BACzB,KAAKF,GAAmBK,WACtB,OAAOP,GAAgBM,gCACzB,KAAKJ,GAAmBO,oBACtB,OAAOT,GAAgBQ,2CACzB,QACE,OAAOR,GAAgBC,0BAC3B,CACF,CAEM,SAAUU,GAAiCZ,EAAmB,CAClE,OAAQA,EAAC,CACP,KAAKa,GAAiBC,mCACpB,OAAOC,GAA0BX,MACnC,KAAKS,GAAiBG,iDACpB,OAAOD,GAA0BE,iBACnC,KAAKJ,GAAiBK,sDACpB,OAAOH,GAA0BI,sBACnC,KAAKN,GAAiBO,qCACpB,OAAOL,GAA0BM,QACnC,QACE,MACJ,CACF,CAEM,SAAUC,GAA0BtB,EAAkB,CAC1D,OAAQA,EAAC,CACP,KAAKuB,GAAgBC,2BACnB,OAAOC,GAAmBrB,MAC5B,KAAKmB,GAAgBG,6BACnB,OAAOD,GAAmBE,QAC5B,KAAKJ,GAAgBK,+BACnB,OAAOH,GAAmBI,UAC5B,KAAKN,GAAgBO,4BACnB,OAAOL,GAAmBM,OAC5B,KAAKR,GAAgBS,qCACnB,OAAOP,GAAmBQ,eAC5B,KAAKV,GAAgBW,8BACnB,OAAOT,GAAmBU,SAC5B,QACE,MACJ,CACF,CA2EM,SAAUC,GAAqBC,EAAsB,CACzD,MAAO,CACLC,GAAID,EAAKC,IAAM,GACfC,WAAYF,EAAKE,YAAc,GAC/BC,QAASH,EAAKG,SAAW,KACzBC,aAAcJ,EAAKI,cAAgB,GACnCC,OAAQL,EAAKK,QAAU,EACvBC,YAAaN,EAAKM,aAAe,GACjCC,cAAeP,EAAKO,cACpBC,YAAaR,EAAKQ,aAAe,GACjCC,WAAYT,EAAKS,YAAc,GAC/BC,OAAQC,GAA2BX,EAAKU,OAAQV,EAAKY,QAAQ,EAC7DC,YAAab,EAAKa,YAClBC,eAAgBd,EAAKc,eACrBC,eAAgBf,EAAKe,eACrBC,QAASC,GAAejB,EAAKgB,OAAO,EACpCE,YAAaC,GAAmBnB,EAAKkB,WAAW,EAChDE,QAASC,GAAqBrB,EAAKoB,OAAO,EAE9C,CAEM,SAAUC,GAAqBD,EAA0B,CAC7D,OAAQA,GAAW,CAAA,GAAIE,IAAKC,GAA4BC,GAAoBD,CAAM,CAAC,CACrF,CAEM,SAAUC,GAAoBD,EAAuB,CACzD,MAAO,CACLtB,GAAIsB,EAAOtB,IAAM,GACjBI,OAAQkB,EAAOlB,QAAU,EACzBoB,SAAUF,EAAOnB,cAAgB,GACjCsB,aAAchE,GAA0B6D,EAAOG,YAAY,EAC3DhB,OAAQzB,GAA0BsC,EAAOb,MAAM,EAC/CiB,cAAepD,GAAiCgD,EAAOI,aAAa,EACpExB,QAASoB,EAAOpB,QAAU,IAAIyB,KAAKL,EAAOpB,OAAO,EAAI0B,OACrDC,QAASP,EAAOO,QAAU/B,GAAqBwB,EAAOO,OAAO,EAAID,OAErE,CAEM,SAAUE,GAAoBC,EAAuB,CACzD,MAAO,CACL/B,GAAI+B,EAAO/B,GACXgC,YAAaD,EAAOC,YACpB5B,OAAQ2B,EAAO3B,OACfD,aAAc4B,EAAO5B,aACrBM,OAAQwB,GAA0BF,EAAOtB,MAAM,EAC/CyB,KAAMC,GAAwBJ,EAAOG,IAAI,EACzCE,eAAgBL,EAAOK,eACvBC,SAAUN,EAAOM,SACjBC,OAAQP,EAAOO,OACf1B,YAAamB,EAAOnB,YACpBC,eAAgBkB,EAAOlB,eAE3B,CAEM,SAAUoB,GAA0BxB,EAA6B,CACrE,OAAQA,EAAM,CACZ,KAAK8B,GAAsBC,mBACzB,OAAOC,GAAmBC,KAC5B,KAAKH,GAAsBI,sBACzB,OAAOF,GAAmBpD,QAC5B,KAAKkD,GAAsBK,yBACzB,OAAOH,GAAmBI,UAC5B,KAAKN,GAAsBO,uBACzB,OAAOL,GAAmB5C,SAC5B,KAAK0C,GAAsBQ,qBACzB,OAAON,GAAmBhD,OAC5B,QACE,OAAOgD,GAAmB3E,KAC9B,CACF,CAEM,SAAUqE,GAAwBa,EAAsB,CAC5D,OAAQA,EAAC,CACP,KAAKC,GAAoBC,yBACvB,OAAOC,GAAiBC,YAC1B,KAAKH,GAAoBI,iBACvB,OAAOF,GAAiBG,KAC1B,QACE,OAAOH,GAAiBrF,KAC5B,CACF,CAEM,SAAUyF,GAAkBC,EAAyB,CACzD,MAAO,CACLpD,OAAQoD,EAAWpD,OACnBoB,SAAUgC,EAAWhC,SACrBjB,YAAaiD,EAAWjD,YACxBQ,QAASC,GAAewC,EAAWzC,OAAO,EAC1C0C,IAAKD,EAAWC,IAChBzD,GAAIwD,EAAWxD,GACf0D,IAAKF,EAAWE,IAChBpC,OAAQkC,EAAWlC,OAASC,GAAoBiC,EAAWlC,MAAM,EAAIM,OACrE1B,QAASsD,EAAWtD,QAExB,CAEM,SAAUyD,GAAyBC,EAAiC,CACxE,MAAO,CACL/B,QAAS+B,EAAY/B,QAAU/B,GAAqB8D,EAAY/B,OAAO,EAAID,OAC3EN,OAAQsC,EAAYtC,OAASC,GAAoBqC,EAAYtC,MAAM,EAAIM,OACvEiC,cAAeD,EAAYC,cAAgB/B,GAAoB8B,EAAYC,aAAa,EAAIjC,OAC5F4B,WAAYI,EAAYJ,WAAaD,GAAkBK,EAAYJ,UAAU,EAAI5B,OAErF,CAEA,SAASV,GAAmBD,EAAwC,CAClE,MAAO,CACLmB,eAAgBnB,EAAYmB,eAC5B0B,SAAUC,GAAgB9C,EAAY6C,QAAQ,EAElD,CAEA,SAASC,GAAgBD,EAAkB,CACzC,OAAQA,EAAQ,CACd,KAAKE,GAASC,eACZ,OAAOC,EAAgBC,KACzB,KAAKH,GAASI,qBACZ,OAAOF,EAAgBG,WACzB,KAAKL,GAASM,eACZ,OAAOJ,EAAgBK,KACzB,KAAKP,GAASQ,mBACZ,OAAON,EAAgBO,SACzB,KAAKT,GAASU,cACZ,OAAOR,EAAgBS,IACzB,KAAKX,GAASY,sBACZ,OAAOV,EAAgBW,YACzB,QACE,OAAOX,EAAgBY,OAC3B,CACF,CAEM,SAAUpE,GACdD,EACAE,EAAiB,CAEjB,GAAIA,EACF,OAAOoE,GAAoBC,SAE7B,OAAQvE,EAAM,CACZ,KAAKwE,GAAiBC,yBACpB,OAAOH,GAAoBxF,UAC7B,KAAK0F,GAAiBE,sBACpB,OAAOJ,GAAoBtF,OAC7B,KAAKwF,GAAiBG,wBACpB,OAAOL,GAAoBM,SAC7B,KAAKJ,GAAiBK,kCACpB,OAAOP,GAAoBQ,iBAC7B,QACE,MACJ,CACF,CAlWA,IAmBYR,GAQAlH,GAOAY,GAOAU,GASAsD,GASAU,GA3DZqC,GAAAC,EAAA,KAAAC,IAgBAC,KACAC,KAEYb,GAAZ,SAAYA,EAAmB,CAC7BA,OAAAA,EAAA,OAAA,SACAA,EAAA,UAAA,YACAA,EAAA,SAAA,WACAA,EAAA,iBAAA,qBACAA,EAAA,SAAA,WALUA,CAMZ,EANYA,IAAmB,CAAA,CAAA,EAQnBlH,GAAZ,SAAYA,EAAkB,CAC5BA,OAAAA,EAAA,MAAA,QACAA,EAAA,UAAA,YACAA,EAAA,WAAA,aACAA,EAAA,oBAAA,wBAJUA,CAKZ,EALYA,IAAkB,CAAA,CAAA,EAOlBY,GAAZ,SAAYA,EAAyB,CACnCA,OAAAA,EAAA,MAAA,QACAA,EAAA,iBAAA,sBACAA,EAAA,sBAAA,2BACAA,EAAA,QAAA,UAJUA,CAKZ,EALYA,IAAyB,CAAA,CAAA,EAOzBU,GAAZ,SAAYA,EAAkB,CAC5BA,OAAAA,EAAA,MAAA,QACAA,EAAA,QAAA,UACAA,EAAA,UAAA,YACAA,EAAA,OAAA,SACAA,EAAA,eAAA,kBACAA,EAAA,SAAA,WANUA,CAOZ,EAPYA,IAAkB,CAAA,CAAA,EASlBsD,GAAZ,SAAYA,EAAkB,CAC5BA,OAAAA,EAAA,MAAA,QACAA,EAAA,KAAA,OACAA,EAAA,QAAA,UACAA,EAAA,UAAA,aACAA,EAAA,SAAA,WACAA,EAAA,OAAA,SANUA,CAOZ,EAPYA,IAAkB,CAAA,CAAA,EASlBU,GAAZ,SAAYA,EAAgB,CAC1BA,OAAAA,EAAA,MAAA,QACAA,EAAA,YAAA,eACAA,EAAA,KAAA,OAHUA,CAIZ,EAJYA,IAAgB,CAAA,CAAA,ICxB5B,SAAS0C,GAAyBC,EAAiD,CACjF,MAAO,CACLC,YAAaD,EAAEC,aAAe,GAC9BC,KAAMF,EAAEE,MAAQ,GAChBC,OAAQH,EAAEG,QAAU,GAExB,CAEA,SAASC,GACPC,EAA+E,CAE/E,OAAKA,EAGE,CACLC,IAAKD,EAAaC,KAAO,CAAA,EACzBC,QAASF,EAAaG,OAAS,CAAA,GAAIC,IAAKT,GAAMD,GAAyBC,CAAC,CAAC,EACzEU,cAAeL,EAAaK,eAAiB,CAAA,EAC7CC,gBAAiB,IAAIC,KAAKP,EAAaM,iBAAmB,CAAC,GANpD,CAAEL,IAAK,CAAA,EAAIC,OAAQ,CAAA,EAAIG,cAAe,CAAA,CAAE,CAQnD,CAEM,SAAUG,GAAsBC,EAAoC,CACxE,MAAO,CACLC,gBAAiBD,EAAMC,iBAAmB,GAC1CC,iBAAkBF,EAAME,kBAAoB,GAC5CC,eAAgBH,EAAMG,eACtBZ,aAAcD,GAAoBU,EAAMT,YAAY,EACpDa,mBAAoBd,GAAoBU,EAAMI,kBAAkB,EAEpE,CAlCA,IAAAC,GAAAC,EAAA,QC/BA,IAAaC,GAQAC,GARbC,GAAAC,EAAA,KAAaH,GAAP,KAAkC,CAGtCI,YAAYC,EAAkB,CAC5B,KAAKA,WAAaA,CACpB,GAGWJ,GAAP,KAAiC,CAGrCG,YAAYE,EAAmB,CAC7B,KAAKA,YAAcA,CACrB,KCbF,IAqCaC,GArCbC,GAAAC,EAAA,KAEAC,IACAC,KACAC,IAmBAC,KACAC,KACAC,KAQAC,KACAC,aAGaV,IAAc,IAAA,CAArB,IAAOA,EAAP,MAAOA,CAAc,CACzBW,YAAoBC,EAA6B,CAA7B,KAAAA,WAAAA,CAAgC,CAEpDC,aAAaC,EAA6BC,EAAgBC,EAAgB,CACxE,IAAMC,EAAM,IAAIC,GAAmB,CACjCJ,QAASA,EACTK,cAAe,IAAIC,EAAoB,CAAEL,OAAAA,EAAQC,SAAAA,CAAQ,CAAE,EAC5D,EACD,OAAO,KAAKJ,WAAWS,KAAKJ,CAAG,EAAEK,KAC/BC,EAAKC,GAAY,CACf,IAAMC,GAAYD,EAASC,UAAY,CAAA,GAAIF,IAAKG,GAAYC,GAAeD,CAAO,CAAC,EACnF,OAAO,IAAIE,EAAcH,EAAUD,EAASK,eAAeC,WAAYN,EAASK,eAAeE,OAAO,CACxG,CAAC,CAAC,CAEN,CAEAC,qBAAqBC,EAAoBC,EAAkB,CACzD,IAAMjB,EAAM,IAAIkB,GAA4B,CAC1CF,WAAYA,EACZC,WAAYA,EACb,EACD,OAAO,KAAKtB,WAAWwB,cAAcnB,CAAG,EAAEK,KACxCC,EAAKC,IACI,CACLa,mBAAoBb,EAASa,mBAC7BC,SAAUd,EAASc,UAEtB,CAAC,CAEN,CAEAC,UAAUN,EAAoBO,EAAiB,CAC7C,OAAO,KAAK5B,WACT2B,UAAU,CACTN,WAAYA,EACZO,UAAWA,EACZ,EACAlB,KAAKC,EAAKkB,GAASC,GAAqBD,EAAKf,OAAO,CAAC,CAAC,CAC3D,CAEAiB,WACEV,EACAlB,EAAS,GACTC,EAAW,GACX4B,EACAV,EACAW,EACAC,EAAqB,CAErB,IAAMC,EAAW,IAAIC,KAAK,sBAAsB,EAAEC,QAAO,EACnDnC,EACJ,IAAIoC,GAAmD,CACrDN,SAAUA,GAAY,GACvB,EACH,OAAMC,GAAkBA,EAAeI,QAAO,IAAOF,IACnDjC,EAAQ+B,eAAiBA,GAErBC,GAAkBA,EAAeG,QAAO,IAAOF,IACnDjC,EAAQgC,eAAiBA,GAEpB,KAAKlC,WACT+B,WACC,IAAIQ,GAA0B,CAC5BlB,WAAYA,EACZnB,QAASA,EACTK,cAAe,IAAIC,EAAoB,CAAEL,OAAAA,EAAQC,SAAAA,CAAQ,CAAE,EAC5D,CAAC,EAEHM,KACCC,EAAKkB,GAAoC,CACvC,IAAMW,GAAkBX,EAAKhB,UAAY,CAAA,GAAIF,IAAKG,IAAYgB,GAAqBhB,EAAO,CAAC,EAC3F,OAAO,IAAIE,EAAcwB,EAAgBX,EAAKZ,eAAeC,WAAYW,EAAKZ,eAAeE,OAAO,CACtG,CAAC,CAAC,CAER,CAEAsB,uBACEpB,EACAlB,EAAS,GACTC,EAAW,GACX4B,EACAC,EACAC,EACAQ,EACApB,EAAmB,CAEnB,IAAMa,EAAW,IAAIC,KAAK,sBAAsB,EAAEC,QAAO,EACnDnC,EACJ,IAAIyC,GAA2D,CAC7DX,SAAUA,GAAY,GACvB,EACH,OAAMC,GAAkBA,EAAeI,QAAO,IAAOF,IACnDjC,EAAQ+B,eAAiBA,GAErBC,GAAkBA,EAAeG,QAAO,IAAOF,IACnDjC,EAAQgC,eAAiBA,IAEvBQ,IAAiBE,QAAaF,KAChCxC,EAAQ2C,KAAOC,GAAsBC,iCAEnCzB,IACFpB,EAAQoB,WAAaA,GAEhB,KAAKtB,WACTyC,uBACC,IAAIO,GAA8B,CAChC3B,WAAYA,EACZnB,QAASA,EACTK,cAAe,IAAIC,EAAoB,CAAEL,OAAAA,EAAQC,SAAAA,CAAQ,CAAE,EAC5D,CAAC,EAEHM,KACCC,EAAKkB,GAAwC,CAC3C,IAAMoB,IAAsBpB,EAAKqB,cAAgB,CAAA,GAAIvC,IAAKwC,IACxDC,GAAyBD,EAAW,CAAC,EAEvC,OAAO,IAAInC,EAAciC,GAAoBpB,EAAKZ,eAAeC,WAAYW,EAAKZ,eAAeE,OAAO,CAC1G,CAAC,CAAC,CAER,CAEAkC,iBAAiBhC,EAAoBiC,EAAiB,CACpD,OAAO,KAAKtD,WACTqD,iBAAiB,CAChBhC,WAAYA,EACZiC,UAAWA,EACZ,EACA5C,KAAKC,EAAKkB,GAAS0B,GAAe1B,EAAK2B,OAAO,CAAC,CAAC,CACrD,CAEAC,mBAAmBpC,EAAoBlB,EAAS,GAAIC,EAAW,GAAE,CAC/D,OAAO,KAAKJ,WACTyD,mBACC,IAAIC,GAA0B,CAC5BrC,WAAYA,EACZd,cAAe,IAAIC,EAAoB,CAAEL,OAAAA,EAAQC,SAAAA,CAAQ,CAAE,EAC5D,CAAC,EAEHM,KACCC,EAAKkB,GAAoC,CACvC,IAAMW,GAAkBX,GAAM8B,UAAY,CAAA,GAAIhD,IAAKiD,GAAML,GAAeK,CAAC,CAAC,EAC1E,OAAO,IAAI5C,EACTwB,EACAX,GAAMZ,eAAeC,YAAc,GACnCW,GAAMZ,eAAeE,SAAW,EAAK,CAEzC,CAAC,CAAC,CAER,CAEA0C,aAAaxC,EAAkB,CAC7B,IAAMhB,EAAM,IAAIyD,GAAoB,CAAEzC,WAAAA,CAAU,CAAE,EAClD,OAAO,KAAKrB,WAAW6D,aAAaxD,CAAG,EAAEK,KAAKC,EAAKoD,GAA4BC,GAAsBD,CAAC,CAAC,CAAC,CAC1G,CAEAE,sBAAsB5C,EAAkB,CACtC,IAAMhB,EAAM,IAAI6D,GAA6B,CAAE7C,WAAAA,CAAU,CAAE,EAC3D,OAAO,KAAKrB,WAAWiE,sBAAsB5D,CAAG,EAAEK,KAAKC,EAAKkB,GAASA,EAAKsC,OAAO,CAAC,CACpF,CAEAC,wBAAwB/C,EAAoBgD,EAAoBC,EAAkB,CAChF,OAAO,KAAKtE,WACToE,wBAAwB,CACvB/C,WAAAA,EACAgD,WAAAA,EACAC,WAAAA,EACD,EACA5D,KAAKC,EAAKkB,GAASA,EAAK0C,SAAS,CAAC,CACvC,CAEAC,kBAAkBnD,EAAkB,CAClC,OAAO,KAAKrB,WAAWwE,kBAAkB,CAAEnD,WAAAA,CAAU,CAAE,EAAEX,KACvDC,EAAKkB,IACI,CACL4C,oBAAqB5C,EAAK4C,oBAC1BC,gBAAiB7C,EAAK6C,iBAEzB,CAAC,CAEN,CAEAC,qBAAqBtD,EAAoBoD,EAA2B,CAClE,OAAO,KAAKzE,WAAW2E,qBAAqB,CAAEtD,WAAAA,EAAYoD,oBAAAA,CAAmB,CAAE,EAAE/D,KAAKkE,GAAM,IAAI,CAAC,CACnG,CAEAC,eACExD,EACAiC,EACA1B,EACAkD,EACAC,EAAiC,CAEjC,OAAO,KAAK/E,WACT6E,eAAe,CACdxD,WAAYA,EACZiC,UAAWA,EACX1B,UAAWA,EACXmD,SAAU,CACRC,eAAgBD,GAAUC,eAC1BC,qBAAsBF,GAAUE,qBAChCC,aAAcH,GAAUG,aACxBC,mBAAoBJ,GAAUI,mBAC9BC,wBAAyBL,GAAUK,wBACnCC,4BAA6BN,GAAUM,4BACvCC,cAAeP,GAAUO,cACzBC,4BAA6BR,GAAUQ,4BACvCC,oBAAqBT,GAAUS,qBAEjCV,OAAQA,EACT,EACApE,KAAKkE,GAAM,IAAI,CAAC,CACrB,CAEAa,aAAapE,EAAoBiC,EAAiB,CAChD,OAAO,KAAKtD,WACT0F,mBAAmB,CAClBrE,WAAYA,EACZiC,UAAWA,EACZ,EACA5C,KAAKkE,GAAM,IAAI,CAAC,CACrB,CAEAe,8BACEC,EAAqE,CAErE,IAAIC,EACJ,OAAID,aAAuBE,GACzBD,EAAU,IAAIE,GAAqC,CAAE1E,WAAYuE,EAAYvE,UAAU,CAAE,EAEzFwE,EAAU,IAAIE,GAAqC,CAAEC,YAAaJ,EAAYI,WAAW,CAAE,EAEtF,KAAKhG,WAAW2F,8BAA8BE,CAAO,EAAEnF,KAAKC,EAAKkB,GAASA,EAAKoE,WAAW,CAAC,CACpG,CAEAC,aACE7E,EACAO,EACAuE,EACAC,EAA0B,CAE1B,OAAO,KAAKpG,WACTkG,aAAa,CAAE7E,WAAAA,EAAYO,UAAAA,EAAWuE,OAAAA,EAAQC,OAAQC,GAAwBD,CAAM,CAAC,CAAE,EACvF1F,KAAKC,EAAKkB,GAASC,GAAqBD,EAAKf,OAAO,CAAC,CAAC,CAC3D,yCAnPW1B,GAAckH,EAAAC,EAAA,CAAA,CAAA,wBAAdnH,EAAcoH,QAAdpH,EAAcqH,UAAAC,WADD,MAAM,CAAA,EAC1B,IAAOtH,EAAPuH,SAAOvH,CAAc,GAAA,ICrC3B,IAAAwH,GAAAC,EAAA,KAAAC,KACAF,KACAG,KACAC,KACAC,KACAC,KACAC,KACAC,KACAC,OCRA,IAMMC,GAEAC,GAGOC,GAXbC,GAAAC,EAAA,KACAC,KAEAC,mBAGMN,GAAkB,mCAElBC,GAAkB,mCAGXC,IAAa,IAAA,CAApB,IAAOA,EAAP,MAAOA,CAAa,CAGxBK,YAAoBC,EAAgDC,EAA8B,CAA9E,KAAAD,mBAAAA,EAAgD,KAAAC,eAAAA,EAClE,KAAKC,iBACH,KAAKF,mBAAmBG,eAAc,IAAOC,GAAYC,KAAOb,GAAkBC,EACtF,CAGOa,qBAAmB,CACxB,OAAO,KAAKJ,gBACd,CAGOK,uBAAuBC,EAAkB,CAC9C,OAAO,KAAKP,eAAeQ,8BAA8B,IAAIC,GAA4BF,CAAU,CAAC,CACtG,CAIOG,sBAAsBC,EAAmB,CAC9C,OAAO,KAAKX,eAAeQ,8BAA8B,IAAII,GAA2BD,CAAW,CAAC,CACtG,yCAtBWlB,GAAaoB,EAAAC,EAAA,EAAAD,EAAAE,EAAA,CAAA,CAAA,wBAAbtB,EAAauB,QAAbvB,EAAawB,UAAAC,WADA,MAAM,CAAA,EAC1B,IAAOzB,EAAP0B,SAAO1B,CAAa,GAAA,ICSpB,SAAU2B,GAAwBC,EAAoB,CAC1D,GAAKA,EAIL,MAAO,CACLC,SAAUD,EAAGC,SACbC,iBAAkBF,EAAGE,iBACrBC,KAAMH,EAAGG,KACTC,gBAAiBJ,EAAGI,iBAAmB,GAE3C,CA7BA,IAAaC,GAAbC,GAAAC,EAAA,KAAaF,GAAmBG,GACvB,CAAC,CAACA,ICHX,IAAAC,GAAAC,EAAA,KAAAD,OCSM,SAAUE,GAAoBC,EAAkB,CACpD,OAAQA,EAAC,CACP,KAAKC,EAAgBC,oCACnB,OAAOC,EAAaC,sBACtB,KAAKH,EAAgBI,oCACnB,OAAOF,EAAaG,sBACtB,KAAKL,EAAgBM,6BACnB,OAAOJ,EAAaK,cACxB,CACA,OAAOL,EAAaM,YACtB,CAEM,SAAUC,GAAkBV,EAAe,CAC/C,OAAQA,EAAC,CACP,KAAKG,EAAaC,sBAChB,OAAOH,EAAgBC,oCACzB,KAAKC,EAAaG,sBAChB,OAAOL,EAAgBI,oCACzB,KAAKF,EAAaK,eAChB,OAAOP,EAAgBM,4BAC3B,CACA,OAAON,EAAgBU,0BACzB,CA/BA,IAEYR,EAFZS,GAAAC,EAAA,KAAAC,IAEYX,EAAZ,SAAYA,EAAY,CACtBA,OAAAA,EAAA,aAAA,eACAA,EAAA,eAAA,iBACAA,EAAA,sBAAA,wBACAA,EAAA,sBAAA,wBAJUA,CAKZ,EALYA,GAAY,CAAA,CAAA,ICmBlB,SAAUY,GAAgBC,EAAwB,CACtD,MAAO,CACLC,WAAYD,EAAYC,YAAc,GACtCC,WAAYF,EAAYE,YAAc,EACtCC,GAAIH,EAAYG,IAAM,GACtBC,aAAcC,GAAoBL,EAAYI,YAAY,EAC1DE,OAAQN,EAAYM,QAAU,EAC9BC,MAAOP,EAAYO,MAAQ,IAAIC,KAAKR,EAAYO,KAAK,EAAIE,OACzDC,IAAKV,EAAYU,IAAM,IAAIF,KAAKR,EAAYU,GAAG,EAAID,OACnDE,gBAAiBX,EAAYW,iBAAmB,GAChDC,QAASZ,EAAYY,QAAU,IAAIJ,KAAKR,EAAYY,OAAO,EAAIH,OAC/DI,QAASb,EAAYa,QAAU,IAAIL,KAAKR,EAAYa,OAAO,EAAIJ,OAC/DK,IAAKd,EAAYe,KAAO,GACxBC,YAAahB,EAAYgB,aAAe,GACxCC,WAAYjB,EAAYiB,YAAc,GACtCC,SAAUlB,EAAYkB,UAAYC,GAASC,gBAC3CC,eAAgBrB,EAAYqB,gBAAkB,GAElD,CAvCA,IAAAC,GAAAC,EAAA,KAAAC,IACAC,OCMM,SAAUC,GAAsBC,EAAoB,CACxD,OAAQA,EAAE,CACR,KAAKC,GAAiBC,OACpB,OAAOC,GAASC,gBAClB,KAAKH,GAAiBI,UACpB,OAAOF,GAASG,kBACpB,CACF,CAdA,IAEYL,GAFZM,GAAAC,EAAA,KAAAC,IAEYR,GAAZ,SAAYA,EAAgB,CAC1BA,OAAAA,EAAA,OAAA,SACAA,EAAA,UAAA,WAFUA,CAGZ,EAHYA,IAAgB,CAAA,CAAA,ICD5B,IAkBaS,GAlBbC,GAAAC,EAAA,KAEAC,IACAC,KACAC,IAQAC,KACAC,KAEAC,aAGaR,IAAe,IAAA,CAAtB,IAAOA,EAAP,MAAOA,CAAe,CAC1BS,YAAoBC,EAA+B,CAA/B,KAAAA,YAAAA,CAAkC,CAEtDC,KAAKC,EAA8BC,EAAgBC,EAAgB,CACjE,IAAMC,EAAM,IAAIC,GAAqB,CACnCJ,QAASA,EACTK,cAAe,IAAIC,EAAoB,CAAEL,OAAAA,EAAQC,SAAAA,CAAQ,CAAE,EAC5D,EACD,OAAO,KAAKJ,YAAYC,KAAKI,CAAG,EAAEI,KAChCC,EAAKC,GAAY,CACf,IAAMC,GAAaD,EAASC,WAAa,CAAA,GAAIF,IAAKG,GAASC,GAAgBD,CAAI,CAAC,EAChF,OAAO,IAAIE,EAAcH,EAAWD,EAASK,eAAeC,WAAYN,EAASK,eAAeE,OAAO,CACzG,CAAC,CAAC,CAEN,CAEAC,OACEC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EAAmBC,GAAiBC,UACpCC,EAAuB,CAEvB,IAAMC,GAAQ,IAAIC,KAAKV,CAAa,EAC9BW,GAAKC,GAAkBd,CAAY,EACnCe,GAAWC,GAAsBT,CAAgB,EAEjDU,GAAI,IAAIC,GAAsB,CAClCpB,WAAYA,EACZC,IAAKA,EACLC,aAAca,GACdZ,OAAQA,EACRU,MAAOA,GACPQ,gBAAiBf,EACjBC,YAAaA,EACbC,WAAYA,EACZS,SAAUA,GACVL,eAAgBA,EACjB,EAED,OAAIP,GAAeA,IAAgB,KACjCc,GAAEG,IAAM,IAAIR,KAAKT,CAAW,GAGvB,KAAKzB,YAAYmB,OAAOoB,EAAC,EAAE9B,KAAKC,EAAKiC,IAASA,GAAKC,EAAE,CAAC,CAC/D,CAEAC,OACEzB,EACAwB,EACAtB,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAI,EAAuB,CAEvB,IAAMC,EAAQ,IAAIC,KAAKV,CAAa,EAC9BW,GAAKC,GAAkBd,CAAY,EAEnCiB,GAAI,IAAIO,GAAsB,CAClC1B,WAAYA,EACZwB,GAAIA,EACJtB,aAAca,GACdZ,OAAQA,EACRU,MAAOA,EACPQ,gBAAiBf,EACjBC,YAAaA,EACbC,WAAYA,EACZI,eAAgBA,EACjB,EAED,OAAIP,GAAeA,IAAgB,KACjCc,GAAEG,IAAM,IAAIR,KAAKT,CAAW,GAEvB,KAAKzB,YAAY6C,OAAON,EAAC,CAClC,CAEAQ,OAAO3B,EAAoBwB,EAAU,CACnC,OAAO,KAAK5C,YAAY+C,OACtB,IAAIC,GAAsB,CACxB5B,WAAYA,EACZwB,GAAIA,EACL,CAAC,CAEN,yCA7FWtD,GAAe2D,EAAAC,EAAA,CAAA,CAAA,wBAAf5D,EAAe6D,QAAf7D,EAAe8D,UAAAC,WADF,MAAM,CAAA,EAC1B,IAAO/D,EAAPgE,SAAOhE,CAAe,GAAA,IClB5B,IAAAiE,GAAAC,EAAA,KAAAC,KACAC,OCCM,SAAUC,GAA2BC,EAAgC,CACzE,OAAQA,EAAG,CACT,KAAKC,EAAgBC,oCACnB,OAAOC,EAAaC,sBACtB,KAAKH,EAAgBI,oCACnB,OAAOF,EAAaG,sBACtB,KAAKL,EAAgBM,6BACnB,OAAOJ,EAAaK,cACxB,CACA,OAAOL,EAAaM,YACtB,CAEM,SAAUC,GAAyBV,EAAiB,CACxD,OAAQA,EAAG,CACT,KAAKG,EAAaC,sBAChB,OAAOH,EAAgBC,oCACzB,KAAKC,EAAaG,sBAChB,OAAOL,EAAgBI,oCACzB,KAAKF,EAAaK,eAChB,OAAOP,EAAgBM,4BAC3B,CACA,OAAON,EAAgBU,0BACzB,CAUM,SAAUC,GAAuBC,EAA4B,CACjE,MAAO,CACLC,KAAMf,GAA2Bc,EAAGC,IAAI,EACxCC,MAAOF,EAAGE,OAAS,EACnBC,YAAaH,EAAGG,aAAe,EAC/BC,YAAaJ,EAAGI,aAAe,GAC/BC,YAAaL,EAAGK,aAAe,GAEnC,CAEM,SAAUC,GAAqBN,EAAmB,CACtD,MAAO,CACLC,KAAMJ,GAAyBG,EAAGC,IAAI,EACtCC,MAAOF,EAAGE,OAAS,EACnBC,YAAaH,EAAGG,aAAe,EAC/BC,YAAaJ,EAAGI,aAAe,GAC/BC,YAAaL,EAAGK,aAAe,GAEnC,CArDA,IAAAE,GAAAC,EAAA,KAAAC,IACAC,OCDA,IAAAC,GAAAC,EAAA,KAAAD,OCGM,SAAUE,GAAeC,EAAa,CAC1C,OAAOA,EAAO,CAAEC,QAASD,EAAKC,OAAO,EAAW,CAAA,CAClD,CAFA,IAIaC,GAJbC,GAAAC,EAAA,KAIaF,GAAUG,GACdA,EAAI,CAAC,CAACA,EAAEJ,QAAU,KCwBrB,SAAUK,GAAsBC,EAAwC,CAC5E,OAAQA,EAAC,CACP,KAAKC,GAAiBC,kBACpB,OAAOC,GAAoBD,kBAC7B,KAAKD,GAAiBG,qBACpB,OAAOD,GAAoBC,qBAC7B,KAAKH,GAAiBI,WACpB,OAAOF,GAAoBE,WAC7B,QACE,OAAOF,GAAoBG,KAC/B,CACF,CAEM,SAAUC,GAAwBP,EAAS,CAC/C,OAAQA,EAAC,CACP,KAAKG,GAAoBD,kBACvB,OAAOD,GAAiBC,kBAC1B,KAAKC,GAAoBC,qBACvB,OAAOH,GAAiBG,qBAC1B,KAAKD,GAAoBE,WACvB,OAAOJ,GAAiBI,WAC1B,QACE,OAAOJ,GAAiBK,KAC5B,CACF,CAtCA,IAAYL,GAOAE,GAPZK,GAAAC,EAAA,KAAYR,GAAZ,SAAYA,EAAgB,CAC1BA,OAAAA,EAAA,MAAA,GACAA,EAAA,kBAAA,oBACAA,EAAA,qBAAA,uBACAA,EAAA,WAAA,aAJUA,CAKZ,EALYA,IAAgB,CAAA,CAAA,EAOhBE,GAAZ,SAAYA,EAAmB,CAC7BA,OAAAA,EAAA,MAAA,GACAA,EAAA,kBAAA,oBACAA,EAAA,qBAAA,uBACAA,EAAA,WAAA,aAJUA,CAKZ,EALYA,IAAmB,CAAA,CAAA,ICzB/B,IAAAO,GAAAC,EAAA,KACAD,OCgBM,SAAUE,GAAeC,EAA4B,CACzD,MAAO,CACLC,GAAID,EAAWC,IAAM,GACrBC,WAAYF,EAAWE,YAAc,GACrCC,YAAaH,EAAWG,aAAe,GACvCC,UAAWJ,EAAWI,WAAa,GACnCC,KAAML,EAAWK,MAAQ,GACzBC,YAAaN,EAAWM,aAAe,GACvCC,WAAYP,EAAWO,YAAc,EACrCC,mBAAoBR,EAAWQ,oBAAsB,GAEzD,CA1BA,IAAaC,GAAbC,GAAAC,EAAA,KAAaF,GAAaG,GACjB,CAAC,CAACA,ICFX,IA0BaC,GA1BbC,GAAAC,EAAA,KACAC,KACAC,IACAC,KACAC,IAYAC,aAUaP,IAAc,IAAA,CAArB,IAAOA,EAAP,MAAOA,CAAc,CACzBQ,YAAoBC,EAAyB,CAAzB,KAAAA,WAAAA,CAA4B,CAGhDC,UAAUC,EAAoBC,EAAoBC,EAAc,CAC9D,IAAMC,EAAI,IAAIC,GAAoB,CAChCJ,WAAYA,EACZC,WAAYA,EACZC,OAAQA,EACT,EACD,OAAO,KAAKJ,WAAWC,UAAUI,CAAC,EAAEE,KAClCC,EAAKC,GAAY,CACf,IAAMC,GAAYD,EAASC,UAAY,CAAA,GAAIF,IAAKG,GAASC,GAAeD,CAAI,CAAC,EAC7E,MAAO,CACLE,cAAeJ,EAASI,eAAiB,EACzCH,SAAUA,EAEd,CAAC,CAAC,CAEN,CAGAI,mBACEZ,EACAC,EACAY,EAAqB,CAErB,IAAMV,EAAI,IAAIW,GAA8B,CAC1Cd,WAAYA,EACZC,WAAYA,EACZY,UAAWA,EACZ,EACD,OAAO,KAAKf,WAAWc,mBAAmBT,CAAC,EAAEE,KAC3CC,EAAKC,GACI,KAAKQ,mCAAmCR,CAAQ,CACxD,EACDS,EAAW,IACFC,EAAG,CAAA,CAAmC,CAC9C,CAAC,CAEN,CAEQF,mCAAmCR,EAAwC,CACjF,IAAMC,GAAYD,EAASC,UAAY,CAAA,GAAIF,IAAKG,GAASC,GAAeD,CAAI,CAAC,EACvES,GAAiBX,EAASW,eAAiB,CAAA,GAAIZ,IAAKG,IACjD,CACLU,IAAKV,EAAKU,IACVjB,OAAQO,EAAKE,eAEhB,EACD,MAAO,CACLS,aAAcb,EAASa,cAAgB,CAAA,EACvCF,cAAeA,EACfG,mBAAoBd,EAASc,oBAAsB,EACnDb,SAAUA,EAEd,CAEAc,OACEtB,EACAuB,EACAC,EACAC,EACAC,EACAC,EACAC,EAA0B,CAE1B,IAAMzB,EAAI,IAAI0B,GAAiB,CAC7B7B,WAAYA,EACZuB,YAAaA,EACbC,UAAWA,EACXC,KAAMA,EACNC,YAAaA,EACbC,WAAYA,EACZC,mBAAoBA,EACrB,EAED,OAAO,KAAK9B,WAAWwB,OAAOnB,CAAC,CACjC,CAEA2B,OACE9B,EACA+B,EACAR,EACAC,EACAC,EACAC,EACAC,EACAC,EAA0B,CAE1B,IAAMzB,EAAI,IAAI6B,GAAiB,CAC7BhC,WAAYA,EACZ+B,GAAIA,EACJR,YAAaA,EACbC,UAAWA,EACXC,KAAMA,EACNC,YAAaA,EACbC,WAAYA,EACZC,mBAAoBA,EACrB,EAED,OAAO,KAAK9B,WAAWgC,OAAO3B,CAAC,CACjC,CAEA8B,KAAKC,EAA4BC,EAAgBC,EAAgB,CAC/D,IAAMC,EAAM,IAAIC,GAAe,CAC7BJ,QAASA,EACTK,cAAe,IAAIC,EAAoB,CAAEL,OAAAA,EAAQC,SAAAA,CAAQ,CAAE,EAC5D,EACD,OAAO,KAAKtC,WAAWmC,KAAKI,CAAG,EAAEhC,KAC/BC,EAAKC,GAAY,CACf,IAAMC,GAAYD,EAASC,UAAY,CAAA,GAAIF,IAAKG,GAASC,GAAeD,CAAI,CAAC,EAC7E,OAAO,IAAIgC,EAAcjC,EAAUD,EAASmC,eAAeC,WAAYpC,EAASmC,eAAeE,OAAO,CACxG,CAAC,CAAC,CAEN,CAEAC,SAAS7C,EAAoB8C,EAAa,CACxC,IAAMT,EAAM,IAAIU,GAAmB,CACjC/C,WAAYA,EACZ8C,IAAKA,EACN,EACD,OAAO,KAAKhD,WAAW+C,SAASR,CAAG,EAAEhC,KACnCC,EAAKC,IACeA,EAASC,UAAY,CAAA,GAAIF,IAAKG,GAASC,GAAeD,CAAI,CAAC,CAE9E,CAAC,CAEN,CAEAuC,QAAQhD,EAAoB+B,EAAU,CACpC,IAAMM,EAAM,IAAIY,GAAkB,CAChCjD,WAAAA,EACA+B,GAAAA,EACD,EACD,OAAO,KAAKjC,WAAWkD,QAAQX,CAAG,CACpC,yCAxIWhD,GAAc6D,EAAAC,EAAA,CAAA,CAAA,wBAAd9D,EAAc+D,QAAd/D,EAAcgE,UAAAC,WADD,MAAM,CAAA,EAC1B,IAAOjE,EAAPkE,SAAOlE,CAAc,GAAA,IC3B3B,IAAAmE,GAAAC,EAAA,KAAAD,KASAE,OCwHA,SAASC,GAAiBC,EAAmB,CAC3C,OAAQA,EAAC,CACP,KAAKC,GAAiBC,IACpB,OAAOC,GAAcD,IACvB,KAAKD,GAAiBG,KACpB,OAAOD,GAAcC,KACvB,KAAKH,GAAiBI,KACpB,OAAOF,GAAcE,KACvB,QACE,OAAOF,GAAcG,KACzB,CACF,CAEA,SAASC,GAAmBC,EAAqB,CAC/C,OAAQA,EAAM,CACZ,KAAKL,GAAcD,IACjB,OAAOO,GAAsBP,IAC/B,KAAKC,GAAcC,KACjB,OAAOK,GAAsBL,KAC/B,KAAKD,GAAcE,KACjB,OAAOI,GAAsBJ,KAC/B,QACE,OAAOI,GAAsBH,KACjC,CACF,CAEA,SAASI,GAA4BC,EAA2B,CAC9D,OAAQA,EAAS,CACf,QACE,OAAOC,GAA8CC,OACzD,CACF,CAEA,SAASC,GAAiBd,EAAS,CACjC,OAAQA,EAAC,CACP,KAAKe,GAAiBC,OACpB,OAAOC,GAAcD,OACvB,KAAKD,GAAiBG,YACpB,OAAOD,GAAcC,YACvB,KAAKH,GAAiBI,QACpB,OAAOF,GAAcE,QACvB,KAAKJ,GAAiBK,SACpB,OAAOH,GAAcG,SACvB,QACE,OAAOH,GAAcI,KACzB,CACF,CAEM,SAAUC,GAAyBC,EAAqB,CAC5D,GAAKA,EAGL,MAAO,CACLC,OAAQD,EAAGC,QAAU,EACrBC,UAAWF,EAAGE,WAAa,GAC3BC,WAAYH,EAAGG,YAAc,EAC7BC,KAAMJ,EAAGI,MAAQ,GACjBC,YAAaL,EAAGK,aAAe,GAEnC,CAYM,SAAUC,GAAkBC,EAAc,CAC9C,GAAKA,EAGL,MAAO,CACLC,GAAID,EAAGC,IAAM,GACbJ,KAAMG,EAAGH,MAAQ,GACjBC,YAAaE,EAAGF,aAAe,GAC/BF,WAAYI,EAAGJ,YAAc,EAEjC,CAuBA,SAASM,GAA0BC,EAA6B,CAC9D,MAAO,CACLC,QAASD,GAAIC,SAAW,GACxBC,SAAUF,GAAIE,UAAY,GAC1BC,KAAMH,GAAIG,MAAQ,GAClBC,MAAOJ,GAAII,OAAS,GACpBC,IAAKL,GAAIK,KAAO,GAChBC,QAASN,GAAIM,SAAW,GAE5B,CAEM,SAAUC,GAAsBC,EAAkB,CACtD,GAAI,CAACA,EACH,OAGF,IAAMC,GAAkCD,EAAGC,cAAgB,CAAA,GACxDC,IAAKpB,GAAOD,GAAyBC,CAAE,CAAC,EACxCqB,OAAOC,EAAgB,EACpBC,GAAuBL,EAAGK,UAAY,CAAA,GAAIH,IAAKb,GAAOD,GAAkBC,CAAE,CAAC,EAAEc,OAAOG,EAAS,EAC7FC,GAAuCP,EAAGQ,WAAa,CAAA,GAAIN,IAAKO,GAAOC,GAAuBD,CAAE,CAAC,EAEvG,MAAO,CACLnB,GAAIU,EAAGV,IAAM,GACbqB,IAAKX,EAAGW,KAAO,GACf5B,OAAQiB,EAAGjB,QAAU,EACrB6B,SAAUZ,EAAGY,UAAY,EACzBzB,YAAaa,EAAGb,aAAe,GAC/B0B,SAAUb,EAAGa,UAAY,EACzBC,MAAOd,EAAGc,OAAS,EACnBP,iBAAkBA,GAAoB,CAAA,EACtCN,aAAcA,GAAgB,CAAA,EAC9BI,SAAUA,GAAY,CAAA,EACtBU,SAAUf,EAAGe,UAAY,GACzBC,iBAAkBhB,EAAGgB,kBAAoB,GAE7C,CAgBM,SAAUC,GAAkBC,EAAa,CAC7C,IAAMC,EAAW,IAAIC,KAAK,sBAAsB,EAAEC,QAAO,EACnDC,GAA+BJ,EAAEK,OAAS,CAAA,GAAIrB,IAAKF,GAAOD,GAAsBC,CAAE,CAAC,EAAEG,OAAOqB,EAAa,EACzGvB,GAAkCiB,EAAEjB,cAAgB,CAAA,GACvDC,IAAKpB,GAAOD,GAAyBC,CAAE,CAAC,EACxCqB,OAAOC,EAAgB,EACpBC,GAAuBa,EAAEO,iBAAmB,CAAA,GAAIvB,IAAKb,GAAOD,GAAkBC,CAAE,CAAC,EAAEc,OAAOG,EAAS,EACnGoB,GAAmCR,EAAEQ,gBAAkB,CAAA,GAC1DxB,IAAKpB,GAAO6C,GAAwB7C,CAAE,CAAC,EACvCqB,OAAOyB,EAAe,EACnBC,GAAiBX,EAAEW,OAAS,CAAA,GAAI3B,IAAK4B,GAAMC,GAAeD,CAAC,CAAC,EAAE3B,OAAO6B,EAAM,EAEjF,MAAO,CACL1C,GAAI4B,EAAE5B,IAAM,GACZ2C,OAAQf,EAAEe,QAAU,GACpBC,WAAYhB,EAAEgB,YAAc,GAC5BC,aAAcjB,EAAEiB,cAAgB,GAChCC,UAAWlB,EAAEkB,WAAa,GAC1BrE,OAAQT,GAAiB4D,EAAEnD,MAAM,EACjC8C,SAAUK,EAAEL,UAAY,EACxBC,MAAOI,EAAEJ,OAAS,EAClBuB,cAAenB,EAAEoB,gBAAkB,EACnCC,KAAMrB,EAAEqB,MAAQrB,EAAEqB,KAAKlB,QAAO,IAAOF,EAAWD,EAAEqB,KAAOC,OACzDC,OAAQvB,EAAEuB,QAAUvB,EAAEuB,OAAOpB,QAAO,IAAOF,EAAWD,EAAEuB,OAASD,OACjEE,IAAKxB,EAAEwB,KAAOxB,EAAEwB,IAAIrB,QAAO,IAAOF,EAAWD,EAAEwB,IAAMF,OACrDG,OAAQzB,EAAEyB,QAAUzB,EAAEyB,OAAOtB,QAAO,IAAOF,EAAWD,EAAEyB,OAASH,OACjEI,QAAS1B,EAAE0B,QAAQvB,QAAO,IAAOF,EAAWD,EAAE0B,QAAUJ,OACxDK,QAAS3B,EAAE2B,QAAQxB,QAAO,IAAOF,EAAWD,EAAE2B,QAAUL,OACxDM,YAAa5B,EAAE4B,YAAYzB,QAAO,IAAOF,EAAWD,EAAE4B,YAAcN,OACpEjB,MAAOD,GAAgB,CAAA,EACvByB,SAAUC,EAAgB9B,EAAE6B,QAAQ,EACpCE,QAAS/B,EAAE+B,SAAW,GACtBhD,aAAcA,GAAgB,CAAA,EAC9BwB,gBAAiBpB,GAAY,CAAA,EAC7BqB,eAAgBA,GAAkB,CAAA,EAClCwB,OAAQ7E,GAAiB6C,EAAEgC,MAAM,EACjCC,iBAAkBC,GAAwBlC,EAAEiC,gBAAgB,EAC5DE,KAAMnC,EAAEmC,MAAQ,GAChBC,qBAAsBpC,EAAEoC,sBAAwB,GAChDC,gBAAiBhE,GAA0B2B,EAAEqC,eAAe,EAC5DC,2BAA4BtC,EAAEsC,4BAA8B,GAC5D3B,MAAOA,GAAS,CAAA,EAChB4B,qBAAsBvC,EAAEuC,sBAAwB,CAAA,EAEpD,CAEM,SAAUC,GAAwBC,EAA2B,CACjE,OAAO,IAAIC,GAA2BC,EAAAC,EAAA,GACjCH,GADiC,CAEpCI,UAAWJ,EAAQI,UAAY,CAAA,GAAI7D,IAAK3C,GAAMO,GAAmBP,CAAC,CAAC,EACnEyG,QAASL,EAAQK,QACjBC,kBAAmBN,EAAQM,kBAC3BC,WAAY,CACVC,QAASR,EAAQO,YAAYC,QAC7BC,QAAST,EAAQO,YAAYE,QAC7BlG,UAAWyF,EAAQO,YAAYhG,UAAYD,GAA4B0F,EAAQO,WAAWhG,SAAS,EAAIsE,SAE1G,CACH,CAvVA,IAmBY6B,GAKA3G,GAOA4G,GAIA9F,GAQAF,GAONkD,GAuBO+C,GA4CPnE,GArHNoE,GAAAC,EAAA,KAAAC,IAWAC,KACAC,KACAC,KACAC,KACAC,KACAC,KAGYX,GAAZ,SAAYA,EAAc,CACxBA,OAAAA,EAAA,QAAA,UACAA,EAAA,QAAA,UAFUA,CAGZ,EAHYA,IAAc,CAAA,CAAA,EAKd3G,GAAZ,SAAYA,EAAa,CACvBA,OAAAA,EAAA,MAAA,QACAA,EAAA,IAAA,MACAA,EAAA,KAAA,OACAA,EAAA,KAAA,OAJUA,CAKZ,EALYA,IAAa,CAAA,CAAA,EAOb4G,GAAZ,SAAYA,EAAgB,CAC1BA,OAAAA,EAAA,QAAA,UADUA,CAEZ,EAFYA,IAAgB,CAAA,CAAA,EAIhB9F,GAAZ,SAAYA,EAAa,CACvBA,OAAAA,EAAA,OAAA,SACAA,EAAA,YAAA,cACAA,EAAA,QAAA,UACAA,EAAA,SAAA,WACAA,EAAA,MAAA,QALUA,CAMZ,EANYA,IAAa,CAAA,CAAA,EAQbF,GAAZ,SAAYA,EAAgB,CAC1BA,OAAAA,EAAA,OAAA,SACAA,EAAA,YAAA,cACAA,EAAA,QAAA,UACAA,EAAA,SAAA,WAJUA,CAKZ,EALYA,IAAgB,CAAA,CAAA,EAOtBkD,GAAiBxB,GACd,CAAC,CAACA,EAsBEuE,GAAarD,GACjB,CAAC,CAACA,EA2CLd,GAAoBf,GACjB,CAAC,CAACA,IC2jFX,SAAS4F,GAAyBC,EAAW,CAC3C,OAAO,IAAIC,GAAe,CACxB,QAAS,IAAIC,GAAsB,CACjC,UAAWF,CACb,CAAC,CACH,CAAC,CACH,CACA,SAASG,GAAyBC,EAAW,CAC3C,OAAO,IAAIH,GAAe,CACxB,QAAS,IAAII,GAAsB,CACjC,UAAWD,CACb,CAAC,CACH,CAAC,CACH,CA9rFA,IA2DMF,GAoBAI,GAiBAC,GAoBAC,GAiBAH,GAoBAJ,GAyCAQ,GA6MAC,GAiTAC,GA6GAC,GAwCAC,GAkDAC,GAoBAC,GAkDAC,GA+DAC,GA6BAC,GA+DAC,GA4CAC,GAoBAC,GAoBAC,GA0GAC,GA0BAC,GAmLAC,GA0BAC,GAoFAC,GAuBAC,GAuSAC,GAwGAC,GA0DAC,GA4DAC,GACAC,GAOFC,GAwEAC,GAiEAC,GAyIAC,GAwKEC,GACFC,GAhkFJC,GAAAC,EAAA,KAAAC,IAEAC,KACAA,KACAC,IAuDM1C,GAAN,MAAM2C,CAAsB,CAC1B,OAAO,UAAUC,EAAO,CACtB,IAAIC,EAAI,IAAIF,EACZ,OAAAE,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACnBC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAMC,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,UAAc,MAC5BA,EAAS,UAAe,KAAK,WAExBA,CACT,CACF,EACM3C,GAAN,MAAM4C,CAAkB,CACtB,OAAO,UAAUJ,EAAO,CACtB,IAAIC,EAAI,IAAIG,EACZ,OAAAH,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACnBC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CAEV,MADiB,CAAC,CAEpB,CACF,EACMzC,GAAN,MAAM4C,CAAoB,CACxB,OAAO,UAAUL,EAAO,CACtB,IAAIC,EAAI,IAAII,EACZ,OAAAJ,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACnBC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAMC,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,UAAc,MAC5BA,EAAS,UAAe,KAAK,WAExBA,CACT,CACF,EACMzC,GAAN,MAAM4C,CAAgB,CACpB,OAAO,UAAUN,EAAO,CACtB,IAAIC,EAAI,IAAIK,EACZ,OAAAL,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACnBC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CAEV,MADiB,CAAC,CAEpB,CACF,EACM3C,GAAN,MAAMgD,CAAsB,CAC1B,OAAO,UAAUP,EAAO,CACtB,IAAIC,EAAI,IAAIM,EACZ,OAAAN,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACnBC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAMC,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,UAAc,MAC5BA,EAAS,UAAe,KAAK,WAExBA,CACT,CACF,EACMhD,GAAN,MAAMqD,CAAe,CACnB,OAAO,UAAUR,EAAO,CACtB,IAAIC,EAAI,IAAIO,EACZ,OAAAP,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACtBA,EAAM,UACRC,EAAE,QAAU7C,GAAsB,UAAU4C,EAAM,OAAO,GAEvDA,EAAM,UACRC,EAAE,QAAU1C,GAAsB,UAAUyC,EAAM,OAAO,GAEvDA,EAAM,aACRC,EAAE,WAAatC,GAAyB,UAAUqC,EAAM,UAAU,GAEhEA,EAAM,QACRC,EAAE,MAAQxC,GAAoB,UAAUuC,EAAM,KAAK,GAE9CC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAMC,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,QAAY,KAAe,KAAK,UAAY,OAC1DA,EAAS,QAAa,cAAe,KAAK,QAAU,KAAK,QAAQ,UAAU,EAAI,KAAK,SAElF,OAAO,KAAK,QAAY,KAAe,KAAK,UAAY,OAC1DA,EAAS,QAAa,cAAe,KAAK,QAAU,KAAK,QAAQ,UAAU,EAAI,KAAK,SAElF,OAAO,KAAK,WAAe,KAAe,KAAK,aAAe,OAChEA,EAAS,WAAgB,cAAe,KAAK,WAAa,KAAK,WAAW,UAAU,EAAI,KAAK,YAE3F,OAAO,KAAK,MAAU,KAAe,KAAK,QAAU,OACtDA,EAAS,MAAW,cAAe,KAAK,MAAQ,KAAK,MAAM,UAAU,EAAI,KAAK,OAEzEA,CACT,CACF,EACMxC,GAAN,MAAM8C,CAAyB,CAC7B,OAAO,UAAUT,EAAO,CACtB,IAAIC,EAAI,IAAIQ,EACZ,OAAAR,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACnBC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CAEV,MADiB,CAAC,CAEpB,CACF,EA6LMtC,GAAN,MAAM8C,CAAM,CACV,OAAO,UAAUV,EAAO,CACtB,IAAIC,EAAI,IAAIS,EACZ,OAAAT,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACtBA,EAAM,UACRC,EAAE,QAAU,IAAI,KAAKD,EAAM,OAAO,GAEhCA,EAAM,UACRC,EAAE,QAAU,IAAI,KAAKD,EAAM,OAAO,GAE7BC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAMC,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,GAAO,MACrBA,EAAS,GAAQ,KAAK,IAEpB,OAAO,KAAK,KAAS,MACvBA,EAAS,KAAU,KAAK,MAEtB,OAAO,KAAK,YAAgB,MAC9BA,EAAS,YAAiB,KAAK,aAE7B,OAAO,KAAK,QAAY,KAAe,KAAK,UAAY,OAC1DA,EAAS,QAAa,cAAe,KAAK,QAAU,KAAK,QAAQ,UAAU,EAAI,KAAK,SAElF,OAAO,KAAK,QAAY,KAAe,KAAK,UAAY,OAC1DA,EAAS,QAAa,cAAe,KAAK,QAAU,KAAK,QAAQ,UAAU,EAAI,KAAK,SAE/EA,CACT,CACF,EA4QMtC,GAAN,MAAM8C,CAAmB,CACvB,OAAO,UAAUX,EAAO,CACtB,IAAIC,EAAI,IAAIU,EACZ,OAAAV,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACnBC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAMC,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,GAAO,MACrBA,EAAS,GAAQ,KAAK,IAEpB,OAAO,KAAK,KAAS,MACvBA,EAAS,KAAU,KAAK,MAEtB,OAAO,KAAK,YAAgB,MAC9BA,EAAS,YAAiB,KAAK,aAE1BA,CACT,CACF,EAoFMrC,GAAN,MAAM8C,CAAmB,CACvB,OAAO,UAAUZ,EAAO,CACtB,IAAIC,EAAI,IAAIW,EACZ,OAAAX,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACnBC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAMC,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,QAAY,MAC1BA,EAAS,QAAa,KAAK,SAEtBA,CACT,CACF,EAqBMpC,GAAN,MAAM8C,CAAmB,CACvB,OAAO,UAAUb,EAAO,CACtB,IAAIC,EAAI,IAAIY,EACZ,OAAAZ,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACtBA,EAAM,UACRC,EAAE,QAAU9C,GAAe,UAAU6C,EAAM,OAAO,GAEhDA,EAAM,oBACRC,EAAE,kBAAoBzC,GAAkB,UAAUwC,EAAM,iBAAiB,GAEvEA,EAAM,kBACRC,EAAE,gBAAkBvC,GAAgB,UAAUsC,EAAM,eAAe,GAE9DC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAMC,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,kBAAsB,MACpCA,EAAS,kBAAuB,KAAK,mBAEnC,OAAO,KAAK,QAAY,KAAe,KAAK,UAAY,OAC1DA,EAAS,QAAa,cAAe,KAAK,QAAU,KAAK,QAAQ,UAAU,EAAI,KAAK,SAElF,OAAO,KAAK,KAAS,MACvBA,EAAS,KAAU,KAAK,MAEtB,OAAO,KAAK,0BAA8B,MAC5CA,EAAS,0BAA+B,KAAK,2BAE3C,OAAO,KAAK,mBAAuB,MACrCA,EAAS,mBAAwB,KAAK,oBAEpC,OAAO,KAAK,kBAAsB,KAAe,KAAK,oBAAsB,OAC9EA,EAAS,kBAAuB,cAAe,KAAK,kBAAoB,KAAK,kBAAkB,UAAU,EAAI,KAAK,mBAEhH,OAAO,KAAK,2BAA+B,MAC7CA,EAAS,2BAAgC,KAAK,4BAE5C,OAAO,KAAK,gBAAoB,KAAe,KAAK,kBAAoB,OAC1EA,EAAS,gBAAqB,cAAe,KAAK,gBAAkB,KAAK,gBAAgB,UAAU,EAAI,KAAK,iBAEvGA,CACT,CACF,EACMnC,GAAN,MAAM8C,CAAoB,CACxB,OAAO,UAAUd,EAAO,CACtB,IAAIC,EAAI,IAAIa,EACZ,OAAAb,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACnBC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAMC,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,SAAa,MAC3BA,EAAS,SAAc,KAAK,UAEvBA,CACT,CACF,EACMlC,GAAN,MAAM8C,CAA2B,CAC/B,OAAO,UAAUf,EAAO,CACtB,IAAIC,EAAI,IAAIc,EACZ,OAAAd,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACtBA,EAAM,UACRC,EAAE,QAAU9C,GAAe,UAAU6C,EAAM,OAAO,GAE7CC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAMC,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,kBAAsB,MACpCA,EAAS,kBAAuB,KAAK,mBAEnC,OAAO,KAAK,UAAc,MAC5BA,EAAS,UAAe,KAAK,WAE3B,OAAO,KAAK,OAAW,MACzBA,EAAS,OAAY,KAAK,QAExB,OAAO,KAAK,MAAU,MACxBA,EAAS,MAAW,KAAK,OAEvB,OAAO,KAAK,QAAY,KAAe,KAAK,UAAY,OAC1DA,EAAS,QAAa,cAAe,KAAK,QAAU,KAAK,QAAQ,UAAU,EAAI,KAAK,SAElF,OAAO,KAAK,QAAY,MAC1BA,EAAS,QAAa,KAAK,SAEzB,OAAO,KAAK,QAAY,MAC1BA,EAAS,QAAa,KAAK,SAEzB,OAAO,KAAK,YAAgB,MAC9BA,EAAS,YAAiB,KAAK,aAE7B,OAAO,KAAK,0BAA8B,MAC5CA,EAAS,0BAA+B,KAAK,2BAE3C,OAAO,KAAK,mBAAuB,MACrCA,EAAS,mBAAwB,KAAK,oBAEjCA,CACT,CACF,EACMjC,GAAN,MAAM8C,CAA4B,CAChC,OAAO,UAAUhB,EAAO,CACtB,IAAIC,EAAI,IAAIe,EACZ,OAAAf,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACnBC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAMC,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,SAAa,MAC3BA,EAAS,SAAc,KAAK,UAEvBA,CACT,CACF,EA4CMhC,GAAN,MAAM8C,CAAoB,CACxB,OAAO,UAAUjB,EAAO,CACtB,IAAIC,EAAI,IAAIgB,EACZ,OAAAhB,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACtBA,EAAM,UACRC,EAAE,QAAU9C,GAAe,UAAU6C,EAAM,OAAO,GAE7CC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAMC,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,UAAc,MAC5BA,EAAS,UAAe,KAAK,WAE3B,OAAO,KAAK,QAAY,KAAe,KAAK,UAAY,OAC1DA,EAAS,QAAa,cAAe,KAAK,QAAU,KAAK,QAAQ,UAAU,EAAI,KAAK,SAElF,OAAO,KAAK,kBAAsB,MACpCA,EAAS,kBAAuB,KAAK,mBAEhCA,CACT,CACF,EACM/B,GAAN,MAAM8C,CAAqB,CACzB,OAAO,UAAUlB,EAAO,CACtB,IAAIC,EAAI,IAAIiB,EACZ,OAAAjB,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACnBC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAMC,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,UAAc,MAC5BA,EAAS,UAAe,KAAK,WAExBA,CACT,CACF,EA4CM9B,GAAN,MAAM8C,CAAwB,CAC5B,OAAO,UAAUnB,EAAO,CACtB,IAAIC,EAAI,IAAIkB,EACZ,OAAAlB,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACtBA,EAAM,UACRC,EAAE,QAAU9C,GAAe,UAAU6C,EAAM,OAAO,GAEhDA,EAAM,oBACRC,EAAE,kBAAoBzC,GAAkB,UAAUwC,EAAM,iBAAiB,GAEvEA,EAAM,kBACRC,EAAE,gBAAkBvC,GAAgB,UAAUsC,EAAM,eAAe,GAE9DC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAMC,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,mBAAuB,MACrCA,EAAS,mBAAwB,KAAK,oBAEpC,OAAO,KAAK,QAAY,KAAe,KAAK,UAAY,OAC1DA,EAAS,QAAa,cAAe,KAAK,QAAU,KAAK,QAAQ,UAAU,EAAI,KAAK,SAElF,OAAO,KAAK,mBAAuB,MACrCA,EAAS,mBAAwB,KAAK,oBAEpC,OAAO,KAAK,kBAAsB,KAAe,KAAK,oBAAsB,OAC9EA,EAAS,kBAAuB,cAAe,KAAK,kBAAoB,KAAK,kBAAkB,UAAU,EAAI,KAAK,mBAEhH,OAAO,KAAK,2BAA+B,MAC7CA,EAAS,2BAAgC,KAAK,4BAE5C,OAAO,KAAK,gBAAoB,KAAe,KAAK,kBAAoB,OAC1EA,EAAS,gBAAqB,cAAe,KAAK,gBAAkB,KAAK,gBAAgB,UAAU,EAAI,KAAK,iBAEvGA,CACT,CACF,EACM7B,GAAN,MAAM8C,CAAyB,CAC7B,OAAO,UAAUpB,EAAO,CACtB,IAAIC,EAAI,IAAImB,EACZ,OAAAnB,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACnBC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAMC,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,UAAc,MAC5BA,EAAS,UAAe,KAAK,WAExBA,CACT,CACF,EACM5B,GAAN,MAAM8C,CAAqB,CACzB,OAAO,UAAUrB,EAAO,CACtB,IAAIC,EAAI,IAAIoB,EACZ,OAAApB,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACnBC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAMC,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,SAAa,MAC3BA,EAAS,SAAc,KAAK,UAEvBA,CACT,CACF,EACM3B,GAAN,MAAM8C,CAAsB,CAC1B,OAAO,UAAUtB,EAAO,CACtB,IAAIC,EAAI,IAAIqB,EACZ,OAAArB,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACtBA,EAAM,SACRC,EAAE,OAASD,EAAM,OAAO,IAAIjB,GAAoC,SAAS,GAEpEkB,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAMC,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,OAAW,KAAe,KAAK,SAAW,OACxDA,EAAS,OAAY,cAAe,KAAK,OAAS,KAAK,OAAO,UAAU,EAAI,KAAK,QAE5EA,CACT,CACF,EAoFM1B,GAAN,MAAM8C,CAA6B,CACjC,OAAO,UAAUvB,EAAO,CACtB,IAAIC,EAAI,IAAIsB,EACZ,OAAAtB,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACtBA,EAAM,UACRC,EAAE,QAAU9C,GAAe,UAAU6C,EAAM,OAAO,GAE7CC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAMC,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,kBAAsB,MACpCA,EAAS,kBAAuB,KAAK,mBAEnC,OAAO,KAAK,QAAY,KAAe,KAAK,UAAY,OAC1DA,EAAS,QAAa,cAAe,KAAK,QAAU,KAAK,QAAQ,UAAU,EAAI,KAAK,SAE/EA,CACT,CACF,EACMzB,GAAN,MAAM8C,CAA8B,CAClC,OAAO,UAAUxB,EAAO,CACtB,IAAIC,EAAI,IAAIuB,EACZ,OAAAvB,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACnBC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAMC,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,mBAAuB,MACrCA,EAAS,mBAAwB,KAAK,oBAEjCA,CACT,CACF,EAgKMxB,GAAN,MAAM8C,CAAkB,CACtB,OAAO,UAAUzB,EAAO,CACtB,IAAIC,EAAI,IAAIwB,EACZ,OAAAxB,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACtBA,EAAM,WACRC,EAAE,SAAW,SAASD,EAAM,SAAU,EAAE,GAEnCC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAMC,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,SAAa,MAC3BA,EAAS,SAAc,KAAK,UAE1B,OAAO,KAAK,OAAW,MACzBA,EAAS,OAAY,KAAK,QAErBA,CACT,CACF,EACMvB,GAAN,MAAM8C,CAAmB,CACvB,OAAO,UAAU1B,EAAO,CACtB,IAAIC,EAAI,IAAIyB,EACZ,OAAAzB,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACtBA,EAAM,SACRC,EAAE,OAASD,EAAM,OAAO,IAAIpC,GAAM,SAAS,GAEtCqC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAMC,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,OAAW,KAAe,KAAK,SAAW,OACxDA,EAAS,OAAY,cAAe,KAAK,OAAS,KAAK,OAAO,UAAU,EAAI,KAAK,QAE/E,OAAO,KAAK,OAAW,MACzBA,EAAS,OAAY,KAAK,QAExB,OAAO,KAAK,QAAY,MAC1BA,EAAS,QAAa,KAAK,SAEtBA,CACT,CACF,EAwDMtB,GAAN,MAAM8C,CAAc,CAClB,OAAO,UAAU3B,EAAO,CACtB,IAAIC,EAAI,IAAI0B,EACZ,OAAA1B,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACnBC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAMC,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,UAAc,MAC5BA,EAAS,UAAe,KAAK,WAE3B,OAAO,KAAK,OAAW,MACzBA,EAAS,OAAY,KAAK,QAErBA,CACT,CACF,EACMrB,GAAN,MAAM8C,CAA2B,CAC/B,OAAO,UAAU5B,EAAO,CACtB,IAAIC,EAAI,IAAI2B,EACZ,OAAA3B,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACnBC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAMC,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,KAAS,MACvBA,EAAS,KAAU,KAAK,MAEtB,OAAO,KAAK,YAAgB,MAC9BA,EAAS,YAAiB,KAAK,aAE1BA,CACT,CACF,EAiRMpB,GAAN,MAAM8C,CAAoC,CACxC,OAAO,UAAU7B,EAAO,CACtB,IAAIC,EAAI,IAAI4B,EACZ,OAAA5B,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACtBA,EAAM,QACRC,EAAE,MAAQrC,GAAM,UAAUoC,EAAM,KAAK,GAEhCC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAMC,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,MAAU,KAAe,KAAK,QAAU,OACtDA,EAAS,MAAW,cAAe,KAAK,MAAQ,KAAK,MAAM,UAAU,EAAI,KAAK,OAEzEA,CACT,CACF,EAkFMnB,GAAN,MAAM8C,CAAmB,CACvB,OAAO,UAAU9B,EAAO,CACtB,IAAIC,EAAI,IAAI6B,EACZ,OAAA7B,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACtBA,EAAM,YACRC,EAAE,UAAYD,EAAM,UAAU,IAAIlB,GAA2B,SAAS,GAEjEmB,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAMC,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,QAAY,MAC1BA,EAAS,QAAa,KAAK,SAEzB,OAAO,KAAK,UAAc,KAAe,KAAK,YAAc,OAC9DA,EAAS,UAAe,cAAe,KAAK,UAAY,KAAK,UAAU,UAAU,EAAI,KAAK,WAErFA,CACT,CACF,EAiCMlB,GAAN,MAAM8C,CAA6B,CACjC,OAAO,UAAU/B,EAAO,CACtB,IAAIC,EAAI,IAAI8B,EACZ,OAAA9B,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACnBC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAMC,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,OAAW,MACzBA,EAAS,OAAY,KAAK,QAExB,OAAO,KAAK,IAAQ,MACtBA,EAAS,IAAS,KAAK,KAErB,OAAO,KAAK,QAAY,MAC1BA,EAAS,QAAa,KAAK,SAEtBA,CACT,CACF,EAmCMjB,IAAe,OAAS,OAAO,YAAiB,SAAW,OAC3DC,GAAU,CACd,MAAS,GACT,KAAQ,GACR,KAAQ,6BACR,KAAQ,6BACR,WAAc,4BAChB,EACIC,IAA4B,IAAM,CACpC,MAAMA,CAAY,CAChB,IAAI,MAAO,CACT,OAAOD,GAAQD,GAAY,YAAY,CAAC,CAC1C,CACA,IAAI,gBAAiB,CACnB,MAAO,WAAa,KAAK,IAC3B,CACF,CACA,OAAAE,EAAY,UAAO,SAA6B4C,EAAG,CACjD,OAAO,IAAKA,GAAK5C,EACnB,EACAA,EAAY,WAA0B6C,EAAmB,CACvD,MAAO7C,EACP,QAASA,EAAY,UACrB,WAAY,MACd,CAAC,EACMA,CACT,GAAG,EAsDCC,IAAuC,IAAM,CAC/C,MAAMA,CAAuB,CAC3B,YAAY6C,EAAMC,EAAa,CAC7B,KAAK,KAAOD,EACZ,KAAK,YAAcC,EACnB,KAAK,MAAQ,KAAK,YAAY,cAChC,CACA,YAAa,CACX,MAAO,CACL,QAAS,IAAIC,EAAY,CACvB,eAAgB,kBAClB,CAAC,EACD,gBAAiB,EACnB,CACF,CACA,YAAYC,EAAG,CACb,IAAMC,EAAUD,EAAE,UAAYA,EAAI,IAAIxE,GAAmBwE,CAAC,EAC1D,OAAO,KAAK,KAAK,KAAK,KAAK,MAAQ,mCAAoCC,EAAQ,UAAU,EAAGC,EAAAC,EAAA,GACvF,KAAK,WAAW,GADuE,CAE1F,QAAS,UACX,EAAC,CACH,CACA,YAAYH,EAAG,CACb,IAAMC,EAAUD,EAAE,UAAYA,EAAI,IAAIrD,GAAmBqD,CAAC,EAC1D,OAAO,KAAK,KAAK,KAAK,KAAK,MAAQ,mCAAoCC,EAAQ,UAAU,EAAGC,EAAAC,EAAA,GACvF,KAAK,WAAW,GADuE,CAE1F,QAAS,UACX,EAAC,CACH,CACA,cAAcH,EAAG,CACf,IAAMC,EAAUD,EAAE,UAAYA,EAAI,IAAI9D,GAAqB8D,CAAC,EAC5D,OAAO,KAAK,KAAK,KAAK,KAAK,MAAQ,qCAAsCC,EAAQ,UAAU,EAAG,KAAK,WAAW,CAAC,EAAE,KAAKG,EAAIC,GAAQlE,GAAsB,UAAUkE,CAAI,CAAC,CAAC,CAC1K,CACA,WAAWL,EAAG,CACZ,IAAMC,EAAUD,EAAE,UAAYA,EAAI,IAAI1D,GAAkB0D,CAAC,EACzD,OAAO,KAAK,KAAK,KAAK,KAAK,MAAQ,kCAAmCC,EAAQ,UAAU,EAAG,KAAK,WAAW,CAAC,EAAE,KAAKG,EAAIC,GAAQ9D,GAAmB,UAAU8D,CAAI,CAAC,CAAC,CACpK,CACA,YAAYL,EAAG,CACb,IAAMC,EAAUD,EAAE,UAAYA,EAAI,IAAIvE,GAAmBuE,CAAC,EAC1D,OAAO,KAAK,KAAK,KAAK,KAAK,MAAQ,mCAAoCC,EAAQ,UAAU,EAAGC,EAAAC,EAAA,GACvF,KAAK,WAAW,GADuE,CAE1F,QAAS,UACX,EAAC,CACH,CACF,CACA,OAAAnD,EAAuB,UAAO,SAAwC2C,EAAG,CACvE,OAAO,IAAKA,GAAK3C,GAA2BsD,EAAYC,CAAU,EAAMD,EAASvD,EAAW,CAAC,CAC/F,EACAC,EAAuB,WAA0B4C,EAAmB,CAClE,MAAO5C,EACP,QAASA,EAAuB,UAChC,WAAY,MACd,CAAC,EACMA,CACT,GAAG,EAWCC,IAA2C,IAAM,CACnD,MAAMA,CAA2B,CAC/B,YAAY4C,EAAMC,EAAa,CAC7B,KAAK,KAAOD,EACZ,KAAK,YAAcC,EACnB,KAAK,MAAQ,KAAK,YAAY,cAChC,CACA,YAAa,CACX,MAAO,CACL,QAAS,IAAIC,EAAY,CACvB,eAAgB,kBAClB,CAAC,EACD,gBAAiB,EACnB,CACF,CACA,YAAYC,EAAG,CACb,IAAMC,EAAUD,EAAE,UAAYA,EAAI,IAAItE,GAAmBsE,CAAC,EAC1D,OAAO,KAAK,KAAK,KAAK,KAAK,MAAQ,uCAAwCC,EAAQ,UAAU,EAAG,KAAK,WAAW,CAAC,EAAE,KAAKG,EAAIC,GAAQ1E,GAAoB,UAAU0E,CAAI,CAAC,CAAC,CAC1K,CACA,iBAAiBL,EAAG,CAClB,IAAMC,EAAUD,EAAE,UAAYA,EAAI,IAAIhE,GAAwBgE,CAAC,EAC/D,OAAO,KAAK,KAAK,KAAK,KAAK,MAAQ,4CAA6CC,EAAQ,UAAU,EAAG,KAAK,WAAW,CAAC,EAAE,KAAKG,EAAIC,GAAQpE,GAAyB,UAAUoE,CAAI,CAAC,CAAC,CACpL,CACA,oBAAoBL,EAAG,CACrB,IAAMC,EAAUD,EAAE,UAAYA,EAAI,IAAIpE,GAA2BoE,CAAC,EAClE,OAAO,KAAK,KAAK,KAAK,KAAK,MAAQ,+CAAgDC,EAAQ,UAAU,EAAG,KAAK,WAAW,CAAC,EAAE,KAAKG,EAAIC,GAAQxE,GAA4B,UAAUwE,CAAI,CAAC,CAAC,CAC1L,CACA,OAAOL,EAAG,CACR,IAAMC,EAAUD,EAAE,UAAYA,EAAI,IAAIxD,GAAcwD,CAAC,EACrD,OAAO,KAAK,KAAK,KAAK,KAAK,MAAQ,kCAAmCC,EAAQ,UAAU,EAAGC,EAAAC,EAAA,GACtF,KAAK,WAAW,GADsE,CAEzF,QAAS,UACX,EAAC,CACH,CACA,sBAAsBH,EAAG,CAEvB,IAAMC,EAAU,OADED,EAAE,UACiB,IAAcA,EAAI,IAAIpD,GAA6BoD,CAAC,EACnFQ,EAAS,IAAI,gBACbC,EAAUR,EAAQ,UAAU,EAClC,QAAWS,KAAOD,EAAS,CACzB,GAAI,CAACA,EAAQ,eAAeC,CAAG,EAC7B,SAEF,IAAMC,EAAQF,EAAQC,CAAG,EACrBC,IAAU,MAGdH,EAAO,OAAOE,EAAKC,CAAK,CAC1B,CACA,OAAO,SAAS,KAAO,GAAG,KAAK,KAAK,qBAAqBH,EAAO,SAAS,CAAC,EAC5E,CACF,CACA,OAAAvD,EAA2B,UAAO,SAA4C0C,EAAG,CAC/E,OAAO,IAAKA,GAAK1C,GAA+BqD,EAAYC,CAAU,EAAMD,EAASvD,EAAW,CAAC,CACnG,EACAE,EAA2B,WAA0B2C,EAAmB,CACtE,MAAO3C,EACP,QAASA,EAA2B,UACpC,WAAY,MACd,CAAC,EACMA,CACT,GAAG,EA4ECC,IAA0C,IAAM,CAClD,MAAMA,CAA0B,CAC9B,YAAY2C,EAAMC,EAAa,CAC7B,KAAK,KAAOD,EACZ,KAAK,YAAcC,EACnB,KAAK,MAAQ,KAAK,YAAY,cAChC,CACA,YAAa,CACX,MAAO,CACL,QAAS,IAAIC,EAAY,CACvB,eAAgB,kBAClB,CAAC,EACD,gBAAiB,EACnB,CACF,CACA,sBAAsBC,EAAG,CACvB,IAAMC,EAAUD,EAAE,UAAYA,EAAI,IAAI5D,GAA6B4D,CAAC,EACpE,OAAO,KAAK,KAAK,KAAK,KAAK,MAAQ,gDAAiDC,EAAQ,UAAU,EAAG,KAAK,WAAW,CAAC,EAAE,KAAKG,EAAIC,GAAQhE,GAA8B,UAAUgE,CAAI,CAAC,CAAC,CAC7L,CACA,aAAaL,EAAG,CACd,IAAMC,EAAUD,EAAE,UAAYA,EAAI,IAAIlE,GAAoBkE,CAAC,EAC3D,OAAO,KAAK,KAAK,KAAK,KAAK,MAAQ,uCAAwCC,EAAQ,UAAU,EAAG,KAAK,WAAW,CAAC,EAAE,KAAKG,EAAIC,GAAQtE,GAAqB,UAAUsE,CAAI,CAAC,CAAC,CAC3K,CACF,CACA,OAAAnD,EAA0B,UAAO,SAA2CyC,EAAG,CAC7E,OAAO,IAAKA,GAAKzC,GAA8BoD,EAAYC,CAAU,EAAMD,EAASvD,EAAW,CAAC,CAClG,EACAG,EAA0B,WAA0B0C,EAAmB,CACrE,MAAO1C,EACP,QAASA,EAA0B,UACnC,WAAY,MACd,CAAC,EACMA,CACT,GAAG,EAuIGC,GAAqB,mBACvBC,IAA2B,IAAM,CACnC,MAAMA,CAAW,CACf,YAAYwD,EAA4BC,EAAwBC,EAA2BhB,EAAa,CACtG,KAAK,2BAA6Bc,EAClC,KAAK,uBAAyBC,EAC9B,KAAK,0BAA4BC,EACjC,KAAK,YAAchB,CACrB,CACA,YAAYiB,EAAmBC,EAASC,EAAU,CAAC,EAAG,CACpD,IAAMhB,EAAU,IAAIvE,GAAmB,CACrC,kBAAmBqF,EACnB,QAASC,EACT,0BAA2BC,EAAQ,0BACnC,KAAMA,EAAQ,IAChB,CAAC,EACD,OAAQA,EAAQ,cAAe,CAC7B,IAAK,OACHhB,EAAQ,gBAAkB,IAAI5E,GAC9B,MACF,IAAK,OACH4E,EAAQ,kBAAoB,IAAI9E,GAChC,MAEF,KAAK,OACH,MACF,KAAK,KACH,MACF,QACE8E,EAAQ,2BAA6BgB,EAAQ,cAC7C,KACJ,CACA,OAAO,KAAK,2BAA2B,YAAYhB,CAAO,EAAE,KAAKG,EAAIC,GAAQA,EAAK,QAAQ,EAAGa,EAAM,CAAC,CACtG,CACA,iBAAiBC,EAAoBH,EAASC,EAAU,CAAC,EAAG,CAC1D,IAAMhB,EAAU,IAAIjE,GAAwB,CAC1C,mBAAoBmF,EACpB,QAASH,CACX,CAAC,EACD,OAAQC,EAAQ,cAAe,CAC7B,IAAK,OACHhB,EAAQ,gBAAkB,IAAI5E,GAC9B,MACF,IAAK,OACH4E,EAAQ,kBAAoB,IAAI9E,GAChC,MAEF,KAAK,OACH,MACF,KAAK,KACH,MACF,QACE8E,EAAQ,2BAA6BgB,EAAQ,cAC7C,KACJ,CACA,OAAO,KAAK,2BAA2B,iBAAiBhB,CAAO,EAAE,KAAKG,EAAIC,GAAQA,EAAK,WAAa,CAAC,CAAC,EAAGa,EAAM,CAAC,CAClH,CACA,cAAcE,EAAU,CACtB,IAAMnB,EAAU,IAAI/D,GAAqB,CACvC,SAAUkF,CACZ,CAAC,EACD,OAAO,KAAK,uBAAuB,cAAcnB,CAAO,EAAE,KAAKG,EAAIC,GAAQA,EAAK,MAAM,CAAC,CACzF,CACA,sBAAsBU,EAAmBC,EAAS,CAChD,IAAMf,EAAU,IAAI7D,GAA6B,CAC/C,kBAAmB2E,EACnB,QAASC,CACX,CAAC,EACD,OAAO,KAAK,0BAA0B,sBAAsBf,CAAO,CACrE,CACA,sBAAsBoB,EAAQC,EAAKC,EAAS,CAC1C,IAAMtB,EAAU,IAAIrD,GAA6B,CAC/C,OAAQyE,EACR,IAAKC,EACL,QAASC,CACX,CAAC,EACD,KAAK,2BAA2B,sBAAsBtB,CAAO,CAC/D,CACA,+BAA+BuB,EAAmBC,EAAWC,EAAU,CACrE,IAAMC,EAAO,KAAK,YAAY,eACxBC,EAAQ,IAAI,gBAAgB,CAChC,kBAAmBJ,EACnB,WAAYC,CACd,CAAC,EACD,OAAIC,GACFE,EAAM,IAAI,OAAQF,CAAQ,EAErBC,EAAOxE,GAAqB,IAAMyE,EAAM,SAAS,CAC1D,CACA,iCAAiCJ,EAAmBK,EAAWH,EAAU,CACvE,IAAMC,EAAO,KAAK,YAAY,eACxBC,EAAQ,IAAI,gBAAgB,CAChC,kBAAmBJ,EACnB,WAAYK,CACd,CAAC,EACD,OAAIH,GACFE,EAAM,IAAI,OAAQF,CAAQ,EAErBC,EAAOxE,GAAqB,IAAMyE,EAAM,SAAS,CAC1D,CACF,CACA,OAAAxE,EAAW,UAAO,SAA4BuC,EAAG,CAC/C,OAAO,IAAKA,GAAKvC,GAAekD,EAASrD,EAA0B,EAAMqD,EAAStD,EAAsB,EAAMsD,EAASpD,EAAyB,EAAMoD,EAASvD,EAAW,CAAC,CAC7K,EACAK,EAAW,WAA0BwC,EAAmB,CACtD,MAAOxC,EACP,QAASA,EAAW,UACpB,WAAY,MACd,CAAC,EACMA,CACT,GAAG,ICxnFH,SAAS0E,GAAoBC,EAASC,EAAO,CAC3C,OAAI,OAAOA,GAAU,SACZA,EAEFD,EAAQC,CAAK,CACtB,CAgDA,SAASC,GAAoBF,EAASC,EAAO,CAC3C,OAAI,OAAOA,GAAU,SACZA,EAEFD,EAAQC,CAAK,CACtB,CA/GA,IAYIE,GAkBAC,GAKAC,GAwBEC,GAqDAC,GAsCAC,GAuBAC,GAoBAC,GAuBAC,GAoBAC,GAuBAC,GA+CAC,GAyCAC,GAuBAC,GAgCAC,GA6BAC,GA0BAC,GAiDAC,GAiJAC,GACAC,GAOFC,GA6BAC,GAwDAC,GAiEEC,GAzyBNC,GAAAC,EAAA,KAAAC,IAEAC,IACAC,KACAA,KAQI5B,GAAqB,SAAUA,EAAO,CACxC,OAAAA,EAAMA,EAAM,oBAAyB,CAAC,EAAI,sBAC1CA,EAAMA,EAAM,uBAA4B,CAAC,EAAI,yBAC7CA,EAAMA,EAAM,qBAA0B,CAAC,EAAI,uBAC3CA,EAAMA,EAAM,oBAAyB,CAAC,EAAI,sBAC1CA,EAAMA,EAAM,yBAA8B,CAAC,EAAI,2BAC/CA,EAAMA,EAAM,mBAAwB,CAAC,EAAI,qBACzCA,EAAMA,EAAM,gBAAqB,CAAC,EAAI,kBACtCA,EAAMA,EAAM,qBAA0B,CAAC,EAAI,uBAC3CA,EAAMA,EAAM,4BAAiC,CAAC,EAAI,8BAC3CA,CACT,EAAEA,IAAS,CAAC,CAAC,EAOTC,GAA6B,SAAUA,EAAe,CACxD,OAAAA,EAAcA,EAAc,0BAA+B,CAAC,EAAI,4BAChEA,EAAcA,EAAc,yBAA8B,CAAC,EAAI,2BACxDA,CACT,EAAEA,IAAiB,CAAC,CAAC,EACjBC,GAAyB,SAAUA,EAAW,CAChD,OAAAA,EAAUA,EAAU,mBAAwB,CAAC,EAAI,qBACjDA,EAAUA,EAAU,mBAAwB,CAAC,EAAI,qBACjDA,EAAUA,EAAU,oBAAyB,CAAC,EAAI,sBAClDA,EAAUA,EAAU,mBAAwB,CAAC,EAAI,qBACjDA,EAAUA,EAAU,oBAAyB,CAAC,EAAI,sBAClDA,EAAUA,EAAU,kBAAuB,CAAC,EAAI,oBAChDA,EAAUA,EAAU,iBAAsB,CAAC,EAAI,mBAC/CA,EAAUA,EAAU,iBAAsB,CAAC,EAAI,mBACxCA,CACT,EAAEA,IAAa,CAAC,CAAC,EAcXC,GAAN,MAAM0B,CAAK,CACT,OAAO,UAAUC,EAAO,CACtB,IAAIC,EAAI,IAAIF,EACZ,OAAAE,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACtBA,EAAM,UACRC,EAAE,QAAU,IAAI,KAAKD,EAAM,OAAO,GAEhCA,EAAM,QACRC,EAAE,MAAQnC,GAAoBI,GAAO8B,EAAM,KAAK,GAE9CA,EAAM,SACRC,EAAE,OAAS,IAAI,KAAKD,EAAM,MAAM,GAE3BC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAMC,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,UAAc,MAC5BA,EAAS,UAAe,KAAK,WAE3B,OAAO,KAAK,QAAY,MAC1BA,EAAS,QAAa,KAAK,SAEzB,OAAO,KAAK,WAAe,MAC7BA,EAAS,WAAgB,KAAK,YAE5B,OAAO,KAAK,QAAY,KAAe,KAAK,UAAY,OAC1DA,EAAS,QAAa,cAAe,KAAK,QAAU,KAAK,QAAQ,UAAU,EAAI,KAAK,SAElF,OAAO,KAAK,MAAU,MACxBA,EAAS,MAAW,KAAK,OAEvB,OAAO,KAAK,YAAgB,MAC9BA,EAAS,YAAiB,KAAK,aAE7B,OAAO,KAAK,OAAW,KAAe,KAAK,SAAW,OACxDA,EAAS,OAAY,cAAe,KAAK,OAAS,KAAK,OAAO,UAAU,EAAI,KAAK,QAE5EA,CACT,CACF,EAOM7B,GAAN,MAAM8B,CAAkB,CACtB,OAAO,UAAUJ,EAAO,CACtB,IAAIC,EAAI,IAAIG,EACZ,OAAAH,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACtBA,EAAM,QACRC,EAAE,MAAQhC,GAAoBC,GAAO8B,EAAM,KAAK,GAE3CC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAMC,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,WAAe,MAC7BA,EAAS,WAAgB,KAAK,YAE5B,OAAO,KAAK,QAAY,MAC1BA,EAAS,QAAa,KAAK,SAEzB,OAAO,KAAK,MAAU,MACxBA,EAAS,MAAW,KAAK,OAEvB,OAAO,KAAK,YAAgB,MAC9BA,EAAS,YAAiB,KAAK,aAE7B,OAAO,KAAK,OAAW,MACzBA,EAAS,OAAY,KAAK,QAExB,OAAO,KAAK,aAAiB,MAC/BA,EAAS,aAAkB,KAAK,cAE3BA,CACT,CACF,EACM5B,GAAN,MAAM8B,CAAmB,CACvB,OAAO,UAAUL,EAAO,CACtB,IAAIC,EAAI,IAAII,EACZ,OAAAJ,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACnBC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAMC,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,UAAc,MAC5BA,EAAS,UAAe,KAAK,WAE3B,OAAO,KAAK,OAAW,MACzBA,EAAS,OAAY,KAAK,QAErBA,CACT,CACF,EACM3B,GAAN,MAAM8B,CAAe,CACnB,OAAO,UAAUN,EAAO,CACtB,IAAIC,EAAI,IAAIK,EACZ,OAAAL,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACnBC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAMC,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,UAAc,MAC5BA,EAAS,UAAe,KAAK,WAExBA,CACT,CACF,EACM1B,GAAN,MAAM8B,CAAgB,CACpB,OAAO,UAAUP,EAAO,CACtB,IAAIC,EAAI,IAAIM,EACZ,OAAAN,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACtBA,EAAM,OACRC,EAAE,KAAO5B,GAAK,UAAU2B,EAAM,IAAI,GAE7BC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAMC,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,KAAS,KAAe,KAAK,OAAS,OACpDA,EAAS,KAAU,cAAe,KAAK,KAAO,KAAK,KAAK,UAAU,EAAI,KAAK,MAEtEA,CACT,CACF,EACMzB,GAAN,MAAM8B,CAA2B,CAC/B,OAAO,UAAUR,EAAO,CACtB,IAAIC,EAAI,IAAIO,EACZ,OAAAP,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACnBC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAMC,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,UAAc,MAC5BA,EAAS,UAAe,KAAK,WAExBA,CACT,CACF,EACMxB,GAAN,MAAM8B,CAA4B,CAChC,OAAO,UAAUT,EAAO,CACtB,IAAIC,EAAI,IAAIQ,EACZ,OAAAR,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACtBA,EAAM,cACRC,EAAE,YAAcD,EAAM,YAAY,IAAIpB,GAAY,SAAS,GAEtDqB,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAMC,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,YAAgB,KAAe,KAAK,cAAgB,OAClEA,EAAS,YAAiB,cAAe,KAAK,YAAc,KAAK,YAAY,UAAU,EAAI,KAAK,aAE3FA,CACT,CACF,EACMvB,GAAN,MAAM8B,CAAY,CAChB,OAAO,UAAUV,EAAO,CACtB,IAAIC,EAAI,IAAIS,EACZ,OAAAT,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACtBA,EAAM,YACRC,EAAE,UAAY,SAASD,EAAM,UAAW,EAAE,GAExCA,EAAM,WACRC,EAAE,SAAW,OAAO,KAAKD,EAAM,QAAQ,EAAE,OAAO,CAACW,EAAKC,KACpDD,EAAIC,CAAC,EAAI,SAASZ,EAAM,SAASY,CAAC,EAAG,EAAE,EAChCD,GACN,CAAC,CAAC,GAEHX,EAAM,UACRC,EAAE,QAAU,IAAI,KAAKD,EAAM,OAAO,GAE7BC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAMC,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,UAAc,MAC5BA,EAAS,UAAe,KAAK,WAE3B,OAAO,KAAK,SAAa,KAAe,KAAK,WAAa,OAC5DA,EAAS,SAAc,cAAe,KAAK,SAAW,KAAK,SAAS,UAAU,EAAI,KAAK,UAErF,OAAO,KAAK,UAAc,MAC5BA,EAAS,UAAe,KAAK,WAE3B,OAAO,KAAK,QAAY,MAC1BA,EAAS,QAAa,KAAK,SAEzB,OAAO,KAAK,QAAY,KAAe,KAAK,UAAY,OAC1DA,EAAS,QAAa,cAAe,KAAK,QAAU,KAAK,QAAQ,UAAU,EAAI,KAAK,SAElF,OAAO,KAAK,YAAgB,MAC9BA,EAAS,YAAiB,KAAK,aAE1BA,CACT,CACF,EACMtB,GAAN,MAAMgC,CAA0B,CAC9B,OAAO,UAAUb,EAAO,CACtB,IAAIC,EAAI,IAAIY,EACZ,OAAAZ,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACtBA,EAAM,YACRC,EAAE,UAAYhC,GAAoBG,GAAW4B,EAAM,SAAS,GAE1DA,EAAM,gBACRC,EAAE,cAAgBhC,GAAoBE,GAAe6B,EAAM,aAAa,GAEtEA,EAAM,QACRC,EAAE,MAAQhC,GAAoBC,GAAO8B,EAAM,KAAK,GAE3CC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAMC,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,WAAe,MAC7BA,EAAS,WAAgB,KAAK,YAE5B,OAAO,KAAK,UAAc,MAC5BA,EAAS,UAAe,KAAK,WAE3B,OAAO,KAAK,WAAe,MAC7BA,EAAS,WAAgB,KAAK,YAE5B,OAAO,KAAK,cAAkB,MAChCA,EAAS,cAAmB,KAAK,eAE/B,OAAO,KAAK,MAAU,MACxBA,EAAS,MAAW,KAAK,OAEpBA,CACT,CACF,EACMrB,GAAN,MAAMgC,CAA2B,CAC/B,OAAO,UAAUd,EAAO,CACtB,IAAIC,EAAI,IAAIa,EACZ,OAAAb,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACtBA,EAAM,cACRC,EAAE,YAAcD,EAAM,YAAY,IAAIpB,GAAY,SAAS,GAEtDqB,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAMC,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,YAAgB,KAAe,KAAK,cAAgB,OAClEA,EAAS,YAAiB,cAAe,KAAK,YAAc,KAAK,YAAY,UAAU,EAAI,KAAK,aAE3FA,CACT,CACF,EACMpB,GAAN,MAAMgC,CAAiB,CACrB,OAAO,UAAUf,EAAO,CACtB,IAAIC,EAAI,IAAIc,EACZ,OAAAd,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACtBA,EAAM,UACRC,EAAE,QAAUhB,GAAoB,UAAUe,EAAM,OAAO,GAErDA,EAAM,QACRC,EAAE,MAAQhC,GAAoBC,GAAO8B,EAAM,KAAK,GAE3CC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAMC,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,WAAe,MAC7BA,EAAS,WAAgB,KAAK,YAE5B,OAAO,KAAK,QAAY,KAAe,KAAK,UAAY,OAC1DA,EAAS,QAAa,cAAe,KAAK,QAAU,KAAK,QAAQ,UAAU,EAAI,KAAK,SAElF,OAAO,KAAK,MAAU,MACxBA,EAAS,MAAW,KAAK,OAEpBA,CACT,CACF,EACMnB,GAAN,MAAMgC,CAAkB,CACtB,OAAO,UAAUhB,EAAO,CACtB,IAAIC,EAAI,IAAIe,EACZ,OAAAf,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACtBA,EAAM,OACRC,EAAE,KAAOD,EAAM,KAAK,IAAI3B,GAAK,SAAS,GAEpC2B,EAAM,iBACRC,EAAE,eAAiBf,GAAsB,UAAUc,EAAM,cAAc,GAElEC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAMC,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,KAAS,KAAe,KAAK,OAAS,OACpDA,EAAS,KAAU,cAAe,KAAK,KAAO,KAAK,KAAK,UAAU,EAAI,KAAK,MAEzE,OAAO,KAAK,eAAmB,KAAe,KAAK,iBAAmB,OACxEA,EAAS,eAAoB,cAAe,KAAK,eAAiB,KAAK,eAAe,UAAU,EAAI,KAAK,gBAEpGA,CACT,CACF,EACMlB,GAAN,MAAMgC,CAAoB,CACxB,OAAO,UAAUjB,EAAO,CACtB,IAAIC,EAAI,IAAIgB,EACZ,OAAAhB,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACtBA,EAAM,WACRC,EAAE,SAAW,SAASD,EAAM,SAAU,EAAE,GAEnCC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAMC,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,OAAW,MACzBA,EAAS,OAAY,KAAK,QAExB,OAAO,KAAK,SAAa,MAC3BA,EAAS,SAAc,KAAK,UAEvBA,CACT,CACF,EACMjB,GAAN,MAAMgC,CAAsB,CAC1B,OAAO,UAAUlB,EAAO,CACtB,IAAIC,EAAI,IAAIiB,EACZ,OAAAjB,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACnBC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAMC,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,WAAe,MAC7BA,EAAS,WAAgB,KAAK,YAE5B,OAAO,KAAK,QAAY,MAC1BA,EAAS,QAAa,KAAK,SAEtBA,CACT,CACF,EA2BMhB,GAAN,MAAMgC,CAA2B,CAC/B,OAAO,UAAUnB,EAAO,CACtB,IAAIC,EAAI,IAAIkB,EACZ,OAAAlB,EAAI,OAAO,OAAOA,EAAGD,CAAK,EACnBC,CACT,CACA,YAAYC,EAAQ,CACbA,GAGL,OAAO,OAAO,KAAMA,CAAM,CAC5B,CACA,WAAY,CACV,IAAMC,EAAW,CAAC,EAClB,OAAI,OAAO,KAAK,WAAe,MAC7BA,EAAS,WAAgB,KAAK,YAE5B,OAAO,KAAK,WAAe,MAC7BA,EAAS,WAAgB,KAAK,YAE5B,OAAO,KAAK,OAAW,MACzBA,EAAS,OAAY,KAAK,QAErBA,CACT,CACF,EAwHMf,IAAe,OAAS,OAAO,YAAiB,SAAW,OAC3DC,GAAU,CACd,MAAS,uCACT,KAAQ,GACR,KAAQ,uCACR,KAAQ,uCACR,WAAc,sCAChB,EACIC,IAA4B,IAAM,CACpC,MAAMA,CAAY,CAChB,IAAI,MAAO,CACT,OAAOD,GAAQD,GAAY,YAAY,CAAC,CAC1C,CACA,IAAI,gBAAiB,CACnB,MAAO,WAAa,KAAK,IAC3B,CACF,CACA,OAAAE,EAAY,UAAO,SAA6B8B,EAAG,CACjD,OAAO,IAAKA,GAAK9B,EACnB,EACAA,EAAY,WAA0B+B,EAAmB,CACvD,MAAO/B,EACP,QAASA,EAAY,UACrB,WAAY,MACd,CAAC,EACMA,CACT,GAAG,EAWCC,IAAuC,IAAM,CAC/C,MAAMA,CAAuB,CAC3B,YAAY+B,EAAMC,EAAa,CAC7B,KAAK,KAAOD,EACZ,KAAK,YAAcC,EACnB,KAAK,MAAQ,KAAK,YAAY,cAChC,CACA,YAAa,CACX,MAAO,CACL,QAAS,IAAIC,EAAY,CACvB,eAAgB,kBAClB,CAAC,EACD,gBAAiB,EACnB,CACF,CACA,WAAWC,EAAG,CACZ,IAAMC,EAAUD,EAAE,UAAYA,EAAI,IAAInD,GAAkBmD,CAAC,EACzD,OAAO,KAAK,KAAK,KAAK,KAAK,MAAQ,4CAA6CC,EAAQ,UAAU,EAAG,KAAK,WAAW,CAAC,EAAE,KAAKC,EAAIC,GAAQrD,GAAmB,UAAUqD,CAAI,CAAC,CAAC,CAC9K,CACA,QAAQH,EAAG,CACT,IAAMC,EAAUD,EAAE,UAAYA,EAAI,IAAIjD,GAAeiD,CAAC,EACtD,OAAO,KAAK,KAAK,KAAK,KAAK,MAAQ,yCAA0CC,EAAQ,UAAU,EAAG,KAAK,WAAW,CAAC,EAAE,KAAKC,EAAIC,GAAQnD,GAAgB,UAAUmD,CAAI,CAAC,CAAC,CACxK,CACA,UAAUH,EAAG,CACX,IAAMC,EAAUD,EAAE,UAAYA,EAAI,IAAI1C,GAAiB0C,CAAC,EACxD,OAAO,KAAK,KAAK,KAAK,KAAK,MAAQ,2CAA4CC,EAAQ,UAAU,EAAG,KAAK,WAAW,CAAC,EAAE,KAAKC,EAAIC,GAAQ5C,GAAkB,UAAU4C,CAAI,CAAC,CAAC,CAC5K,CACA,oBAAoBH,EAAG,CACrB,IAAMC,EAAUD,EAAE,UAAYA,EAAI,IAAI/C,GAA2B+C,CAAC,EAClE,OAAO,KAAK,KAAK,KAAK,KAAK,MAAQ,qDAAsDC,EAAQ,UAAU,EAAG,KAAK,WAAW,CAAC,EAAE,KAAKC,EAAIC,GAAQjD,GAA4B,UAAUiD,CAAI,CAAC,CAAC,CAChM,CACA,mBAAmBH,EAAG,CACpB,IAAMC,EAAUD,EAAE,UAAYA,EAAI,IAAI5C,GAA0B4C,CAAC,EACjE,OAAO,KAAK,KAAK,KAAK,KAAK,MAAQ,oDAAqDC,EAAQ,UAAU,EAAG,KAAK,WAAW,CAAC,EAAE,KAAKC,EAAIC,GAAQ9C,GAA2B,UAAU8C,CAAI,CAAC,CAAC,CAC9L,CACA,oBAAoBH,EAAG,CACrB,IAAMC,EAAUD,EAAE,UAAYA,EAAI,IAAItC,GAA2BsC,CAAC,EAClE,OAAO,KAAK,KAAK,KAAK,KAAK,MAAQ,qDAAsDC,EAAQ,UAAU,EAAGG,EAAAC,EAAA,GACzG,KAAK,WAAW,GADyF,CAE5G,QAAS,UACX,EAAC,CACH,CACF,CACA,OAAAvC,EAAuB,UAAO,SAAwC6B,EAAG,CACvE,OAAO,IAAKA,GAAK7B,GAA2BwC,EAAYC,CAAU,EAAMD,EAASzC,EAAW,CAAC,CAC/F,EACAC,EAAuB,WAA0B8B,EAAmB,CAClE,MAAO9B,EACP,QAASA,EAAuB,UAChC,WAAY,MACd,CAAC,EACMA,CACT,GAAG,EAICC,IAAoC,IAAM,CAC5C,MAAMA,CAAoB,CACxB,YAAYyC,EAAK,CACf,KAAK,IAAMA,CACb,CACA,QAAQC,EAAW,CACjB,IAAMC,EAAM,IAAI3D,GAAe,CAC7B,UAAW0D,CACb,CAAC,EACD,OAAO,KAAK,IAAI,QAAQC,CAAG,EAAE,KAAKR,EAAIC,GAAQA,EAAK,IAAI,CAAC,CAC1D,CACA,WAAWQ,EAAYC,EAASC,EAAOC,EAAaC,EAAQ,CAC1D,IAAML,EAAM,IAAI7D,GAAkB,CAChC,WAAY8D,EACZ,QAASC,EACT,MAAOC,EACP,YAAaC,EACb,OAAQC,CACV,CAAC,EACD,OAAO,KAAK,IAAI,WAAWL,CAAG,CAChC,CACA,UAAUC,EAAYK,EAAQC,EAAUJ,EAAO,CAC7C,IAAMH,EAAM,IAAIpD,GAAiB,CAC/B,WAAYqD,EACZ,MAAOE,EACP,QAAS,IAAIrD,GAAoB,CAC/B,OAAQwD,EACR,SAAUC,CACZ,CAAC,CACH,CAAC,EACD,OAAO,KAAK,IAAI,UAAUP,CAAG,EAAE,KAAKR,EAAIC,GAAQ,IAAInC,GAAcmC,EAAK,KAAMA,EAAK,eAAe,WAAYA,EAAK,eAAe,OAAO,CAAC,CAAC,CAC5I,CACA,gBAAgBQ,EAAYO,EAAWC,EAAYC,EAAeP,EAAO,CACvE,IAAMQ,EAAO,CACX,WAAYV,EACZ,UAAWO,EACX,WAAYC,EACZ,cAAeC,EACf,MAAOP,CACT,EACMH,EAAM,IAAItD,GAA0BiE,CAAI,EAC9C,OAAO,KAAK,IAAI,mBAAmBX,CAAG,EAAE,KAAKR,EAAIC,GAAQA,EAAK,WAAW,CAAC,CAC5E,CACA,oBAAoBQ,EAAYW,EAAYP,EAAQ,CAClD,IAAML,EAAM,IAAIhD,GAA2B,CACzC,WAAYiD,EACZ,WAAYW,EACZ,OAAQP,CACV,CAAC,EACD,OAAO,KAAK,IAAI,oBAAoBL,CAAG,EAAE,KAAKR,EAAIqB,GAAOA,EAAI,SAAW,GAAG,CAAC,CAC9E,CACF,CACA,OAAAxD,EAAoB,UAAO,SAAqC4B,EAAG,CACjE,OAAO,IAAKA,GAAK5B,GAAwBuC,EAASxC,EAAsB,CAAC,CAC3E,EACAC,EAAoB,WAA0B6B,EAAmB,CAC/D,MAAO7B,EACP,QAASA,EAAoB,UAC7B,WAAY,MACd,CAAC,EACMA,CACT,GAAG,EAIGC,GAAN,KAAoB,CAClB,YAAYwD,EAASC,EAAYC,EAAS,CACxC,KAAK,QAAUF,EACf,KAAK,WAAaC,EAClB,KAAK,QAAUC,CACjB,CACF,IC/yBA,IAsDaC,GAtDbC,GAAAC,EAAA,KAEAC,IAwCAC,KACAC,KACAC,KACAC,IACAC,KACAC,KACAC,KAGAC,4BAGaX,IAAc,IAAA,CAArB,IAAOA,EAAP,MAAOA,CAAc,CACzBY,YACUC,EACAC,EACAC,EACAC,EACAC,EAAwC,CAJxC,KAAAJ,YAAAA,EACA,KAAAC,KAAAA,EACA,KAAAC,kBAAAA,EACA,KAAAC,WAAAA,EACA,KAAAC,oBAAAA,CACP,CAEHC,UAAUC,EAAoBC,EAAmBC,EAAgB,CAC/D,OAAO,KAAKN,kBACTG,UACC,IAAII,GAAiB,CACnBH,WAAAA,EACAC,UAAAA,EACAC,SAAAA,EACD,CAAC,EAEHE,KAAKC,EAAKC,GAA2BC,GAAkBD,EAAIE,OAAO,CAAC,CAAC,CACzE,CAEAC,YACET,EACAC,EACAS,EACAC,EACAC,EACAC,EACAC,EACAC,EAAoC,CAEpC,OAAO,KAAKnB,kBACTa,YACC,IAAIO,GAAmB,CACrBhB,WAAAA,EACAC,UAAAA,EACAS,IAAAA,EACAC,OAAAA,EACAC,SAAAA,EACAC,YAAAA,EACAC,SAAAA,EACAG,WAAYF,GAAoB,CAAA,GAAIV,IAAKa,GAAMC,GAAqBD,CAAC,CAAC,EACvE,CAAC,EAEHd,KAAKC,EAAKC,GAA6BC,GAAkBD,EAAIE,OAAO,CAAC,CAAC,CAC3E,CAEAY,OACEpB,EACAqB,EACApB,EACAqB,EAAuB,CAEvB,OAAO,KAAK1B,kBAAkBwB,OAC5B,IAAIG,GAAqB,CACvBvB,WAAAA,EACAqB,WAAAA,EACApB,UAAAA,EACAqB,gBAAAA,EACD,CAAC,CAEN,CAEAE,OAAOxB,EAAoBqB,EAAoBI,EAAkBC,EAAqB,CACpF,OAAO,KAAK9B,kBACT4B,OACC,IAAIG,GAAqB,CACvB3B,WAAYA,EACZqB,WAAYA,EACZI,QAASA,EACTC,aAAcA,EACf,CAAC,EAEHtB,KAAKC,EAAKC,GAAgCA,EAAMA,EAAIL,UAAY,EAAG,CAAC,CACzE,CAEA2B,kBACE5B,EACAqB,EACAQ,EACAH,EAAe,GAAE,CAEjB,OAAO,KAAK9B,kBACTgC,kBACC,IAAIE,GAAyB,CAC3B9B,WAAYA,EACZqB,WAAYA,EACZQ,UAAWA,EACXH,aAAcA,EACf,CAAC,EAEHtB,KAAKC,EAAKC,GAAoCA,EAAMA,EAAIL,UAAY,EAAG,CAAC,CAC7E,CAEA8B,OAAO/B,EAAoBC,EAAiB,CAC1C,OAAO,KAAKL,kBAAkBmC,OAC5B,IAAIC,GAAqB,CACvBhC,WAAAA,EACAC,UAAAA,EACD,CAAC,CAEN,CAEAgC,eAAejC,EAAoBC,EAAmBiC,EAAU,CAC9D,OAAO,KAAKtC,kBACTqC,eACC,IAAIE,GAAsB,CACxBnC,WAAAA,EACAC,UAAAA,EACAiC,GAAAA,EACD,CAAC,EAEH9B,KAAKC,EAAKC,GAAgCC,GAAkBD,EAAIE,OAAO,CAAC,CAAC,CAC9E,CAEA4B,UAAUpC,EAAoBqC,EAA4B,CACxD,IAAMC,EAAM,GAAG,KAAK5C,YAAY6C,cAAc,kBAC9C,OAAO,KAAK5C,KACT6C,KACCF,EACA,CACEG,YAAazC,EACbqC,QAASA,GAEX,CACEK,QAAS,OACTC,aAAc,OACdC,gBAAiB,GAClB,EAEFxC,KAAKyC,EAAK,CAAE,CACjB,CAEAC,YAAY9C,EAAoBC,EAAmB8C,EAA4B,CAC7E,IAAMT,EAAM,GAAG,KAAK5C,YAAY6C,cAAc,wBAC9C,OAAO,KAAK5C,KACT6C,KACCF,EACA,CACEG,YAAazC,EACbgD,WAAY/C,EACZgD,cAAeF,GAEjB,CACEL,QAAS,OACTC,aAAc,OACf,EAEFvC,KAAKyC,EAAK,CAAE,CACjB,CAEAK,IAAIlD,EAAoBC,EAAiB,CACvC,OAAO,KAAKL,kBACTsD,IACC,IAAIC,GAAkB,CACpBnD,WAAAA,EACAC,UAAAA,EACD,CAAC,EAEHG,KAAKC,EAAKC,GAA4BC,GAAkBD,EAAIE,OAAO,CAAC,CAAC,CAC1E,CAEA4C,KAAKf,EAA6BgB,EAAgBC,EAAgB,CAChE,IAAMC,EAAM,IAAIC,GAAoB,CAClCnB,QAASoB,GAAwBpB,CAAO,EACxCqB,cAAe,IAAIC,EAAoB,CAAEN,OAAAA,EAAQC,SAAAA,CAAQ,CAAE,EAC5D,EACD,OAAO,KAAK1D,kBAAkBwD,KAAKG,CAAG,EAAEnD,KACtCC,EAAKuD,GAAY,CACf,IAAMC,GAAYD,EAASC,UAAY,CAAA,GAAIxD,IAAKyD,GAASvD,GAAkBuD,CAAI,CAAC,EAAEC,OAAOC,EAAS,EAClG,OAAO,IAAIC,EAAcJ,EAAUD,EAASM,eAAeC,WAAYP,EAASM,eAAeE,OAAO,CACxG,CAAC,CAAC,CAEN,CAEAC,IAAIrE,EAAoBC,EAAmBqE,EAAc,CACvD,OAAO,KAAK1E,kBAAkByE,IAC5B,IAAIE,GAAkB,CACpBvE,WAAAA,EACAC,UAAAA,EACAqE,OAAAA,EACD,CAAC,CAEN,CAEAE,QAAQxE,EAAoBC,EAAiB,CAC3C,IAAMqC,EAAM,GAAG,KAAK5C,YAAY6C,cAAc,0BAC9C,OAAO,KAAK5C,KAAK6C,KACfF,EACA,CACEG,YAAazC,EACbgD,WAAY/C,GAEd,CACE0C,aAAc,OACdC,gBAAiB,GAClB,CAEL,CAEA6B,mBAAmBzE,EAAoBqB,EAAoBqD,EAAkB,CAC3E,OAAO,KAAK9E,kBACT+E,0BACC,IAAIC,GAAiC,CACnC5E,WAAAA,EACAqB,WAAAA,EACAqD,YAAAA,EACD,CAAC,EAEHtE,KAAKC,EAAKC,GAA2CC,GAAkBD,EAAIE,OAAO,CAAC,CAAC,CACzF,CAEAqE,aACE7E,EACAC,EACAC,EACA4E,EAAyB,CAEzB,OAAO,KAAKlF,kBACTiF,aACC,IAAIE,GAAoB,CACtB/E,WAAAA,EACAC,UAAAA,EACAC,SAAAA,EACA4E,iBAAAA,EACD,CAAC,EAEH1E,KAAKC,EAAKC,GAA8BC,GAAkBD,EAAIE,OAAO,CAAC,CAAC,CAC5E,CAEAwE,KAAKhF,EAAoBC,EAAmBgF,EAAwB,CAClE,OAAO,KAAKrF,kBAAkBoF,KAC5B,IAAIE,GAAmB,CACrBlF,WAAAA,EACAC,UAAAA,EACAgF,eAAAA,EACD,CAAC,CAEN,CAEAE,aACEnF,EACAC,EACAC,EACAkF,EACAN,EAAyB,CAEzB,OAAO,KAAKlF,kBACTuF,aACC,IAAIE,GAAoB,CACtBrF,WAAAA,EACAC,UAAAA,EACAC,SAAAA,EACAkF,gBAAAA,EACAN,iBAAAA,EACD,CAAC,EAEH1E,KAAKC,EAAKC,GAA8BC,GAAkBD,EAAIE,OAAO,CAAC,CAAC,CAC5E,CAEA8E,cAActF,EAAoBkC,EAAYqD,EAAS,CACrD,IAAMC,EAAY,IAAIC,EAAW,CAC/BzF,WAAAA,EACAkC,GAAAA,EACAqD,IAAAA,EACD,EAEKG,EAAK,IAAIC,EAAU,CACvBC,MAAO,CAAC,KAAK,EACd,EAED,OAAO,KAAKC,OAAOL,EAAWE,CAAE,CAClC,CAEAI,iBAAiB9F,EAAoBkC,EAAY6D,EAAY,CAC3D,IAAMP,EAAY,IAAIC,EAAW,CAC/BzF,WAAAA,EACAkC,GAAAA,EACA6D,OAAAA,EACD,EAEKL,EAAK,IAAIC,EAAU,CACvBC,MAAO,CAAC,QAAQ,EACjB,EACD,OAAO,KAAKC,OAAOL,EAAWE,CAAE,CAClC,CAEAM,cAAchG,EAAoBkC,EAAY+D,EAAiB,CAC7D,IAAMT,EAAY,IAAIC,EAAW,CAC/BzF,WAAAA,EACAkC,GAAAA,EACA+D,UAAAA,EACD,EAEKP,EAAK,IAAIC,EAAU,CACvBC,MAAO,CAAC,WAAW,EACpB,EAED,OAAO,KAAKC,OAAOL,EAAWE,CAAE,CAClC,CAEAQ,yBAAyBlG,EAAoBkC,EAAYiE,EAA8B,CACrF,IAAMX,EAAY,IAAIC,EAAW,CAC/BzF,WAAAA,EACAkC,GAAAA,EACAiE,qBAAAA,EACD,EAEKT,EAAK,IAAIC,EAAU,CACvBC,MAAO,CAAC,sBAAsB,EAC/B,EAED,OAAO,KAAKC,OAAOL,EAAWE,CAAE,CAClC,CAEAU,uBAAuBpG,EAAoBkC,EAAYmE,EAAkC,CACvF,IAAMC,EAAsBC,GAAsBF,CAAgB,EAC5Db,EAAY,IAAIC,EAAW,CAC/BzF,WAAAA,EACAkC,GAAAA,EACAmE,iBAAkBC,EACnB,EAEKZ,EAAK,IAAIC,EAAU,CACvBC,MAAO,CAAC,kBAAkB,EAC3B,EAED,OAAO,KAAKC,OAAOL,EAAWE,CAAE,CAClC,CAEAc,WAAWxG,EAAoBkC,EAAYuE,EAAY,CACrD,IAAMjB,EAAY,IAAIC,EAAW,CAC/BzF,WAAAA,EACAkC,GAAAA,EACAuE,KAAAA,EACD,EAEKf,EAAK,IAAIC,EAAU,CACvBC,MAAO,CAAC,MAAM,EACf,EAED,OAAO,KAAKC,OAAOL,EAAWE,CAAE,CAClC,CAEAgB,2BAA2B1G,EAAoBkC,EAAYyE,EAA4B,CACrF,IAAMnB,EAAY,IAAIC,EAAW,CAC/BzF,WAAAA,EACAkC,GAAAA,EACAyE,qBAAAA,EACD,EAEKjB,EAAK,IAAIC,EAAU,CACvBC,MAAO,CAAC,sBAAsB,EAC/B,EAED,OAAO,KAAKC,OAAOL,EAAWE,CAAE,CAClC,CAEAkB,mBAAmB5G,EAAoBC,EAAmB4G,EAAoB,CAC5E,OAAO,KAAKjH,kBACTkH,sBACC,IAAIC,GAA6B,CAC/B/G,WAAAA,EACAC,UAAAA,EACA4G,WAAAA,EACD,CAAC,EAEHzG,KAAKC,EAAKC,GAAuCC,GAAkBD,EAAIE,OAAO,CAAC,CAAC,CACrF,CAEAwG,eACEhH,EACAC,EACAiC,EACAxB,EACAC,EACAC,EACAC,EACAC,EACAC,EAAoC,CAEpC,OAAO,KAAKnB,kBACToH,eACC,IAAIC,GAAsB,CACxBjH,WAAAA,EACAC,UAAAA,EACAiC,GAAAA,EACAxB,IAAAA,EACAC,OAAAA,EACAC,SAAAA,EACAC,YAAAA,EACAC,SAAAA,EACAG,WAAYF,GAAoB,CAAA,GAAIV,IAAKa,GAAMC,GAAqBD,CAAC,CAAC,EACvE,CAAC,EAEHd,KAAKC,EAAKC,GAAgCC,GAAkBD,EAAIE,OAAO,CAAC,CAAC,CAC9E,CAEQqF,OAAOrF,EAAqB0G,EAAe,CACjD,OAAO,KAAKtH,kBACTiG,OACC,IAAIsB,GAAqB,CACvB3G,QAASA,EACT4G,UAAWF,EACZ,CAAC,EAEH9G,KAAKC,EAAKC,GAA+BC,GAAkBD,EAAIE,OAAO,CAAC,CAAC,CAC7E,CAEA6G,KAAKrH,EAAoBC,EAAmBqE,EAAc,CACxD,OAAO,KAAK1E,kBAAkByH,KAC5B,IAAIC,GAAmB,CACrBtH,WAAAA,EACAC,UAAAA,EACAqE,OAAAA,EACD,CAAC,CAEN,CAEAiD,UAAUvH,EAAoBC,EAAiB,CAC7C,OAAO,KAAKL,kBACT2H,UACC,IAAIC,GAAwB,CAC1BxH,WAAAA,EACAC,UAAAA,EACD,CAAC,EAEHG,KAAKC,EAAKC,GAAmCA,EAAMA,EAAIL,UAAY,EAAG,CAAC,CAC5E,CAEAwH,kBAAkBzH,EAAoBC,EAAiB,CACrD,OAAO,KAAKJ,WACT6H,YAAY,MAAOC,GAAyB3H,CAAU,EAAG,CACxD4H,KAAM,YAAY5H,CAAU,IAAIC,CAAS,GACzC4H,0BAA2B,GAC5B,EACAzH,KACC0H,GAAWxF,GACF,KAAKxC,oBAAoBiI,WAAW,GAAIzF,EAAK0F,GAAMC,gBAAiB,GAAI,EAAK,EAAE7H,KACpF8H,EAAW,IAAMC,EAAG,IAAI,CAAC,EACzB9H,EAAK+H,GACEA,EAGE,WAAWA,EAAOC,MAAM,GAAGD,EAAOE,SAAS,GAFzChG,CAGV,CAAC,CAEL,EACD4F,EAAW,IAAK,CACd,MAAM,IAAIK,MAAM,+BAA+B,CACjD,CAAC,EACDC,GAAK,CAAC,CAAC,CAEb,yCArcW3J,GAAc4J,EAAAC,CAAA,EAAAD,EAAAE,CAAA,EAAAF,EAAAG,EAAA,EAAAH,EAAAI,EAAA,EAAAJ,EAAAK,EAAA,CAAA,CAAA,wBAAdjK,EAAckK,QAAdlK,EAAcmK,UAAAC,WADD,MAAM,CAAA,EAC1B,IAAOpK,EAAPqK,SAAOrK,CAAc,GAAA,ICtD3B,IAAAsK,GAAAC,EAAA,QCAA,IAAAC,GAAAC,EAAA,KAAAC,KACAF,OCDA,IAAAG,GAAAC,EAAA,QCAA,IAAAC,GAAAC,EAAA,QCmFA,SAASC,GAAuBC,EAA4D,CAC1F,MAAO,CACLC,QAASD,GAAYC,SAAW,GAChCC,KAAMF,GAAYE,MAAQ,GAC1BC,MAAOH,GAAYG,OAAS,GAC5BC,IAAKJ,GAAYI,KAAO,GACxBC,QAASL,GAAYK,SAAW,GAEpC,CAEM,SAAUC,GAAoBC,EAAwB,CAC1D,IAAMC,EAAW,IAAIC,KAAK,sBAAsB,EAAEC,QAAO,EAEzD,MAAO,CACLC,eAAgBJ,EAAQI,gBAAkB,GAC1CC,WAAYL,EAAQK,YAAc,GAClCC,IAAKN,EAAQM,KAAO,GACpBC,YAAaP,EAAQO,aAAe,GACpCC,WAAYR,EAAQQ,YAAc,GAClCC,aAAcT,EAAQS,cAAgB,GACtCC,QAASV,EAAQU,SAAW,GAC5BC,OAAQX,EAAQW,OAAOR,QAAO,IAAOF,EAAW,IAAIC,KAAKF,EAAQW,MAAM,EAAIC,OAC3EC,aAAcb,EAAQa,aAAaV,QAAO,IAAOF,EAAW,IAAIC,KAAKF,EAAQa,YAAY,EAAID,OAC7FE,QAASd,EAAQc,QAAQX,QAAO,IAAOF,EAAW,IAAIC,KAAKF,EAAQc,OAAO,EAAIF,OAC9EG,QAASf,EAAQe,QAAQZ,QAAO,IAAOF,EAAW,IAAIC,KAAKF,EAAQe,OAAO,EAAIH,OAC9EI,UAAWC,GAAiBjB,EAAQgB,SAAS,EAC7CE,gBAAiBD,GAAiBjB,EAAQkB,eAAe,EACzDC,YAAanB,EAAQmB,YAAYhB,QAAO,IAAOF,EAAW,IAAIC,KAAKF,EAAQmB,WAAW,EAAIP,OAC1FQ,kBACEpB,EAAQoB,kBAAkBjB,QAAO,IAAOF,EAAW,IAAIC,KAAKF,EAAQoB,iBAAiB,EAAIR,OAC3FS,gBAAiB7B,GAAuBQ,EAAQqB,eAAe,EAC/DC,gBAAiBtB,EAAQsB,iBAAmB,EAC5CC,gBAAiBvB,EAAQuB,iBAAmB,EAC5CC,OAAQC,GAA0BzB,EAAQwB,MAAM,EAChDE,MAAO1B,EAAQ0B,MAAQC,GAAsB3B,EAAQ0B,KAAK,EAAId,OAC9DgB,OAAQC,GAA0B7B,EAAQ4B,MAAM,EAChDE,aAAc9B,EAAQ8B,aACtBC,YAAa/B,EAAQ+B,aAAe,GAExC,CA1HA,IAAAC,GAAAC,EAAA,KAOAC,KAQAC,OCfA,IAAAC,GAAAC,EAAA,QCGM,SAAUC,GAAeC,EAAwB,CACrD,OAAIA,EAAMA,iBAAiBC,WACzBC,QAAQF,MAAM,qBAAsBA,EAAMA,MAAMG,OAAO,EAEvDD,QAAQF,MAAM,mBAAmBA,EAAMG,OAAO,EAAE,EAG3CC,GAAqB,wBAAwB,CACtD,CAXA,IAAAC,GAAAC,EAAA,KAAAC,OCAA,IAWaC,GAXbC,GAAAC,EAAA,KAKAC,IAEAC,kBAIaJ,IAAiB,IAAA,CAAxB,IAAOA,EAAP,MAAOA,CAAiB,CAC5BK,YAAoBC,EAAkCC,EAAgB,CAAlD,KAAAD,YAAAA,EAAkC,KAAAC,KAAAA,CAAmB,CAEzEC,YAAYC,EAA8B,CACxC,IAAMC,EAAc,aAAaD,EAAEE,QAAQ,GAC3C,OAAO,KAAKJ,KACTK,IAAI,KAAKN,YAAYO,eAAiB,eAAiBH,EAAa,KAAKI,WAAU,CAAE,EACrFC,KAAKC,EAAK,EAAIC,EAAWC,EAAc,CAAC,CAC7C,CAEQJ,YAAU,CAChB,MAAO,CACLK,aAAc,OACdC,gBAAiB,GAErB,yCAfWpB,GAAiBqB,EAAAC,CAAA,EAAAD,EAAAE,CAAA,CAAA,CAAA,wBAAjBvB,EAAiBwB,QAAjBxB,EAAiByB,UAAAC,WADJ,MAAM,CAAA,EAC1B,IAAO1B,EAAP2B,SAAO3B,CAAiB,GAAA,ICX9B,IAWa4B,GAXbC,GAAAC,EAAA,KAMAC,IACAC,kBAIaJ,IAAwB,IAAA,CAA/B,IAAOA,EAAP,MAAOA,CAAwB,CACnCK,YAAoBC,EAAkCC,EAAgB,CAAlD,KAAAD,YAAAA,EAAkC,KAAAC,KAAAA,CAAmB,CAEzEC,YAAYC,EAAmC,CAC7C,IAAMC,EAAc,eAAeD,EAAEE,UAAU,SAASF,EAAEG,IAAI,UAAUH,EAAEI,KAAK,GAC/E,OAAO,KAAKN,KACTO,IAAI,KAAKR,YAAYS,eAAiB,sBAAwBL,EAAa,KAAKM,WAAU,CAAE,EAC5FC,KAAKC,EAAK,EAAIC,EAAWC,EAAc,CAAC,CAC7C,CAEAC,YAAYZ,EAAmC,CAC7C,IAAMC,EAAc,eAAeD,EAAEE,UAAU,SAASF,EAAEG,IAAI,UAAUH,EAAEI,KAAK,GAC/E,OAAO,KAAKN,KACTO,IAAI,KAAKR,YAAYS,eAAiB,2BAA6BL,EAAa,KAAKM,WAAU,CAAE,EACjGC,KAAKC,EAAK,EAAIC,EAAWC,EAAc,CAAC,CAC7C,CAEQJ,YAAU,CAChB,MAAO,CACLM,aAAc,OACdC,gBAAiB,GAErB,yCAtBWvB,GAAwBwB,EAAAC,CAAA,EAAAD,EAAAE,CAAA,CAAA,CAAA,wBAAxB1B,EAAwB2B,QAAxB3B,EAAwB4B,UAAAC,WADX,MAAM,CAAA,EAC1B,IAAO7B,EAAP8B,SAAO9B,CAAwB,GAAA,ICA/B,SAAU+B,GAAsBC,EAAoC,CACxE,OAAQA,EAAK,CACX,KAAKC,GAAkBC,wBACrB,OAAOC,GAAeC,QACxB,KAAKH,GAAkBI,oBACrB,OAAOF,GAAeG,IACxB,KAAKL,GAAkBM,wBACrB,OAAOJ,GAAeK,QACxB,KAAKP,GAAkBQ,wBACrB,OAAON,GAAeO,QACxB,KAAKT,GAAkBU,uBACrB,OAAOR,GAAeS,MAC1B,CACA,OAAOT,GAAeU,KACxB,CAzBA,IAEYV,GAFZW,GAAAC,EAAA,KAAAC,IAEYb,GAAZ,SAAYA,EAAc,CACxBA,OAAAA,EAAA,MAAA,QACAA,EAAA,QAAA,UACAA,EAAA,IAAA,MACAA,EAAA,QAAA,UACAA,EAAA,QAAA,UACAA,EAAA,OAAA,SANUA,CAOZ,EAPYA,IAAc,CAAA,CAAA,ICgEpB,SAAUc,GAAgBC,EAAuB,CACrD,MAAO,CACLC,WAAYD,EAAKC,YAAc,GAC/BC,UAAWF,EAAKE,UAAY,IAAIC,KAAKH,EAAKE,SAAS,EAAIE,OACvDC,WAAYL,EAAKK,YAAc,GAC/BC,MAAON,EAAKM,OAAS,EACrBC,SAAUP,EAAKO,SAAWC,EAAgBR,EAAKO,QAAQ,EAAIE,EAASC,IACpEC,QAASX,EAAKW,SAAW,GACzBC,MAAOZ,EAAKY,MAAQZ,EAAKY,MAAMC,IAAKC,GAAMC,GAAoBD,CAAC,CAAC,EAAI,CAAA,EACpEE,gBAAiBC,GAAuBjB,EAAKgB,eAAe,EAC5DE,UAAWlB,EAAKkB,WAAa,GAC7BC,eAAgBnB,EAAKmB,gBAAkB,EACvCC,kBAAmBpB,EAAKoB,kBAAoB,IAAIjB,KAAKH,EAAKoB,iBAAiB,EAAIhB,OAC/EiB,OAAQrB,EAAKqB,OAAS,IAAIlB,KAAKH,EAAKqB,MAAM,EAAIjB,OAC9CkB,KAAMtB,EAAKsB,MAAQ,GACnBC,OAAQC,GAAsBxB,EAAKuB,MAAM,EACzCE,aAAczB,EAAKyB,cAAgB,EACnCC,eAAgB1B,EAAK0B,eAAiB1B,EAAK0B,eAAeb,IAAKc,GAAOC,GAAqBD,CAAE,CAAC,EAAI,CAAA,EAClGE,UAAW7B,EAAK6B,WAAa,EAC7BC,iBAAkB9B,EAAK8B,iBAAmB,CAAA,GAAIjB,IAAKkB,GAAOC,GAAsBD,CAAE,CAAC,EAEvF,CAEM,SAAUhB,GAAoBf,EAA6BiC,EAAyB,CACxF,IAAI1B,EACJ,OAAI0B,IAAgB7B,SAClBG,EAAWC,EAAgByB,CAAW,GAEjC,CACLC,IAAKlC,EAAKkC,KAAO,GACjBC,YAAanC,EAAKmC,aAAe,GACjCC,OAAQpC,EAAKoC,QAAU,EACvBC,QAASrC,EAAKqC,SAAW,GACzBC,WAAYtC,EAAKsC,YAAc,GAC/BC,eAAgBvC,EAAKuC,gBAAkB,EACvCjC,MAAON,EAAKM,OAAS,EACrBC,SAAUA,GAAYE,EAASC,IAC/B8B,iBAAkBxC,EAAKwC,iBAAmBxC,EAAKwC,iBAAiB3B,IAAKC,GAAM2B,GAAuB3B,CAAC,CAAC,EAAI,CAAA,EACxGb,WAAYD,EAAKC,YAAc,GAC/ByC,YAAa1C,EAAK2C,KAAO,GACzBtC,WAAYL,EAAKK,YAAc,GAC/BwB,UAAW7B,EAAK6B,WAAa,EAC7BC,iBAAkB9B,EAAK8B,iBAAmB,CAAA,GAAIjB,IAAKkB,GAAOC,GAAsBD,CAAE,CAAC,EACnFa,SAAU5C,EAAK4C,UAAY,EAC3BC,UAAW7C,EAAK6C,WAAa,EAEjC,CAEM,SAAUjB,GAAqBD,EAA0B,CAC7D,MAAO,CACLmB,cAAenB,EAAGmB,eAAiB,EACnCC,YAAapB,EAAGoB,aAAe,GAC/BC,cAAeC,GAAyBtB,EAAGqB,aAAa,EAE5D,CAEM,SAAUC,GAAyBC,EAA2B,CAClE,OAAQA,EAAG,CACT,KAAKC,GAAWC,wBACd,OAAOC,GAAkBD,wBAC3B,KAAKD,GAAWG,wBACd,OAAOD,GAAkBC,uBAC7B,CACA,OAAOD,GAAkBE,iBAC3B,CAEM,SAAUvB,GAAsBD,EAA2B,CAC/D,MAAO,CACLK,OAAQL,EAAGK,QAAU,EACrBoB,KAAMzB,EAAGyB,MAAQ,GACjBC,WAAY1B,EAAG0B,YAAc,EAC7BC,UAAW3B,EAAG2B,WAAa,GAE/B,CA3IA,IAkCYL,GAlCZM,GAAAC,EAAA,KAAAC,KAEAC,KACAC,IAQAC,KAuBYX,GAAZ,SAAYA,EAAiB,CAC3BA,OAAAA,EAAA,wBAAA,cACAA,EAAA,wBAAA,cACAA,EAAA,kBAAA,GAHUA,CAIZ,EAJYA,IAAiB,CAAA,CAAA,ICxBvB,SAAUY,GAAuBC,EAA+B,CACpE,IAAIC,EACJ,OAAID,EAAMC,WAAaC,SACrBD,EAAWE,EAAgBH,EAAMC,QAAQ,GAEpC,CACLG,WAAYJ,EAAMI,YAAc,GAChCC,qBAAsBL,EAAMK,sBAAwB,EACpDC,kBAAmBN,EAAMM,mBAAqB,EAC9CL,SAAUA,GAAYM,EAASC,IAEnC,CApBA,IAAAC,GAAAC,EAAA,KAAAC,OCDA,IAAaC,EAUAC,GACAC,GACAC,GACAC,GACAC,GACAC,GACAC,GACAC,GACAC,GACAC,GACAC,GACAC,GACAC,GACAC,GACAC,GACAC,GACAC,GACAC,GA3BbC,GAAAC,EAAA,KAAapB,EAAP,KAAgB,CAIpBqB,YAAYC,EAAU,CACpB,KAAKC,YAAcD,EACnB,KAAKE,KAAOF,CACd,GAGWrB,GAAyB,IAAID,EAAU,SAAS,EAChDE,GAA0B,IAAIF,EAAU,UAAU,EAClDG,GAAsB,IAAIH,EAAU,MAAM,EAC1CI,GAAwB,IAAIJ,EAAU,QAAQ,EAC9CK,GAA4B,IAAIL,EAAU,YAAY,EACtDM,GAAyB,IAAIN,EAAU,kBAAkB,EACzDO,GAA0B,IAAIP,EAAU,WAAW,EACnDQ,GAA4B,IAAIR,EAAU,YAAY,EACtDS,GAAuB,IAAIT,EAAU,OAAO,EAC5CU,GAA2B,IAAIV,EAAU,WAAW,EACpDW,GAAqB,IAAIX,EAAU,KAAK,EACxCY,GAAqB,IAAIZ,EAAU,KAAK,EACxCa,GAA2B,IAAIb,EAAU,WAAW,EACpDc,GAAyB,IAAId,EAAU,SAAS,EAChDe,GAAsB,IAAIf,EAAU,MAAM,EAC1CgB,GAAwB,IAAIhB,EAAU,QAAQ,EAC9CiB,GAAuC,IAAIjB,EAAU,yBAAyB,EAC9EkB,GAAyC,IAAIlB,EAAU,2BAA2B,ICNzF,SAAUyB,GAAgBC,EAAuB,CACrD,MAAO,CACLC,WAAYD,EAAKC,YAAc,GAC/BC,KAAMF,EAAKE,MAAQ,EACnBC,QAASH,EAAKG,SAAWC,OACzBC,eAAgBL,EAAKK,gBAAkB,GACvCC,UAAW,IAAIC,EAAUP,EAAKM,WAAa,EAAE,EAC7CE,SAAUC,EAAgBT,EAAKQ,QAAQ,EACvCE,OAAQV,EAAKU,QAAUN,OACvBO,IAAKX,EAAKW,KAAOP,OACjBQ,UAAWZ,EAAKY,WAAaR,OAC7BS,SAAUb,EAAKa,UAAYT,OAC3BU,SAAUd,EAAKc,UAAYV,OAC3BW,OAAQf,EAAKe,QAAU,GACvBC,YAAahB,EAAKgB,aAAe,EACjCC,cAAejB,EAAKiB,eAAiB,GAEzC,CArCA,IAAAC,GAAAC,EAAA,KAAAC,KACAC,OCFA,IAAAC,GAAAC,EAAA,QCEA,IAAAC,GAAAC,EAAA,QCFA,IAAAC,GAAAC,EAAA,KAAAC,KACAF,KACAG,KACAC,OCOM,SAAUC,GAAeC,EAA4B,CACzD,MAAO,CACLC,KAAMD,EAAWC,MAAQ,GACzBC,IAAKF,EAAWE,KAAO,GACvBC,QAASH,EAAWG,SAAW,GAC/BC,mBAAoBJ,EAAWI,oBAAsB,GACrDC,YAAaL,EAAWK,aAAe,GAE3C,CARA,IAAAC,GAAAC,EAAA,QCQM,SAAUC,GAAwBC,EAA0B,CAChE,OAAOC,EAAAC,EAAA,GACFF,GADE,CAELG,aAAcH,EAAOG,aAAe,CAAA,GAAIC,IAAKC,GAAOC,GAAiBD,CAAE,CAAC,GAE5E,CAEA,SAASC,GAAiBH,EAAwB,CAChD,OAAQA,EAAW,CACjB,KAAKI,GAAYC,SACf,OAAOC,GAAeC,8BACxB,KAAKH,GAAYI,SACf,OAAOF,GAAeG,8BACxB,KAAKL,GAAYM,aACf,OAAOJ,GAAeK,0BACxB,KAAKP,GAAYQ,IACf,OAAON,GAAeO,iBACxB,KAAKT,GAAYU,oBACf,OAAOR,GAAeS,kCAC1B,CACA,OAAOT,GAAeU,oBACxB,CAvCA,IASYZ,GATZa,GAAAC,EAAA,KAAAC,IASYf,GAAZ,SAAYA,EAAW,CACrBA,OAAAA,EAAAA,EAAA,QAAA,CAAA,EAAA,UACAA,EAAAA,EAAA,SAAA,CAAA,EAAA,WACAA,EAAAA,EAAA,SAAA,CAAA,EAAA,WACAA,EAAAA,EAAA,aAAA,CAAA,EAAA,eACAA,EAAAA,EAAA,IAAA,CAAA,EAAA,MACAA,EAAAA,EAAA,oBAAA,CAAA,EAAA,sBANUA,CAOZ,EAPYA,IAAW,CAAA,CAAA,ICTvB,IAmFMgB,GAMOC,GAzFbC,GAAAC,EAAA,KACAC,IA+CAC,KAUAC,IAKAC,KACAC,KACAC,KAEAC,KACAC,KAEAC,KACAC,KACAC,KACAC,KACAC,uBASMhB,GACJiB,GAEO,CAAC,CAACA,EAGEhB,IAAc,IAAA,CAArB,IAAOA,EAAP,MAAOA,CAAc,CACzBiB,YACUC,EACAC,EACAC,EACAC,EACAC,EACAC,EAA2B,CAL3B,KAAAL,WAAAA,EACA,KAAAC,WAAAA,EACA,KAAAC,kBAAAA,EACA,KAAAC,WAAAA,EACA,KAAAC,YAAAA,EACA,KAAAC,UAAAA,CACP,CAGHC,gBAAgBC,EAAoBC,EAAaC,EAAgB,CAC/D,IAAMC,EAAM,IAAIC,GAAuB,CACrCJ,WAAYA,EACZC,IAAKA,EACLC,SAAUA,EACX,EACD,OAAO,KAAKT,WAAWM,gBAAgBI,CAAG,EAAEE,KAC1CC,EAAKC,IACEA,EAASC,WACZD,EAASC,SAAWC,EAASC,KAExBH,EACR,CAAC,CAEN,CAGAI,uBACEX,EACAY,EAA+B,CAE/B,IAAMT,EAAM,IAAIU,GAA8B,CAC5Cb,WAAYA,EACZY,KAAMA,EACP,EACD,OAAO,KAAKnB,WAAWkB,uBAAuBR,CAAG,CACnD,CAEAW,sCACEd,EACAe,EAAmC,CAEnC,IAAMZ,EAAM,IAAIU,GAA8B,CAC5Cb,WAAYA,EACZe,OAAQA,GAAS,CAAA,GACdT,IAAKU,GAAQ,CACZ,GAAKA,EAGL,MAAO,CACLf,IAAKe,EAAKf,IACVgB,UAAWC,GAAeF,EAAKC,SAAS,EACxCf,SAAUc,EAAKd,UAAY,EAE/B,CAAC,EACAiB,OAAO7C,EAA+C,EAC1D,EACD,OAAO,KAAKmB,WAAWkB,uBAAuBR,CAAG,CACnD,CAEAiB,mBAAmBC,EAAgB,CACjC,OAAO,KAAK3B,WAAW4B,YAAY,CAAED,SAAAA,CAAQ,CAAE,CACjD,CAEAE,yBAAyBvB,EAAoBwB,EAAcC,EAAa,CACtE,OAAO,KAAK9B,kBAAkB2B,YAAY,CAAEtB,WAAAA,EAAYwB,KAAAA,EAAMC,MAAAA,CAAK,CAAE,CACvE,CAEAC,yBAAyB1B,EAAoBwB,EAAcC,EAAa,CACtE,OAAO,KAAK9B,kBAAkBgC,YAAY,CAAE3B,WAAAA,EAAYwB,KAAAA,EAAMC,MAAAA,CAAK,CAAE,CACvE,CAEAG,2BACE5B,EACA6B,EACAC,EAAgB,CAEhB,IAAM3B,EAAM,IAAI4B,GAAkC,CAChD/B,WAAYA,EACZgC,cAAe,IAAIC,EAAoB,CAAEJ,OAAAA,EAAQC,SAAAA,CAAQ,CAAE,EAC5D,EACD,OAAO,KAAKrC,WAAWmC,2BAA2BzB,CAAG,EAAEE,KACrDC,EAAK4B,GAAQ,CACX,IAAMC,GAAWD,EAAKC,SAAW,CAAA,GAAI7B,IAAK8B,IACjC,CACLpC,WAAYoC,EAAEpC,WACdwB,KAAMY,EAAEZ,KACRC,MAAOW,EAAEX,MACTY,QAASD,EAAEC,QACXC,OAAQC,GAAqBH,EAAEE,QAAU,CAAC,GAE7C,EACD,OAAO,IAAIE,EAA8BL,EAASD,EAAKO,eAAeC,WAAYR,EAAKO,eAAeE,OAAO,CAC/G,CAAC,CAAC,CAEN,CAEAC,sBAAsB5C,EAAkB,CACtC,OAAO,KAAKP,WAAWoD,YAAY,CAAE7C,WAAYA,EAAYC,IAAK,IAAI,CAAE,CAC1E,CAEA6C,uBAAuB9C,EAAkB,CACvC,OAAO,KAAKP,WAAWoD,YAAY,CAAE7C,WAAYA,EAAYC,IAAK,uBAAuB,CAAE,CAC7F,CAEA4C,YAAY7C,EAAoBC,EAAW,CACzC,OAAO,KAAKR,WAAWoD,YAAY,CAAE7C,WAAYA,EAAYC,IAAKA,CAAG,CAAE,EAAEI,KAAKC,EAAKC,GAAaA,EAASwC,EAAE,CAAC,CAC9G,CAEAC,yBACEC,EACAhD,EACAgB,EACAiC,EACAC,EACAC,EACAC,EACAC,EACAC,EAA6B,CAE7B,IAAMC,EAAU,IAAIC,GAAgC,CAClDR,cAAAA,EACAhD,IAAAA,EACAoD,iBAAAA,EACAC,yBAAAA,EACAC,uBAAAA,EACD,EACDC,OAAAA,EAAQvC,UAAYC,GAAeD,CAAS,EAC5CuC,EAAQN,QAAUQ,GAAwBR,CAAO,EACjDM,EAAQL,WAAa,IAAIQ,GAAcR,CAAU,EACjDK,EAAQJ,SAAWQ,GAAqBR,CAAQ,EACzC,KAAK3D,WAAWuD,yBAAyBQ,CAAO,EAAEnD,KAAKwD,GAAM,EAAI,CAAC,CAC3E,CAEAC,yBACEb,EACAhD,EACA,CACEgB,UAAAA,EACAiC,QAAAA,EACAC,WAAAA,EACAC,SAAAA,EACAC,iBAAAA,EACAC,yBAAAA,EACAC,uBAAAA,CAAsB,EASvB,CAED,IAAMQ,EAAY,IAAIC,EAAU,CAAEC,MAAO,CAAA,CAAE,CAAE,EACvCT,EAAU,IAAIU,GAAgC,CAAEjB,cAAAA,EAAehD,IAAAA,CAAG,CAAE,EAE1E,OAAIgB,IAAc,OAChBuC,EAAQvC,UAAYC,GAAeD,CAAS,EAC5C8C,EAAUE,MAAME,KAAK,WAAW,GAE9BjB,IAAY,OACdM,EAAQN,QAAUQ,GAAwBR,CAAO,EACjDa,EAAUE,MAAME,KAAK,SAAS,GAE5BhB,IAAe,OACjBK,EAAQL,WAAa,IAAIQ,GAAcR,CAAU,EACjDY,EAAUE,MAAME,KAAK,YAAY,GAE/Bf,IAAa,OACfI,EAAQJ,SAAWQ,GAAqBR,CAAQ,EAChDW,EAAUE,MAAME,KAAK,UAAU,GAE7Bd,IAAqB,OACvBG,EAAQH,iBAAmBA,GAAoB,EAC/CU,EAAUE,MAAME,KAAK,kBAAkB,GAErCb,IACFE,EAAQF,yBAA2BA,EACnCS,EAAUE,MAAME,KAAK,0BAA0B,GAE7CZ,IACFC,EAAQD,uBAAyBA,EACjCQ,EAAUE,MAAME,KAAK,wBAAwB,GAExC,KAAK1E,WAAWqE,yBAAyBN,CAAO,EAAEnD,KAAKwD,GAAM,EAAI,CAAC,CAC3E,CAEAO,yBAAyBnB,EAAuBhD,EAAW,CACzD,IAAMuD,EAAU,IAAIa,GAAgC,CAAEpB,cAAAA,EAAehD,IAAAA,CAAG,CAAE,EAC1E,OAAO,KAAKR,WAAW2E,yBAAyBZ,CAAO,EAAEnD,KAAKwD,GAAM,EAAI,CAAC,CAC3E,CAGAS,uBACEtE,EACAY,EACAqC,EAAsB,CAEtB,OAAO,KAAKxD,WAAW6E,uBAAuB,CAAEtE,WAAAA,EAAYY,KAAAA,EAAMqC,cAAAA,CAAa,CAAE,EAAE5C,KACjFC,EAAK8B,GAAK,CACR,IAAMmC,EAAmBnC,EAAEoC,eAAiB,CAAA,EACtCC,EAAqD,CAAA,EAC3D,QAAWC,KAAKC,OAAOC,KAAKL,CAAgB,EAAG,CAC7C,IAAMM,EAAyBN,EAAiBG,CAAC,EACjDD,EAAgBC,CAAC,EAAII,GAAsBD,CAAsB,CACnE,CACA,OAAOJ,CACT,CAAC,CAAC,CAEN,CAGAM,sBACE/E,EACAQ,EACAI,EACAoE,EAAgB,CAEhB,IAAMC,EAAyBD,IAAYE,OAAY,GAAKF,EAC5D,OAAO,KAAKpF,WAAWuF,eAAe,CAAEnF,WAAAA,EAAYQ,SAAAA,EAAUI,KAAAA,EAAMoE,QAASC,CAAc,CAAE,EAAE5E,KAC7FC,EAAK8B,GAAK,CACR,IAAMgD,EAAkBhD,EAAEoC,eAAiB,CAAA,EACrCa,EAAoD,CAAA,EAC1D,QAAWX,KAAKC,OAAOC,KAAKQ,CAAe,EAAG,CAC5C,IAAME,EAAwBF,EAAgBV,CAAC,EAC/CW,EAAeX,CAAC,EAAII,GAAsBQ,CAAqB,CACjE,CACA,OAAOD,CACT,CAAC,CAAC,CAEN,CAEAE,wBACEC,EACA3D,EACAC,EAAgB,CAEhB,IAAM3B,EAAM,IAAIsF,GAA+B,CAC7CD,QAASA,EACTxD,cAAe,IAAIC,EAAoB,CAAEJ,OAAAA,EAAQC,SAAAA,CAAQ,CAAE,EAC5D,EACD,OAAO,KAAKrC,WAAW8F,wBAAwBpF,CAAG,EAAEE,KAClDC,EAAKC,GAAY,CACf,IAAMmF,GAAYnF,EAASmF,UAAY,CAAA,GAAIpF,IAAKqF,GAAMC,GAA0BD,CAAC,CAAC,EAClF,OAAO,IAAInD,EAAckD,EAAUnF,EAASkC,eAAeC,WAAYnC,EAASkC,eAAeE,OAAO,CACxG,CAAC,CAAC,CAEN,CAEAkD,sBAAsB5C,EAAuBhD,EAAW,CACtD,IAAME,EAAM,IAAI2F,GAA6B,CAAE7C,cAAAA,EAAehD,IAAAA,CAAG,CAAE,EACnE,OAAO,KAAKR,WAAWoG,sBAAsB1F,CAAG,EAAEE,KAChDC,EAAK4B,GAAQ,CACX,IAAM6D,EAA0BH,GAA0B1D,EAAK8D,kBAAkB,EACjFD,OAAAA,EAAIE,gBAAkBC,GAAuBhE,EAAKiE,0BAA0B,EACrEJ,CACT,CAAC,CAAC,CAEN,CAEAK,cAAcZ,EAA6B3D,EAAgBC,EAAgB,CACzE,IAAM3B,EAAM,IAAIkG,GAAoB,CAClCb,QAASA,EACTxD,cAAe,IAAIC,EAAoB,CAAEJ,OAAAA,EAAQC,SAAAA,CAAQ,CAAE,EAC5D,EACD,OAAO,KAAKjC,YAAYyG,KAAKnG,CAAG,EAAEE,KAChCC,EAAKC,GAAY,CACf,IAAMgG,GAAahG,EAASgG,WAAa,CAAA,GAAIjG,IAAKkG,GAAaC,GAAgBD,CAAQ,CAAC,EACxF,OAAO,IAAIhE,EAAc+D,EAAWhG,EAASkC,eAAeC,WAAYnC,EAASkC,eAAeE,OAAO,CACzG,CAAC,CAAC,CAEN,CAEA+D,aAAa1G,EAAoB2G,EAAoBC,EAAW,CAC9D,IAAMzG,EAAM,IAAI0G,GAAoB,CAAEF,WAAAA,EAAY3G,WAAAA,EAAY4G,IAAAA,CAAG,CAAE,EACnE,OAAO,KAAK/G,YAAYiH,KAAK3G,CAAG,EAAEE,KAAKwD,GAAM,EAAI,CAAC,CACpD,CAEAkD,kBACEvB,EACA3D,EACAC,EAAgB,CAEhB,IAAM3B,EAAM,IAAIkG,GAAoB,CAClCb,QAASA,EACTxD,cAAe,IAAIC,EAAoB,CAAEJ,OAAAA,EAAQC,SAAAA,CAAQ,CAAE,EAC5D,EACD,OAAO,KAAKjC,YAAYkH,kBAAkB5G,CAAG,EAAEE,KAC7CC,EAAKC,GAAY,CACf,IAAMyG,GAAiBzG,EAASyG,eAAiB,CAAA,GAAI1G,IAAK2G,GACxDC,GAAoBD,EAAc1G,EAASC,QAAQ,CAAC,EAEtD,OAAO,IAAIgC,EAAcwE,EAAezG,EAASkC,eAAeC,WAAYnC,EAASkC,eAAeE,OAAO,CAC7G,CAAC,CAAC,CAEN,CAEAwE,cAAcnH,EAAoB4G,EAAaD,EAAkB,CAC/D,IAAMxG,EAAM,IAAIiH,GAAqB,CACnCpH,WAAYA,EACZ4G,IAAKA,EACLD,WAAYA,EACb,EACD,OAAO,KAAK9G,YAAYwH,MAAMlH,CAAG,EAAEE,KAAKC,EAAI,IAAM,EAAI,CAAC,CACzD,CAEAgH,0BACEtH,EACAuH,EACAC,EACAC,EAAe,CAEf,IAAMtH,EAAM,IAAIuH,GAAiC,CAC/CH,YAAaA,EACbvH,WAAYA,EACZwH,YAAaA,EACbC,UAAWA,EACZ,EACD,OAAO,KAAK5H,YAAYyH,0BAA0BnH,CAAG,EAAEE,KACrDC,EAAKC,IACKA,EAASoH,mBAAqB,CAAA,GAAIrH,IAAKsH,GAAoBC,GAAuBD,CAAe,CAAC,CAC3G,CAAC,CAEN,CAEAE,iBAAiBC,EAAqB,CACpC,OAAO,KAAKtI,WAAWqI,iBAAiB,CAAEC,YAAaA,CAAW,CAAE,EAAE1H,KACpEC,EAAK4B,GAAQ,CACX,IAAM8F,EAAe9F,EAAK+F,WAAa,CAAA,EACjCA,EAAyC,CAAA,EAC/C,QAAWvD,KAAKC,OAAOC,KAAKoD,CAAY,EAAG,CACzC,IAAME,EAAmBF,EAAatD,CAAC,EACvCuD,EAAUvD,CAAC,EAAIyD,GAAgBD,CAAgB,CACjD,CACA,OAAOD,CACT,CAAC,CAAC,CAEN,CAEAG,6BAA6BpI,EAAkB,CAC7C,OAAO,KAAKP,WAAW2I,6BAA6B,CAAEpI,WAAYA,CAAU,CAAE,EAAEK,KAC9EC,EAAK4B,GACIzB,EAASyB,EAAK1B,QAAQ,GAAK,KACnC,CAAC,CAEN,CAEA6H,qBACEzH,EACA4G,EACAC,EACAa,EACAC,EAAuB,CAEvB,IAAMpI,EAAM,IAAIqI,GAA4B,CAC1C5H,KAAMA,EACN4G,YAAaA,EACbC,UAAWA,EACXa,WAAYA,EACZC,eAAgBA,EACjB,EACD,OAAO,KAAKzI,UAAU2I,eAAetI,CAAG,EAAEE,KAAKC,EAAKC,GAAaA,EAASmI,GAAG,CAAC,CAChF,CAEAC,eAAe/H,EAAgB4G,EAAmBC,EAAe,CAC/D,IAAMtH,EAAM,IAAIyI,GAAuB,CACrChI,KAAMA,EACN4G,YAAaA,EACbC,UAAWA,EACZ,EACD,OAAO,KAAK3H,UAAU+I,gBAAgB1I,CAAG,EAAEE,KAAKC,EAAKC,GAAaA,EAASuI,cAAgB,CAAC,CAAC,CAC/F,CAEAC,cAAclH,EAAgBC,EAAgB,CAC5C,IAAM3B,EAAM,IAAI6I,GAAqB,CACnChH,cAAe,IAAIC,EAAoB,CAAEJ,OAAAA,EAAQC,SAAAA,CAAQ,CAAE,EAC5D,EACD,OAAO,KAAKrC,WAAWsJ,cAAc5I,CAAG,EAAEE,KACxCC,EAAKC,GAAY,CACf,IAAM0H,GAAa1H,EAAS0H,WAAa,CAAA,GAAI3H,IAAK2I,GAAMd,GAAgBc,CAAC,CAAC,EAC1E,OAAO,IAAIzG,EAAcyF,EAAW1H,EAASkC,eAAeC,WAAYnC,EAASkC,eAAeE,OAAO,CACzG,CAAC,CAAC,CAEN,CAEAuG,aACElJ,EACAmJ,EACA3D,EACA3D,EACAC,EAAgB,CAEhB,IAAMsH,EAAaC,GAAwB7D,CAAO,EAC5CrF,EAAM,IAAImJ,GAAoB,CAClCtJ,WAAAA,EACAmJ,WAAAA,EACA3D,QAAS4D,EACTpH,cAAe,IAAIC,EAAoB,CAAEJ,OAAAA,EAAQC,SAAAA,CAAQ,CAAE,EAC5D,EACD,OAAO,KAAKrC,WAAWyJ,aAAa/I,CAAG,EAAEE,KACvCC,EAAKC,GAAY,CACf,IAAMmF,GAAYnF,EAASmF,UAAY,CAAA,GAAIpF,IAAKqF,GAAM4D,GAAe5D,CAAC,CAAC,EACvE,OAAO,IAAInD,EAAckD,EAAUnF,EAASkC,eAAeC,WAAYnC,EAASkC,eAAeE,OAAO,CACxG,CAAC,CAAC,CAEN,CAEA6G,gBAAgB5I,EAAc,CAC5B,IAAMT,EAAM,IAAIsJ,GAAuB,CACrC7I,KAAMA,EACP,EACD,OAAO,KAAKnB,WAAW+J,gBAAgBrJ,CAAG,EAAEE,KAC1CC,EAAKC,GAAqC,CACxC,IAAMmJ,EAAc,IAAIC,IACxB/I,OAAAA,EAAKgJ,QAAS3J,GAAO,CACnByJ,EAAYG,IAAI5J,EAAKsJ,GAAehJ,EAASmF,SAASzF,CAAG,CAAC,CAAC,CAC7D,CAAC,EACMyJ,CACT,CAAC,CAAC,CAEN,CAEAI,gBACE9J,EACAC,EACA8J,EACAC,EACAC,EAAgD,CAEhD,IAAM9J,EAAM,IAAI+J,GAAuB,CACrClK,WAAAA,EACAC,IAAAA,EACA8J,WAAAA,EACAC,QAAAA,EACAC,iBAAAA,EACD,EAED,OAAO,KAAKxK,WAAWqK,gBAAgB3J,CAAG,EAAEE,KAAKC,EAAKC,GAAa4J,GAAoB5J,EAASS,IAAI,CAAC,CAAC,CACxG,CAEAoJ,mBACEpK,EACAC,EACA8J,EACAC,EACAK,EAAY,CAEZ,IAAMlK,EAAM,IAAImK,GAA0B,CACxCtK,WAAAA,EACAC,IAAAA,EACA8J,WAAAA,EACAC,QAAAA,EACAK,OAAAA,EACD,EACD,OAAO,KAAK5K,WAAW8K,mBAAmBpK,CAAG,CAC/C,CAEAqK,qBACExK,EACAC,EACA8J,EACAC,EAAe,CAEf,IAAM7J,EAAM,IAAImK,GAA0B,CACxCtK,WAAAA,EACAC,IAAAA,EACA8J,WAAAA,EACAC,QAAAA,EACD,EACD,OAAO,KAAKvK,WAAWgL,qBAAqBtK,CAAG,CACjD,CAEAuK,4BACE1K,EACAC,EACA8J,EACAC,EACAW,EAAe,CAEf,IAAMxK,EAAM,IAAIyK,GAAuB,CACrC5K,WAAYA,EACZC,IAAKA,EACL8J,WAAYA,EACZC,QAASA,EACT/I,UAAWC,GAAeyJ,CAAI,EAC/B,EAED,OAAO,KAAKlL,WAAWoL,gBAAgB1K,CAAG,CAC5C,CAEA2K,kCACE9K,EACAC,EACA8J,EACAC,EACAe,EAAU,CAEV,IAAM5K,EAAM,IAAI6K,GAAyB,CACvChL,WAAYA,EACZC,IAAKA,EACL8J,WAAYA,EACZC,QAASA,EACTiB,gBAAiBF,EAClB,EAED,OAAO,KAAKtL,WAAWyL,kBAAkB/K,CAAG,CAC9C,CAEAgL,kCACEnL,EACAC,EACA8J,EACAC,EACAoB,EAAc,CAEd,IAAMjL,EAAM,IAAIkL,GAA6B,CAC3CrL,WAAYA,EACZC,IAAKA,EACL8J,WAAYA,EACZC,QAASA,EACTsB,gBAAiBF,EAClB,EAED,OAAO,KAAK3L,WAAW8L,sBAAsBpL,CAAG,CAClD,CAGAqL,kBACErC,EACA3D,EACA3D,EACAC,EAAgB,CAEhB,IAAM3B,EAAM,IAAIsL,GAAyB,CACvCtC,WAAYA,EACZ3D,QAASA,EACTxD,cAAe,IAAIC,EAAoB,CAAEJ,OAAAA,EAAQC,SAAAA,CAAQ,CAAE,EAC5D,EACD,OAAO,KAAKrC,WAAW+L,kBAAkBrL,CAAG,EAAEE,KAC5CC,EAAKC,GAAY,CACf,IAAMQ,GAASR,EAASQ,OAAS,CAAA,GAAIT,IAAKU,GAASmJ,GAAoBnJ,CAAI,CAAC,EAC5E,OAAO,IAAIwB,EAAczB,EAAOR,EAASkC,eAAeC,WAAYnC,EAASkC,eAAeE,OAAO,CACrG,CAAC,CAAC,CAEN,CAEA+I,kBACElG,EACA3D,EACAC,EACAmI,EAAgD,CAEhD,IAAM9J,EAAM,IAAIwL,GAAyB,CACvCnG,QAASA,EACTxD,cAAe,IAAIC,EAAoB,CAAEJ,OAAAA,EAAQC,SAAAA,CAAQ,CAAE,EAC3DmI,iBAAkBA,EACnB,EACD,OAAO,KAAKxK,WAAWiM,kBAAkBvL,CAAG,EAAEE,KAC5CC,EAAKC,GAAY,CACf,IAAMQ,GAASR,EAASqL,eAAiB,CAAA,GAAItL,IAAKU,GAASmJ,GAAoBnJ,CAAI,CAAC,EACpF,OAAO,IAAIwB,EAAczB,EAAOR,EAASkC,eAAeC,WAAYnC,EAASkC,eAAeE,OAAO,CACrG,CAAC,CAAC,CAEN,CAEAkJ,wBACErG,EACA3D,EACAC,EACAmI,EAAgD,CAEhD,IAAM9J,EAAM,IAAIwL,GAAyB,CACvCnG,QAASA,EACTxD,cAAe,IAAIC,EAAoB,CAAEJ,OAAAA,EAAQC,SAAAA,CAAQ,CAAE,EAC3DmI,iBAAkBA,EACnB,EACD,OAAO,KAAKxK,WAAWoM,wBAAwB1L,CAAG,EAAEE,KAClDC,EAAKC,GAAY,CACf,IAAMQ,GAASR,EAASqL,eAAiB,CAAA,GAAItL,IAAKU,GAASmJ,GAAoBnJ,CAAI,CAAC,EACpF,OAAO,IAAIwB,EAAczB,EAAOR,EAASkC,eAAeC,WAAYnC,EAASkC,eAAeE,OAAO,CACrG,CAAC,CAAC,CAEN,CAEAmJ,6BAA2B,CACzB,OAAO,KAAKrM,WAAWsM,4BAA4B,CAAA,CAAE,CACvD,CAEAC,aAAahM,EAAoB2G,EAAoBC,EAAaqF,EAAuB,CACvF,IAAM9L,EAAM,IAAI+L,GAAoB,CAAElM,WAAAA,EAAY2G,WAAAA,EAAYC,IAAAA,EAAKqF,kBAAAA,CAAiB,CAAE,EACtF,OAAO,KAAKpM,YAAYmM,aAAa7L,CAAG,EAAEE,KAAKC,EAAKC,GAAaA,EAASwC,EAAE,CAAC,CAC/E,CAEAoJ,cAAcnM,EAAoB2G,EAAoBC,EAAW,CAC/D,IAAMzG,EAAM,IAAIiM,GAAqB,CAAEpM,WAAAA,EAAY2G,WAAAA,EAAYC,IAAAA,CAAG,CAAE,EACpE,OAAO,KAAK/G,YAAYsM,cAAchM,CAAG,EAAEE,KAAKC,EAAKC,GAAaA,EAASwC,EAAE,CAAC,CAChF,CAEAsJ,oBAAoB7G,EAAgC,CAClD,IAAMrF,EAAM,IAAIwL,GAAyB,CACvCnG,QAASA,EACV,EACD,OAAO,KAAK/F,WAAW4M,oBAAoBlM,CAAG,EAAEE,KAAKC,EAAI,IAAM,IAAI,CAAC,CACtE,CAEAgM,mBAAmBnM,EAA8B,CAC/C,OAAO,KAAKV,WAAW6M,mBAAmBnM,CAAG,CAC/C,CAEAoM,gBAAgBC,EAAwBC,EAAqB,CAC3D,IAAMtM,EAAM,IAAIuM,GAAuB,CACrCF,eAAgBA,EAChBC,aAAcA,EACf,EACD,OAAO,KAAKhN,WAAW8M,gBAAgBpM,CAAG,CAC5C,CAEAwM,mBAAmBC,EAA4B7I,EAAoB,CACjE,IAAM5D,EAAM,IAAI0M,GAA0B,CACxCD,aAAc,CACZJ,eAAgBI,EAAaJ,eAC7BM,YAAaF,EAAaE,aAE5B/I,UAAWA,EACZ,EACD,OAAO,KAAKtE,WAAWkN,mBAAmBxM,CAAG,CAC/C,yCArnBW5B,GAAcwO,EAAAC,EAAA,EAAAD,EAAAE,EAAA,EAAAF,EAAAG,EAAA,EAAAH,EAAAI,EAAA,EAAAJ,EAAAK,EAAA,EAAAL,EAAAM,EAAA,CAAA,CAAA,wBAAd9O,EAAc+O,QAAd/O,EAAcgP,UAAAC,WADD,MAAM,CAAA,EAC1B,IAAOjP,EAAPkP,SAAOlP,CAAc,GAAA,ICxF3B,IAAAmP,GAAAC,EAAA,QCAA,IAAAC,GAAAC,EAAA,QCAA,IAAAC,GAAAC,EAAA,QCmBM,SAAUC,GAAgBC,EAAkB,CAChD,MAAO,CACLC,WAAYD,EAAMC,WAClBC,QAASF,EAAME,QACfC,KAAMH,EAAMG,KACZC,MAAOJ,EAAMI,MACbC,QAASL,EAAMK,QACfC,QAASN,EAAMM,QACfC,aAAcP,EAAMO,aACpBC,YAAaR,EAAMQ,YACnBC,YAAaT,EAAMS,YACnBC,YAAaV,EAAMU,YACnBC,iBAAkBX,EAAMW,iBACxBC,mBAAoBZ,EAAMY,mBAC1BC,0BAA2Bb,EAAMa,0BACjCC,yBAA0Bd,EAAMc,0BAA4B,CAAA,EAC5DC,gBAAiBf,EAAMgB,gBAE3B,CAlBA,IAAAC,GAAAC,EAAA,QCEM,SAAUC,GAAqBC,EAA+B,CAClE,IAAMC,EAAW,IAAIC,KAAK,sBAAsB,EAAEC,QAAO,EACzD,MAAO,CACLC,oBACEJ,EAAMK,gCAAgCF,QAAO,IAAOF,EAAWD,EAAMK,gCAAkCC,OACzGC,eAAgBC,GAAsBR,EAAMO,cAAc,EAC1DE,gBAAiBT,EAAMS,gBACvBC,UAAWV,EAAMU,UAAY,CAAA,GAAIC,IAAKC,IAAa,CACjDC,aAAcD,EAAQC,aACtBC,OAAQF,EAAQE,QAAU,EAC1BC,cAAeH,EAAQG,eAAiB,EACxCC,UAAWJ,EAAQI,WAAa,GAChC,EAEN,CAEM,SAAUR,GAAsBR,EAAa,CACjD,OAAQA,EAAK,CACX,IAAK,QACH,OAAOiB,GAAeC,MACxB,IAAK,SACH,OAAOD,GAAeE,OACxB,IAAK,UACH,OAAOF,GAAeG,QACxB,QACE,MACJ,CACF,CA/CA,IAAYH,GAAZI,GAAAC,EAAA,KAAYL,GAAZ,SAAYA,EAAc,CACxBA,OAAAA,EAAA,MAAA,QACAA,EAAA,OAAA,SACAA,EAAA,QAAA,UACAA,EAAA,QAAA,UAJUA,CAKZ,EALYA,IAAc,CAAA,CAAA,IC4BpB,SAAUM,GAAoBC,EAA6B,CAC/D,OAAQA,EAAC,CACP,KAAKC,GAAeC,aAClB,MAAO,eACT,KAAKD,GAAeE,SAClB,MAAO,WACT,QACE,MAAO,EACX,CACF,CAEM,SAAUC,GAAsBJ,EAAS,CAC7C,OAAQA,EAAC,CACP,IAAK,eACH,OAAOC,GAAeC,aACxB,IAAK,WACH,OAAOD,GAAeE,SACxB,QACE,OAAOF,GAAeI,KAC1B,CACF,CAEM,SAAUC,GAA2BC,EAA6B,CACtE,MAAO,CACLC,WAAYD,EAAMC,WAClBC,cAAeF,EAAME,cACrBC,aAAcH,EAAMG,aACpBC,uBAAwBJ,EAAMI,wBAA0B,EACxDC,6BAA8BC,GAAoCN,EAAMK,4BAA4B,EAExG,CAEM,SAAUC,GACdN,EAAsC,CAEtC,GAAI,CAACA,EACH,OAEF,IAAMO,EAAmBC,GAAwBR,EAAMO,gBAAgB,EACvE,MAAO,CACLE,eAAgBZ,GAAsBG,EAAMS,cAAc,EAC1DF,iBAAkBA,EAClBG,WAAYV,EAAMU,WAClBC,KAAMX,EAAMW,KACZC,KAAMZ,EAAMY,KACZC,gCAAiCb,EAAMa,iCAAmC,GAE9E,CAEM,SAAUC,GACdC,EAA2C,CAE3C,GAAKA,EAGL,MAAO,CACLN,eAAgBjB,GAAoBuB,EAAEN,cAAc,EACpDF,iBAAkBS,GAAsBD,EAAER,gBAAgB,EAC1DG,WAAYK,EAAEL,WACdC,KAAMI,EAAEJ,KACRC,KAAMG,EAAEH,KACRC,gCAAiCE,EAAEF,iCAAmC,GAE1E,CAxFA,IAmBYnB,GAnBZuB,GAAAC,EAAA,KAAAC,KAmBYzB,GAAZ,SAAYA,EAAc,CACxBA,OAAAA,EAAA,MAAA,QACAA,EAAA,aAAA,eACAA,EAAA,SAAA,WAHUA,CAIZ,EAJYA,IAAc,CAAA,CAAA,ICxB1B,IAgDY0B,GAYCC,GA5DbC,GAAAC,EAAA,KAGAC,IACAC,KACAC,KACAC,KACAC,IAyBAC,KAEAC,KACAC,KAMAC,kBAOYZ,GAAZ,SAAYA,EAAe,CACzBA,OAAAA,EAAAA,EAAA,WAAA,CAAA,EAAA,aACAA,EAAAA,EAAA,YAAA,CAAA,EAAA,cACAA,EAAAA,EAAA,YAAA,CAAA,EAAA,cACAA,EAAAA,EAAA,aAAA,CAAA,EAAA,eACAA,EAAAA,EAAA,QAAA,CAAA,EAAA,UACAA,EAAAA,EAAA,MAAA,CAAA,EAAA,QACAA,EAAAA,EAAA,QAAA,CAAA,EAAA,UACAA,EAAAA,EAAA,QAAA,CAAA,EAAA,UARUA,CASZ,EATYA,IAAe,CAAA,CAAA,EAYdC,IAAe,IAAA,CAAtB,IAAOA,EAAP,MAAOA,CAAe,CAC1BY,YAAoBC,EAAyCC,EAAkCC,EAAgB,CAA3F,KAAAF,YAAAA,EAAyC,KAAAC,YAAAA,EAAkC,KAAAC,KAAAA,CAAmB,CAElHC,IAAIC,EAAkB,CACpB,IAAMC,EAAM,IAAIC,GAAmB,CAAEF,WAAAA,CAAU,CAAE,EACjD,OAAO,KAAKJ,YAAYG,IAAIE,CAAG,EAAEE,KAAKC,EAAKC,GAASC,GAAgBD,EAAKE,QAAQ,CAAC,CAAC,CACrF,CAEAC,OACER,EACAS,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EAAmC,CAEnC,OAAO,KAAKtB,YACTY,OAAO,CACNR,WAAAA,EACAS,QAAAA,EACAC,KAAAA,EACAC,MAAAA,EACAC,QAAAA,EACAC,QAAAA,EACAC,aAAAA,EACAC,YAAAA,EACAC,YAAAA,EACAC,YAAAA,EACAC,yBAAAA,EACD,EACAf,KAAKC,EAAI,IAAM,EAAI,CAAC,CACzB,CAEAe,OACEnB,EACAS,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EAAmC,CAEnC,OAAO,KAAKtB,YACTuB,OAAO,CACNnB,WAAAA,EACAS,QAAAA,EACAC,KAAAA,EACAC,MAAAA,EACAC,QAAAA,EACAC,QAAAA,EACAC,aAAAA,EACAC,YAAAA,EACAC,YAAAA,EACAC,YAAAA,EACAC,yBAAAA,EACD,EACAf,KAAKC,EAAI,IAAM,EAAI,CAAC,CACzB,CAEAgB,sBAAsBpB,EAAkB,CACtC,IAAMC,EAAM,IAAIoB,GAA6B,CAAErB,WAAAA,CAAU,CAAE,EAC3D,OAAO,KAAKJ,YAAYwB,sBAAsBnB,CAAG,EAAEE,KACjDC,EAAKkB,IAAO,CACVC,YAAaD,EAAEE,oBAAsB,EACrCC,SAAUC,EAAgBJ,EAAEG,QAAQ,GACpC,CAAC,CAEP,CAEAE,cAAc3B,EAAkB,CAC9B,IAAMC,EAAM,IAAI2B,GAAqB,CAAE5B,WAAAA,CAAU,CAAE,EACnD,OAAO,KAAKJ,YAAY+B,cAAc1B,CAAG,CAC3C,CAEQ4B,oBAAoBC,EAAuB,CACjD,OAAQA,EAAM,CACZ,KAAKhD,GAAgBkB,WACnB,OAAO+B,GAA6BC,6CACtC,KAAKlD,GAAgBmC,YACnB,OAAOc,GAA6BE,8CACtC,KAAKnD,GAAgBkC,YACnB,OAAOe,GAA6BG,8CACtC,KAAKpD,GAAgBgC,aACnB,OAAOiB,GAA6BI,+CACtC,KAAKrD,GAAgB8B,QACnB,OAAOmB,GAA6BK,yCACtC,KAAKtD,GAAgB6B,MACnB,OAAOoB,GAA6BM,uCACtC,KAAKvD,GAAgBwD,QACnB,OAAOP,GAA6BQ,yCACtC,KAAKzD,GAAgB0D,QACnB,OAAOT,GAA6BU,yCACtC,QACE,OAAOV,GAA6BC,4CACxC,CACF,CAEQU,mBAAmBC,EAA4B,CACrD,OAAQA,EAAa,CACnB,KAAKC,GAAcC,UACjB,OAAOC,GAAiBC,yBAC1B,KAAKH,GAAcI,WACjB,OAAOF,GAAiBG,0BAC1B,QACE,OAAOH,GAAiBC,wBAC5B,CACF,CAEAG,OACEC,EACArB,EACAa,EACAS,EAA2C,CAE3C,OAAO,KAAKxD,YACTsD,OAAO,CACNC,WAAYA,EACZrB,OAAQ,KAAKD,oBAAoBC,CAAM,EACvCa,cAAe,KAAKD,mBAAmBC,CAAa,EACpDS,cAAe,IAAIC,EAAoBD,CAAa,EACrD,EACAjD,KACCC,EACGkB,GACC,IAAIgC,EACFhC,EAAEiC,UAAUnD,IAAKoD,GAAMlD,GAAgBkD,CAAC,CAAC,EACzClC,EAAEmC,eAAeC,WACjBpC,EAAEmC,eAAeE,OAAO,CACzB,CACJ,CAEP,CAEAC,oBAAoB5D,EAAoB6D,EAAyB,CAC/D,OAAO,KAAKjE,YACTgE,oBAAoB,CACnB5D,WAAYA,EACZ8D,uBAAwBD,EACzB,EACA1D,KAAKC,EAAI,IAAM,EAAI,CAAC,CACzB,CAEA2D,sBAAsB/D,EAAoBgE,EAA2B,CACnE,OAAO,KAAKpE,YACTmE,sBAAsB,CACrB/D,WAAAA,EACAgE,mBAAAA,EACD,EACA7D,KAAKC,EAAI,IAAM,EAAI,CAAC,CACzB,CAEA6D,YAAY3C,EAA8B,CACxC,IAAM4C,EAAc,aAAa5C,EAAE6C,QAAQ,GAC3C,OAAO,KAAKrE,KACTC,IAAI,KAAKF,YAAYuE,eAAiB,iBAAmBF,EAAa,KAAKG,WAAU,CAAE,EACvFlE,KAAKmE,EAAWC,EAAc,CAAC,CACpC,CAEAC,6BAA6BxE,EAAoByE,EAAkC,CACjF,OAAO,KAAK7E,YACT4E,6BAA6B,CAC5BxE,WAAYA,EACZyE,0BAA2BA,EAC5B,EACAtE,KAAKC,EAAKsE,GAAaA,EAASC,EAAE,CAAC,CACxC,CAEAC,sBAAsB5E,EAAoB6E,EAAiB,CACzD,OAAO,KAAKjF,YACTgF,sBAAsB,CACrB5E,WAAYA,EACZ6E,UAAWA,EACZ,EACA1E,KAAKC,EAAI,IAAM,EAAI,CAAC,CACzB,CAEA0E,mBAAmB9E,EAAoB6E,EAAmBE,EAAc,CACtE,OAAO,KAAKnF,YACTkF,mBAAmB,CAClB9E,WAAAA,EACA6E,UAAAA,EACAE,OAAAA,EACD,EACA5E,KAAKC,EAAI,IAAM,EAAI,CAAC,CACzB,CAEA4E,6BAA6BhF,EAAoB6E,EAAiB,CAChE,OAAO,KAAKjF,YACToF,6BAA6B,CAC5BhF,WAAYA,EACZ6E,UAAWA,EACZ,EACA1E,KAAKC,EAAI,IAAM,EAAI,CAAC,CACzB,CAEQiE,YAAU,CAChB,MAAO,CACLY,aAAc,OACdC,gBAAiB,GAErB,CAEAC,sBAAsBnF,EAAoBoF,EAAmB,CAC3D,OAAO,KAAKxF,YACTyF,4BACC,IAAIC,GAAmC,CACrCtF,WAAAA,EACAoF,YAAAA,EACD,CAAC,EAEHjF,KAAKC,EAAI,IAAM,EAAI,CAAC,CACzB,CAEAmF,6BAA6BvF,EAAkB,CAC7C,IAAMkE,EAAc,eAAelE,CAAU,GAC7C,OAAO,KAAKF,KACTC,IAAI,KAAKF,YAAYuE,eAAiB,mCAAqCF,EAAa,KAAKG,WAAU,CAAE,EACzGlE,KAAKqF,EAAK,EAAIlB,EAAWC,EAAc,CAAC,CAC7C,CAEAkB,6BACEzF,EACA0F,EAAwB,CAExB,IAAMC,EAAU,IAAIC,GAAoC,CACtD5F,WAAAA,EACA0F,eAAAA,EACD,EACD,OAAO,KAAK9F,YAAY6F,6BAA6BE,CAAO,EAAExF,KAC5DC,EAAKC,GAA8C,CACjD,IAAMwF,EAAY,IAAIC,IACtBJ,OAAAA,EAAeK,QAASC,GAAW,CACjCH,EAAUI,IAAID,EAASE,GAA2B7F,EAAK8F,qBAAqBH,CAAO,CAAC,CAAC,CACvF,CAAC,EACMH,CACT,CAAC,CAAC,CAEN,CAEAO,0BACEpG,EACAqG,EACAC,EACAC,EAA+B,CAE/B,IAAMZ,EAAU,IAAIa,GAAiC,CACnDxG,WAAAA,EACAqG,cAAAA,EACAC,aAAAA,EACAC,uBAAAA,EACD,EACD,OAAO,KAAK3G,YAAYwG,0BAA0BT,CAAO,EAAExF,KAAKC,EAAI,IAAM,IAAI,CAAC,CACjF,CAEAqG,iBAAiBzG,EAAkB,CACjC,OAAO,KAAKJ,YACT6G,iBACC,IAAIC,GAAwB,CAC1B1G,WAAAA,EACD,CAAC,EAEHG,KAAKC,EAAKC,GAASsG,GAAqBtG,CAAI,CAAC,CAAC,CACnD,CAEAuG,gBAAgB5G,EAAoB6G,EAAgB,CAClD,OAAO,KAAKjH,YACTgH,gBACC,IAAIE,GAAuB,CACzB9G,WAAAA,EACA6G,SAAAA,EACD,CAAC,EAEH1G,KAAKC,EAAKC,GAAS0G,GAAoB1G,EAAK2G,MAAM,CAAC,CAAC,CACzD,CAEAC,kBAAkBjH,EAAoBkH,EAAS,GAAIC,EAAW,GAAE,CAC9D,OAAO,KAAKvH,YACTqH,kBACC,IAAIG,GAAyB,CAC3BpH,WAAYA,EACZoD,cAAe,IAAIC,EAAoB,CAAE6D,OAAAA,EAAQC,SAAAA,CAAQ,CAAE,EAC5D,CAAC,EAEHhH,KACCC,EAAKC,GAAmC,CACtC,IAAMgH,GAAiBhH,EAAKiH,SAAW,CAAA,GAAIlH,IAAK4G,GAAWD,GAAoBC,CAAM,CAAC,EACtF,OAAO,IAAI1D,EAAc+D,EAAehH,EAAKoD,eAAeC,WAAYrD,EAAKoD,eAAeE,OAAO,CACrG,CAAC,CAAC,CAER,CAQA4D,yCACEvH,EACAqG,EACAmB,EAA2D,CAE3D,OAAO,KAAK5H,YAAY2H,yCACtB,IAAIE,GAAgD,CAClDzH,WAAAA,EACAqG,cAAAA,EACAmB,6BAA8BE,GAAkCF,CAA4B,EAC7F,CAAC,CAEN,CAWAG,gBACE3H,EACA4H,EACAC,EACAC,EACAxB,EAAqB,CAErB,OAAO,KAAK1G,YAAY+H,gBAAgB,CACtC3H,WAAAA,EACA4H,WAAAA,EACAC,cAAAA,EACAC,YAAAA,EACAxB,aAAAA,EACD,CACH,CAOAyB,aAAaC,EAAU,CACrB,OAAO,KAAKpI,YAAYmI,aAAa,CAAEC,GAAAA,CAAE,CAAE,CAC7C,CAOAC,UAAUD,EAAU,CAClB,OAAO,KAAKlI,KACTC,IAAI,KAAKF,YAAYuE,eAAiB,8BAA8B4D,CAAE,GAAI,KAAK3D,WAAU,CAAE,EAC3FlE,KAAKmE,EAAWC,EAAc,CAAC,CACpC,CAEA2D,wBAAwBlI,EAAkB,CACxC,OAAO,KAAKJ,YAAYsI,wBAAwB,CAAElI,WAAAA,CAAU,CAAE,EAAEG,KAAKC,EAAKC,GAASA,EAAK8H,OAAO,CAAC,CAClG,yCA/WWpJ,GAAeqJ,EAAAC,EAAA,EAAAD,EAAAE,CAAA,EAAAF,EAAAG,CAAA,CAAA,CAAA,wBAAfxJ,EAAeyJ,QAAfzJ,EAAe0J,UAAAC,WADF,MAAM,CAAA,EAC1B,IAAO3J,EAAP4J,SAAO5J,CAAe,GAAA,IC5D5B,IAAA6J,GAAAC,EAAA,KASAC,OCPA,IAAAC,GAAAC,EAAA,QCFA,IAaaC,GAbbC,GAAAC,EAAA,KAEAC,IACAC,KACAC,YASaL,IAAoB,IAAA,CAA3B,IAAOA,EAAP,MAAOA,CAAoB,CAC/BM,YAAoBC,EAAmC,CAAnC,KAAAA,WAAAA,CAAsC,CAE1DC,iBAAiBC,EAAoBC,EAAkB,CACrD,IAAMC,EAAM,IAAIC,GAAwB,CACtCH,WAAAA,EACAC,WAAAA,EACD,EACD,OAAO,KAAKH,WAAWC,iBAAiBG,CAAG,EAAEE,KAC3CC,EAAKC,IACKA,GAAQA,EAAKC,YAAcD,EAAKC,YAAc,CAAA,GAAIF,IAAKG,GAAMC,GAA6BD,CAAC,CAAC,CACrG,CAAC,CAEN,CAEAE,kBAAkBV,EAAoBW,EAAc,CAClD,IAAMT,EAAM,IAAIU,GAAyB,CACvCZ,WAAAA,EACAW,OAAAA,EACD,EACD,OAAO,KAAKb,WAAWY,kBAAkBR,CAAG,EAAEE,KAAKS,GAAM,EAAI,CAAC,CAChE,CAEAC,sBAAsBd,EAAoBC,EAAoBc,EAAuB,CACnF,IAAMb,EAAM,IAAIc,GAA+B,CAC7ChB,WAAAA,EACAC,WAAAA,EACAc,gBAAAA,EACD,EACD,OAAO,KAAKjB,WAAWmB,wBAAwBf,CAAG,EAAEE,KAAKS,GAAM,EAAI,CAAC,CACtE,yCA9BWtB,GAAoB2B,EAAAC,EAAA,CAAA,CAAA,wBAApB5B,EAAoB6B,QAApB7B,EAAoB8B,UAAAC,WADP,MAAM,CAAA,EAC1B,IAAO/B,EAAPgC,SAAOhC,CAAoB,GAAA,ICbjC,IAAAiC,GAAAC,EAAA,KAAAC,OCAA,IAAAC,GAAAC,EAAA,KAAAC,KACAF,OCwBA,IAAAG,GAAAC,EAAA,QCzBA,IAAAC,GAAAC,EAAA,KAAAC,OCCA,IAAAC,GAAAC,EAAA,KAAAD,KAEAE,OCHA,IAAAC,GAAAC,EAAA,QCCA,IAAAC,GAAAC,EAAA,QCDA,IAAAC,GAAAC,EAAA,KAAAC,KACAF,OCDA,IAAAG,GAAAC,EAAA,QCAA,IAAAC,GAAAC,EAAA,QCAA,IAAAC,GAAAC,EAAA,QCAA,IAAaC,GACAC,GADbC,GAAAC,EAAA,KAAaH,GAAsB,KACtBC,GAA8B,0BCD3C,IAAAG,GAAAC,EAAA,QCAA,IAAAC,GAAAC,EAAA,QCAA,IAAAC,GAAAC,EAAA,QCAA,IAAAC,GAAAC,EAAA,KAAAC,IAiIAC,KAEAC,KACAC,KACAC,KAEAC,KACAC,KACAC,KACAC,KACAC,KACAC,KACAC,KACAC,KACAC,KACAC,KACAC,KACAC,KACAC,KACAC,KACAC,KACAC,KACAC,KACAC,KACAC,KACAC,KACAC,KACAC,KACAC,KACAC,KACAC,KACAC,KACAC,KACAC,KACAC,OCnKA,IAAAC,GAAAC,EAAA,KAAAC,OCAA,IASaC,GATbC,GAAAC,EAAA,KAAAC,KAGAC,KACAC,aAKaL,IAAmB,IAAA,CAA1B,IAAOA,EAAP,MAAOA,CAAmB,CAC9BM,YAAoBC,EAAkC,CAAlC,KAAAA,iBAAAA,CAAqC,CAElDC,mBACLC,EACAC,EACAC,EACAC,EAAU,GACVC,EAAgB,GAChBC,EAAgB,GAChBC,EAAkB,GAAK,CAEvB,IAAIC,EAAyDF,IAAkB,GAAO,SAAW,OAC7FG,EACF,KAAKC,kBAAkBC,KAAK,IAAI,EAElC,OAAQT,EAAQ,CACd,IAAK,MACHM,EAAUF,EAAgB,gBAAkB,OAC5CG,EAAkB,KAAKG,cAAcD,KAAK,IAAI,EAC9C,KACJ,CACA,GAAIV,GAASA,EAAQ,EAAG,CACtB,IAAIY,EAAQC,OAAOb,CAAK,EACxB,OAAIG,IACFS,EAAQ,KAAKE,sBAAsBF,CAAK,GAEnCJ,EAAgBI,EAAOX,EAAUM,CAAO,EAAEQ,KAC/CC,GAAWC,GACLf,EACK,KAAKgB,uBAAuBhB,EAAkBe,CAAc,EAE9DE,EAAGF,CAAc,CACzB,EACDD,GAAWC,GACLX,EACK,KAAKR,iBAAiBsB,OAAO,uDAAwD,CAC1FR,MAAOK,EACR,EAEIE,EAAGF,CAAc,CACzB,CAAC,CAEN,CACA,GAAIb,EAAe,CACjB,GAAIJ,EAAQ,EACV,OAAO,KAAKF,iBAAiBsB,OAAO,kDAAkD,EAExF,GAAIpB,IAAU,EACZ,OAAO,KAAKF,iBAAiBsB,OAAO,yCAAyC,CAEjF,CACA,OAAIpB,IAAU,EACLQ,EAAgBR,EAAOC,EAAUM,CAAO,EAE1C,KAAKT,iBAAiBsB,OAAO,kDAAkD,CACxF,CAEQN,sBAAsBO,EAAiB,CAC7C,OAAKA,IAIAR,OAAOS,UAAUD,CAAS,IAC7BA,EAAYR,OAAOQ,CAAS,EAC5BA,EAAYE,KAAKC,MAAMH,CAAS,GAE3BA,EAAY,IACrB,CAEOH,uBAAuBO,EAAmBb,EAAc,CAC7D,IAAIc,EACJ,GAAID,EACF,OAAQA,EAAUE,YAAW,EAAE,CAC7B,IAAK,OACL,IAAK,WACHD,EAAc,KAAK5B,iBAAiBsB,OAAO,iEAAiE,EAC5G,MACF,IAAK,QACHM,EAAc,KAAK5B,iBAAiBsB,OAAO,8DAA8D,EACzG,MACF,IAAK,SACHM,EAAc,KAAK5B,iBAAiBsB,OAAO,+DAA+D,EAC1G,MACF,IAAK,UACHM,EAAc,KAAK5B,iBAAiBsB,OAAO,gEAAgE,EAC3G,MACF,IAAK,SACHM,EAAc,KAAK5B,iBAAiBsB,OAAO,+DAA+D,EAC1G,MACF,IAAK,QACHM,EAAc,KAAK5B,iBAAiBsB,OAAO,8DAA8D,EACzG,MACF,QACEM,EAAcP,EAAGM,CAAS,CAC9B,CAEF,OAAIb,EACKc,EAAYX,KAAKa,EAAKC,GAAM,GAAGjB,CAAK,IAAIiB,CAAC,EAAE,CAAC,GAAKV,EAAG,EAAE,EAExDO,CACT,CAEQjB,kBAAkBT,EAAeC,EAAkBM,EAAe,CACxE,OAAKN,EAGIkB,EAAG,IAAIW,GAAa,OAAO,EAAEC,UAAU/B,EAAOC,EAAUM,EAAS,OAAO,GAAK,EAAE,EAF/EY,EAAG,IAAIa,GAAY,OAAO,EAAED,UAAU/B,EAAO,OAAO,GAAK,EAAE,CAItE,CAEQW,cAAcX,EAAeC,EAAkBM,EAAe,CACpE,IAAMK,GAAS,IAAIoB,GAAY,OAAO,EAAED,UAAU/B,EAAO,OAAO,GAAK,IAAIiC,QAAQ,IAAK,GAAG,EACnFC,GAAkB,IAAIJ,GAAa,OAAO,EAAEC,UAAU,EAAG9B,EAAUM,EAAS,KAAK,GAAK,IAAI4B,MAAM,GAAG,EAAE,CAAC,EAC5G,OAAO,KAAKrC,iBAAiBsB,OAAO,4DAA6D,CAC/FR,MAAOA,EACPsB,eAAgBA,EACjB,CACH,CAEOE,mBAAiB,CACtB,OAAO,KAAKtC,iBAAiBsB,OAAO,8CAA8C,CACpF,yCA1HW7B,GAAmB8C,EAAAC,EAAA,CAAA,CAAA,wBAAnB/C,EAAmBgD,QAAnBhD,EAAmBiD,SAAA,CAAA,EAA1B,IAAOjD,EAAPkD,SAAOlD,CAAmB,GAAA,ICThC,IAOamD,GAPbC,GAAAC,EAAA,cAOaF,IAAgB,IAAA,CAAvB,IAAOA,EAAP,MAAOA,CAAgB,CAC3BG,YAAoBC,EAAwC,CAAxC,KAAAA,oBAAAA,CAA2C,CAC/DC,UACEC,EACAC,EACAC,EACAC,EAAU,GACVC,EAAgB,GAChBC,EAAgB,GAChBC,EAAkB,GAAK,CAEvB,OAAO,KAAKR,oBAAoBS,mBAC9BP,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,CAAe,CAEnB,yCApBWZ,GAAgBc,EAAAC,GAAA,EAAA,CAAA,CAAA,sCAAhBf,EAAgBgB,KAAA,EAAA,CAAA,EAAvB,IAAOhB,EAAPiB,SAAOjB,CAAgB,GAAA,IC2BvB,SAAUkB,GACdC,EACAC,EACAC,EACAC,EAAU,GACVC,EAAgB,GAChBC,EAAwE,GACxEC,EAAkB,GAAK,CAEvB,IAAIC,EAAQ,gBACRC,EACAC,EAAkBC,GAQtB,OANI,OAAOL,GAAkB,SAC3BG,EAAUH,EAEVG,EAAUH,IAAkB,GAAO,SAAW,OAGxCJ,EAAQ,CACd,IAAK,MACHO,EAAUH,EAAgB,gBAAkB,OAC5CI,EAAkBE,GAClB,KACJ,CAeA,GAbIX,IACEG,IACFH,EAAQY,GAAsBC,OAAOb,CAAK,CAAC,GAE7CO,EAAQE,EAAgBT,EAAOC,EAAUO,CAAO,EAC5CN,IACFK,EAAQ,GAAGA,CAAK,IAAIO,GAAuBZ,CAAgB,CAAC,IAE1DI,IACFC,EAAQ,eAAeA,CAAK,KAI5BH,EAAe,CACjB,GAAIJ,EAAQ,EACV,MAAO,gBAET,GAAIA,IAAU,EACZ,MAAO,MAEX,CACA,OAAIA,IAAU,EACLS,EAAgBT,EAAOC,EAAUO,CAAO,EAG1CD,CACT,CAEM,SAAUK,GAAsBG,EAAiB,CACrD,OAAKA,IAIAF,OAAOG,UAAUD,CAAS,IAC7BA,EAAYF,OAAOE,CAAS,EAC5BA,EAAYE,KAAKC,MAAMH,CAAS,GAE3BA,EAAY,IACrB,CAMM,SAAUD,GAAuBd,EAAc,CACnD,IAAImB,EAAc,GAClB,GAAInB,EACF,OAAQA,EAAMoB,YAAW,EAAE,CACzB,IAAK,OACL,IAAK,WACHD,EAAc,WACd,MACF,QACEA,EAAc,IAAIE,GAAa,EAAGC,UAAUtB,CAAK,CACrD,CAEF,OAAOmB,CACT,CAEA,SAAST,GAAkBV,EAAeC,EAAkBO,EAAe,CACzE,OAAKP,EAGI,IAAIsB,GAAa,OAAO,EAAED,UAAUtB,EAAOC,EAAUO,EAAS,OAAO,GAAK,GAF1E,IAAIgB,GAAY,OAAO,EAAEF,UAAUtB,EAAO,OAAO,GAAK,EAIjE,CAEA,SAASW,GAAcX,EAAeC,EAAkBO,EAAe,CACrE,IAAMD,GAAS,IAAIiB,GAAY,OAAO,EAAEF,UAAUtB,EAAO,OAAO,GAAK,IAAIyB,QAAQ,IAAK,GAAG,EACnFC,GAAkB,IAAIH,GAAa,OAAO,EAAED,UAAU,EAAGrB,EAAUO,EAAS,KAAK,GAAK,IAAImB,MAAM,GAAG,EAAE,CAAC,EAC5G,MAAO,GAAGpB,CAAK,IAAImB,CAAc,UACnC,CAnIA,IA4BYE,GA5BZC,GAAAC,EAAA,KAAAC,KA4BYH,GAAZ,SAAYA,EAA2B,CACrCA,OAAAA,EAAA,QAAA,WACAA,EAAA,OAAA,SACAA,EAAA,QAAA,UAHUA,CAIZ,EAJYA,IAA2B,CAAA,CAAA,IC5BvC,IAAAI,GAAAC,GAAAC,EAAA,KAAAF,GAAA,CACE,SAAY,CACV,KAAQ,CACN,OAAU,CACR,cAAiB,CACf,cAAiB,gBACjB,uBAA0B,wCAC1B,KAAQ,OACR,kBAAqB,wBACrB,UAAa,YACb,oBAAuB,CACrB,MAAS,QACT,SAAY,WACZ,MAAS,QACT,OAAU,SACV,MAAS,QACT,QAAW,UACX,KAAQ,OACR,OAAU,QACZ,CACF,CACF,CACF,CACF,CACF,ICxBA,IAAaG,GAAbC,GAAAC,EAAA,KAAaF,GAAiCG,GAAmB,CAC/D,GAAIA,GAAWA,EAAQC,SAAS,wBAAwB,EAAG,CACzD,IAAMC,EAAkB,+DACxBF,EAAUA,EAAQG,QAAQD,EAAiB,EAAE,CAC/C,CACA,OAAOF,CACT,ICNA,IAIaI,GAJbC,GAAAC,EAAA,KACAC,SAGaH,IAAiC,IAAA,CAAxC,IAAOA,EAAP,MAAOA,CAAiC,CAC5CI,UAAUC,EAAiBC,EAA+C,CACxE,OAAIA,GAAWA,EAAQC,wBACdC,GAA8BH,CAAO,EAGvCA,CACT,yCAPWL,EAAiC,6DAAjCA,EAAiCS,KAAA,EAAA,CAAA,EAAxC,IAAOT,EAAPU,SAAOV,CAAiC,GAAA,ICJ9C,IAsBaW,GAtBbC,GAAAC,EAAA,KACAC,KACAC,KACAC,KAEAC,KACAC,SAgBaP,IAAgB,IAAA,CAAvB,IAAOA,EAAP,MAAOA,CAAgB,yCAAhBA,EAAgB,uBAAhBA,CAAgB,CAAA,4BAFhB,CAACQ,EAAmB,EAACC,QAAA,CAT9BC,GACAC,GACAC,GAAcC,SAAS,CACrBC,cAAe,uBACfC,gBAAiBA,GAClB,CAAC,CAAA,CAAA,EAMA,IAAOf,EAAPgB,SAAOhB,CAAgB,GAAA,ICa7B,SAASiB,GAAUC,EAAQ,CACzB,MAAO,CAACC,GAAQD,CAAG,GAAKA,EAAME,WAAWF,CAAG,EAAI,GAAK,CACvD,CArCA,IAWMG,GACAC,GACAC,GACAC,GACAC,GAGAC,GAOAC,GAQAR,GAMOS,GAwKAC,GA/MbC,GAAAC,EAAA,KACAC,SAUMX,GAAc,wBACdC,GAAY,wEACZC,GAAkB,sCAClBC,GAAkB,iBAClBC,GACJ,uJAEIC,GACJ,+xBAMIC,GAA0C,CAC9CM,GAAI,yEACJC,GAAI,4BAMAf,GAAUgB,MAAMhB,UAAgBiB,GAAqBA,GAAK,OAAOA,EAAEC,QAAW,UAMvET,IAAS,IAAA,CAAhB,IAAOA,EAAP,MAAOA,CAAS,CAKpB,OAAOU,QAAQC,EAA2B,CACxC,OAAIA,EAAQC,OAAS,OAAOD,EAAQC,OAAU,UAAYD,EAAQC,MAAMC,MAAMpB,EAAW,GAGvFkB,EAAQC,OACR,OAAOD,EAAQC,OAAU,UACzBpB,YAAYmB,EAAQC,MAAQ,KAAKE,QAAQ,CAAC,CAAC,EAAI,IAAM,EAJ9C,KAQGH,EAAQC,MAGX,CAAEG,aAAc,EAAI,EAFpB,IAIX,CAEA,OAAOC,MAAML,EAA2B,CACtC,GAAIA,EAAQC,OAASD,EAAQC,MAAMC,MAAMnB,EAAS,EAChD,OAAO,KACF,GAAIiB,EAAQC,MACjB,MAAO,CAAEK,WAAY,EAAI,CAE7B,CAEA,OAAOC,YAAYP,EAA4B,CAC7C,GAAIA,EAAQC,OACKD,EAAQC,MACpBO,SAAQ,EACRC,MAAM,OAAO,EACbC,IAAKC,GAAUA,EAAMC,KAAI,CAAE,EACDC,OAAQF,GAAU,CAACA,EAAMT,MAAMhB,EAAW,CAAC,EACtDY,OAChB,MAAO,CAAEgB,aAAc,EAAI,CAGjC,CAEA,OAAOC,QAAQf,EAAwB,CACrC,OAAIA,EAAQC,OAAS,OAAOD,EAAQC,OAAS,UAAYD,EAAQC,MAAMC,MAAMhB,EAAW,EAC/E,KACEc,EAAQC,MACV,CAAEa,aAAc,EAAI,EAEtB,IACT,CAEA,OAAOE,cAAchB,EAA2B,CAC9C,GAAIA,EAAQC,OAASD,EAAQC,MAAMC,MAAMf,EAAkB,EACzD,OAAO,KACF,GAAIa,EAAQC,MACjB,MAAO,CAAEgB,mBAAoB,EAAI,CAErC,CAGA,OAAOC,kBAAkBC,EAAmB,CAC1C,OAAQnB,GAAqD,CAC3D,IAAMC,EAAQD,EAAQC,MAChBmB,EAAehC,GAAoB+B,EAAYE,YAAW,CAAE,EAElE,OAAKD,EAIAA,EAAaE,KAAKrB,CAAK,EAGrB,KAFE,CAAEsB,kBAAmB,EAAI,EAJzB,IAOX,CACF,CAEA,OAAOC,UAAUC,EAAeC,EAAa,CAC3C,OAAQ1B,GAAqD,CAC3D,IAAMC,EAAQD,EAAQC,MACtB,MAAI,CAACvB,GAAUuB,CAAK,GAAMwB,IAAU,MAAQE,OAAO1B,CAAK,EAAIwB,GAAWC,IAAU,MAAQC,OAAO1B,CAAK,EAAIyB,EAChG,CAAEE,WAAY,EAAI,EAEpB,IACT,CACF,CAEA,OAAOC,gBAAgB7B,EAA2B,CAChD,OAAIA,EAAQC,OAASD,EAAQC,MAAMC,MAAMjB,EAAe,EAC/C,KACEe,EAAQC,MACV,CAAE6B,gBAAiB,EAAI,EAEzB,IACT,CAEA,OAAOC,gBAAgBC,EAAqB,CAC1C,OAAQhC,GACFA,EAAQC,OAASD,EAAQC,MAAMH,QAAUkC,EACpC,KACEhC,EAAQC,MACV,CAAEgC,UAAW,EAAI,EAEnB,IAEX,CAEA,OAAOC,iBAAiBlC,EAA2B,CACjD,GAAIA,EAAQC,OAASD,EAAQC,MAAMC,MAAMlB,EAAe,EACtD,OAAO,KACF,GAAIgB,EAAQC,MACjB,MAAO,CAAEkC,iBAAkB,EAAI,CAEnC,CAEA,OAAOC,4BAA4BpC,EAA4B,CAC7D,OAAIA,EAAQC,MACN,CAACD,EAAQC,MAAMoC,SAAS,IAAI,GAGlBrC,EAAQC,MAAMQ,MAAM,IAAI,EAClB6B,MAAOC,GACrBA,EAAAA,EAAKF,SAAS,IAAI,IACpBE,EAAQ,KAAOA,EACAA,EAAKC,OAAOnD,EAAUoD,qBAAqB,IAC3C,IAKlB,EAEQ,KAEF,CAAEC,wBAAyB,EAAI,EAEjC,IACT,CAEA,OAAOC,aAAaC,EAAuBC,EAAoB,CAY7D,MAXuC,CACrCC,SAAU,WACVb,UAAW,kBAAkBY,EAAeE,cAAc,GAC1D3C,aAAc,gBACdwB,WAAY,eACZd,aAAc,gBACdG,mBAAoB,uBACpB+B,eAAgB,0BAChBb,iBAAkB,qBAGNS,CAAa,CAC7B,GAvJOK,EAAAC,oCAAsC,uDACtCD,EAAAR,sBAAwB,iDACxBQ,EAAAE,gBAAkB,qCAuJlBF,EAAAG,kBAAoB,IACjBpD,GACFA,EAAQC,OAAS,EACZ,CAAEoD,wBAAyB,EAAI,EAEjC,KA/JP,IAAOhE,EAAP4D,SAAO5D,CAAS,GAAA,EAwKTC,IAAoC,IAAA,CAA3C,IAAOA,EAAP,MAAOA,CAAoC,CAC/CgE,SAAStD,EAAwB,CAC/B,OAAOX,GAAU+C,4BAA4BpC,CAA6B,CAC5E,yCAHWV,EAAoC,sBAApCA,EAAoCiE,UAAA,CAAA,CAAA,GAAA,oCAAA,EAAA,CAAA,EAAAC,SAAA,CAAAC,GAFpC,CAAC,CAAEC,QAASC,GAAeC,YAAatE,EAAsCuE,MAAO,EAAI,CAAE,CAAC,CAAA,CAAA,CAAA,EAEnG,IAAOvE,EAAPwE,SAAOxE,CAAoC,GAAA,ICvM3C,SAAUyE,GAA4BC,EAAsB,CAChE,MAAI,CAACA,GAAKC,OAAOC,SAAW,CAACC,MAAMC,QAAQJ,EAAIC,MAAMC,OAAO,EACnD,CAAA,EAEFF,EAAIC,MAAMC,QACdG,OAAQC,GAAoCA,EAAO,OAAO,IAAMC,EAAgC,EAChGC,OAAO,CAACC,EAAuBC,IAA+C,CAC7E,IAAMC,EAAkBD,GAAMC,gBAAgBC,IAAKC,IAAwB,CACzEC,MAAOD,EAAGC,MACVC,YAAaF,EAAGE,aAChB,EACFN,OAAAA,EAAIO,KAAK,GAAGL,CAAe,EACpBF,CACT,EAAG,CAAA,CAAE,CACT,CApBA,IAAMF,GAANU,GAAAC,EAAA,KAAMX,GAAmC,8CCFzC,IAGYY,GAHZC,GAAAC,EAAA,KAGYF,GAAZ,SAAYA,EAAY,CACtBA,OAAAA,EAAA,SAAA,WACAA,EAAA,UAAA,YACAA,EAAA,OAAA,SAHUA,CAIZ,EAJYA,IAAY,CAAA,CAAA,ICkDlB,SAAUG,GAA0BC,EAA+B,CACvE,OAAQA,EAAW,CACjB,KAAKC,GAAmBC,UACtB,OAAOC,GAAaD,UACtB,KAAKD,GAAmBG,OACtB,OAAOD,GAAaC,OACtB,KAAKH,GAAmBI,SACtB,OAAOF,GAAaE,QACxB,CACA,OAAOF,GAAaE,QACtB,CAEM,SAAUC,GAAoBC,EAA4B,CAC9D,OAAOA,EAAMC,IAAKC,IACT,CACLC,SAAUD,EAAEE,SACZC,SAAUH,EAAEI,SACZC,MAAOL,EAAEK,OAAS,GAErB,CACH,CAEM,SAAUC,GAAaC,EAAoB,CAC/C,OAAQA,EAAS,CACf,KAAKC,GAAUC,QACb,OAAOC,GAA4BD,QACrC,KAAKD,GAAUG,QACb,OAAOD,GAA4BC,QACrC,KAAKH,GAAUI,OACb,OAAOF,GAA4BE,MACvC,CAEF,CAEM,SAAUC,GACdC,EACAC,EAA8B,CAE9B,MAAO,CACLC,YAAaF,EAAME,YACnBC,UAAWH,EAAMI,QACjBC,aAAc7B,GAA0ByB,EAAexB,WAAW,EAClEc,MAAOe,OACPC,MAAO,CAAA,EACPC,QAASR,EAAMS,YACfC,SAAUT,EAAeS,SACzBC,iBAAkBnB,GAAaS,EAAeR,SAAS,EACvDmB,aAAc7B,GAAoBkB,EAAeY,YAAY,EAC7DC,gBAAiBR,OACjBS,WAAYd,EAAec,WAC3BC,SAAUf,EAAee,SAE7B,CAzGA,IAAAC,GAAAC,EAAA,KAAAC,KAQAC,KACAC,OCTA,IAAAC,GAAAC,EAAA,KAAAC,KAEAC,OCFA,IAAaC,GAAbC,GAAAC,EAAA,KAAaF,GAA8BG,GAClCA,EAAIC,QAAQ,WAAY,EAAE,ICDnC,IAAAC,GAAAC,EAAA,KACAC,KAUAC,KACAC,KACAC,KACAC,KACAC,KACAC,KACAH,OCjBA,IAAAI,GAAAC,EAAA,KAAAC,OCAA,IAMaC,GANbC,GAAAC,EAAA,KAAAC,IAMaH,GAAsB,IAAII,GACrC,oDAAoD,ICPtD,IAMaC,GANbC,GAAAC,EAAA,KACAC,KACAC,KACAC,cAGaL,IAAW,IAAA,CAAlB,IAAOA,EAAP,MAAOA,CAAW,CAKtBM,YACUC,EACyCC,EAA0C,CADnF,KAAAD,OAAAA,EACyC,KAAAC,YAAAA,EAJnD,KAAAC,cAAgB,GAMd,KAAKC,QAAU,CAACH,EAAOI,GAAG,EAC1B,KAAKJ,OAAOK,OAAOC,UAAWC,GAAS,CACrC,GAAIA,aAAiBC,GAAe,CAClC,KAAO,KAAKL,QAAQM,OAAS,GAAK,KAAKN,QAAQ,KAAKA,QAAQM,OAAS,CAAC,IAAM,MAC1E,KAAKN,QAAQO,IAAG,EAElB,GAAI,KAAKV,OAAOW,qBAAoB,GAAIC,QAAQC,mBAC9C,KAAKV,QAAQW,KAAK,IAAI,UACb,KAAKX,QAAQM,SAAW,GAAKF,EAAMH,MAAQ,KAAKD,QAAQ,KAAKA,QAAQM,OAAS,CAAC,EAAG,CAC3F,IAAMM,EAAc,KAAKZ,QAAQ,KAAKA,QAAQM,OAAS,CAAC,EAClDO,EAAkBD,GAAaE,UACnC,EACAF,GAAaG,QAAQ,GAAG,EAAI,EAAIH,GAAaG,QAAQ,GAAG,EAAIC,MAAS,EAEjEC,EAAYb,EAAMc,kBAClBC,EAAgBF,GAAWH,UAC/B,EACAG,GAAWF,QAAQ,GAAG,EAAI,EAAIE,GAAWF,QAAQ,GAAG,EAAIC,MAAS,EAG/DJ,GAAeC,IAAoBM,GACrC,KAAKnB,QAAQO,IAAG,EAElB,KAAKP,QAAQW,KAAKM,CAAS,CAC7B,CACF,CACF,CAAC,EAED,KAAKlB,cAAgB,KAAKD,aAAasB,YAAc,EACvD,CAEAC,mBAAmBC,EAAkB,CACnC,GAAI,KAAKtB,QAAQM,OAAS,EAAG,CAC3B,IAAMM,EAAc,KAAKZ,QAAQ,KAAKA,QAAQM,OAAS,CAAC,EAExD,OAAOM,EAAcW,GAA2BX,CAAW,EAAI,EACjE,CAEA,OAAOU,CACT,CAEAf,IAAIiB,EAAc,EAAC,CACjB,KAAKxB,QAAQyB,OAAO,CAACD,EAAaA,CAAW,CAC/C,yCApDWlC,GAAWoC,EAAAC,EAAA,EAAAD,EAOAE,GAAmB,CAAA,CAAA,CAAA,wBAP9BtC,EAAWuC,QAAXvC,EAAWwC,UAAAC,WADE,MAAM,CAAA,EAC1B,IAAOzC,EAAP0C,SAAO1C,CAAW,GAAA,wCEHpB2C,GAAA,CAAA,EACEC,EAAA,EAAA,SAAA,CAAA,oBAEEC,GAAA,QAAA,UAAA,CAAAC,GAAAC,CAAA,EAAA,IAAAC,EAAAC,GAAA,EAAA,OAAAC,GAASF,EAAAG,UAAA,CAAgB,CAAA,CAAA,EAIzBP,EAAA,EAAA,UAAA,EAAUQ,GAAA,EAAA,MAAA,EAAIC,EAAA,EAAW,aAFzBC,EAAA,EAAAC,GAAA,aAAAC,GAAA,EAAA,EAAA,yBAAA,CAAA,0BA+BRb,GAAA,CAAA,EACEC,EAAA,EAAA,MAAA,CAAA,EACEa,EAAA,EAAA,CAAA,EACFJ,EAAA,QD1CF,UAUaK,GAVbC,GAAAC,EAAA,KAEAC,uSAQaH,IAAoB,IAAA,CAA3B,IAAOA,EAAP,MAAOA,CAAoB,CAU/BI,YACmBC,EACyCC,EAA0C,CADnF,KAAAD,YAAAA,EACyC,KAAAC,YAAAA,EAXtC,KAAAC,MAAQ,oBACrB,KAAAC,oBAAsB,GAI/B,KAAAC,uBAAyB,GAEhB,KAAAC,cAAiD,KAAKL,YAAYK,eAAiB,EAKzF,CAEHjB,WAAS,CACP,KAAKa,aAAab,UAAS,CAC7B,yCAjBWO,GAAoBW,EAAAC,EAAA,EAAAD,EAYTE,GAAmB,CAAA,CAAA,CAAA,uBAZ9Bb,EAAoBc,UAAA,CAAA,CAAA,mBAAA,CAAA,EAAAC,SAAA,EAAAC,aAAA,SAAAC,EAAAC,EAAA,CAAAD,EAAA,IAApBE,EAAAD,EAAAX,KAAA,EAAAa,GAAA,+BAAAF,EAAAT,sBAAA,2hBCVbvB,EAAA,EAAA,MAAA,CAAA,EAA6B,EAAA,MAAA,CAAA,EAGzBmC,GAAA,EAAAC,GAAA,EAAA,EAAA,eAAA,CAAA,EAYAvB,EAAA,CAAA,EAGAA,EAAA,EAAA,CAAA,EACFJ,EAAA,EAEAT,EAAA,EAAA,MAAA,CAAA,EAAwC,EAAA,MAAA,CAAA,EAGpCa,EAAA,EAAA,CAAA,EACFJ,EAAA,EAGAT,EAAA,EAAA,MAAA,CAAA,EACEa,EAAA,EAAA,CAAA,EACFJ,EAAA,EAEAT,EAAA,GAAA,MAAA,CAAA,EAEEa,EAAA,GAAA,CAAA,EACFJ,EAAA,EAAM,EACF,EAGR0B,GAAA,GAAAE,GAAA,EAAA,EAAA,eAAA,CAAA,SApCmB3B,EAAA,CAAA,EAAA4B,GAAA,OAAAN,EAAAR,aAAA,EAoCJd,EAAA,EAAA,EAAA4B,GAAA,OAAAN,EAAAV,mBAAA;;qBD7BT,IAAOR,EAAPyB,SAAOzB,CAAoB,GAAA,IEVjC,IAGM0B,GAKOC,GARbC,GAAAC,EAAA,KAAAC,aAGMJ,GAAwB,EAKjBC,IAAkB,IAAA,CAAzB,IAAOA,EAAP,MAAOA,CAAkB,CAU7BI,YACmBC,EACAC,EAAmC,CADnC,KAAAD,MAAAA,EACA,KAAAC,kBAAAA,EAXG,KAAAC,MAAQ,kBAKU,KAAAC,eAAiB,GAEjD,KAAAC,WAAa,CAKlB,CAEHC,UAAQ,CACF,KAAKF,gBACP,KAAKG,YAAW,CAEpB,CASQA,aAAW,CACjB,IAAMC,EAAY,KAAKC,aAAY,EAAGC,WAAa,GAC/CF,EAAUG,KAAI,IAAO,GACvB,KAAKV,MAAMW,SAASJ,CAAS,GAE7B,KAAKH,YAAc,EACf,KAAKA,WAAaV,IACpBkB,OAAOC,WAAW,IAAM,KAAKP,YAAW,EAAI,GAAG,EAGrD,CAKQE,cAAY,CAClB,IAAMM,EAAa,KAAKb,kBAA0B,YAAe,CAAC,EAClE,GAAIa,aAAqBC,YACvB,OAAOD,EAIT,IAAME,EADgBF,EAAUf,YAAYkB,KACRC,MAAM,GAAG,EAAE,CAAC,EAChD,OAAOJ,EAAUK,OAAQC,GAAWA,GAAKA,EAAErB,YAAYkB,OAASD,CAAa,EAAE,CAAC,CAClF,yCApDWrB,GAAkB0B,EAAAC,EAAA,EAAAD,EAAAE,EAAA,CAAA,CAAA,sBAAlB5B,EAAkB6B,UAAA,CAAA,CAAA,iBAAA,EAAA,CAAA,GAAA,gBAAA,EAAA,CAAA,EAAAC,SAAA,EAAAC,aAAA,SAAAC,EAAAC,EAAA,CAAAD,EAAA,GAAlBE,EAAAD,EAAA1B,KAAA,0FAMS4B,EAAgB,CAAA,EAAAC,SAAA,CAAAC,EAAA,CAAA,CAAA,EANhC,IAAOrC,EAAPsC,SAAOtC,CAAkB,GAAA,ICR/B,IAKauC,GALbC,GAAAC,EAAA,SAKaF,IAAoB,IAAA,CAA3B,IAAOA,EAAP,MAAOA,CAAoB,CAHjCG,aAAA,CAIwB,KAAAC,MAAQ,4DADnBJ,EAAoB,sBAApBA,EAAoBK,UAAA,CAAA,CAAA,mBAAA,EAAA,CAAA,GAAA,kBAAA,EAAA,CAAA,EAAAC,SAAA,EAAAC,aAAA,SAAAC,EAAAC,EAAA,CAAAD,EAAA,GAApBE,EAAAD,EAAAL,KAAA,KAAP,IAAOJ,EAAPW,SAAOX,CAAoB,GAAA,ICLjC,IAEYY,GAYCC,GAdbC,GAAAC,EAAA,SAEYH,GAAZ,SAAYA,EAAW,CACrBA,OAAAA,EAAA,OAAA,SACAA,EAAA,QAAA,UACAA,EAAA,KAAA,OACAA,EAAA,KAAA,OAJUA,CAKZ,EALYA,IAAW,CAAA,CAAA,EAYVC,IAAoB,IAAA,CAA3B,IAAOA,EAAP,MAAOA,CAAoB,CAHjCG,aAAA,CAIwB,KAAAC,MAAQ,oBAEA,KAAAC,QAAU,QAEX,KAAAC,OAAS,SAE7B,KAAAC,YAA0CR,GAAYS,QAI/D,IACIC,aAAW,CACb,GAAI,KAAKC,SACP,OAAO,KAAKA,SAAW,KAEvB,OAAQ,KAAKH,YAAW,CACtB,IAAK,SACL,KAAKR,GAAYY,OACf,MAAO,QACT,IAAK,OACL,KAAKZ,GAAYa,KACf,MAAO,SACT,IAAK,OACL,KAAKb,GAAYc,KACf,MAAO,GACT,IAAK,UACL,KAAKd,GAAYS,QACjB,QACE,MAAO,OACX,CAEJ,yCAhCWR,EAAoB,sBAApBA,EAAoBc,UAAA,CAAA,CAAA,mBAAA,EAAA,CAAA,GAAA,kBAAA,EAAA,CAAA,EAAAC,SAAA,EAAAC,aAAA,SAAAC,EAAAC,EAAA,CAAAD,EAAA,IAApBE,EAAAD,EAAAd,KAAA,EAAAgB,GAAA,UAAAF,EAAAb,OAAA,EAAoB,SAAAa,EAAAZ,MAAA,EAAA,YAAAY,EAAAT,WAAA,6DAA3B,IAAOT,EAAPqB,SAAOrB,CAAoB,GAAA,ICdjC,IASasB,GATbC,GAAAC,EAAA,kCASaF,IAAsB,IAAA,CAA7B,IAAOA,EAAP,MAAOA,CAAsB,CAQjCG,YAA6BC,EAA2CC,EAAc,CAAzD,KAAAD,YAAAA,EAA2C,KAAAC,OAAAA,EAL/D,KAAAC,WAAa,GACb,KAAAC,uBAAyB,OAElC,KAAAC,eAAiB,EAEwE,CAEzFC,UAAQ,CACF,KAAKC,kBACP,KAAKF,eAAiB,KAAKE,gBAE/B,CAEAC,uBAAqB,CACf,KAAKL,aACP,KAAKI,gBAAkB,KAAKN,YAAYQ,mBAAmB,KAAKJ,cAAc,EAG1E,KAAKE,kBAAoB,KAAKF,gBAAkB,KAAKD,yBACvD,KAAKM,kBAAoB,KAAKN,yBAOlC,KAAKH,YAAYU,IAAG,EAEpB,IAAMC,EAAU,KAAKV,OAAOW,SAAS,KAAKN,iBAAmB,EAAE,EACzDO,EAAkB,KAAKP,iBAAiBQ,QAAQ,GAAG,EACnDC,GACHF,GAAmB,GAAK,EAAI,KAAKP,iBAAiBU,UAAU,EAAGH,CAAe,EAAI,KAAKP,gBACtFS,GACF,KAAKd,OAAOgB,SAAS,CAACF,CAAI,EAAG,CAAEG,YAAaP,EAAQO,YAAaC,SAAUR,EAAQQ,UAAYC,MAAS,CAAE,CAE9G,yCAtCWxB,GAAsByB,EAAAC,EAAA,EAAAD,EAAAE,EAAA,CAAA,CAAA,uBAAtB3B,EAAsB4B,UAAA,CAAA,CAAA,sBAAA,CAAA,EAAAC,OAAA,CAAAnB,gBAAA,kBAAAG,kBAAA,oBAAAP,WAAA,aAAAC,uBAAA,wBAAA,EAAAuB,MAAA,EAAAC,KAAA,EAAAC,OAAA,CAAA,CAAA,EAAA,4BAAA,EAAA,CAAA,kBAAA,GAAA,QAAA,UAAA,EAAA,QAAA,YAAA,CAAA,EAAAC,SAAA,SAAAC,EAAAC,EAAA,CAAAD,EAAA,ICTnCE,EAAA,EAAA,MAAA,CAAA,EAAwC,EAAA,SAAA,CAAA,EAKpCC,GAAA,QAAA,UAAA,CAAA,OAASF,EAAAxB,sBAAA,CAAuB,CAAA,EAEhCyB,EAAA,EAAA,UAAA,EAAUE,GAAA,EAAA,YAAA,EAAUC,EAAA,EAAW,EACxB,SAJPC,EAAA,EAAAC,GAAA,aAAAN,EAAAtB,kBAAAsB,EAAAtB,kBAAA,EAAA;wHDKE,IAAOb,EAAP0C,SAAO1C,CAAsB,GAAA,IETnC,IAKa2C,GALbC,GAAAC,EAAA,SAKaF,IAAgB,IAAA,CAAvB,IAAOA,EAAP,MAAOA,CAAgB,CAH7BG,aAAA,CAIwB,KAAAC,MAAQ,wDADnBJ,EAAgB,sBAAhBA,EAAgBK,UAAA,CAAA,CAAA,eAAA,EAAA,CAAA,GAAA,cAAA,EAAA,CAAA,EAAAC,SAAA,EAAAC,aAAA,SAAAC,EAAAC,EAAA,CAAAD,EAAA,GAAhBE,EAAAD,EAAAL,KAAA,KAAP,IAAOJ,EAAPW,SAAOX,CAAgB,GAAA,ICL7B,IAKaY,GALbC,GAAAC,EAAA,SAKaF,IAAyB,IAAA,CAAhC,IAAOA,EAAP,MAAOA,CAAyB,CAHtCG,aAAA,CAIwB,KAAAC,MAAQ,kEADnBJ,EAAyB,sBAAzBA,EAAyBK,UAAA,CAAA,CAAA,yBAAA,EAAA,CAAA,GAAA,uBAAA,EAAA,CAAA,EAAAC,SAAA,EAAAC,aAAA,SAAAC,EAAAC,EAAA,CAAAD,EAAA,GAAzBE,EAAAD,EAAAL,KAAA,KAAP,IAAOJ,EAAPW,SAAOX,CAAyB,GAAA,ICLtC,IAKaY,GALbC,GAAAC,EAAA,SAKaF,IAA4B,IAAA,CAAnC,IAAOA,EAAP,MAAOA,CAA4B,CAHzCG,aAAA,CAIwB,KAAAC,MAAQ,qEADnBJ,EAA4B,sBAA5BA,EAA4BK,UAAA,CAAA,CAAA,4BAAA,EAAA,CAAA,GAAA,0BAAA,EAAA,CAAA,EAAAC,SAAA,EAAAC,aAAA,SAAAC,EAAAC,EAAA,CAAAD,EAAA,GAA5BE,EAAAD,EAAAL,KAAA,KAAP,IAAOJ,EAAPW,SAAOX,CAA4B,GAAA,ICLzC,IAuCaY,GAsCAC,GA7EbC,GAAAC,EAAA,KACAC,KACAC,KAEAC,KACAC,KACAC,KACAC,KACAC,KA6BAC,SAEaX,GAAiB,CAC5BY,GACAC,GACAC,GACAC,GACAC,GACAC,GACAC,GACAC,EAAe,EA8BJlB,IAAgB,IAAA,CAAvB,IAAOA,EAAP,MAAOA,CAAgB,yCAAhBA,EAAgB,uBAAhBA,CAAgB,CAAA,2BAFlBD,EAAc,CAAA,CAAA,EAEnB,IAAOC,EAAPmB,SAAOnB,CAAgB,GAAA,IC7E7B,IAAAoB,GAAAC,EAAA,KAAAC,OCAA,IAAAC,GAAAC,EAAA,KAAAC,KACAC,KACAC","names":["clamp","v","min","max","MAT_PROGRESS_BAR_DEFAULT_OPTIONS","MatProgressBar","MatProgressBarModule","init_progress_bar","__esmMin","init_core","InjectionToken","_MatProgressBar","_elementRef","_ngZone","_changeDetectorRef","_animationMode","defaults","EventEmitter","event","value","t","ɵɵdirectiveInject","ElementRef","NgZone","ChangeDetectorRef","ANIMATION_MODULE_TYPE","ɵɵdefineComponent","rf","ctx","ɵɵattribute","ɵɵclassMap","ɵɵclassProp","InputFlags","numberAttribute","ɵɵInputTransformsFeature","ɵɵStandaloneFeature","ɵɵelementStart","ɵɵelement","ɵɵelementEnd","ɵɵadvance","ɵɵstyleProp","_MatProgressBarModule","ɵɵdefineNgModule","ɵɵdefineInjector","MatCommonModule","MatMenuItem_Conditional_4_Template","rf","ctx","ɵɵnamespaceSVG","ɵɵelementStart","ɵɵelement","ɵɵelementEnd","MatMenu_ng_template_0_Template","_r1","ɵɵgetCurrentView","ɵɵlistener","$event","ɵɵrestoreView","ctx_r1","ɵɵnextContext","ɵɵresetView","ɵɵprojection","ɵɵproperty","ɵɵattribute","MAT_MENU_DEFAULT_OPTIONS_FACTORY","MAT_MENU_SCROLL_STRATEGY_FACTORY","overlay","_c0","_c1","_c2","_c3","MAT_MENU_PANEL","MatMenuItem","MAT_MENU_CONTENT","MatMenuContent","matMenuAnimations","fadeInItems","transformMenu","menuPanelUid","MAT_MENU_DEFAULT_OPTIONS","MatMenu","MAT_MENU_SCROLL_STRATEGY","MAT_MENU_SCROLL_STRATEGY_FACTORY_PROVIDER","passiveEventListenerOptions","MatMenuTrigger","MatMenuModule","init_menu","__esmMin","init_core","init_a11y","init_keycodes","init_esm","init_operators","init_common","init_portal","init_animations","init_bidi","init_overlay","init_platform","init_scrolling","InjectionToken","_MatMenuItem","_elementRef","_document","_focusMonitor","_parentMenu","_changeDetectorRef","Subject","origin","options","event","clone","icons","i","isHighlighted","triggersSubmenu","t","ɵɵdirectiveInject","ElementRef","DOCUMENT","FocusMonitor","ChangeDetectorRef","ɵɵdefineComponent","ɵɵclassProp","InputFlags","booleanAttribute","ɵɵInputTransformsFeature","ɵɵStandaloneFeature","ɵɵprojectionDef","ɵɵtemplate","ɵɵadvance","ɵɵconditional","MatRipple","_MatMenuContent","_template","_componentFactoryResolver","_appRef","_injector","_viewContainerRef","context","TemplatePortal","DomPortalOutlet","element","TemplateRef","ComponentFactoryResolver$1","ApplicationRef","Injector","ViewContainerRef","ɵɵdefineDirective","ɵɵProvidersFeature","trigger","state","style","transition","animate","_MatMenu","value","classes","previousPanelClass","className","_ngZone","defaultOptions","QueryList","EventEmitter","FocusKeyManager","startWith","switchMap","items","merge","item","focusedItem","itemsList","manager","index","_item","keyCode","hasModifierKey","take","menuPanel","depth","elevation","newElevation","customElevation","posX","posY","NgZone","dirIndex","ɵɵcontentQuery","_t","ɵɵqueryRefresh","ɵɵloadQuery","ɵɵviewQuery","NgClass","inject","Overlay","normalizePassiveListenerOptions","_MatMenuTrigger","v","menu","reason","_overlay","_element","scrollStrategy","parentMenu","_menuItemInstance","_dir","Subscription","isFakeTouchstartFromScreenReader","overlayRef","overlayConfig","positionStrategy","takeUntil","filter","isOpen","config","OverlayConfig","position","change","originX","originFallbackX","overlayY","overlayFallbackY","originY","originFallbackY","overlayX","overlayFallbackX","offsetY","firstItem","backdrop","detachments","parentClose","of","hover","active","isFakeMousedownFromScreenReader","delay","asapScheduler","Directionality","_MatMenuModule","ɵɵdefineNgModule","ɵɵdefineInjector","CommonModule","MatRippleModule","MatCommonModule","OverlayModule","CdkScrollableModule","MatDivider","MatDividerModule","init_divider","__esmMin","init_core","init_coercion","_MatDivider","value","coerceBooleanProperty","t","ɵɵdefineComponent","rf","ctx","ɵɵattribute","ɵɵclassProp","ɵɵStandaloneFeature","_MatDividerModule","ɵɵdefineNgModule","ɵɵdefineInjector","MatCommonModule","ɵɵelementContainerStart","ɵɵelementStart","ɵɵelement","ɵɵelementEnd","PageComponent","init_page_component","__esmMin","init_core","init_esm","init_operators","isDisplayModeAbsolute","displayMode","constructor","breakpointObserver","class","isLoading","mobileMaxWidth","scrolledToBottomOffset","pagePadding","scrollShadow","pageMobile","pageScroll","EventEmitter","pageScrolledToBottom","destroy$","Subject","windowScrollEvent","$event","onWindowScroll","ngOnInit","observe","pipe","takeUntil","subscribe","next","resp","matches","ngOnDestroy","complete","onPageScroll","event","emit","target","scrollTop","scrollHeight","offsetHeight","scrollPosition","bottomScrollPosition","window","innerHeight","scrollY","document","body","ɵɵdirectiveInject","BreakpointObserver","selectors","hostVars","hostBindings","rf","ctx","ɵɵlistener","ɵɵresolveWindow","ɵɵclassMap","ɵɵclassProp","booleanAttribute","outputs","features","ɵɵInputTransformsFeature","ngContentSelectors","_c1","decls","vars","consts","template","ɵɵprojection","ɵɵtemplate","PageComponent_ng_container_1_Template","ɵɵadvance","ɵɵproperty","_PageComponent","SortDirection","init_sort_direction","__esmMin","PagedResponse","init_paged_response","__esmMin","constructor","results","nextCursor","hasMore","init_core","__esmMin","init_sort_direction","init_paged_response","enumStringToValue$D","enumRef","value","enumStringToValue$C","enumStringToValue$B","enumStringToValue$A","enumStringToValue$z","enumStringToValue$y","enumStringToValue$x","enumStringToValue$w","enumStringToValue$u","enumStringToValue$t","enumStringToValue$s","enumStringToValue$r","enumStringToValue$n","enumStringToValue$k","enumStringToValue$j","enumStringToValue$i","enumStringToValue$g","enumStringToValue$f","enumStringToValue$e","enumStringToValue$d","enumStringToValue$c","enumStringToValue$4","enumStringToValue","Frequency","Currency","FeeAmountType","FeeType","BillingStrategy","ProductPricingType","Source","SubscriptionStatus","DiscountType","ContractSubscriptionStatus","ProductSummaryBillingStrategy","ProductSummaryDiscountDiscountType","ProductSummaryProductType","PricingRuleType","SubscribeValidationStatus","Consumer","RenewalState","ListInvoicesRequestFiltersDateFilterDateField","InvoiceStatus","PayoutStatus","PayoutType","SortDirection","MerchantType","SearchMerchantsRequestSortBy","Month","MerchantReportStatus","CardType","DisputeStatus","PaymentAllocationType","PaymentSource","PaymentStatus","RetailPaymentReferenceType","RetailRefundFailureReason","RetailRefundReason","RetailRefundStatus","RetailTransactionType","PaymentCardCARD_TYPE","PaymentCardFUNDING_TYPE","ProductType","CreditType","PurchaseStatus","ListPurchaseRequestState","MerchantServicesReportRunStatus","MerchantServicesReportRunType","ExportResponse","PagedRequestOptions","PagedResponseMetadata","FieldMask","Commitment","AppliedFee","Fee","ComponentPricing","CreatePricingPlanRequest","CreatePricingPlanResponse","GetMultiPricingPlanRequest","GetMultiPricingPlanResponse","PricingPlan","PricingPlanProductPricing","ProductPricingRule","UpdatePricingPlanRequest","UpdatePricingPlanResponse","ProductPrices","ProductPricing","WholesaleCostItemRequest","BillItemRequest","BillMultipleItemsRequest","BillMultipleItemsResponse","BillableItem","CanBillItemRequest","CreateUsageRequest","BillableItemCustomerAddress","DeleteBillableItemRequest","ExpireBillableItemRequest","ExportSubscriptionsRequest","ListSubscriptionsRequestFilters","ListBillableItemsRequestFilters","GetBillableItemRequest","GetBillableItemResponse","GetMultiSubscriptionsRequest","GetMultiSubscriptionsResponse","Item","GetMultiSubscriptionsRequestKey","ListBillableItemsRequest","ListBillableItemsResponse","ListSubscriptionsRequest","ListSubscriptionsResponse","UpdateSubscriptionRequestSubscription","SubscriptionProjectionFilter","UnexpireBillableItemRequest","UpdateSubscriptionRequest","UpdateSubscriptionResponse","AppliedDiscount","BundlePricing","BundlePricingPriceAndFrequency","Contract","GetMerchantWholesaleCurrencyRequest","GetMerchantWholesaleCurrencyResponse","GetMultiContractsRequest","GetMultiContractsResponse","ListContractsRequest","ListContractsResponse","ResetContractPricingRequest","CustomerSummary","GetMultiCustomerSummariesRequest","GetMultiCustomerSummariesResponse","BankAccount","CreateStripeExternalAccountRequest","DeleteBankAccountRequest","ListBankAccountsRequest","ListBankAccountsResponse","SetDefaultBankAccountRequest","ProductSummaryDiscount","GetProductSummariesTotalRequest","GetProductSummariesTotalResponse","ListProductSummariesRequest","ListProductSummariesResponse","Pricing","ProductSummary","PricingRule","SubscribeValidation","AlignmentSubscription","CanCreateSubscriptionsRequest","CanCreateSubscriptionsResponse","ChangeCustomUnitPriceRequest","ChangeFrequencyRequest","ChangeRenewalDateRequest","CreateSubscriptionRequest","CreateSubscriptionResponse","CreateSubscriptionsRequest","CreateSubscriptionsResponse","ReverseSubscriptionRequest","SetAutoBillableRequest","SetRenewalStartRequest","Subscription","CanCreateSubscriptionsRequestSubscriptionItem","ValidateResponse","CreateDiscountRequest","CreateDiscountResponse","Discount","ExpireDiscountRequest","ListDiscountsRequestFilters","ListDiscountsRequest","ListDiscountsResponse","UpdateDiscountRequest","AppliedTaxRate","ArchiveTaxRequest","CalculateLineItemTaxesRequest","CalculateLineItemTaxesResponse","CalculateTaxRequest","CalculateTaxResponse","CreateTaxRequest","ListTaxRequestFilters","GetMultiTaxRequest","GetMultiTaxResponse","CalculateLineItemTaxesRequestLineItem","CalculateLineItemTaxesResponseLineItemTaxes","ListTaxRequest","ListTaxResponse","TaxRate","UpdateTaxRequest","AppliedBundle","AppliedBundleItem","AddBundleRequest","AddBundleResponse","AddLineItemRequest","AddLineItemResponse","ChargeInvoiceRequest","CreateInvoiceRequest","CreateInvoiceResponse","CreatePaymentLinkRequest","CreatePaymentLinkResponse","InvoiceCustomerAddress","ListInvoicesRequestFiltersDateFilter","DeleteInvoiceRequest","DeleteLineItemRequest","DeleteLineItemResponse","DuplicateInvoiceRequest","DuplicateInvoiceResponse","ListInvoicesRequestFilters","GetInvoiceRequest","GetInvoiceResponse","GetUpcomingInvoicePreviewRequest","GetUpcomingInvoicePreviewResponse","Invoice","InvoiceItem","ListInvoicesRequest","ListInvoicesResponse","Note","PayInvoiceRequest","PaymentLinkItem","RemoveBundleRequest","RemoveBundleResponse","SendInvoiceRequest","UpdateBundleRequest","UpdateBundleResponse","UpdateDefaultTaxRatesRequest","UpdateDefaultTaxRatesResponse","UpdateInvoiceRequest","UpdateInvoiceResponse","UpdateLineItemRequest","UpdateLineItemResponse","VoidInvoiceRequest","AccountBalance","Balance","BalanceAmount","RetailPayout","CancelRetailBillingRequest","ChargeSalesInvoiceRequest","CreateMerchantRequest","DefaultCustomerConfiguration","GetMerchantRequest","GetMerchantResponse","GetMultiRetailConfigurationsRequest","GetMultiRetailConfigurationsResponse","GetOutstandingBalanceRequest","GetOutstandingBalanceResponse","GetPayoutSummaryRequest","GetPayoutSummaryResponse","GetRetailAccountBalanceRequest","GetRetailAccountBalanceResponse","GetRetailBalanceRequest","GetRetailBalanceResponse","GetRetailPayoutRequest","GetRetailPayoutResponse","CreateMerchantRequestIncludeInFinancialRecords","UpdateMerchantRequestIncludeInFinancialRecords","ListRetailPayoutsRequest","ListRetailPayoutsResponse","Merchant","RetailConfiguration","SearchMerchantsRequest","SearchMerchantsResponse","SetAutoChargeInvoicesRequest","SetAutoPostInvoicesRequest","SetDefaultPaymentCardRequest","SetHasAlternativePaymentMethodRequest","SetIncludeInFinancialRecordsRequest","UpdateMerchantRequest","UpsertDefaultRetailCustomerConfigurationRequest","UpsertRetailConfigurationRequest","ListMerchantBillingReportsRequest","ListMerchantBillingReportsResponse","MerchantReport","CreateMeteredComponentRequest","MeteredComponent","TickComponentUsageRequest","Adjustment","RetailPaymentCardDetails","CloseRetailDisputeRequest","ConfigureRetailPaymentProviderRequest","ConfigureRetailPaymentProviderResponse","ConfirmRetailPaymentRequest","Dispute","DisputeEvidence","SubmitEvidenceRequestDisputeEvidence","DisputeEvidenceDetails","File","GetRetailDisputeRequest","GetRetailDisputeResponse","GetRetailPaymentProviderRequest","GetRetailPaymentProviderResponse","GetRetailPaymentRequest","GetRetailPaymentResponse","GetWholesaleProviderPublicKeyRequest","GetWholesaleProviderPublicKeyResponse","ListPaymentRequestListPaymentFilters","ListPaymentRequest","ListPaymentResponse","ListRetailDisputesRequest","ListRetailDisputesResponse","ListRetailPaymentsRequestListRetailPaymentsFilters","ListRetailPaymentsRequest","ListRetailPaymentsResponse","ListRetailTransactionsRequestListRetailTransactionsFilters","ListRetailTransactionsRequest","ListRetailTransactionsResponse","PrepareRetailPaymentRequestOrder","Payment","PaymentPaymentAllocation","PrepareRetailPaymentRequest","PrepareRetailPaymentResponse","RefundRetailPaymentRequest","RefundRetailPaymentResponse","RetailPayment","RetailPaymentsEnabledRequest","RetailPaymentsEnabledResponse","RetailRefund","RetailStatusRequest","RetailStatusResponse","RetailTransaction","SubmitEvidenceRequest","UpdateRetailPaymentProviderRequest","RetailStatusResponseVerificationError","RetailStatusResponseVerificationRequirements","CreatePaymentCardRequest","DeletePaymentCardRequest","ListPaymentCardsRequest","ListPaymentCardsResponse","PaymentCard","SetDefaultPaymentMethodRequest","UpdatePaymentCardRequest","CreatePricingPlanProductRequest","CreatePricingPlanProductResponse","DeletePricingPlanProductRequest","GetMultiPricingPlanProductRequest","GetMultiPricingPlanProductResponse","GetPricingPlanProductRequest","GetPricingPlanProductResponse","ListPricingPlanProductsRequestListPricingPlanProductsFilters","ListPricingPlanProductsRequest","ListPricingPlanProductsResponse","PricingPlanProduct","UpdatePricingPlanProductRequest","UpdatePricingPlanProductResponse","UpsertWholesalePricingRequest","GetMultiProductRequest","GetMultiProductResponse","ListProductsRequestListProductsFilters","ListProductsRequest","ListProductsResponse","Product","AppliedCredit","ListPurchaseRequestListPurchaseBillingStrategyFilter","ListPurchaseRequestListPurchaseFilters","ListPurchaseItemsRequestListPurchaseItemsFilters","ListPurchaseItemsRequest","ListPurchaseItemsResponse","ListPurchaseRequest","ListPurchaseResponse","PauseDunningRequest","Purchase","PurchaseItem","ResumeDunningRequest","RetryPurchaseRequest","StopDunningRequest","VoidPurchaseRequest","SendSalesInvoiceEmailRequest","SendSalesInvoiceReceiptEmailRequest","CreateMerchantServicesReportRun","GetMerchantServicesReportRun","MerchantServicesReportRun","ReplaceSubscriptionPresetsRequest","ReplaceSubscriptionPresetsResponse","SubscriptionPreset","DeleteRetailPricingRequest","GenerateBillableItemsCSVRequest","GenerateBillableItemsCSVResponse","GenerateVendorReportRequest","GenerateVendorReportResponse","GetMultiBundleRetailPricingRequest","GetMultiBundleRetailPricingResponse","GetMultiProductPricingRequest","GetMultiProductPricingResponse","GetMultiRetailPricingRequest","GetMultiRetailPricingResponse","GetMultiWholesaleCostRequest","GetMultiWholesaleCostResponse","GetPurchaseCostRequest","GetPurchaseCostResponse","GetRevenueStatsRequest","GetRevenueStatsResponse","GetStatisticsRequest","GetStatisticsResponse","GetWholesaleComparisonRequestGetWholesaleComparisonFilters","GetWholesaleComparisonRequest","GetWholesaleComparisonResponse","GetWholesaleComparisonResponseGetWholesaleComparisonResult","SetWholesaleProductStrategyRequest","SetWholesaleProductVolumeCommitmentRequest","StartRevRecTemplateBackfillRequest","UpsertRetailPricingRequest","environment","hostMap","HostService","BillingApiService","DiscountApiService","InvoiceApiService","MerchantApiService","PaymentMethodApiService","PaymentApiService","PricingApiService","PurchaseApiService","TaxApiService","VendorApiService","init_vendasta_billing","__esmMin","init_core","init_http","init_operators","_ExportResponse","proto","m","kwargs","_PagedRequestOptions","toReturn","_PagedResponseMetadata","_FieldMask","_Commitment","_AppliedFee","_Fee","_ComponentPricing","_CreatePricingPlanRequest","_CreatePricingPlanResponse","_GetMultiPricingPlanRequest","_GetMultiPricingPlanResponse","_PricingPlan","_PricingPlanProductPricing","_ProductPricingRule","_UpdatePricingPlanRequest","_UpdatePricingPlanResponse","_ProductPrices","_ProductPricing","_WholesaleCostItemRequest","_BillItemRequest","_BillMultipleItemsRequest","_BillMultipleItemsResponse","_BillableItem","_CanBillItemRequest","_CreateUsageRequest","_BillableItemCustomerAddress","_DeleteBillableItemRequest","_ExpireBillableItemRequest","_ExportSubscriptionsRequest","_ListSubscriptionsRequestFilters","v","_ListBillableItemsRequestFilters","_GetBillableItemRequest","_GetBillableItemResponse","_GetMultiSubscriptionsRequest","_GetMultiSubscriptionsResponse","_Item","_GetMultiSubscriptionsRequestKey","_ListBillableItemsRequest","_ListBillableItemsResponse","_ListSubscriptionsRequest","_ListSubscriptionsResponse","_UpdateSubscriptionRequestSubscription","_SubscriptionProjectionFilter","_UnexpireBillableItemRequest","_UpdateSubscriptionRequest","_UpdateSubscriptionResponse","_AppliedDiscount","_BundlePricing","_BundlePricingPriceAndFrequency","_Contract","_GetMerchantWholesaleCurrencyRequest","_GetMerchantWholesaleCurrencyResponse","_GetMultiContractsRequest","_GetMultiContractsResponse","obj","k","_ListContractsRequest","_ListContractsResponse","_ResetContractPricingRequest","_CustomerSummary","_GetMultiCustomerSummariesRequest","_GetMultiCustomerSummariesResponse","_BankAccount","_CreateStripeExternalAccountRequest","_DeleteBankAccountRequest","_ListBankAccountsRequest","_ListBankAccountsResponse","_SetDefaultBankAccountRequest","_ProductSummaryDiscount","_GetProductSummariesTotalRequest","_GetProductSummariesTotalResponse","_ListProductSummariesRequest","_ListProductSummariesResponse","_Pricing","_ProductSummary","_PricingRule","_SubscribeValidation","_AlignmentSubscription","_CanCreateSubscriptionsRequest","_CanCreateSubscriptionsResponse","_ChangeCustomUnitPriceRequest","_ChangeFrequencyRequest","_ChangeRenewalDateRequest","_CreateSubscriptionRequest","_CreateSubscriptionResponse","_CreateSubscriptionsRequest","_CreateSubscriptionsResponse","_ReverseSubscriptionRequest","_SetAutoBillableRequest","_SetRenewalStartRequest","_Subscription","_CanCreateSubscriptionsRequestSubscriptionItem","_ValidateResponse","_CreateDiscountRequest","_CreateDiscountResponse","_Discount","_ExpireDiscountRequest","_ListDiscountsRequestFilters","_ListDiscountsRequest","_ListDiscountsResponse","_UpdateDiscountRequest","_AppliedTaxRate","_ArchiveTaxRequest","_CalculateLineItemTaxesRequest","_CalculateLineItemTaxesResponse","_CalculateTaxRequest","_CalculateTaxResponse","_CreateTaxRequest","_ListTaxRequestFilters","_GetMultiTaxRequest","_GetMultiTaxResponse","_CalculateLineItemTaxesRequestLineItem","_CalculateLineItemTaxesResponseLineItemTaxes","_ListTaxRequest","_ListTaxResponse","_TaxRate","_UpdateTaxRequest","_AppliedBundle","_AppliedBundleItem","_AddBundleRequest","_AddBundleResponse","_AddLineItemRequest","_AddLineItemResponse","_ChargeInvoiceRequest","_CreateInvoiceRequest","_CreateInvoiceResponse","_CreatePaymentLinkRequest","_CreatePaymentLinkResponse","_InvoiceCustomerAddress","_ListInvoicesRequestFiltersDateFilter","_DeleteInvoiceRequest","_DeleteLineItemRequest","_DeleteLineItemResponse","_DuplicateInvoiceRequest","_DuplicateInvoiceResponse","_ListInvoicesRequestFilters","_GetInvoiceRequest","_GetInvoiceResponse","_GetUpcomingInvoicePreviewRequest","_GetUpcomingInvoicePreviewResponse","_Invoice","_InvoiceItem","_ListInvoicesRequest","_ListInvoicesResponse","_Note","_PayInvoiceRequest","_PaymentLinkItem","_RemoveBundleRequest","_RemoveBundleResponse","_SendInvoiceRequest","_UpdateBundleRequest","_UpdateBundleResponse","_UpdateDefaultTaxRatesRequest","_UpdateDefaultTaxRatesResponse","_UpdateInvoiceRequest","_UpdateInvoiceResponse","_UpdateLineItemRequest","_UpdateLineItemResponse","_VoidInvoiceRequest","_AccountBalance","_Balance","_BalanceAmount","_RetailPayout","_CancelRetailBillingRequest","_ChargeSalesInvoiceRequest","_CreateMerchantRequest","_DefaultCustomerConfiguration","_GetMerchantRequest","_GetMerchantResponse","_GetMultiRetailConfigurationsRequest","_GetMultiRetailConfigurationsResponse","_GetOutstandingBalanceRequest","_GetOutstandingBalanceResponse","_GetPayoutSummaryRequest","_GetPayoutSummaryResponse","_GetRetailAccountBalanceRequest","_GetRetailAccountBalanceResponse","_GetRetailBalanceRequest","_GetRetailBalanceResponse","_GetRetailPayoutRequest","_GetRetailPayoutResponse","_CreateMerchantRequestIncludeInFinancialRecords","_UpdateMerchantRequestIncludeInFinancialRecords","_ListRetailPayoutsRequest","_ListRetailPayoutsResponse","_Merchant","_RetailConfiguration","_SearchMerchantsRequest","_SearchMerchantsResponse","_SetAutoChargeInvoicesRequest","_SetAutoPostInvoicesRequest","_SetDefaultPaymentCardRequest","_SetHasAlternativePaymentMethodRequest","_SetIncludeInFinancialRecordsRequest","_UpdateMerchantRequest","_UpsertDefaultRetailCustomerConfigurationRequest","_UpsertRetailConfigurationRequest","_ListMerchantBillingReportsRequest","_ListMerchantBillingReportsResponse","_MerchantReport","_CreateMeteredComponentRequest","_MeteredComponent","_TickComponentUsageRequest","_Adjustment","_RetailPaymentCardDetails","_CloseRetailDisputeRequest","_ConfigureRetailPaymentProviderRequest","_ConfigureRetailPaymentProviderResponse","_ConfirmRetailPaymentRequest","_Dispute","_DisputeEvidence","_SubmitEvidenceRequestDisputeEvidence","_DisputeEvidenceDetails","_File","_GetRetailDisputeRequest","_GetRetailDisputeResponse","_GetRetailPaymentProviderRequest","_GetRetailPaymentProviderResponse","_GetRetailPaymentRequest","_GetRetailPaymentResponse","_GetWholesaleProviderPublicKeyRequest","_GetWholesaleProviderPublicKeyResponse","_ListPaymentRequestListPaymentFilters","_ListPaymentRequest","_ListPaymentResponse","_ListRetailDisputesRequest","_ListRetailDisputesResponse","_ListRetailPaymentsRequestListRetailPaymentsFilters","_ListRetailPaymentsRequest","_ListRetailPaymentsResponse","_ListRetailTransactionsRequestListRetailTransactionsFilters","_ListRetailTransactionsRequest","_ListRetailTransactionsResponse","_PrepareRetailPaymentRequestOrder","_Payment","_PaymentPaymentAllocation","_PrepareRetailPaymentRequest","_PrepareRetailPaymentResponse","_RefundRetailPaymentRequest","_RefundRetailPaymentResponse","_RetailPayment","_RetailPaymentsEnabledRequest","_RetailPaymentsEnabledResponse","_RetailRefund","_RetailStatusRequest","_RetailStatusResponse","_RetailTransaction","_SubmitEvidenceRequest","_UpdateRetailPaymentProviderRequest","_RetailStatusResponseVerificationError","_RetailStatusResponseVerificationRequirements","_CreatePaymentCardRequest","_DeletePaymentCardRequest","_ListPaymentCardsRequest","_ListPaymentCardsResponse","_PaymentCard","_SetDefaultPaymentMethodRequest","_UpdatePaymentCardRequest","_CreatePricingPlanProductRequest","_CreatePricingPlanProductResponse","_DeletePricingPlanProductRequest","_GetMultiPricingPlanProductRequest","_GetMultiPricingPlanProductResponse","_GetPricingPlanProductRequest","_GetPricingPlanProductResponse","_ListPricingPlanProductsRequestListPricingPlanProductsFilters","_ListPricingPlanProductsRequest","_ListPricingPlanProductsResponse","_PricingPlanProduct","_UpdatePricingPlanProductRequest","_UpdatePricingPlanProductResponse","_UpsertWholesalePricingRequest","_GetMultiProductRequest","_GetMultiProductResponse","_ListProductsRequestListProductsFilters","_ListProductsRequest","_ListProductsResponse","_Product","_AppliedCredit","_ListPurchaseRequestListPurchaseBillingStrategyFilter","_ListPurchaseRequestListPurchaseFilters","_ListPurchaseItemsRequestListPurchaseItemsFilters","_ListPurchaseItemsRequest","_ListPurchaseItemsResponse","_ListPurchaseRequest","_ListPurchaseResponse","_PauseDunningRequest","_Purchase","_PurchaseItem","_ResumeDunningRequest","_RetryPurchaseRequest","_StopDunningRequest","_VoidPurchaseRequest","_SendSalesInvoiceEmailRequest","_SendSalesInvoiceReceiptEmailRequest","_CreateMerchantServicesReportRun","_GetMerchantServicesReportRun","_MerchantServicesReportRun","_ReplaceSubscriptionPresetsRequest","_ReplaceSubscriptionPresetsResponse","_SubscriptionPreset","_DeleteRetailPricingRequest","_GenerateBillableItemsCSVRequest","_GenerateBillableItemsCSVResponse","_GenerateVendorReportRequest","_GenerateVendorReportResponse","_GetMultiBundleRetailPricingRequest","_GetMultiBundleRetailPricingResponse","_GetMultiProductPricingRequest","_GetMultiProductPricingResponse","_GetMultiRetailPricingRequest","_GetMultiRetailPricingResponse","_GetMultiWholesaleCostRequest","_GetMultiWholesaleCostResponse","_GetPurchaseCostRequest","_GetPurchaseCostResponse","_GetRevenueStatsRequest","_GetRevenueStatsResponse","_GetStatisticsRequest","_GetStatisticsResponse","_GetWholesaleComparisonRequestGetWholesaleComparisonFilters","_GetWholesaleComparisonRequest","_GetWholesaleComparisonResponse","_GetWholesaleComparisonResponseGetWholesaleComparisonResult","_SetWholesaleProductStrategyRequest","_SetWholesaleProductVolumeCommitmentRequest","_StartRevRecTemplateBackfillRequest","_UpsertRetailPricingRequest","_HostService","t","ɵɵdefineInjectable","_BillingApiService","http","hostService","HttpHeaders","r","request","__spreadProps","__spreadValues","map","resp","ɵɵinject","HttpClient","_DiscountApiService","_InvoiceApiService","_MerchantApiService","_PaymentMethodApiService","_PaymentApiService","_PricingApiService","_PurchaseApiService","_TaxApiService","_VendorApiService","disputeFromApi","dispute","id","paymentId","status","disputeStatusFromApi","amount","created","currencyCode","evidence","disputeEvidenceFromApi","evidenceDetails","disputeEvidenceDetailsFromApi","isChargeRefundable","reason","fee","feeCurrencyCode","customerCommunication","fileFromApi","customerSignature","shippingDocumentation","receipt","uncategorizedFile","billingAddress","customerEmailAddress","customerName","productDescription","file","filename","url","dueBy","hasEvidence","pastDue","submissionCount","DisputeStatusApi","DISPUTE_STATUS_WARNING_NEEDS_RESPONSE","DisputeStatus","WARNING_NEEDS_RESPONSE","DISPUTE_STATUS_WARNING_UNDER_REVIEW","WARNING_UNDER_REVIEW","DISPUTE_STATUS_WARNING_CLOSED","WARNING_CLOSED","DISPUTE_STATUS_NEEDS_RESPONSE","NEEDS_RESPONSE","DISPUTE_STATUS_UNDER_REVIEW","UNDER_REVIEW","DISPUTE_STATUS_CHARGE_REFUNDED","CHARGE_REFUNDED","DISPUTE_STATUS_LOST","LOST","DISPUTE_STATUS_WON","WON","init_dispute","__esmMin","init_vendasta_billing","billingStrategyFromAPI","bsAPI","PricingPlanBillingStrategy","BILLING_STRATEGY_END_OF_PERIOD","BillingStrategy","EndOfPeriod","BILLING_STRATEGY_START_OF_PERIOD","StartOfPeriod","BILLING_STRATEGY_INSTANTLY","Instantly","BILLING_STRATEGY_END_OF_DAY","EndOfDay","Invalid","billingStrategyToAPI","strategy","BILLING_STRATEGY_NONE","init_billing_strategy","__esmMin","init_vendasta_billing","currencyFromApi","cApi","CurrencyApi","USD","Currency","CAD","EUR","AUD","GBP","NZD","BRL","CHF","CNY","CZK","INR","JPY","KHR","KRW","MXN","NOK","RUB","SEK","SGD","TRY","ZAR","DZD","AWG","FJD","KYD","init_currency","__esmMin","init_vendasta_billing","frequencyFromApi","fApi","FrequencyApi","MONTHLY","Frequency","Monthly","YEARLY","Yearly","ONE_TIME","OneTime","Invalid","frequencyToApi","frequency","INVALID","init_frequency","__esmMin","init_vendasta_billing","productPricingRulesFromApi","pprApi","map","r","price","minUnits","maxUnits","init_product_pricing_rules","__esmMin","productPricingTypeFromApi","pptApi","ProductPricingTypeApi","PRODUCT_PRICING_TYPE_STANDARD","ProductPricingType","Standard","PRODUCT_PRICING_TYPE_STAIRSTEP","Stairstep","PRODUCT_PRICING_TYPE_TIERED","Tiered","Invalid","productPricingTypeToApi","ppt","PRODUCT_PRICING_TYPE_INVALID","init_product_pricing_type","__esmMin","init_vendasta_billing","commitmentFromAPI","comAPI","initial","recurring","init_commitment","__esmMin","feesFromApi","protos","length","map","proto","amount","amountType","feeType","feesToApi","fees","fee","init_fee","__esmMin","pricingPlanProductFromApi","apiProduct","pricingMap","apiCurrency","pricing","Object","prototype","hasOwnProperty","call","pricingApi","type","productPricingTypeFromApi","rules","productPricingRulesFromApi","setupFee","fees","feesFromApi","frequency","frequencyFromApi","pricingPlanId","sku","commitment","commitmentFromAPI","created","modified","strategy","billingStrategyFromAPI","volumeCommitment","volumeCommitmentStartsAt","getTime","undefined","volumeCommitmentEndsAt","currencyPricingMapToApi","currencyPricingMap","keys","filter","c","Currency","reduce","apiPricingMap","pricingPlanProductPricingToApi","productPricingRulesToApi","map","rule","ApiRule","ApiPricing","productPricingTypeToApi","feesToApi","frequencyToApi","currencyCode","init_pricing_plan_product","__esmMin","init_vendasta_billing","init_billing_strategy","init_commitment","init_currency","init_frequency","init_product_pricing_rules","init_product_pricing_type","init_fee","productPricingFromApi","pApi","strategy","billingStrategyFromAPI","pricingType","productPricingTypeFromApi","currency","currencyFromApi","frequency","frequencyFromApi","pricingRules","productPricingRulesFromApi","commitment","commitmentFromAPI","volumeCommitment","isStartingPrice","resolvedFrom","setupFee","fees","feesFromApi","init_product_pricing","__esmMin","init_billing_strategy","init_commitment","init_currency","init_frequency","init_product_pricing_rules","init_product_pricing_type","init_fee","init_wholesale_pricing_service","__esmMin","init_retail_pricing_service","__esmMin","init_pricing_plan","__esmMin","RetailPricingPlanName","demoRetailPricingPlans","prodRetailPricingPlans","WholesalePricingPlanName","demoWholesalePricingPlans","prodWholesalePricingPlans","pricingPlans","wholesalePlans","retailPlans","init_pricing_plan_service","__esmMin","init_src","init_billing_strategy","id","name","MSRP","subscriptionName","defaultStrategy","BillingStrategy","Invalid","VBPFree","VBPStarter","VBPBasic","VBPProfessional","VBPEnterprise","VBPEnterprisePilot","VBP2Startup","VBP2Essentials","VBP2Growth","VBP2Scale","VBP2Premium","BasicSubscription","ProfessionalSubscription","EnterpriseSubscription","EliteSubscription","PremiumSubscription","IndividualSubscription","TeamSubscription","AdvanceSubscription","CustomSubscription","Essentials2022Subscription","Professional2022Subscription","Premium2022Subscription","Custom2022Subscription","Starter2023Subscription","Default","Map","Environment","DEMO","PROD","init_list_pricing_plan_product_filter","__esmMin","subscriptionStatusFromApi","sApi","SubscriptionStatusApi","SUBSCRIPTION_STATUS_ACTIVE","SubscriptionStatus","Active","SUBSCRIPTION_STATUS_EXPIRED","Inactive","Unset","init_status","__esmMin","init_vendasta_billing","subscriptionSourceFromApi","sApi","SubscriptionSourceApi","SOURCE_SYSTEM","SubscriptionSource","System","SOURCE_USER","User","Unset","init_source","__esmMin","init_vendasta_billing","init_pricing","__esmMin","init_billing_strategy","init_currency","init_frequency","init_product_pricing_rules","init_product_pricing_type","init_product_pricing","init_pricing_plan_product","init_wholesale_pricing_service","init_retail_pricing_service","init_pricing_plan","init_pricing_plan_service","init_list_pricing_plan_product_filter","init_status","init_source","init_fee","paymentSourceFromApi","pApi","PaymentSourceApi","PAYMENT_SOURCE_STRIPE","PaymentSource","STRIPE","PAYMENT_SOURCE_VCASH","VCASH","UNSET","init_payment_source","__esmMin","init_vendasta_billing","paymentStatusFromApi","psApi","PaymentStatusApi","PAYMENT_STATUS_FAILED","PaymentStatus","Failed","PAYMENT_STATUS_SUCCEEDED","Succeeded","Unset","init_payment_status","__esmMin","init_vendasta_billing","paymentAllocationTypeFromApi","pApi","PaymentAllocationTypeApi","PAYMENT_ALLOCATION_TYPE_INVOICE","PaymentAllocationType","INVOICE","PAYMENT_ALLOCATION_TYPE_PURCHASE","PURCHASE","UNSET","init_payment_allocation_type","__esmMin","init_vendasta_billing","paymentFromApi","pApi","merchantId","created","Date","undefined","currency","currencyFromApi","Currency","USD","paymentSource","paymentSourceFromApi","allocations","map","p","paymentAllocationFromApi","total","description","externalReferenceId","status","paymentStatusFromApi","referenceId","amount","type","paymentAllocationTypeFromApi","PaymentAllocationType","UNSET","init_payment","__esmMin","init_pricing","init_payment_source","init_payment_status","init_payment_allocation_type","convertApiPaymentCardType","t","paymentCardTypeLabelMap","get","unknownCardType","convertApiFundingType","fundingTypeLabelMap","unknownFundingType","convertApiPaymentCardDetails","c","cardType","fundingType","cardId","lastFourDigits","expiryMonth","expiryYear","cardholderName","address","city","state","country","zipCode","default","FundingType","PaymentCardType","init_payment_card","__esmMin","init_vendasta_billing","id","UNKNOWN","value","Map","PaymentCardCARD_TYPE","AMEX","VISA","MASTERCARD","JCB","DINERS_CLUB","DISCOVER","PaymentCardFUNDING_TYPE","FUNDING_TYPE_DEBIT","DEBIT","FUNDING_TYPE_CREDIT","CREDIT","FUNDING_TYPE_PREPAID","PREPAID","FUNDING_TYPE_UNKNOWN","init_payment_card","__esmMin","retailRefundReasonFromApi","r","ApiRefundReason","RETAIL_REFUND_REASON_UNSET","RetailRefundReason","Unset","RETAIL_REFUND_REASON_DUPLICATE","Duplicate","RETAIL_REFUND_REASON_FRAUDULENT","Fraudulent","RETAIL_REFUND_REASON_REQUESTED_BY_CUSTOMER","RequestedByCustomer","retailRefundReasonToApi","retailRefundFailureReasonFromApi","ApiFailureReason","RETAIL_REFUND_FAILURE_REASON_UNSET","RetailRefundFailureReason","RETAIL_REFUND_FAILURE_REASON_LOST_OR_STOLEN_CARD","LostOrStolenCard","RETAIL_REFUND_FAILURE_REASON_EXPIRED_OR_CANCELED_CARD","ExpiredOrCanceledCard","RETAIL_REFUND_FAILURE_REASON_UNKNOWN","Unknown","retailRefundStatusFromApi","ApiRefundStatus","RETAIL_REFUND_STATUS_UNSET","RetailRefundStatus","RETAIL_REFUND_STATUS_PENDING","Pending","RETAIL_REFUND_STATUS_SUCCEEDED","Succeeded","RETAIL_REFUND_STATUS_FAILED","Failed","RETAIL_REFUND_STATUS_REQUIRES_ACTION","RequiresAction","RETAIL_REFUND_STATUS_CANCELED","Canceled","retailPaymentFromApi","pApi","id","merchantId","created","currencyCode","amount","referenceId","referenceType","description","customerId","status","retailPaymentStatusFromApi","disputed","failureCode","failureMessage","applicationFee","dispute","disputeFromApi","cardDetails","cardDetailsFromApi","refunds","retailRefundsfromApi","map","refund","retailRefundFromApi","currency","refundReason","failureReason","Date","undefined","payment","retailPayoutFromApi","payout","arrivalDate","retailPayoutStatusFromApi","type","retailPayoutTypeFromApi","lastFourDigits","bankName","bankId","RetailPayoutStatusApi","PAYOUT_STATUS_PAID","RetailPayoutStatus","Paid","PAYOUT_STATUS_PENDING","PAYOUT_STATUS_IN_TRANSIT","InTransit","PAYOUT_STATUS_CANCELED","PAYOUT_STATUS_FAILED","t","RetailPayoutTypeApi","PAYOUT_TYPE_BANK_ACCOUNT","RetailPayoutType","BankAccount","PAYOUT_TYPE_CARD","Card","adjustmentFromApi","adjustment","fee","net","retailTransactionFromApi","transaction","payoutFailure","cardType","cardTypeFromApi","CardType","CARD_TYPE_VISA","PaymentCardType","VISA","CARD_TYPE_MASTERCARD","MASTERCARD","CARD_TYPE_AMEX","AMEX","CARD_TYPE_DISCOVER","DISCOVER","CARD_TYPE_JCB","JCB","CARD_TYPE_DINERS_CLUB","DINERS_CLUB","UNKNOWN","RetailPaymentStatus","Disputed","PaymentStatusApi","PAYMENT_STATUS_SUCCEEDED","PAYMENT_STATUS_FAILED","PAYMENT_STATUS_REFUNDED","Refunded","PAYMENT_STATUS_PARTIALLY_REFUNDED","PartialyRefunded","init_retail_payment","__esmMin","init_vendasta_billing","init_dispute","init_payment_card","verificationErrorFromAPI","e","requirement","code","reason","requirementsFromAPI","requirements","due","errors","error","map","eventuallyDue","currentDeadline","Date","retailResponseFromAPI","proto","supportedRegion","canAcceptPayment","disabledReason","futureRequirements","init_retail_status","__esmMin","MerchantProviderDeterminant","CountryProviderDeterminant","init_provider_determinant","__esmMin","constructor","merchantId","countryCode","PaymentService","init_payment_service","__esmMin","init_operators","init_core","init_vendasta_billing","init_dispute","init_payment","init_retail_payment","init_retail_status","init_provider_determinant","constructor","paymentApi","listPayments","filters","cursor","pageSize","req","ListPaymentRequest","pagingOptions","PagedRequestOptions","list","pipe","map","response","payments","payment","paymentFromApi","PagedResponse","pagingMetadata","nextCursor","hasMore","prepareRetailPayment","merchantId","customerId","PrepareRetailPaymentRequest","prepareRetail","stripeClientSecret","intentId","getRetail","paymentId","resp","retailPaymentFromApi","listRetail","payoutId","createdDateGte","createdDateLte","zeroDate","Date","valueOf","ListRetailPaymentsRequestListRetailPaymentsFilters","ListRetailPaymentsRequest","retailPayments","listRetailTransactions","paymentsOnly","ListRetailTransactionsRequestListRetailTransactionsFilters","undefined","type","RetailTransactionType","RETAIL_TRANSACTION_TYPE_PAYMENT","ListRetailTransactionsRequest","retailTransactions","transactions","transaction","retailTransactionFromApi","getRetailDispute","disputeId","disputeFromApi","dispute","listRetailDisputes","ListRetailDisputesRequest","disputes","d","retailStatus","RetailStatusRequest","r","retailResponseFromAPI","retailPaymentsEnabled","RetailPaymentsEnabledRequest","enabled","configureRetailProvider","successUrl","failureUrl","stripeUrl","getRetailProvider","statementDescriptor","stripeConnectId","updateRetailProvider","mapTo","submitEvidence","submit","evidence","billingAddress","customerEmailAddress","customerName","productDescription","customerSignatureFileId","customerCommunicationFileId","receiptFileId","shippingDocumentationFileId","uncategorizedFileId","closeDispute","closeRetailDispute","getWholesaleProviderPublicKey","determinant","request","MerchantProviderDeterminant","GetWholesaleProviderPublicKeyRequest","countryCode","publcApiKey","refundRetail","amount","reason","retailRefundReasonToApi","ɵɵinject","PaymentApiService","factory","ɵfac","providedIn","_PaymentService","init_payment","__esmMin","init_dispute","init_payment_source","init_payment_status","init_payment_allocation_type","init_payment_service","init_provider_determinant","init_retail_payment","init_retail_status","CA_LIVE_API_KEY","CA_TEST_API_KEY","StripeService","init_stripe_service","__esmMin","init_src","init_payment","constructor","environmentService","paymentService","connectPublicKey","getEnvironment","Environment","PROD","getConnectPublicKey","getPublicKeyByMerchant","merchantId","getWholesaleProviderPublicKey","MerchantProviderDeterminant","getPublicKeyByCountry","countryCode","CountryProviderDeterminant","ɵɵinject","EnvironmentService","PaymentService","factory","ɵfac","providedIn","_StripeService","convertApiAppliedBundle","ab","bundleId","bundleInstanceId","name","hideBundleItems","isAppliedBundle","init_applied_bundle","__esmMin","b","init_applied_bundle","__esmMin","discountTypeFromApi","t","ApiDiscountType","DISCOUNT_TYPE_FIXED_AMOUNT_PER_UNIT","DiscountType","FIXED_AMOUNT_PER_UNIT","DISCOUNT_TYPE_FIXED_NUMBER_OF_UNITS","FIXED_NUMBER_OF_UNITS","DISCOUNT_TYPE_PERCENT_AMOUNT","PERCENT_AMOUNT","FIXED_AMOUNT","discountTypeToApi","DISCOUNT_TYPE_FIXED_AMOUNT","init_discount_type","__esmMin","init_vendasta_billing","discountFromApi","apiDiscount","merchantId","discountId","id","discountType","discountTypeFromApi","amount","start","Date","undefined","end","resetEachPeriod","created","updated","SKU","sku","description","customerId","consumer","Consumer","CONSUMER_RETAIL","subscriptionId","init_discount","__esmMin","init_vendasta_billing","init_discount_type","discountConsumerToApi","dc","DiscountConsumer","RETAIL","Consumer","CONSUMER_RETAIL","WHOLESALE","CONSUMER_WHOLESALE","init_discount_consumer","__esmMin","init_vendasta_billing","DiscountService","init_discount_service","__esmMin","init_operators","init_core","init_vendasta_billing","init_discount","init_discount_type","init_discount_consumer","constructor","discountApi","list","filters","cursor","pageSize","req","ListDiscountsRequest","pagingOptions","PagedRequestOptions","pipe","map","response","discounts","item","discountFromApi","PagedResponse","pagingMetadata","nextCursor","hasMore","create","merchantId","sku","discountType","amount","startDateTime","endDateTime","resetEachPeriodFlag","description","customerId","discountConsumer","DiscountConsumer","WHOLESALE","subscriptionId","start","Date","dt","discountTypeToApi","consumer","discountConsumerToApi","r","CreateDiscountRequest","resetEachPeriod","end","resp","id","update","UpdateDiscountRequest","expire","ExpireDiscountRequest","ɵɵinject","DiscountApiService","factory","ɵfac","providedIn","_DiscountService","init_discount","__esmMin","init_discount_type","init_discount_service","appliedDiscountTypeFromAPI","adt","APIDiscountType","DISCOUNT_TYPE_FIXED_AMOUNT_PER_UNIT","DiscountType","FIXED_AMOUNT_PER_UNIT","DISCOUNT_TYPE_FIXED_NUMBER_OF_UNITS","FIXED_NUMBER_OF_UNITS","DISCOUNT_TYPE_PERCENT_AMOUNT","PERCENT_AMOUNT","FIXED_AMOUNT","appliedDiscountTypeToApi","DISCOUNT_TYPE_FIXED_AMOUNT","appliedDiscountFromApi","ad","type","value","totalAmount","description","referenceId","appliedDiscountToApi","init_applied_discount","__esmMin","init_vendasta_billing","init_discount","init_applied_discount","__esmMin","convertAPINote","note","message","isNote","init_note","__esmMin","n","collectionMethodToApi","m","CollectionMethod","MANUAL_COLLECTION","CollectionMethodAPI","CHARGE_AUTOMATICALLY","SEND_EMAIL","UNSET","collectionMethodFromApi","init_retail_customer_configuration","__esmMin","init_retail_customer_configuration","__esmMin","taxRateFromApi","apiTaxRate","id","merchantId","countryCode","stateCode","name","description","percentage","accountingSystemId","isTaxRate","init_tax_rate","__esmMin","tr","TaxRateService","init_tax_rate_service","__esmMin","init_esm","init_operators","init_core","init_vendasta_billing","init_tax_rate","constructor","taxRateApi","calculate","merchantId","customerId","amount","r","CalculateTaxRequest","pipe","map","response","taxRates","item","taxRateFromApi","taxableAmount","calculateLineItems","lineItems","CalculateLineItemTaxesRequest","buildCalculateLineItemsTaxResponse","catchError","of","lineItemTaxes","sku","appliedTaxes","totalTaxableAmount","create","countryCode","stateCode","name","description","percentage","accountingSystemId","CreateTaxRequest","update","id","UpdateTaxRequest","list","filters","cursor","pageSize","req","ListTaxRequest","pagingOptions","PagedRequestOptions","PagedResponse","pagingMetadata","nextCursor","hasMore","getMulti","ids","GetMultiTaxRequest","archive","ArchiveTaxRequest","ɵɵinject","TaxApiService","factory","ɵfac","providedIn","_TaxRateService","init_tax_rate","__esmMin","init_tax_rate_service","convertApiStatus","s","ApiInvoiceStatus","DUE","InvoiceStatus","PAID","VOID","DRAFT","invoiceStatusToApi","status","InternalInvoiceStatus","invoiceDateFilterFieldToApi","dateField","ListInvoicesRequestFiltersDateFilterDateField","CREATED","convertApiOrigin","InvoiceOriginAPI","MANUAL","InvoiceOrigin","SALES_ORDER","RENEWAL","TEMPLATE","UNSET","convertApiAppliedTaxRate","at","amount","taxRateId","percentage","name","description","convertApiTaxRate","tr","id","convertApiCustomerAddress","ca","address","address2","city","state","zip","country","convertApiInvoiceItem","ii","appliedTaxes","map","filter","isAppliedTaxRate","taxRates","isTaxRate","appliedDiscounts","discounts","ad","appliedDiscountFromApi","sku","quantity","subtotal","total","bundleId","bundleInstanceId","convertApiInvoice","i","zeroDate","Date","valueOf","invoiceItems","items","isInvoiceItem","defaultTaxRates","appliedBundles","convertApiAppliedBundle","isAppliedBundle","notes","n","convertAPINote","isNote","number","customerId","customerName","contactId","discountTotal","amountDiscount","paid","undefined","issued","due","voided","created","updated","autoAdvance","currency","currencyFromApi","orderId","origin","collectionMethod","collectionMethodFromApi","memo","defaultPaymentMethod","customerAddress","externalCustomerIdentifier","additionalContactIds","listInvoiceFiltersToApi","filters","ListInvoicesRequestFilters","__spreadProps","__spreadValues","statuses","origins","collectionMethods","dateFilter","dateGte","dateLte","InvoicePDFType","InvoiceDateField","isInvoice","init_invoice","__esmMin","init_vendasta_billing","init_applied_bundle","init_applied_discount","init_note","init_pricing","init_retail_customer_configuration","init_tax_rate","newAccountServiceContext","accountId","ServiceContext","ServiceContextAccount","newPartnerServiceContext","partnerId","ServiceContextPartner","AutoImpersonation","ServiceContextBrand","NoImpersonation","ServiceContextSuperAdmin","Scope","CreateScopeRequest","DeleteScopeRequest","GetEntryURLRequest","GetEntryURLResponse","GetEntryURLWithCodeRequest","GetEntryURLWithCodeResponse","GetLogoutURLRequest","GetLogoutURLResponse","GetMultiEntryURLRequest","GetMultiEntryURLResponse","GetMultiScopeRequest","GetMultiScopeResponse","GetSessionTransferURLRequest","GetSessionTransferURLResponse","ListScopesRequest","ListScopesResponse","LogoutRequest","UpdateScopeRequestMutation","GetMultiScopeResponseScopeContainer","UpdateScopeRequest","ConsumeSingleUseTokenRequest","environment","hostMap","HostService","ConsentAdminApiService","IdentityProviderApiService","ServiceProviderApiService","serviceGatewayPath","SSOService","init_vendasta_sso","__esmMin","init_core","init_http","init_operators","_ServiceContextAccount","proto","m","kwargs","toReturn","_AutoImpersonation","_ServiceContextBrand","_NoImpersonation","_ServiceContextPartner","_ServiceContext","_ServiceContextSuperAdmin","_Scope","_CreateScopeRequest","_DeleteScopeRequest","_GetEntryURLRequest","_GetEntryURLResponse","_GetEntryURLWithCodeRequest","_GetEntryURLWithCodeResponse","_GetLogoutURLRequest","_GetLogoutURLResponse","_GetMultiEntryURLRequest","_GetMultiEntryURLResponse","_GetMultiScopeRequest","_GetMultiScopeResponse","_GetSessionTransferURLRequest","_GetSessionTransferURLResponse","_ListScopesRequest","_ListScopesResponse","_LogoutRequest","_UpdateScopeRequestMutation","_GetMultiScopeResponseScopeContainer","_UpdateScopeRequest","_ConsumeSingleUseTokenRequest","t","ɵɵdefineInjectable","http","hostService","HttpHeaders","r","request","__spreadProps","__spreadValues","map","resp","ɵɵinject","HttpClient","params","apiJson","key","value","identityProviderApiService","consentAdminApiService","serviceProviderApiService","serviceProviderId","context","options","share","serviceProviderIds","scopeIds","userID","otp","nextUrl","serviceProviderID","accountID","nextPath","host","query","groupPath","enumStringToValue$2","enumRef","value","enumStringToValue$1","Owner","SortDirection","SortField","Link","CreateLinkRequest","CreateLinkResponse","GetLinkRequest","GetLinkResponse","GetMultiLinkMetricsRequest","GetMultiLinkMetricsResponse","LinkMetrics","ListAllLinkMetricsRequest","ListAllLinkMetricsResponse","ListLinksRequest","ListLinksResponse","PagedRequestOptions","PagedResponseMetadata","SetLinkHideStatusesRequest","environment","hostMap","HostService","UrlShortenerApiService","UrlShortenerService","PagedResponse","init_vendasta_url_shortener","__esmMin","init_core","init_operators","init_http","_Link","proto","m","kwargs","toReturn","_CreateLinkRequest","_CreateLinkResponse","_GetLinkRequest","_GetLinkResponse","_GetMultiLinkMetricsRequest","_GetMultiLinkMetricsResponse","_LinkMetrics","obj","k","_ListAllLinkMetricsRequest","_ListAllLinkMetricsResponse","_ListLinksRequest","_ListLinksResponse","_PagedRequestOptions","_PagedResponseMetadata","_SetLinkHideStatusesRequest","t","ɵɵdefineInjectable","http","hostService","HttpHeaders","r","request","map","resp","__spreadProps","__spreadValues","ɵɵinject","HttpClient","api","shortCode","req","businessId","linkUrl","owner","description","hidden","cursor","pageSize","sortField","filterTerm","sortDirection","body","shortCodes","res","results","nextCursor","hasMore","InvoiceService","init_invoice_service","__esmMin","init_vendasta_billing","init_vendasta_sso","init_vendasta_url_shortener","init_esm","init_operators","init_core","init_retail_customer_configuration","init_invoice","init_applied_discount","constructor","hostService","http","invoiceApiService","ssoService","urlShortenerService","addBundle","merchantId","invoiceId","bundleId","AddBundleRequest","pipe","map","res","convertApiInvoice","invoice","addLineItem","sku","amount","quantity","description","taxRates","appliedDiscounts","AddLineItemRequest","discounts","d","appliedDiscountToApi","charge","customerId","paymentMethodId","ChargeInvoiceRequest","create","orderId","currencyCode","CreateInvoiceRequest","createPaymentLink","lineItems","CreatePaymentLinkRequest","delete","DeleteInvoiceRequest","deleteLineItem","id","DeleteLineItemRequest","exportCSV","filters","url","hostWithScheme","post","merchant_id","observe","responseType","withCredentials","share","generatePDF","documentType","invoice_id","document_type","get","GetInvoiceRequest","list","cursor","pageSize","req","ListInvoicesRequest","listInvoiceFiltersToApi","pagingOptions","PagedRequestOptions","response","invoices","item","filter","isInvoice","PagedResponse","pagingMetadata","nextCursor","hasMore","pay","reason","PayInvoiceRequest","preview","getUpcomingPreview","invoiceDate","getUpcomingInvoicePreview","GetUpcomingInvoicePreviewRequest","removeBundle","bundleInstanceId","RemoveBundleRequest","send","emailAddresses","SendInvoiceRequest","updateBundle","hideBundleItems","UpdateBundleRequest","updateDueDate","due","pbInvoice","ApiInvoice","fm","FieldMask","paths","update","updateIssuedDate","issued","updateContact","contactId","updateAdditionalContacts","additionalContactIds","updateCollectionMethod","collectionMethod","apiCollectionMethod","collectionMethodToApi","updateMemo","memo","updateDefaultPaymentMethod","defaultPaymentMethod","updateDefaultTaxes","taxRateIds","updateDefaultTaxRates","UpdateDefaultTaxRatesRequest","updateLineItem","UpdateLineItemRequest","mask","UpdateInvoiceRequest","fieldMask","void","VoidInvoiceRequest","duplicate","DuplicateInvoiceRequest","generateShortLink","getEntryUrl","newPartnerServiceContext","path","skipGatewayAuthentication","switchMap","createLink","Owner","OWNER_UNTRACKED","catchError","of","result","domain","shortCode","Error","take","ɵɵinject","HostService","HttpClient","InvoiceApiService","SSOService","UrlShortenerService","factory","ɵfac","providedIn","_InvoiceService","init_recurring_invoice","__esmMin","init_invoice","__esmMin","init_invoice_service","init_bank_account","__esmMin","init_bank_reconciliation","__esmMin","customerAddressFromApi","apiAddress","address","city","state","zip","country","billableItemFromApi","apiItem","zeroDate","Date","valueOf","subscriptionId","merchantId","sku","productName","customerId","customerName","orderId","expiry","undefined","billingStart","created","updated","frequency","frequencyFromApi","retailFrequency","nextRenewal","nextRetailRenewal","customerAddress","customUnitPrice","retailUnitPrice","status","subscriptionStatusFromApi","price","productPricingFromApi","source","subscriptionSourceFromApi","autoBillable","description","init_billable_item","__esmMin","init_pricing","init_source","init_billable_item","__esmMin","handleCsvError","error","ErrorEvent","console","message","observableThrowError","init_error_handlers","__esmMin","init_esm","RevenueApiService","init_revenue_service","__esmMin","init_operators","init_error_handlers","constructor","hostService","http","downloadCsv","r","queryParams","filename","get","hostWithScheme","apiOptions","pipe","share","catchError","handleCsvError","responseType","withCredentials","ɵɵinject","HostService","HttpClient","factory","ɵfac","providedIn","_RevenueApiService","MerchantReportApiService","init_merchant_report_service","__esmMin","init_operators","init_error_handlers","constructor","hostService","http","downloadCsv","r","queryParams","merchantId","year","month","get","hostWithScheme","apiOptions","pipe","share","catchError","handleCsvError","generateCsv","responseType","withCredentials","ɵɵinject","HostService","HttpClient","factory","ɵfac","providedIn","_MerchantReportApiService","purchaseStatusFromApi","psApi","PurchaseStatusApi","PURCHASE_STATUS_PENDING","PurchaseStatus","Pending","PURCHASE_STATUS_DUE","Due","PURCHASE_STATUS_SUCCESS","Success","PURCHASE_STATUS_DUNNING","Dunning","PURCHASE_STATUS_FAILED","Failed","Unset","init_purchase_status","__esmMin","init_vendasta_billing","purchaseFromApi","pApi","merchantId","timestamp","Date","undefined","purchaseId","total","currency","currencyFromApi","Currency","USD","renewal","items","map","p","purchaseItemFromApi","billingStrategy","billingStrategyFromAPI","isDunning","dunningAttempt","pauseDunningUntil","voided","paid","status","purchaseStatusFromApi","creditAmount","appliedCredits","ac","appliedCreditFromAPI","taxAmount","appliedTaxRates","at","appliedTaxRateFromAPI","currencyApi","sku","description","amount","orderId","customerId","discountAmount","appliedDiscounts","appliedDiscountFromApi","purchaseDay","day","setupFee","feeAmount","appliedAmount","referenceId","referenceType","appliedCreditTypeFromAPI","adt","CreditType","CREDIT_TYPE_CREDIT_NOTE","AppliedCreditType","CREDIT_TYPE_PROMOTIONAL","CREDIT_TYPE_UNSET","name","percentage","taxRateId","init_purchase","__esmMin","init_applied_discount","init_pricing","init_vendasta_billing","init_purchase_status","customerSummaryFromApi","csApi","currency","undefined","currencyFromApi","customerId","purchaseItemQuantity","purchaseItemTotal","Currency","USD","init_customer_summary","__esmMin","init_pricing","Dimension","ChannelPartnersDiamond","ChannelPartnersPlatinum","ChannelPartnersGold","ChannelPartnersSilver","ChannelPartnersUnassisted","ChannelPartnersChurned","ChannelPartnersPreSales","ChannelPartnersUnassigned","ChannelPartnersMedia","ChannelPartnersBroadcast","ChannelPartnersISV","ChannelPartnersICT","ChannelPartnersFranchise","ChannelPartnersBroadly","ChannelPartnersEMEA","ChannelPartnersAgency","ChannelPartnersHighVelocityExpansion","ChannelPartnersHighVelocityAcquisition","init_dimension","__esmMin","constructor","id","dimensionId","name","contractFromApi","cApi","merchantId","netD","created","undefined","subscriptionId","dimension","Dimension","currency","currencyFromApi","signed","end","activated","modified","verified","status","creditLimit","pricingPlanId","init_contract","__esmMin","init_pricing","init_dimension","init_contract_service","__esmMin","init_mutations","__esmMin","init_contract","__esmMin","init_contract_service","init_dimension","init_mutations","productFromApi","apiProduct","name","sku","iconUrl","hasPricingOverride","hasDiscount","init_product","__esmMin","listProductsFilterToApi","filter","__spreadProps","__spreadValues","productType","map","pt","productTypeToApi","ProductType","Standard","ApiProductType","PRODUCT_TYPE_STANDARD_PRODUCT","Vendasta","PRODUCT_TYPE_VENDASTA_PRODUCT","Subscription","PRODUCT_TYPE_SUBSCRIPTION","Fee","PRODUCT_TYPE_FEE","PartnerSupportSales","PRODUCT_TYPE_PARTNER_SUPPORT_SALES","PRODUCT_TYPE_INVALID","init_list_products","__esmMin","init_vendasta_billing","isCanCreateSubscriptionsRequestSubscriptionItem","BillingService","init_billing_service","__esmMin","init_vendasta_billing","init_pricing","init_operators","init_product_pricing","init_paged_response","init_frequency","init_pricing_plan_product","init_purchase","init_customer_summary","init_contract","init_product","init_list_products","init_billable_item","li","constructor","billingApi","revenueApi","merchantReportApi","pricingApi","purchaseApi","vendorApi","getPurchaseCost","merchantId","sku","quantity","req","GetPurchaseCostRequest","pipe","map","response","currency","Currency","USD","canCreateSubscriptions","skus","CanCreateSubscriptionsRequest","canCreateSubscriptionsWithFrequencies","items","item","frequency","frequencyToApi","filter","downloadRevenueCsv","filename","downloadCsv","downloadBillingReportCsv","year","month","generateBillingReportCsv","generateCsv","listMerchantBillingReports","cursor","pageSize","ListMerchantBillingReportsRequest","pagingOptions","PagedRequestOptions","resp","reports","r","created","status","MerchantReportStatus","PagedResponse","pagingMetadata","nextCursor","hasMore","canBillCreateSnapshot","canBillItem","canBillRefreshSnapshot","ok","createPricingPlanProduct","pricingPlanId","pricing","commitment","strategy","volumeCommitment","volumeCommitmentStartsAt","volumeCommitmentEndsAt","request","CreatePricingPlanProductRequest","currencyPricingMapToApi","CommitmentApi","billingStrategyToAPI","mapTo","updatePricingPlanProduct","fieldMask","FieldMask","paths","UpdatePricingPlanProductRequest","push","deletePricingPlanProduct","DeletePricingPlanProductRequest","getMultiProductPricing","productPricesApi","productPrices","productPricings","k","Object","keys","productPricingResponse","productPricingFromApi","getMultiRetailPricing","groupId","requestGroupId","undefined","getMultiRetail","retailPricesApi","retailPricings","retailPricingResponse","listPricingPlanProducts","filters","ListPricingPlanProductsRequest","products","p","pricingPlanProductFromApi","getPricingPlanProduct","GetPricingPlanProductRequest","ppp","pricingPlanProduct","defaultStrategy","billingStrategyFromAPI","pricingPlanDefaultStrategy","listPurchases","ListPurchaseRequest","list","purchases","purchase","purchaseFromApi","voidPurchase","purchaseId","day","VoidPurchaseRequest","void","listPurchaseItems","purchaseItems","purchaseItem","purchaseItemFromApi","retryPurchase","RetryPurchaseRequest","retry","getMultiCustomerSummaries","customerIds","periodStart","periodEnd","GetMultiCustomerSummariesRequest","customerSummaries","customerSummary","customerSummaryFromApi","getMultiContract","merchantIds","contractsAPI","contracts","contractResponse","contractFromApi","getMerchantWholesaleCurrency","generateVendorReport","vendorName","markAsApproved","GenerateVendorReportRequest","generateReport","url","getVendorStats","GetRevenueStatsRequest","getRevenueStats","totalRevenue","listContracts","ListContractsRequest","c","listProducts","searchTerm","apiFilters","listProductsFilterToApi","ListProductsRequest","productFromApi","getMultiProduct","GetMultiProductRequest","productsMap","Map","forEach","set","getBillableItem","customerId","orderId","projectionFilter","GetBillableItemRequest","billableItemFromApi","expireSubscription","expiry","ExpireBillableItemRequest","expireBillableItem","unexpireSubscription","unexpireBillableItem","changeBillableItemFrequency","freq","ChangeFrequencyRequest","changeFrequency","changeBillableItemNextRenewalDate","next","ChangeRenewalDateRequest","nextRenewalDate","changeRenewalDate","changeBillableItemCustomUnitPrice","amount","ChangeCustomUnitPriceRequest","customUnitPrice","changeCustomUnitPrice","listBillableItems","ListBillableItemsRequest","listSubscriptions","ListSubscriptionsRequest","subscriptions","listRetailSubscriptions","startRevRecBackfillWorkflow","startRevRecTemplateBackfill","pauseDunning","pauseDunningUntil","PauseDunningRequest","resumeDunning","ResumeDunningRequest","exportSubscriptions","createSubscription","setAutoBillable","subscriptionId","autoBillable","SetAutoBillableRequest","updateSubscription","subscription","UpdateSubscriptionRequest","description","ɵɵinject","BillingApiService","RevenueApiService","MerchantReportApiService","PricingApiService","PurchaseApiService","VendorApiService","factory","ɵfac","providedIn","_BillingService","init_bundle","__esmMin","init_contract_document","__esmMin","init_credit","__esmMin","MerchantFromAPI","proto","merchantId","address","city","state","country","zipCode","emailAddress","phoneNumber","contactName","companyName","autoPostInvoices","autoChargeInvoices","includeInFinancialRecords","additionalEmailAddresses","stripeConnectId","stripeAccountId","init_merchant","__esmMin","payoutSummaryFromAPI","proto","zeroDate","Date","valueOf","nextInTransitPayout","nextInTransitPayoutExpectedDate","undefined","payoutInterval","payoutIntervalFromAPI","payoutDelayDays","balances","map","balance","currencyCode","amount","futurePayouts","inTransit","PayoutInterval","Daily","Weekly","Monthly","init_payout_summary","__esmMin","generateMethodToApi","m","GenerateMethod","SUBSCRIPTION","TEMPLATE","generateMethodFromApi","UNSET","retailConfigurationFromApi","proto","merchantId","retailGroupId","currencyCode","currencyConversionRate","defaultCustomerConfiguration","defaultCustomerConfigurationFromApi","collectionMethod","collectionMethodFromApi","generateMethod","invoiceDay","netD","memo","autoGenerateRetailSubscriptions","defaultCustomerConfigurationToApi","c","collectionMethodToApi","init_retail_configuration","__esmMin","init_retail_customer_configuration","SortMerchantsBy","MerchantService","init_merchant_service","__esmMin","init_operators","init_core","init_error_handlers","init_pricing","init_vendasta_billing","init_merchant","init_payout_summary","init_retail_configuration","init_payment","constructor","merchantApi","hostService","http","get","merchantId","req","GetMerchantRequest","pipe","map","resp","MerchantFromAPI","merchant","create","address","city","state","country","zipCode","emailAddress","phoneNumber","contactName","companyName","additionalEmailAddresses","update","getOutstandingBalance","GetOutstandingBalanceRequest","r","outstanding","outstandingBalance","currency","currencyFromApi","getStatistics","GetStatisticsRequest","sortMerchantByToApi","sortBy","SearchMerchantsRequestSortBy","SEARCH_MERCHANTS_REQUEST_SORT_BY_MERCHANT_ID","SEARCH_MERCHANTS_REQUEST_SORT_BY_COMPANY_NAME","SEARCH_MERCHANTS_REQUEST_SORT_BY_CONTACT_NAME","SEARCH_MERCHANTS_REQUEST_SORT_BY_EMAIL_ADDRESS","SEARCH_MERCHANTS_REQUEST_SORT_BY_COUNTRY","SEARCH_MERCHANTS_REQUEST_SORT_BY_STATE","updated","SEARCH_MERCHANTS_REQUEST_SORT_BY_UPDATED","created","SEARCH_MERCHANTS_REQUEST_SORT_BY_CREATED","sortDirectionToApi","sortDirection","SortDirection","Ascending","SortDirectionApi","SORT_DIRECTION_ASCENDING","Descending","SORT_DIRECTION_DESCENDING","search","searchTerm","pagingOptions","PagedRequestOptions","PagedResponse","merchants","m","pagingMetadata","nextCursor","hasMore","setAutoPostInvoices","autoPostInvoices","shouldAutoPostInvoices","setAutoChargeInvoices","autoChargeInvoices","downloadCsv","queryParams","filename","hostWithScheme","apiOptions","catchError","handleCsvError","setIncludeInFinancialRecords","includeInFinancialRecords","response","ok","sendSalesInvoiceEmail","invoiceId","chargeSalesInvoice","amount","sendSalesInvoiceReceiptEmail","responseType","withCredentials","createExternalAccount","stripeToken","createStripeExternalAccount","CreateStripeExternalAccountRequest","generateAccountBalanceReport","share","getMultiRetailConfigurations","retailGroupIds","request","GetMultiRetailConfigurationsRequest","configMap","Map","forEach","groupId","set","retailConfigurationFromApi","retailConfigurations","upsertRetailConfiguration","retailGroupId","currencyCode","currencyConversionRate","UpsertRetailConfigurationRequest","getPayoutSummary","GetPayoutSummaryRequest","payoutSummaryFromAPI","getRetailPayout","payoutId","GetRetailPayoutRequest","retailPayoutFromApi","payout","listRetailPayouts","cursor","pageSize","ListRetailPayoutsRequest","retailPayouts","payouts","upsertDefaultRetailCustomerConfiguration","defaultCustomerConfiguration","UpsertDefaultRetailCustomerConfigurationRequest","defaultCustomerConfigurationToApi","createReportRun","reportType","intervalStart","intervalEnd","getReportRun","id","getReport","getRetailAccountBalance","balance","ɵɵinject","MerchantApiService","HostService","HttpClient","factory","ɵfac","providedIn","_MerchantService","init_merchant","__esmMin","init_merchant_service","init_merchant_report","__esmMin","PaymentMethodService","init_payment_method_service","__esmMin","init_operators","init_payment_card","init_vendasta_billing","constructor","apiService","listPaymentCards","merchantId","customerId","req","ListPaymentCardsRequest","pipe","map","resp","paymentCard","c","convertApiPaymentCardDetails","deletePaymentCard","cardId","DeletePaymentCardRequest","mapTo","setDefaultPaymentCard","paymentMethodId","SetDefaultPaymentMethodRequest","setDefaultPaymentMethod","ɵɵinject","PaymentMethodApiService","factory","ɵfac","providedIn","_PaymentMethodService","init_payment_method","__esmMin","init_payment_method_service","init_product","__esmMin","init_list_products","init_subscription_retention","__esmMin","init_product_summary","__esmMin","init_subscription_retention","init_purchase","__esmMin","init_purchase_status","init_refund","__esmMin","init_refund_service","__esmMin","init_refund","__esmMin","init_refund_service","init_revenue","__esmMin","init_sales_credit_note","__esmMin","init_sales_invoice","__esmMin","SNAPSHOT_REPORT_SKU","SNAPSHOT_REPORT_REFRESH_SKU","init_sku","__esmMin","init_stripe_file","__esmMin","init_subscription","__esmMin","init_interval_mapping_service","__esmMin","init_lib","__esmMin","init_vendasta_billing","init_applied_bundle","init_bank_account","init_bank_reconciliation","init_billable_item","init_billing_service","init_stripe_service","init_bundle","init_contract","init_contract_document","init_core","init_credit","init_discount","init_invoice","init_merchant","init_merchant_report","init_payment","init_payment_card","init_payment_method","init_pricing","init_product","init_product_summary","init_purchase","init_refund","init_retail_customer_configuration","init_recurring_invoice","init_revenue","init_sales_credit_note","init_sales_invoice","init_sku","init_stripe_file","init_subscription","init_tax_rate","init_interval_mapping_service","init_src","__esmMin","init_lib","DisplayPriceService","init_display_price_service","__esmMin","init_common","init_esm","init_operators","constructor","translateService","formatDisplayPrice","value","currency","billingFrequency","isCents","translateZero","displaySymbol","isStartingPrice","display","priceFormatFunc","defaultFormatFunc","bind","CZKFormatFunc","price","Number","convertCentsToDollars","pipe","switchMap","formattedPrice","formatBillingFrequency","of","stream","centValue","isInteger","Math","round","frequency","returnValue","toLowerCase","map","v","CurrencyPipe","transform","DecimalPipe","replace","currencySymbol","split","getSetupFeeString","ɵɵinject","TranslateService","factory","ɵfac","_DisplayPriceService","DisplayPricePipe","init_display_price_pipe","__esmMin","constructor","displayPriceService","transform","value","currency","billingFrequency","isCents","translateZero","displaySymbol","isStartingPrice","formatDisplayPrice","ɵɵdirectiveInject","DisplayPriceService","pure","_DisplayPricePipe","formatDisplayPrice","value","currency","billingFrequency","isCents","translateZero","displaySymbol","isStartingPrice","price","display","priceFormatFunc","defaultFormatFunc","CZKFormatFunc","convertCentsToDollars","Number","formatBillingFrequency","centValue","isInteger","Math","round","returnValue","toLowerCase","TitleCasePipe","transform","CurrencyPipe","DecimalPipe","replace","currencySymbol","split","MarketplaceBillingFrequency","init_display_price","__esmMin","init_common","en_default","init_en","__esmMin","removeGoogleTranslatedContent","init_remove_google_translated_content","__esmMin","content","includes","translatedRegex","replace","RemoveGoogleTranslatedContentPipe","init_remove_google_translated_content_pipe","__esmMin","init_remove_google_translated_content","transform","content","options","hideEnglishTranslations","removeGoogleTranslatedContent","pure","_RemoveGoogleTranslatedContentPipe","CoreSharedModule","init_shared_module","__esmMin","init_common","init_ngx_translate_core","init_display_price_service","init_src","init_en","DisplayPriceService","imports","CommonModule","TranslateModule","LexiconModule","forChild","componentName","baseTranslation","_CoreSharedModule","isNumeric","val","isArray","parseFloat","PRICE_REGEX","URL_REGEX","SUBDOMAIN_REGEX","MARKET_ID_REGEX","EMAIL_REGEX","PHONE_NUMBER_REGEX","POSTAL_CODE_REGEXES","Validator","ContainsValidDynamicContentDirective","init_validator","__esmMin","init_forms","CA","US","Array","x","length","isPrice","control","value","match","toFixed","invalidPrice","isUrl","invalidUrl","isEmailList","toString","split","map","email","trim","filter","invalidEmail","isEmail","isPhoneNumber","invalidPhoneNumber","isValidPostalCode","countryCode","countryRegex","toUpperCase","test","invalidPostalCode","isInRange","lower","upper","Number","outOfRange","isValidMarketId","invalidMarketId","isMinimumLength","minimumLength","minlength","isValidSubdomain","invalidSubdomain","containsValidDynamicContent","includes","every","part","search","DYNAMIC_CONTENT_REGEX","invalidDynamicComponent","errorMessage","validatorName","validatorValue","required","requiredLength","invalidZipCode","_Validator","URL_MAILTO_OR_DYNAMIC_CONTENT_REGEX","HEX_COLOR_REGEX","isGreaterThanZero","isLessThanOrEqualToZero","validate","selectors","features","ɵɵProvidersFeature","provide","NG_VALIDATORS","useExisting","multi","_ContainsValidDynamicContentDirective","getFieldViolationsFromError","err","error","details","Array","isArray","filter","detail","googleErrorDetailsBadRequestType","reduce","acc","curr","fieldViolations","map","fv","field","description","push","init_verrors","__esmMin","BillingModel","init_billing_model","__esmMin","pricingTypeToBillingModel","pricingType","ProductPricingType","Stairstep","BillingModel","Tiered","Standard","pricingRulesToTiers","rules","map","r","rangeMin","minUnits","rangeMax","maxUnits","price","mapFrequency","frequency","Frequency","OneTime","MarketplaceBillingFrequency","Monthly","Yearly","buildBilledProductFromProductPricingAndAddon","addon","productPricing","productName","productId","addonId","billingModel","undefined","notes","iconURL","productIcon","currency","billingFrequency","pricingTiers","pricingRules","productCategory","commitment","setupFee","init_billed_product","__esmMin","init_src","init_display_price","init_billing_model","init_contract_pricing","__esmMin","init_billed_product","init_billing_model","removeRouterOutletsFromUrl","init_url_helper","__esmMin","url","replace","init_lib","__esmMin","init_display_price","init_shared_module","init_display_price_service","init_validator","init_verrors","init_contract_pricing","init_url_helper","init_src","__esmMin","init_lib","GALAXY_PAGE_OPTIONS","init_tokens","__esmMin","init_core","InjectionToken","PageService","init_page_service","__esmMin","init_router","init_src","init_tokens","constructor","router","pageOptions","showNavToggle","history","url","events","subscribe","event","NavigationEnd","length","pop","getCurrentNavigation","extras","skipLocationChange","push","previousUrl","previousUrlPath","substring","indexOf","undefined","activeUrl","urlAfterRedirects","activeUrlPath","showToggle","getPreviousPageUrl","defaultUrl","removeRouterOutletsFromUrl","deleteCount","splice","ɵɵinject","Router","GALAXY_PAGE_OPTIONS","factory","ɵfac","providedIn","_PageService","ɵɵelementContainerStart","ɵɵelementStart","ɵɵlistener","ɵɵrestoreView","_r1","ctx_r1","ɵɵnextContext","ɵɵresetView","toggleNav","ɵɵtext","ɵɵelementEnd","ɵɵadvance","ɵɵpropertyInterpolate","ɵɵpipeBind1","ɵɵprojection","PageToolbarComponent","init_page_toolbar_component","__esmMin","init_tokens","constructor","pageService","pageOptions","class","showExtendedToolbar","extendedToolbarPadding","showNavToggle","ɵɵdirectiveInject","PageService","GALAXY_PAGE_OPTIONS","selectors","hostVars","hostBindings","rf","ctx","ɵɵclassMap","ɵɵclassProp","ɵɵtemplate","PageToolbarComponent_ng_container_2_Template","PageToolbarComponent_ng_container_12_Template","ɵɵproperty","_PageToolbarComponent","MAX_TITLE_CHECK_COUNT","PageTitleDirective","init_page_title_directive","__esmMin","init_core","constructor","title","_viewContainerRef","class","updateTabTitle","checkCount","ngOnInit","updateTitle","titleText","getComponent","innerText","trim","setTitle","window","setTimeout","container","HTMLElement","componentName","name","split","filter","x","ɵɵdirectiveInject","Title","ViewContainerRef","selectors","hostVars","hostBindings","rf","ctx","ɵɵclassMap","booleanAttribute","features","ɵɵInputTransformsFeature","_PageTitleDirective","PageActionsDirective","init_page_actions_directive","__esmMin","constructor","class","selectors","hostVars","hostBindings","rf","ctx","ɵɵclassMap","_PageActionsDirective","WidthPreset","PageWrapperDirective","init_page_wrapper_directive","__esmMin","constructor","class","display","margin","widthPreset","Default","setMaxWidth","maxWidth","Narrow","Wide","Full","selectors","hostVars","hostBindings","rf","ctx","ɵɵclassMap","ɵɵstyleProp","_PageWrapperDirective","PageNavButtonComponent","init_page_nav_button_component","__esmMin","constructor","pageService","router","useHistory","historyBackButtonTitle","defaultPageUrl","ngOnInit","previousPageUrl","navigateToPreviousUrl","getPreviousPageUrl","previousPageTitle","pop","urlTree","parseUrl","queryParamIndex","indexOf","path","substring","navigate","queryParams","fragment","undefined","ɵɵdirectiveInject","PageService","Router","selectors","inputs","decls","vars","consts","template","rf","ctx","ɵɵelementStart","ɵɵlistener","ɵɵtext","ɵɵelementEnd","ɵɵadvance","ɵɵpropertyInterpolate","_PageNavButtonComponent","PageNavDirective","init_page_nav_directive","__esmMin","constructor","class","selectors","hostVars","hostBindings","rf","ctx","ɵɵclassMap","_PageNavDirective","PageTitleActionsDirective","init_page_title_actions_directive","__esmMin","constructor","class","selectors","hostVars","hostBindings","rf","ctx","ɵɵclassMap","_PageTitleActionsDirective","PageExtendedToolbarDirective","init_page_extended_toolbar_directive","__esmMin","constructor","class","selectors","hostVars","hostBindings","rf","ctx","ɵɵclassMap","_PageExtendedToolbarDirective","MODULE_IMPORTS","GalaxyPageModule","init_page_module","__esmMin","init_common","init_router","init_icon","init_tooltip","init_menu","init_button","init_progress_bar","init_ngx_translate_core","CommonModule","RouterModule","MatIconModule","MatTooltipModule","MatMenuModule","MatButtonModule","MatProgressBarModule","TranslateModule","_GalaxyPageModule","init_public_api","__esmMin","init_page_module","init_page","__esmMin","init_public_api","init_tokens","init_page_wrapper_directive"],"x_google_ignoreList":[0,1,2,8,55,56]}